-
Notifications
You must be signed in to change notification settings - Fork 44
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fee Automation #94
base: updates
Are you sure you want to change the base?
Fee Automation #94
Conversation
- Initial MultichainReader.sol, MultichainReaderUtils.sol and IOriginator.sol drafts - Updates to Keys.sol and Errors.sol to support MultichainReader.sol - EndpointV2Mock.sol for local hardhat testing (testing still needs to be configured)
contracts/error/Errors.sol
Outdated
error ConfirmationsLengthMismatch(uint256 chainIdsLength, uint256 confirmationsLength); | ||
error UnauthorizedOriginator(address originator); | ||
error OriginatorCallFailed(bytes transactionCallData); | ||
error OnlyPeer(uint32 eid, bytes32 sender); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
use Errors.Unauthorized instead
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The first is our own error message, and given the concerns around originator.call(transactionCallData) it may no longer be necessary anyway. The second is another error using LayerZero naming but can also be changed on our end.
function sendReadRequests( | ||
MultichainReaderUtils.ReadRequestInputs[] calldata readRequestInputs, | ||
MultichainReaderUtils.ExtraOptionsInputs calldata extraOptionsInputs | ||
) external payable returns (MessagingReceipt memory, bytes32, MultichainReaderUtils.ReceivedData memory) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
might make sense to have an onlyController modifier here
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, to clarify, is this referring to the setDelegate() function?
I was thinking of removing it as previously discussed, but perhaps a safer option would be to use a highly restrictive modifier like onlyController.
LayerZero responded to my questions around this on telegram saying that a delegate could be useful if faulty dvns need to be removed for example, even if other configuration changes aren't necessary.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
i'm referring to adding an onlyController modifier to sendReadRequests, because in lzReceive, the originator contract is called, and the originator contract would be validating that msg.sender is MultichainReader, so MultichainReader has some unique access to call potentially important contracts
so i think it would be safer to restrict access of who can call MultichainReader
- Updated MultichainReader.sol per PR comments and other minor updates - Updated Errors.sol per PR comments - Removed unused function from IOriginator.sol - Updated solidity version to 0.8.20 from 0.8.18 to support LayerZero imports
Proposed implementation using lzReduce() to simplify the lzRead flow and logic
No description provided.