Standalone
Multicall
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.