-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
CCIP-4687 Support Solana in the FeeQuoter #15811
base: develop
Are you sure you want to change the base?
Conversation
Solidity Review Jira issueHey! We have taken the liberty to link this PR to a Jira issue for Solidity Review. This is a new feature, that's currently in the pilot phase, so please make sure that the linkage is correct. In a contrary case, please update it manually in JIRA and replace Solidity Review issue key in the changeset file with the correct one. Any changes to the Solidity Review Jira issue should be reflected in the changeset file. If you need to update the issue key, please do so manually in the following changeset file: This PR has been linked to Solidity Review Jira issue: CCIP-3966 |
Static analysis results are availableHey @jhweintraub, you can view Slither reports in the job summary here or download them as artifact here. |
AER Report: CI Coreaer_workflow , commit , Detect Changes , Clean Go Tidy & Generate , Scheduled Run Frequency , GolangCI Lint (.) , test-scripts , Core Tests (go_core_tests) , Core Tests (go_core_tests_integration) , Core Tests (go_core_ccip_deployment_tests) , Core Tests (go_core_fuzz) , Core Tests (go_core_race_tests) , lint , SonarQube Scan 1. Max code size exceeded:[go_core_ccip_deployment_tests]Source of Error:
Why: The error "max code size exceeded" indicates that the size of the smart contract code being deployed exceeds the maximum allowed size for the blockchain network. This is a common limitation in Ethereum and other EVM-compatible blockchains to prevent excessively large contracts from being deployed, which could lead to performance issues. Suggested fix: To resolve this issue, consider optimizing the smart contract code to reduce its size. This can include removing unnecessary code, using libraries efficiently, and splitting the contract into smaller, modular contracts if possible. Additionally, ensure that the deployment scripts are correctly configured to handle the optimized contracts. 2. Max code size exceeded:[go_core_tests]Source of Error:
Why: Similar to the previous error, this indicates that the smart contract code size exceeds the maximum allowed limit for deployment on the blockchain network. Suggested fix: Apply the same optimizations as suggested for the previous error. Focus on reducing the contract size by optimizing the code, removing redundancies, and possibly splitting the contract into smaller, more manageable pieces. Ensure that the deployment scripts are updated to handle these changes. AER Report: Operator UI CIaer_workflow , commit , Breaking Changes GQL Check 1. Submodule path URL not found: Breaking Changes GQL CheckSource of Error:
Why: The error occurs because the submodule path 'contracts/foundry-lib/forge-std' does not have a URL specified in the .gitmodules file. This is required for Git to fetch the submodule. Suggested fix: Ensure that the .gitmodules file includes a valid URL for the 'contracts/foundry-lib/forge-std' submodule. Add the URL if it is missing or correct it if it is incorrect. |
|
||
bytes memory argsData = extraArgs[4:]; | ||
|
||
Client.SolExtraArgsV1 memory solExtraArgs = abi.decode(argsData, (Client.SolExtraArgsV1)); |
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.
can return, don't need to assign
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.
Do we not need to check the validity of the computeUnits?
// Prevents a stack too deep error on messageData | ||
{ | ||
bytes memory data = messageData; | ||
(convertedExtraArgs, isOutOfOrderExecution) = _processChainFamilySelector(destChainSelector, data, extraArgs); |
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.
Only the length is ever used, it's a lot cheaper to pass in a single length property
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.
Now that we don't have to check for message length though we can remove this anyways
SolanaAccountMeta[] accounts; | ||
} | ||
|
||
struct SolanaAccountMeta { |
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.
This feels pretty expensive as we use 33 bytes per account. We could consider the writability as a bool encoding into a digit?
Quality Gate passedIssues Measures |
# Conflicts: # core/gethwrappers/ccip/generated/fee_quoter/fee_quoter.go # core/gethwrappers/ccip/generated/onramp/onramp.go # core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt
Add Solana Support to the FeeQuoter by adding
CHAIN_FAMILY_SELECTOR_SOL
SOL_EXTRA_EXTRA_ARGS_V1_TAG