Skip to content
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

Open
wants to merge 9 commits into
base: updates
Choose a base branch
from
Open

Fee Automation #94

wants to merge 9 commits into from

Conversation

xvi10
Copy link
Contributor

@xvi10 xvi10 commented Jan 13, 2025

No description provided.

- 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 Show resolved Hide resolved
contracts/error/Errors.sol Outdated Show resolved Hide resolved
contracts/error/Errors.sol Outdated Show resolved Hide resolved
contracts/error/Errors.sol Outdated Show resolved Hide resolved
contracts/error/Errors.sol Outdated Show resolved Hide resolved
error ConfirmationsLengthMismatch(uint256 chainIdsLength, uint256 confirmationsLength);
error UnauthorizedOriginator(address originator);
error OriginatorCallFailed(bytes transactionCallData);
error OnlyPeer(uint32 eid, bytes32 sender);
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use Errors.Unauthorized instead

Copy link
Collaborator

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.

contracts/error/Errors.sol Outdated Show resolved Hide resolved
contracts/error/Errors.sol Outdated Show resolved Hide resolved
contracts/error/Errors.sol Outdated Show resolved Hide resolved
function sendReadRequests(
MultichainReaderUtils.ReadRequestInputs[] calldata readRequestInputs,
MultichainReaderUtils.ExtraOptionsInputs calldata extraOptionsInputs
) external payable returns (MessagingReceipt memory, bytes32, MultichainReaderUtils.ReceivedData memory) {
Copy link
Contributor Author

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

Copy link
Collaborator

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.

Copy link
Contributor Author

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

SentinelDev1 and others added 8 commits January 16, 2025 18:34
- 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants