close button

Part II

Internal Multicall

Take a look at the GreaterArchives contract. The contract is the same as before, but the scribes have proposed an augmentation to their documentation process.

Record now has an additional attribute author, to document the msg.sender that wrote that particular Record.

struct Record { address author; // A new attribute! uint256 timestamp; bytes data; }

If you are to study GreatScribe.sol again, you will realize that multiwrite() might not work as intended anymore. To be specific, author will reflect the address of GreatScribe instead of the EOA that initiated the transaction as it should.

Hence, there is a need to rework the multicall pattern. This can be done if multicall is implemented from the inside.

This means that instead of implementing multicall functions in a separate contract (i.e. GreatScribe), we implement the function within GreaterArchives itself.

Your Task

GreaterArchives inherits from Multicall. Complete Multicall.sol to restore the multicall pattern in GreaterArchives.

Run tests in Questplay

Submit work in Questplay

Help the scribes find an easier way to record their annals.