-
Notifications
You must be signed in to change notification settings - Fork 446
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
feat: CCIP and Open USDT warp route #5508
base: main
Are you sure you want to change the base?
Conversation
### Description Enables hooks to compose with the default hook without an explicit address pointer ### Backward compatibility Yes ### Testing Unit Tests
### Description Authorized message ID hook quoted after sending unnecessarily. Introduces shared refund logic for this, protocol fee hook, and others in future. ### Drive-By Changes Bumps forge-std libs and fixes false positive expect reverts. ### Backward compatibility Yes ### Testing Unit Tests --------- Co-authored-by: Raid Ateir <[email protected]>
### Description Implements hook and ISM that routes to different submodules on whether the warped amount exceeds a configurable threshold. Adjusts `TokenRouter.quoteGasPayment` implementation to quote for max amount. This ensures clients of warp routes with `AmountRoutingHook` will provide sufficient quotes for all transfers. Overpayment will be refunded as per #5399. ### Backward compatibility Yes ### Testing Unit Tests
### Description Implements CCIP hook and ISM that offloads message verification to the CCIP message bridge ### Related issues Fixes #2852 ### Backward compatibility Yes ### Testing Unit Tests/Fork Tests --------- Co-authored-by: Raid Ateir <[email protected]>
### Description Enable out of order message execution to prevent DoS. Set gas limit to benchmark from `forge test --isolate`. Use 0 instead of msg.value in CCIP ISM. ### Backward compatibility Yes ### Testing Unit/Fork Tests
### Description Replace use of `address.transfer` (fixed gaslimit) with `address.sendValue` for refund recipients that may be contracts. ### Backward compatibility Yes ### Testing Unit Tests
### Description Allow `HypXERC20` and `HypXERC20Lockbox` to be derived in the warp reader, similar to #5478, just for CLI ### Backward compatibility Yes ### Testing Manual/Unit Tests
### Description When using `WarpDeployConfig` we often assume certain defaults, however when we compare against `warp read` config, it includes all the "expanded" config. This PR adds "config expansion", so that checking actually can be done. As part of that, it removes the practice of `warp read` after deploy in the warp check e2e tests so that the actual comparison against the intended deploy config can happen (instead of the inferred config from warp read). This is related to #5358 and in fact lifts some of the convenience function into `configUtils.ts` fyi @mshojaei-txfusion ### Drive-by changes The warp-check e2e test setup changes as mentioned ### Backward compatibility Yes ### Testing Local e2e tests and manual
### Description This PR changes the canonical definition of using the default ism/hooks from `undefined` to `zeroAddress`. This ultimately makes cli checking work. Builds on top of #5483 and should be based against it once CI tests are passing ### Backward compatibility Mostly yes (because I don't think this behavior has been leveraged) ### Testing Unit tests/e2e tests/ manual tests
### Description Minor fixes to make the infra warp checker work with the xerc20 derivation
### Description Implement checking proxy and ownership of warp route collateral contracts. ### Backward compatibility Yes ### Testing Unit tests
### Description Fix persisting the collateral token when it is an xerc20 token
🦋 Changeset detectedLatest commit: a18258a The changes in this PR will be included in the next version bump. This PR includes changesets to release 9 packages
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
### Description - Define `EvmHypVSXERC20Adapter` and `EvmHypVSXERC20LockboxAdapter` adapters for token routers that use the custom xERC20 - Add a script to add bridges to warp route where the collateral token is an xERC20VS - Add a script to set limits for the xERC20VS token used by a warp route ### Testing - Manually tested on an old staging route xERC20 deployed last week - Tested setting limits on bridge --------- Co-authored-by: pbio <[email protected]>
### Description - fix duplicate import
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #5508 +/- ##
==========================================
+ Coverage 77.53% 78.45% +0.92%
==========================================
Files 103 109 +6
Lines 2110 2163 +53
Branches 190 193 +3
==========================================
+ Hits 1636 1697 +61
+ Misses 453 445 -8
Partials 21 21
🚀 New features to boost your workflow:
|
### Description - Support adding bridges and setting limits for additional limits ### Testing Manual
### Description - Generally handle Safe or Signer transactions properly - Throw when safe tx service is not available - Specifically fallback to Signer tx when the expected owner is a safe in the config but the actual owner is the deployer (Signer), this special case occurs post deployment before ownership transfers are applied ### Testing Manual
### Description Right now we are checking ownables in the infra checker for the collateral token (and its proxy admin). However, we want to be testing the xerc20 owners.
### Description Updates the infra monitor to monitor the limits and balances of extra lockboxes ### Drive-by changes ### Related issues ### Backward compatibility - YES ### Testing - Manual --------- Co-authored-by: Mo Hussan <[email protected]>
### Description - update docker image
### Description feat: xerc20 safe tx submission improvements - use getSafeAndService infra util where possible instead of SDK directly (to have retry logic) - refactor sendTransaction logic to better leverage MultiSend - add --chains filter  ### Drive-by changes <!-- Are there any minor or drive-by changes also included? --> ### Related issues <!-- - Fixes #[issue number here] --> ### Backward compatibility <!-- Are these changes backward compatible? Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling? Yes/No --> ### Testing manual
### Description This PR adds e2e tests to `warp check` to test each individual MUTABLE_HOOK_TYPE to validate if `warp check` detects ownership diffs ### Drive-by changes - export MUTABLE_HOOK_TYPE and randomHookConfig from sdk ### Backward compatibility Yes
### Description This PR adds e2e tests to `warp check` to test each individual MUTABLE_ISM_TYPE to validate if `warp check` detects ownership diffs ### Drive-by changes - export MUTABLE_ISM_TYPE and randomIsmConfig from sdk - Update randomIsmConfig to generate the mutable Isms ### Backward compatibility Yes
### Description Removes a bridge when the buffer cap is set to 0
* feat: SuperUSDT config getter * configure chains for staging * use staging token addresses * remove worldchain * Add production config * Change as per 76f8a5c * Add Lisk/superseed owners * Finalize initial config * Adjust the hook/ism config * Revert aggregation ISM * Revert aggregation hook * Update XERC20 addresses * Add pausable to non CCIP chains * Add extra lockboxes to config * Use signer in add bridge script * Add comment for lockbox erc20 * Don't show undefined * Add staging extra lockboxes * Finalize limits for SuperUSDT * Update registry RC to CCIP registry branch * Skip Open USDT warp ID temporarily --------- Co-authored-by: pbio <[email protected]> Co-authored-by: nambrot <[email protected]>
@@ -0,0 +1,88 @@ | |||
// SPDX-License-Identifier: MIT OR Apache-2.0 | |||
pragma solidity >=0.8.0; |
Check notice
Code scanning / Olympix Integrated Security
Using an unbounded pragma for Solidity version may be unsafe if future versions introduce breaking changes. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/unbounded-pragma
// ============ Constructor ============ | ||
|
||
constructor( | ||
address _ccipRouter, |
Check notice
Code scanning / Olympix Integrated Security
Parameters passed to a constructor that are not validated for correct values may lead to contract creation in an undesired state. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/no-parameter-validation-in-constructor
|
||
constructor( | ||
address _ccipRouter, | ||
uint64 _ccipDestination, |
Check notice
Code scanning / Olympix Integrated Security
Parameters passed to a constructor that are not validated for correct values may lead to contract creation in an undesired state. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/no-parameter-validation-in-constructor
constructor( | ||
address _ccipRouter, | ||
uint64 _ccipDestination, | ||
address _mailbox, |
Check notice
Code scanning / Olympix Integrated Security
Parameters passed to a constructor that are not validated for correct values may lead to contract creation in an undesired state. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/no-parameter-validation-in-constructor
address _ccipRouter, | ||
uint64 _ccipDestination, | ||
address _mailbox, | ||
uint32 _destination, |
Check notice
Code scanning / Olympix Integrated Security
Parameters passed to a constructor that are not validated for correct values may lead to contract creation in an undesired state. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/no-parameter-validation-in-constructor
uint64 _ccipDestination, | ||
address _mailbox, | ||
uint32 _destination, | ||
bytes32 _ism |
Check notice
Code scanning / Olympix Integrated Security
Parameters passed to a constructor that are not validated for correct values may lead to contract creation in an undesired state. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/no-parameter-validation-in-constructor
@@ -0,0 +1,70 @@ | |||
// SPDX-License-Identifier: MIT OR Apache-2.0 | |||
pragma solidity >=0.8.0; |
Check notice
Code scanning / Olympix Integrated Security
Using an unbounded pragma for Solidity version may be unsafe if future versions introduce breaking changes. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/unbounded-pragma
* @title CCIPIsm | ||
* @notice Uses CCIP hook to verify interchain messages. | ||
*/ | ||
contract CCIPIsm is AbstractMessageIdAuthorizedIsm, CCIPReceiver { |
Check failure
Code scanning / Olympix Integrated Security
Contracts that can receive ether but cannot send it may lock value permanently. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/locked-ether
|
||
// ============ Storage ============ | ||
constructor( | ||
address _ccipRouter, |
Check notice
Code scanning / Olympix Integrated Security
Parameters passed to a constructor that are not validated for correct values may lead to contract creation in an undesired state. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/no-parameter-validation-in-constructor
// ============ Storage ============ | ||
constructor( | ||
address _ccipRouter, | ||
uint64 _ccipOrigin |
Check notice
Code scanning / Olympix Integrated Security
Parameters passed to a constructor that are not validated for correct values may lead to contract creation in an undesired state. For more information, visit: http://detectors.olympixdevsectools.com/article/web3-vulnerability/no-parameter-validation-in-constructor
Description
For this push to support CCIP on the warp route, we had to manage a separate feature branch to ensure that
main
only has audited smart contract changes. Given that we have received Chainlight's audit, we can now merge these changes back intomain