Skip to content

Add OFTTransportAdapter to support cross-chain token transfers of USDT0 via OFT messaging protocol #902

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

Merged
merged 23 commits into from
Mar 12, 2025

Conversation

grasphoper
Copy link
Contributor

@grasphoper grasphoper commented Feb 25, 2025

Closes ACX-3761, ACX-3762, ACX-3774

Copy link

socket-security bot commented Feb 26, 2025

No dependency changes detected. Learn more about Socket for GitHub ↗︎

👍 No dependency changes detected in pull request

grasphoper and others added 4 commits February 25, 2025 16:59
Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Ihor Farion <ihor@umaproject.org>
This reverts commit 4c216ea.

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Ihor Farion <ihor@umaproject.org>
@grasphoper grasphoper force-pushed the if/oft-transport-adapter branch from 3603392 to dc3da61 Compare February 26, 2025 00:59
…, and Arbitrum_SpokePool on L2

Signed-off-by: Ihor Farion <ihor@umaproject.org>
@grasphoper grasphoper marked this pull request as ready for review February 26, 2025 03:27
@grasphoper
Copy link
Contributor Author

Please review the code and provide suggestions.
There's an issue with contract sizes that's yet to be fully resolved. I can't really fully resolve it until I get contracts compiling on M4 properly

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Ihor Farion <ihor@umaproject.org>
@grasphoper
Copy link
Contributor Author

2 points:

  • CI is failing because of insufficient number of args provided in testing. Not sure where to set those
  • there's a package.json change in this PR: prepublish -> prepublishOnly. Made it more intuitive for me to work with package management. I'd change it, but maybe I don't know all the implications

@pxrl
Copy link
Contributor

pxrl commented Feb 26, 2025

2 points:

  • CI is failing because of insufficient number of args provided in testing. Not sure where to set those

See here:

).deploy(l1Inbox.address, l1ERC20GatewayRouter.address, refundAddress.address, usdc.address, cctpMessenger.address);

Also see below for how I found that.

  • there's a package.json change in this PR: prepublish -> prepublishOnly. Made it more intuitive for me to work with package management. I'd change it, but maybe I don't know all the implications

This just changes the target name for the yarn script, right?

https://github.com/across-protocol/contracts/actions/runs/13536201035/job/37828241369
errs

Copy link
Contributor

@pxrl pxrl left a comment

Choose a reason for hiding this comment

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

Great start! I might be commenting on things you'd already planned to change, but here are some observations.

* @dev If the IOFT is the zero address, OFT bridging is disabled.
*/
function _isOFTEnabled(address _token) internal view returns (bool) {
return address(oftMessenger) != address(0) && address(usdt) == _token;
Copy link
Contributor

Choose a reason for hiding this comment

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

Subject to whether the USDT address remains in this contract, flipping the order of evaluation here should skip a redundant check when the token is not USDT.

Suggested change
return address(oftMessenger) != address(0) && address(usdt) == _token;
return address(usdt) == _token && address(oftMessenger) != address(0);

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This one is interesting, because the current logic in the PR is the one you suggested to change to in the CCTP branch.

We have 2 options:

  1. check zero-addr first, then token
  2. check token first, then zero-addr

For CCTP, OFT enabled chains:
2 is better, because the 2nd part of the branch will not get evaluated.

For chains that inherit CCTP, OFT, but not use it
1 is better, because the zero check will always succeed

Which one do we want you think?

Copy link
Contributor

Choose a reason for hiding this comment

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

USDT is only a one of several tokens that we support, so to me it makes most sense to filter on token address first. This means we only pay a penalty when evaluating USDT on chains that do not support OFT; but the benefit is that all other tokens we bridge back do not incur that additional comparison. The set of non-OFT USDT deployments should reduce over time as more chains migrate to OFT.

* @notice Returns whether or not the OFT bridge is enabled.
* @dev If the IOFT is the zero address, OFT bridging is disabled.
*/
function _isOFTEnabled(address _token) internal view returns (bool) {
Copy link
Contributor

Choose a reason for hiding this comment

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

The USDT address is actually only used within this function, but it makes the implementation 1:1 coupled to a specific token. If we can store supported tokens in a mapping, or implement that check externally to this adapter (as is done for CCTP) then the adapter should become a bit more generic, and wouldn't necessarily need to store the USDT address as a variable.

I think this would require a mapping of token -> oftMessenger, which is admittedly a bit more complex to implement. It could potentially be done via an admin function from the SpokePool. I'm ATM not sure how it could work when bridging from the HubPool.

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 think this would require a mapping of token -> oftMessenger

Yep.

Let's discuss this in the above thread

Copy link
Member

@nicholaspai nicholaspai left a comment

Choose a reason for hiding this comment

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

Left some comments!

@grasphoper
Copy link
Contributor Author

@pxrl @nicholaspai

more details on prepublish vs prepublishOnly change.

When I was fixing my yarn install problem, I initially got very confused as to what was happening. Turned out, prepublish script from package.json was run after every yarn add which was very counterintuitive.

I found this as solution on the internet.

Wanted to start a discussion for if we need this to stay prepublish or if we're open to changing it. It might help someone new to the repo in the future.

This change is beyond the scope of the PR, but a one-liner so I decided to add it here and discuss

Signed-off-by: Ihor Farion <ihor@umaproject.org>
@pxrl
Copy link
Contributor

pxrl commented Feb 27, 2025

@pxrl @nicholaspai

more details on prepublish vs prepublishOnly change.

When I was fixing my yarn install problem, I initially got very confused as to what was happening. Turned out, prepublish script from package.json was run after every yarn add which was very counterintuitive.

I found this as solution on the internet.

Wanted to start a discussion for if we need this to stay prepublish or if we're open to changing it. It might help someone new to the repo in the future.

This change is beyond the scope of the PR, but a one-liner so I decided to add it here and discuss

In general it seems odd that we're using prepublish in this way - note that yarn's own documentation (admittedly for v4, whilst we're on v1) says it should not have any side-effects, so it seems like we're misusing that script target.

https://yarnpkg.com/advanced/lifecycle-scripts#prepublish
warning Because it's only called on prepublish, the prepublish hook shouldn't have side effects. In particular don't transpile the package sources in prepublish, as people consuming directly your repository (such as through the [git: protocol](https://yarnpkg.com/protocol/git)) wouldn't be able to use your project. Instead, use prepack.

See here for the yarn v1.22 docs on these targets: https://classic.yarnpkg.com/en/docs/package-json#scripts-

Also based on this, prepublishOnly is npm-specific and yarn does not list any support for it, so I think renaming this here is likely to have side-effects for our build process and CI.

@grasphoper
Copy link
Contributor Author

grasphoper commented Feb 27, 2025

@pxrl @nicholaspai
more details on prepublish vs prepublishOnly change.
When I was fixing my yarn install problem, I initially got very confused as to what was happening. Turned out, prepublish script from package.json was run after every yarn add which was very counterintuitive.
I found this as solution on the internet.
Wanted to start a discussion for if we need this to stay prepublish or if we're open to changing it. It might help someone new to the repo in the future.
This change is beyond the scope of the PR, but a one-liner so I decided to add it here and discuss

In general it seems odd that we're using prepublish in this way - note that yarn's own documentation (admittedly for v4, whilst we're on v1) says it should not have any side-effects, so it seems like we're misusing that script target.

https://yarnpkg.com/advanced/lifecycle-scripts#prepublish warning Because it's only called on prepublish, the prepublish hook shouldn't have side effects. In particular don't transpile the package sources in prepublish, as people consuming directly your repository (such as through the [git: protocol](https://yarnpkg.com/protocol/git)) wouldn't be able to use your project. Instead, use prepack.

See here for the yarn v1.22 docs on these targets: https://classic.yarnpkg.com/en/docs/package-json#scripts-

Also based on this, prepublishOnly is npm-specific and yarn does not list any support for it, so I think renaming this here is likely to have side-effects for our build process and CI.

So, from what I see, our only alternatives would be these ? install, postinstall, prepublish, and prepare. Quote from v1 docs:

Certain script names are special. If defined, the preinstall script is called by yarn before your package is installed. For compatibility reasons, scripts called install, postinstall, prepublish, and prepare will all be called after your package has finished installing.

@nicholaspai
Copy link
Member

@pxrl @nicholaspai
more details on prepublish vs prepublishOnly change.
When I was fixing my yarn install problem, I initially got very confused as to what was happening. Turned out, prepublish script from package.json was run after every yarn add which was very counterintuitive.
I found this as solution on the internet.
Wanted to start a discussion for if we need this to stay prepublish or if we're open to changing it. It might help someone new to the repo in the future.
This change is beyond the scope of the PR, but a one-liner so I decided to add it here and discuss

In general it seems odd that we're using prepublish in this way - note that yarn's own documentation (admittedly for v4, whilst we're on v1) says it should not have any side-effects, so it seems like we're misusing that script target.
https://yarnpkg.com/advanced/lifecycle-scripts#prepublish warning Because it's only called on prepublish, the prepublish hook shouldn't have side effects. In particular don't transpile the package sources in prepublish, as people consuming directly your repository (such as through the [git: protocol](https://yarnpkg.com/protocol/git)) wouldn't be able to use your project. Instead, use prepack.
See here for the yarn v1.22 docs on these targets: https://classic.yarnpkg.com/en/docs/package-json#scripts-
Also based on this, prepublishOnly is npm-specific and yarn does not list any support for it, so I think renaming this here is likely to have side-effects for our build process and CI.

So, from what I see, our only alternatives would be these ? install, postinstall, prepublish, and prepare. Quote from v1 docs:

Certain script names are special. If defined, the preinstall script is called by yarn before your package is installed. For compatibility reasons, scripts called install, postinstall, prepublish, and prepare will all be called after your package has finished installing.

Regardless of the outcome of this script name, we should change it in a separate PR and not bundle it into this PR

@grasphoper
Copy link
Contributor Author

grasphoper commented Feb 27, 2025

@nicholaspai @pxrl Perhaps this prepublish thing deserves a separate PR to discuss if we decide it's worth the time. For now though, I will just revert to using prepublish in this one

Edit: actually, I created an issue for discussion

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Ihor Farion <ihor@umaproject.org>
@grasphoper
Copy link
Contributor Author

Hi @pxrl @nicholaspai @bmzig

I updated this PR with these main changes:

  • modified deploy scripts
  • added basic tests for OFT functionality
  • addressed many of the comments on prev. reviews

Main unresolved issues (they're also in "todo: ..." comments in the code):

  • in OFTTransportAdapter, when we're calling this OFT_MESSENGER.send{ value: fee.nativeFee }(...), we're trusting OFT_MESSENGER.quoteSend(...) to have returned a sane fee in the previous call. Should we check against some sane limit here?
  • related to previous point: _contractHasSufficientEthBalance. When calling canonical L2 -> L1 bridge, Arbitrum_Adapter checks that we have enough eth on the contract before calling the function (I guess for better error reporting). Should we do the same here?
  • this PR creates an apparent imbalance between AlephZero SpokePool and Adapter, where Arbitrum_SpokePool just inherits full Arbitrum_SpookePool functionality, but on the adapter side, I assume it's using Arbitrum_CustomGasToken_Adapter, which didn't have any functionality added. In practice though, we should be able to just set the OFTTransportAdapter to zero address on AlephZero_SpokePool and be fine, but I wanted to mention this

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Ihor Farion <ihor@umaproject.org>
Copy link
Member

@nicholaspai nicholaspai left a comment

Choose a reason for hiding this comment

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

LGTM, I just left one comment!

Signed-off-by: Ihor Farion <ihor@umaproject.org>
…removing boilerplate code

Signed-off-by: Ihor Farion <ihor@umaproject.org>
@@ -0,0 +1,83 @@
// SPDX-License-Identifier: BUSL-1.1
pragma solidity ^0.8.0;
// ! todo: should this file live under a MIT licence? It's MIT-licenced in LZ code
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Please give licence advice!

Copy link
Member

Choose a reason for hiding this comment

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

We should just use the same license as our other licenses

Signed-off-by: Ihor Farion <ihor@umaproject.org>
@@ -16,6 +16,9 @@ import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
contract Linea_SpokePool is SpokePool {
using SafeERC20 for IERC20;

// Linea_SpokePool does not use OFT messaging, setting the cap to 0
uint256 private constant OFT_FEE_CAP = 0;
Copy link
Member

Choose a reason for hiding this comment

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

It might in the future, right? We should probably pass this in the constructor

Copy link
Contributor Author

Choose a reason for hiding this comment

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

The thing is, when we support this, we'll have to make changes to _bridgeTokensToHubPool function in this same contract. I think it makes sense to add it to constructor then, just not to add additional params to chains that will not support this prematurely. What do you think?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Another solution could be this:

I add OFT code to every contract that "can potentially support OFT" and then in _bridgeTokensToHubPool it's going to be behind a zero address check. When we decide to turn it on and support a token, the code will be ready. Hmm, perhaps do this?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Cause currently only Arbitrum_SpokePool / Arbitrum_Adapter are using the OFT logic fully, and we'd need to change code for others to do the same.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Talked off-site about this. Will leave code like it is for now to not grow this PR any more

// ! todo: should this file live under a MIT licence? It's MIT-licenced in LZ code

/**
* @notice This file contains minimal copies of relevant structs / interfaces for OFT bridging.
Copy link
Member

Choose a reason for hiding this comment

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

nit: can you link the permalink of the source code you copied it from?

Copy link
Member

@nicholaspai nicholaspai left a comment

Choose a reason for hiding this comment

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

Storage slot modifications look good, left comments on construction hardcoded params. Note that I purposefully didn't leave any comments on the Ethereum and Succinct SpokePools as these definitely won't use OFT's (because they don't actually bridge tokens)

Signed-off-by: Ihor Farion <ihor@umaproject.org>
@grasphoper
Copy link
Contributor Author

Context for @pxrl and @bmzig. Please review :)

Summary of OFT changes:

  • Add OFTTransportAdapter : a stateless contract that effectively acts as a library for OFT bridging
  • Adapters:
    • modify Arbitrum_Adapter to include an OFT logic branch in relayTokens function
    • OFT requires token ⇒ IOFT relationship. Stored in a separate(new and simple) AddressBook contract because adapters are supposed to be stateless
  • SpokePools:
    • Inherit OFTTransportAdapter from SpokePool; use a mapping for token ⇒ IOFT relationship. This lead to some storage layout changes, please take a look at those
    • Every contract that inherits SpokePool now can use OFT by adding a simple if branch into _bridgeTokensToHubPool function. For now though, only added to 2 pools: Arbitrum and AlephZero(cause it inherits Arbitrum). Aim to support USDT0 transfers Ethereum <> Arbitrum initially
  • Modified deploy scripts as necessary:
    • Arbitrum_Adapter, Arbitrum_SpokePool
    • AlephZero_SpokePool
    • (new) AddressBook
  • Added tests as necessary:
    • Arbitrum_SpokePool + Adapter. No other pools / adapters fully support OFT yet (do not include OFT branch in their token send logic)
  • contracts/interfaces/IOFT.sol was copied from layerzero repo, but with different solidity version (we had an incompatibility otherwise)

);

// `false` in the 2nd param here refers to `bool _payInLzToken`. We will pay in native token, so set to `false`
MessagingFee memory fee = _messenger.quoteSend(sendParam, false);
Copy link
Contributor

Choose a reason for hiding this comment

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

Very nitty, but we can save a small amount of gas if you load fee.nativeFee onto the stack, i.e. uint256 nativeFee = fee.nativeFee.

It will save a negligible amount of gas, but I think it doesn't hurt to do.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Ah, I totally missed this before merging. Will bundle this change into the another PR, thank you!

Copy link
Contributor Author

Choose a reason for hiding this comment

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

You mean that I later load from memory 3 times in the code below? Yeah, makes sense, I can load once. It's actually a very thorough observation 😄

Signed-off-by: Ihor Farion <ihor@umaproject.org>
@grasphoper grasphoper merged commit 46824c4 into march-25-evm-audit Mar 12, 2025
9 checks passed
@grasphoper grasphoper deleted the if/oft-transport-adapter branch March 12, 2025 23:32
nicholaspai added a commit that referenced this pull request Mar 28, 2025
…926)

* fix(ZkSync_SpokePool): Add __gap (#907)

* fix(ZkSync_SpokePool): Add __gap

This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

* Update ZkSync_SpokePool.json

* Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

* first draft of OFTTransportAdapter

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update yarn.lock file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Revert "update yarn.lock file"

This reverts commit 4c216ea.

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add yarn.lock compatible with master

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish + fix missing approval

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add context for dstEid

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address most of the PR comments about contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update deploy scripts, add tests for OFT messaging, polish contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* cleanup comments and extraneous log file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* revert package.json prepublish change

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update some comments; adjust fee cap naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix deploy script, remove incorrect values from consts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* improve comment

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add oftFeeCap as a param to arbitrum adapter construction

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* move OFT functionality to SpokePool for easy further integration and removing boilerplate code

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* remove layerzero from foundry remappings

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address licensing comment; add permalink to LZ OFT code on github

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix a couple of comment typos

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

* feat(SpokePoolPeriphery): Support multiple exchanges

Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

* rename

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Add unit tests

* Add whitelistExchanges only owner method

* rename

* Remove onlyOwner

* Remove whitelist of exchanges, add proxy to bypass approval abuse

Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

* Add some protection to callSpokePoolPeriphery

* Only call swapAndBridge through proxy

* move periphery funcs into proxy

* Update SpokePoolV3Periphery.sol

* remove depositERC20

* Update SpokePoolV3Periphery.sol

* Add back safeTransferFron's to permit funcs

* Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

* Add interfaces to make sure we don't add new functions as easily

* Add Create2Factory

* feat: add permit2 entrypoints to the periphery (#782)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: sponsored swap and deposits (#790)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* factor out signature checking

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* feat: Delete SwapAndBridge and add submission fees to gasless flow

SwapAndBridge is to be replaced with SpokePoolV3Periphery

Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

* Internal refactor

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Bennett <bennett@umaproject.org>

* Update SpokePoolV3Periphery.sol

* Update SpokePoolPeriphery.t.sol

* Move all comments to interface and use inherit doc

* fix: eip712 types and hashes (#821)

* refactor comments

Signed-off-by: bennett <bennett@umaproject.org>

* Create IERC20Auth.sol

* fix tests

* Comments

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* Single AddressBook for all adapters (#919)

* use a single address book instead of 1 per adapter for oft / xerc20 storage needs

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update comments and naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add a gas optimization suggested in OFT PR

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments and minor improvements

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix spokePool test

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit

Allows Across to support inputTokens without enabling deposit routes for them, by forcing filler to take repayment of the token on the origin chain.

Enhances protection against gas cost griefing vector in when executing refund leaves, since removal of this enabledDepositRoutes check would allow someone to force the refund leaf executor to call a malicious ERC20.transfer() function

* add tests

* Make check unilateral

* Update SpokePool.Deposit.ts

* apply tests

* storage layouts

* merge conflicts

* Create SwapAndBridge.sol

* Fix conflicts

* Fix storage layouts

* Remove solana setEnableRoute special logic

* Remove MAX_ERC20_TRANSFER_GAS_COST

* Update SpokePool.sol

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>
nicholaspai added a commit that referenced this pull request Mar 29, 2025
* fix(ZkSync_SpokePool): Add __gap (#907)

* fix(ZkSync_SpokePool): Add __gap

This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

* Update ZkSync_SpokePool.json

* feat: Add SP1_Adapter and SP1_SpokePool

Can be used to relay messages from L1 to L2 spoke pools using SP1 + Helios

* Remove sp1 import

* Add simple test

* Re-use storage slots in HubPoolStore

- SP1_Adapter sets target == address(0) for relayRootBundle() calls to L2 as a gas-optimization
- Add contractAddress to ContractPublicValues
- Add deploy script with warning to NOT use create2 as we want each target spoke pool address to be unique

* Update SP1_SpokePool.sol

* Added replay protection

* Updated event

* Don't include nonce in data hash, emit data hash

* Store relayRootBundle calldata with no nonce for gas optimization

* Rename contract public values variables to make it clearer how storage slot proofs could be substituted for eth_call

* Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

* first draft of OFTTransportAdapter

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update yarn.lock file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Revert "update yarn.lock file"

This reverts commit 4c216ea.

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add yarn.lock compatible with master

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish + fix missing approval

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add context for dstEid

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address most of the PR comments about contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update deploy scripts, add tests for OFT messaging, polish contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* cleanup comments and extraneous log file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* revert package.json prepublish change

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update some comments; adjust fee cap naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix deploy script, remove incorrect values from consts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* improve comment

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add oftFeeCap as a param to arbitrum adapter construction

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* move OFT functionality to SpokePool for easy further integration and removing boilerplate code

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* remove layerzero from foundry remappings

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address licensing comment; add permalink to LZ OFT code on github

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix a couple of comment typos

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* In HubPoolStore, store byes rather than a struct, add simple unit tests

* Update SP1_SpokePool.sol

* feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

* feat(SpokePoolPeriphery): Support multiple exchanges

Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

* rename

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Add unit tests

* Add whitelistExchanges only owner method

* rename

* Remove onlyOwner

* Remove whitelist of exchanges, add proxy to bypass approval abuse

Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

* Add some protection to callSpokePoolPeriphery

* Only call swapAndBridge through proxy

* move periphery funcs into proxy

* Update SpokePoolV3Periphery.sol

* remove depositERC20

* Update SpokePoolV3Periphery.sol

* Add back safeTransferFron's to permit funcs

* Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

* Add interfaces to make sure we don't add new functions as easily

* Add Create2Factory

* feat: add permit2 entrypoints to the periphery (#782)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: sponsored swap and deposits (#790)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* factor out signature checking

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* feat: Delete SwapAndBridge and add submission fees to gasless flow

SwapAndBridge is to be replaced with SpokePoolV3Periphery

Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

* Internal refactor

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Bennett <bennett@umaproject.org>

* Update SpokePoolV3Periphery.sol

* Update SpokePoolPeriphery.t.sol

* Move all comments to interface and use inherit doc

* fix: eip712 types and hashes (#821)

* refactor comments

Signed-off-by: bennett <bennett@umaproject.org>

* Create IERC20Auth.sol

* fix tests

* Comments

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* Single AddressBook for all adapters (#919)

* use a single address book instead of 1 per adapter for oft / xerc20 storage needs

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update comments and naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add a gas optimization suggested in OFT PR

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments and minor improvements

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix spokePool test

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Rename to universal adapter

* Update UniversalEventInclusionProof_Adapter.sol

* Add R0_SpokePool capable of receiving events via event inclusion proofs

* Update R0Steel.sol

* Steel light client commitments

* Update R0_SpokePool.sol

* read storage slots from Helios

* Change Steel call to more likely interface validateCommitment

* Link Steel to SP1Helios light client

* Update HeliosSteelValidator.sol

* rename to IHelios

* Pass in Journal instead of bytes; use eventKey as replay protection key.

* Add OFT adapter to L2 spoke pools

* Add OFT adapter to Universal adapter

* Replace OFT/HYP with CCTP

* Update SP1_SpokePool.t.sol

* Rebase to master

* fix

* Add hub pool store deploy script

* Update Journal params

* Update SP1_SpokePool.sol

* remove verifier from SP1SpokePool

* update logs

* Update SP1_SpokePool.sol

* Rename Sp1SpokePool to StorageProofSpokePool, remove R0 Spoke

* use challenge period timestamp as nonce in storage proof adapter

* Update UniversalStorageProof_SpokePool.sol

* Use slotKey as data hash

* Add test to spoke pool about dataHash

* Allow admin root bundles in between livenesses

* Add checks for admin root bundle

* Add fallback function to spoke pool

* move HubPoolStore to utilities folder

* Remove challenge period timestamp check

* Adds more robust isAdminRootBundle check, plus unit tests

We know an admin root bundle is definitely being sent whenever the pending root bundle is empty or in liveness period, or the root bundle calldata is identical to the pending root bundle.

In the edge case where an admin root bundle is identicl to the pending root bundle and that pending root bundle has passed liveness, we treat the admin bundle as a normal root bundle, which is pretty much harmless

* add placeholder unit tests

* Update IHelios.sol

* Update HubPoolStore.sol

* Finish universal adapter tests

* Store bytes32 at relayAdminFunctionCalldata

* Finish tests

* Use uint256 nonce as key in HubPoolStore

* rename deploy scripts

* Change isAdminSender check

* Add helios.headTimestamp check

* Compute slot key in contract to improve UX

* Update checkStorageLayout.sh

* Delete UniversalStorageProof_SpokePool.json

* Delete UniversalStorageProof_SpokePool.json

* Rename shorter

* Update utils.hre.ts

* Update admin messaging

* Add storage layout

* fix

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>
nicholaspai added a commit that referenced this pull request May 1, 2025
…974)

* feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit (#926)

* fix(ZkSync_SpokePool): Add __gap (#907)

* fix(ZkSync_SpokePool): Add __gap

This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

* Update ZkSync_SpokePool.json

* Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

* first draft of OFTTransportAdapter

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update yarn.lock file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Revert "update yarn.lock file"

This reverts commit 4c216ea.

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add yarn.lock compatible with master

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish + fix missing approval

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add context for dstEid

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address most of the PR comments about contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update deploy scripts, add tests for OFT messaging, polish contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* cleanup comments and extraneous log file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* revert package.json prepublish change

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update some comments; adjust fee cap naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix deploy script, remove incorrect values from consts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* improve comment

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add oftFeeCap as a param to arbitrum adapter construction

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* move OFT functionality to SpokePool for easy further integration and removing boilerplate code

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* remove layerzero from foundry remappings

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address licensing comment; add permalink to LZ OFT code on github

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix a couple of comment typos

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

* feat(SpokePoolPeriphery): Support multiple exchanges

Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

* rename

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Add unit tests

* Add whitelistExchanges only owner method

* rename

* Remove onlyOwner

* Remove whitelist of exchanges, add proxy to bypass approval abuse

Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

* Add some protection to callSpokePoolPeriphery

* Only call swapAndBridge through proxy

* move periphery funcs into proxy

* Update SpokePoolV3Periphery.sol

* remove depositERC20

* Update SpokePoolV3Periphery.sol

* Add back safeTransferFron's to permit funcs

* Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

* Add interfaces to make sure we don't add new functions as easily

* Add Create2Factory

* feat: add permit2 entrypoints to the periphery (#782)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: sponsored swap and deposits (#790)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* factor out signature checking

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* feat: Delete SwapAndBridge and add submission fees to gasless flow

SwapAndBridge is to be replaced with SpokePoolV3Periphery

Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

* Internal refactor

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Bennett <bennett@umaproject.org>

* Update SpokePoolV3Periphery.sol

* Update SpokePoolPeriphery.t.sol

* Move all comments to interface and use inherit doc

* fix: eip712 types and hashes (#821)

* refactor comments

Signed-off-by: bennett <bennett@umaproject.org>

* Create IERC20Auth.sol

* fix tests

* Comments

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* Single AddressBook for all adapters (#919)

* use a single address book instead of 1 per adapter for oft / xerc20 storage needs

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update comments and naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add a gas optimization suggested in OFT PR

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments and minor improvements

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix spokePool test

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit

Allows Across to support inputTokens without enabling deposit routes for them, by forcing filler to take repayment of the token on the origin chain.

Enhances protection against gas cost griefing vector in when executing refund leaves, since removal of this enabledDepositRoutes check would allow someone to force the refund leaf executor to call a malicious ERC20.transfer() function

* add tests

* Make check unilateral

* Update SpokePool.Deposit.ts

* apply tests

* storage layouts

* merge conflicts

* Create SwapAndBridge.sol

* Fix conflicts

* Fix storage layouts

* Remove solana setEnableRoute special logic

* Remove MAX_ERC20_TRANSFER_GAS_COST

* Update SpokePool.sol

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* feat: Add universal adapters and spoke pools (#916)

* fix(ZkSync_SpokePool): Add __gap (#907)

* fix(ZkSync_SpokePool): Add __gap

This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

* Update ZkSync_SpokePool.json

* feat: Add SP1_Adapter and SP1_SpokePool

Can be used to relay messages from L1 to L2 spoke pools using SP1 + Helios

* Remove sp1 import

* Add simple test

* Re-use storage slots in HubPoolStore

- SP1_Adapter sets target == address(0) for relayRootBundle() calls to L2 as a gas-optimization
- Add contractAddress to ContractPublicValues
- Add deploy script with warning to NOT use create2 as we want each target spoke pool address to be unique

* Update SP1_SpokePool.sol

* Added replay protection

* Updated event

* Don't include nonce in data hash, emit data hash

* Store relayRootBundle calldata with no nonce for gas optimization

* Rename contract public values variables to make it clearer how storage slot proofs could be substituted for eth_call

* Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

* first draft of OFTTransportAdapter

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update yarn.lock file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Revert "update yarn.lock file"

This reverts commit 4c216ea.

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add yarn.lock compatible with master

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish + fix missing approval

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add context for dstEid

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address most of the PR comments about contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update deploy scripts, add tests for OFT messaging, polish contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* cleanup comments and extraneous log file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* revert package.json prepublish change

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update some comments; adjust fee cap naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix deploy script, remove incorrect values from consts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* improve comment

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add oftFeeCap as a param to arbitrum adapter construction

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* move OFT functionality to SpokePool for easy further integration and removing boilerplate code

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* remove layerzero from foundry remappings

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address licensing comment; add permalink to LZ OFT code on github

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix a couple of comment typos

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* In HubPoolStore, store byes rather than a struct, add simple unit tests

* Update SP1_SpokePool.sol

* feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

* feat(SpokePoolPeriphery): Support multiple exchanges

Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

* rename

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Add unit tests

* Add whitelistExchanges only owner method

* rename

* Remove onlyOwner

* Remove whitelist of exchanges, add proxy to bypass approval abuse

Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

* Add some protection to callSpokePoolPeriphery

* Only call swapAndBridge through proxy

* move periphery funcs into proxy

* Update SpokePoolV3Periphery.sol

* remove depositERC20

* Update SpokePoolV3Periphery.sol

* Add back safeTransferFron's to permit funcs

* Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

* Add interfaces to make sure we don't add new functions as easily

* Add Create2Factory

* feat: add permit2 entrypoints to the periphery (#782)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: sponsored swap and deposits (#790)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* factor out signature checking

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* feat: Delete SwapAndBridge and add submission fees to gasless flow

SwapAndBridge is to be replaced with SpokePoolV3Periphery

Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

* Internal refactor

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Bennett <bennett@umaproject.org>

* Update SpokePoolV3Periphery.sol

* Update SpokePoolPeriphery.t.sol

* Move all comments to interface and use inherit doc

* fix: eip712 types and hashes (#821)

* refactor comments

Signed-off-by: bennett <bennett@umaproject.org>

* Create IERC20Auth.sol

* fix tests

* Comments

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* Single AddressBook for all adapters (#919)

* use a single address book instead of 1 per adapter for oft / xerc20 storage needs

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update comments and naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add a gas optimization suggested in OFT PR

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments and minor improvements

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix spokePool test

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Rename to universal adapter

* Update UniversalEventInclusionProof_Adapter.sol

* Add R0_SpokePool capable of receiving events via event inclusion proofs

* Update R0Steel.sol

* Steel light client commitments

* Update R0_SpokePool.sol

* read storage slots from Helios

* Change Steel call to more likely interface validateCommitment

* Link Steel to SP1Helios light client

* Update HeliosSteelValidator.sol

* rename to IHelios

* Pass in Journal instead of bytes; use eventKey as replay protection key.

* Add OFT adapter to L2 spoke pools

* Add OFT adapter to Universal adapter

* Replace OFT/HYP with CCTP

* Update SP1_SpokePool.t.sol

* Rebase to master

* fix

* Add hub pool store deploy script

* Update Journal params

* Update SP1_SpokePool.sol

* remove verifier from SP1SpokePool

* update logs

* Update SP1_SpokePool.sol

* Rename Sp1SpokePool to StorageProofSpokePool, remove R0 Spoke

* use challenge period timestamp as nonce in storage proof adapter

* Update UniversalStorageProof_SpokePool.sol

* Use slotKey as data hash

* Add test to spoke pool about dataHash

* Allow admin root bundles in between livenesses

* Add checks for admin root bundle

* Add fallback function to spoke pool

* move HubPoolStore to utilities folder

* Remove challenge period timestamp check

* Adds more robust isAdminRootBundle check, plus unit tests

We know an admin root bundle is definitely being sent whenever the pending root bundle is empty or in liveness period, or the root bundle calldata is identical to the pending root bundle.

In the edge case where an admin root bundle is identicl to the pending root bundle and that pending root bundle has passed liveness, we treat the admin bundle as a normal root bundle, which is pretty much harmless

* add placeholder unit tests

* Update IHelios.sol

* Update HubPoolStore.sol

* Finish universal adapter tests

* Store bytes32 at relayAdminFunctionCalldata

* Finish tests

* Use uint256 nonce as key in HubPoolStore

* rename deploy scripts

* Change isAdminSender check

* Add helios.headTimestamp check

* Compute slot key in contract to improve UX

* Update checkStorageLayout.sh

* Delete UniversalStorageProof_SpokePool.json

* Delete UniversalStorageProof_SpokePool.json

* Rename shorter

* Update utils.hre.ts

* Update admin messaging

* Add storage layout

* fix

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* Rename test file to .t

* improve: Add Security contact to contracts (#951)

* improve(Universal_SpokePool): Clarify comments + variable names (#952)

* improve(Universal_SpokePool): Clarify comments

* improve(UniversalSpokePool): Clarify variable names

* Deploy HubPoolStore and UniversalAdapter to Ethereum

* Add some WIP deployments - still need official Helios contract

* Bump constants

* Make DEPRECATED_enabledDepositRoutes private

* Update yarn.lock

* Update upgradeSpokePool.ts

* Update package.json

* Update SpokePool.Fixture.ts

* Deploy new impl

* Update package.json

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>
Reinis-FRP pushed a commit that referenced this pull request May 9, 2025
…974)

* feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit (#926)

* fix(ZkSync_SpokePool): Add __gap (#907)

* fix(ZkSync_SpokePool): Add __gap

This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

* Update ZkSync_SpokePool.json

* Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

* first draft of OFTTransportAdapter

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update yarn.lock file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Revert "update yarn.lock file"

This reverts commit 4c216ea.

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add yarn.lock compatible with master

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish + fix missing approval

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add context for dstEid

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address most of the PR comments about contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update deploy scripts, add tests for OFT messaging, polish contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* cleanup comments and extraneous log file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* revert package.json prepublish change

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update some comments; adjust fee cap naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix deploy script, remove incorrect values from consts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* improve comment

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add oftFeeCap as a param to arbitrum adapter construction

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* move OFT functionality to SpokePool for easy further integration and removing boilerplate code

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* remove layerzero from foundry remappings

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address licensing comment; add permalink to LZ OFT code on github

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix a couple of comment typos

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

* feat(SpokePoolPeriphery): Support multiple exchanges

Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

* rename

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Add unit tests

* Add whitelistExchanges only owner method

* rename

* Remove onlyOwner

* Remove whitelist of exchanges, add proxy to bypass approval abuse

Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

* Add some protection to callSpokePoolPeriphery

* Only call swapAndBridge through proxy

* move periphery funcs into proxy

* Update SpokePoolV3Periphery.sol

* remove depositERC20

* Update SpokePoolV3Periphery.sol

* Add back safeTransferFron's to permit funcs

* Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

* Add interfaces to make sure we don't add new functions as easily

* Add Create2Factory

* feat: add permit2 entrypoints to the periphery (#782)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: sponsored swap and deposits (#790)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* factor out signature checking

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* feat: Delete SwapAndBridge and add submission fees to gasless flow

SwapAndBridge is to be replaced with SpokePoolV3Periphery

Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

* Internal refactor

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Bennett <bennett@umaproject.org>

* Update SpokePoolV3Periphery.sol

* Update SpokePoolPeriphery.t.sol

* Move all comments to interface and use inherit doc

* fix: eip712 types and hashes (#821)

* refactor comments

Signed-off-by: bennett <bennett@umaproject.org>

* Create IERC20Auth.sol

* fix tests

* Comments

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* Single AddressBook for all adapters (#919)

* use a single address book instead of 1 per adapter for oft / xerc20 storage needs

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update comments and naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add a gas optimization suggested in OFT PR

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments and minor improvements

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix spokePool test

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit

Allows Across to support inputTokens without enabling deposit routes for them, by forcing filler to take repayment of the token on the origin chain.

Enhances protection against gas cost griefing vector in when executing refund leaves, since removal of this enabledDepositRoutes check would allow someone to force the refund leaf executor to call a malicious ERC20.transfer() function

* add tests

* Make check unilateral

* Update SpokePool.Deposit.ts

* apply tests

* storage layouts

* merge conflicts

* Create SwapAndBridge.sol

* Fix conflicts

* Fix storage layouts

* Remove solana setEnableRoute special logic

* Remove MAX_ERC20_TRANSFER_GAS_COST

* Update SpokePool.sol

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* feat: Add universal adapters and spoke pools (#916)

* fix(ZkSync_SpokePool): Add __gap (#907)

* fix(ZkSync_SpokePool): Add __gap

This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

* Update ZkSync_SpokePool.json

* feat: Add SP1_Adapter and SP1_SpokePool

Can be used to relay messages from L1 to L2 spoke pools using SP1 + Helios

* Remove sp1 import

* Add simple test

* Re-use storage slots in HubPoolStore

- SP1_Adapter sets target == address(0) for relayRootBundle() calls to L2 as a gas-optimization
- Add contractAddress to ContractPublicValues
- Add deploy script with warning to NOT use create2 as we want each target spoke pool address to be unique

* Update SP1_SpokePool.sol

* Added replay protection

* Updated event

* Don't include nonce in data hash, emit data hash

* Store relayRootBundle calldata with no nonce for gas optimization

* Rename contract public values variables to make it clearer how storage slot proofs could be substituted for eth_call

* Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

* first draft of OFTTransportAdapter

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update yarn.lock file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Revert "update yarn.lock file"

This reverts commit 4c216ea.

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add yarn.lock compatible with master

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* polish + fix missing approval

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add context for dstEid

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address most of the PR comments about contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update deploy scripts, add tests for OFT messaging, polish contracts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* cleanup comments and extraneous log file

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* revert package.json prepublish change

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update some comments; adjust fee cap naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix deploy script, remove incorrect values from consts

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* improve comment

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add oftFeeCap as a param to arbitrum adapter construction

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* move OFT functionality to SpokePool for easy further integration and removing boilerplate code

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* remove layerzero from foundry remappings

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address licensing comment; add permalink to LZ OFT code on github

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix a couple of comment typos

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* In HubPoolStore, store byes rather than a struct, add simple unit tests

* Update SP1_SpokePool.sol

* feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

* feat(SpokePoolPeriphery): Support multiple exchanges

Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

* rename

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Update SpokeV3PoolPeriphery.sol

* Add unit tests

* Add whitelistExchanges only owner method

* rename

* Remove onlyOwner

* Remove whitelist of exchanges, add proxy to bypass approval abuse

Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

* Add some protection to callSpokePoolPeriphery

* Only call swapAndBridge through proxy

* move periphery funcs into proxy

* Update SpokePoolV3Periphery.sol

* remove depositERC20

* Update SpokePoolV3Periphery.sol

* Add back safeTransferFron's to permit funcs

* Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

* Add interfaces to make sure we don't add new functions as easily

* Add Create2Factory

* feat: add permit2 entrypoints to the periphery (#782)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: sponsored swap and deposits (#790)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* factor out signature checking

Signed-off-by: bennett <bennett@umaproject.org>

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Co-authored-by: nicholaspai <npai.nyc@gmail.com>

* feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

* feat: add permit2 entrypoints to the periphery

Signed-off-by: Bennett <bennett@umaproject.org>

* Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

* Update SpokePoolPeriphery.t.sol

* move permit2 to proxy

* fix permit2

Signed-off-by: bennett <bennett@umaproject.org>

* wip: swap arguments refactor

Signed-off-by: bennett <bennett@umaproject.org>

* implement isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* 1271

Signed-off-by: bennett <bennett@umaproject.org>

* simplify isValidSignature

Signed-off-by: bennett <bennett@umaproject.org>

* rebase /programs on master

Signed-off-by: nicholaspai <npai.nyc@gmail.com>

* clean up comments

* rebase programs

* feat: sponsored swap and deposits

Signed-off-by: bennett <bennett@umaproject.org>

* fix: consolidate structs so that permit2 witnesses cover inputs

Signed-off-by: bennett <bennett@umaproject.org>

* begin permit2 unit tests

Signed-off-by: bennett <bennett@umaproject.org>

* rebase

* Update SpokePoolPeriphery.t.sol

* move type definitions to interface

Signed-off-by: bennett <bennett@umaproject.org>

* fix permit2 test

Signed-off-by: bennett <bennett@umaproject.org>

* transfer type tests

Signed-off-by: bennett <bennett@umaproject.org>

* rename EIP1271Signature to Permi2Approval

Signed-off-by: bennett <bennett@umaproject.org>

* add mockERC20 which implements permit/receiveWithAuthorization

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for permit, permit2, and receiveWithAuth swaps/deposits

Signed-off-by: bennett <bennett@umaproject.org>

* add tests for invalid witnesses

Signed-off-by: bennett <bennett@umaproject.org>

* feat: Delete SwapAndBridge and add submission fees to gasless flow

SwapAndBridge is to be replaced with SpokePoolV3Periphery

Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

* Internal refactor

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

* Update SpokePoolV3Periphery.sol

* Update PeripherySigningLib.sol

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Bennett <bennett@umaproject.org>

* Update SpokePoolV3Periphery.sol

* Update SpokePoolPeriphery.t.sol

* Move all comments to interface and use inherit doc

* fix: eip712 types and hashes (#821)

* refactor comments

Signed-off-by: bennett <bennett@umaproject.org>

* Create IERC20Auth.sol

* fix tests

* Comments

---------

Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* Single AddressBook for all adapters (#919)

* use a single address book instead of 1 per adapter for oft / xerc20 storage needs

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* update comments and naming

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* add a gas optimization suggested in OFT PR

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments and minor improvements

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* fix spokePool test

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* address PR comments

Signed-off-by: Ihor Farion <ihor@umaproject.org>

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>

* Rename to universal adapter

* Update UniversalEventInclusionProof_Adapter.sol

* Add R0_SpokePool capable of receiving events via event inclusion proofs

* Update R0Steel.sol

* Steel light client commitments

* Update R0_SpokePool.sol

* read storage slots from Helios

* Change Steel call to more likely interface validateCommitment

* Link Steel to SP1Helios light client

* Update HeliosSteelValidator.sol

* rename to IHelios

* Pass in Journal instead of bytes; use eventKey as replay protection key.

* Add OFT adapter to L2 spoke pools

* Add OFT adapter to Universal adapter

* Replace OFT/HYP with CCTP

* Update SP1_SpokePool.t.sol

* Rebase to master

* fix

* Add hub pool store deploy script

* Update Journal params

* Update SP1_SpokePool.sol

* remove verifier from SP1SpokePool

* update logs

* Update SP1_SpokePool.sol

* Rename Sp1SpokePool to StorageProofSpokePool, remove R0 Spoke

* use challenge period timestamp as nonce in storage proof adapter

* Update UniversalStorageProof_SpokePool.sol

* Use slotKey as data hash

* Add test to spoke pool about dataHash

* Allow admin root bundles in between livenesses

* Add checks for admin root bundle

* Add fallback function to spoke pool

* move HubPoolStore to utilities folder

* Remove challenge period timestamp check

* Adds more robust isAdminRootBundle check, plus unit tests

We know an admin root bundle is definitely being sent whenever the pending root bundle is empty or in liveness period, or the root bundle calldata is identical to the pending root bundle.

In the edge case where an admin root bundle is identicl to the pending root bundle and that pending root bundle has passed liveness, we treat the admin bundle as a normal root bundle, which is pretty much harmless

* add placeholder unit tests

* Update IHelios.sol

* Update HubPoolStore.sol

* Finish universal adapter tests

* Store bytes32 at relayAdminFunctionCalldata

* Finish tests

* Use uint256 nonce as key in HubPoolStore

* rename deploy scripts

* Change isAdminSender check

* Add helios.headTimestamp check

* Compute slot key in contract to improve UX

* Update checkStorageLayout.sh

* Delete UniversalStorageProof_SpokePool.json

* Delete UniversalStorageProof_SpokePool.json

* Rename shorter

* Update utils.hre.ts

* Update admin messaging

* Add storage layout

* fix

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

* Rename test file to .t

* improve: Add Security contact to contracts (#951)

* improve(Universal_SpokePool): Clarify comments + variable names (#952)

* improve(Universal_SpokePool): Clarify comments

* improve(UniversalSpokePool): Clarify variable names

* Deploy HubPoolStore and UniversalAdapter to Ethereum

* Add some WIP deployments - still need official Helios contract

* Bump constants

* Make DEPRECATED_enabledDepositRoutes private

* Update yarn.lock

* Update upgradeSpokePool.ts

* Update package.json

* Update SpokePool.Fixture.ts

* Deploy new impl

* Update package.json

---------

Signed-off-by: Ihor Farion <ihor@umaproject.org>
Signed-off-by: Bennett <bennett@umaproject.org>
Signed-off-by: bennett <bennett@umaproject.org>
Signed-off-by: nicholaspai <npai.nyc@gmail.com>
Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
Co-authored-by: Bennett <bennett@umaproject.org>
Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>
Signed-off-by: Reinis Martinsons <reinis@umaproject.org>
Reinis-FRP added a commit that referenced this pull request May 9, 2025
commit 16c8972cd67e8567aa64181cd8007772b28984c3
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 10:25:54 2025 +0000

    fix: remove ignore-optional

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 0cb0034d8dcaa50d7b78809d8fb9b5097efbd837
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Wed May 7 11:06:31 2025 -0400

    feat: Linea CCTP V2 deployments  (#950)

    * feat: Linea CCTP V2 deployments (#947)

    * feat: Deploy Linea Adapter and SpokePool with CCTP V2 support

    - TODO: Deploy SpokePool

    * Add LineaSpokePool deployment

    * improve: query shared bridge address dynamically (#944)

    * improve: query shared bridge address dynamically

    Signed-off-by: bennett <bennett@umaproject.org>

    * refactor

    ---------

    Signed-off-by: bennett <bennett@umaproject.org>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * Revert "feat: Linea CCTP V2 deployments (#947)" (#949)

    This reverts commit d68d1f7dfa463f9ed84d6e324ad1dac3552baeba.

    * Revert "Revert "feat: Linea CCTP V2 deployments (#947)" (#949)"

    This reverts commit 0dcf7efb929e873e172cb467a9a88a274db3b3a5.

    * Revert "improve: query shared bridge address dynamically (#944)"

    This reverts commit 2727922aa2e3c117dd15b5a54c88f8250249655c.

    * Rdeploy spok epool

    ---------

    Signed-off-by: bennett <bennett@umaproject.org>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cf6d2456b8acc7423e3e485295f0fc83e63a3ac8
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Wed May 7 10:36:16 2025 -0400

    feat(UniversalSpokePool): Redeploy using correct SP1Helios (#987)

    The previous SP1Helios contract attached to the Universal_SpokePool doesn't have the correct UPDATER roles assigned.

    New Universal_SpokePool implementation deployed @ [0xF962E0e485A5B9f8aDa9a438cEecc35c0020B6e7](
    https://bscscan.com/address/0xF962E0e485A5B9f8aDa9a438cEecc35c0020B6e7#code)

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit f23b141da00e2d8bd89990f14dfae29f194880b8
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Wed May 7 10:35:48 2025 -0400

    feat(SpokePoolVerifier): Redeploy with outputToken as parameter (#990)

    * feat(SpokePoolVerifier): Redeploy with outputToken as parameter

    We want to discourage setting 0x0 as the output token for deposits and the SpokePoolVerifier does this currently

    This PR changes the Verifier code and redeploys

    * feat: Deploy SpokePoolVerifier with outputToken as parameter

    * Redeploy

    * fix tests

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 01307741c94abdd0098e650ddbca91eaa6348e9d
Author: Paul <108695806+pxrl@users.noreply.github.com>
Date:   Fri May 2 18:24:54 2025 +0200

    feat: Support USDC on Lens (#986)

    Lens uses Circle's Bridged (upgradable) USDC standard and requires a custom bridge for it. On mainnet, the chain adapter contract needs a modified workflow to make deposits. On the L2 it's as simple as depositing via a different contract address, albeit with the same contract interface as the standard ERC20 bridge.

    As part of this change, both ends are updated for eventual CCTP compatibility. This introduces some configuration nuance to the constructor arguments of both contracts:

    usdcAddress = 0x0 => USDC tokens are routed via the standard ERC20 bridge (current required for zkSync USDC.e).
    usdcAddress != 0x0 AND cctpTokenMessenger != 0x0 => USDC tokens are routed via Circle's CCTP bridges.
    usdcAddress != 0x0 AND zkUSDCBridge != 0x0 => USDC tokens are routed via the custom bridge for Circle Bridged (upgradable) USDC.
    A simple check on the various constructor arguments imposed during deployment, but it's highly recommended to manually verify the configurations post-deployment.

    Implementation according to the Matter Labs guidance at https://github.com/matter-labs/usdc-bridge

    This is immediately for Lens but is generalised to apply to any zkSync-stack deployment.

    This implementation was audited by OpenZeppelin.

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 43c9a9321cdab3442acb2e324ce46cce589595f9
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Thu May 1 14:25:41 2025 -0400

    feat: Add EVM Universal Adapter and remove deposit whitelist checks (#974)

    * feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit (#926)

    * fix(ZkSync_SpokePool): Add __gap (#907)

    * fix(ZkSync_SpokePool): Add __gap

    This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

    * Update ZkSync_SpokePool.json

    * Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

    * first draft of OFTTransportAdapter

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update yarn.lock file

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * Revert "update yarn.lock file"

    This reverts commit 4c216eac40db83889cb41fb5b81aaaaf29ccd7d7.

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add yarn.lock compatible with master

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * polish + fix missing approval

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add context for dstEid

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address most of the PR comments about contracts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update deploy scripts, add tests for OFT messaging, polish contracts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * cleanup comments and extraneous log file

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * revert package.json prepublish change

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update some comments; adjust fee cap naming

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix deploy script, remove incorrect values from consts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * improve comment

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add oftFeeCap as a param to arbitrum adapter construction

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * move OFT functionality to SpokePool for easy further integration and removing boilerplate code

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * remove layerzero from foundry remappings

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address licensing comment; add permalink to LZ OFT code on github

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix a couple of comment typos

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

    * feat(SpokePoolPeriphery): Support multiple exchanges

    Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

    * rename

    * Update SpokeV3PoolPeriphery.sol

    * Update SpokeV3PoolPeriphery.sol

    * Update SpokeV3PoolPeriphery.sol

    * Add unit tests

    * Add whitelistExchanges only owner method

    * rename

    * Remove onlyOwner

    * Remove whitelist of exchanges, add proxy to bypass approval abuse

    Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

    * Add some protection to callSpokePoolPeriphery

    * Only call swapAndBridge through proxy

    * move periphery funcs into proxy

    * Update SpokePoolV3Periphery.sol

    * remove depositERC20

    * Update SpokePoolV3Periphery.sol

    * Add back safeTransferFron's to permit funcs

    * Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

    * Add interfaces to make sure we don't add new functions as easily

    * Add Create2Factory

    * feat: add permit2 entrypoints to the periphery (#782)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * feat: sponsored swap and deposits (#790)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * feat: sponsored swap and deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    * add mockERC20 which implements permit/receiveWithAuthorization

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for permit, permit2, and receiveWithAuth swaps/deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for invalid witnesses

    Signed-off-by: bennett <bennett@umaproject.org>

    * factor out signature checking

    Signed-off-by: bennett <bennett@umaproject.org>

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * feat: sponsored swap and deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    * add mockERC20 which implements permit/receiveWithAuthorization

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for permit, permit2, and receiveWithAuth swaps/deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for invalid witnesses

    Signed-off-by: bennett <bennett@umaproject.org>

    * feat: Delete SwapAndBridge and add submission fees to gasless flow

    SwapAndBridge is to be replaced with SpokePoolV3Periphery

    Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

    * Internal refactor

    * Update SpokePoolV3Periphery.sol

    * Update PeripherySigningLib.sol

    * Update SpokePoolV3Periphery.sol

    * Update PeripherySigningLib.sol

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Bennett <bennett@umaproject.org>

    * Update SpokePoolV3Periphery.sol

    * Update SpokePoolPeriphery.t.sol

    * Move all comments to interface and use inherit doc

    * fix: eip712 types and hashes (#821)

    * refactor comments

    Signed-off-by: bennett <bennett@umaproject.org>

    * Create IERC20Auth.sol

    * fix tests

    * Comments

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

    * Single AddressBook for all adapters (#919)

    * use a single address book instead of 1 per adapter for oft / xerc20 storage needs

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update comments and naming

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add a gas optimization suggested in OFT PR

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments and minor improvements

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix spokePool test

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit

    Allows Across to support inputTokens without enabling deposit routes for them, by forcing filler to take repayment of the token on the origin chain.

    Enhances protection against gas cost griefing vector in when executing refund leaves, since removal of this enabledDepositRoutes check would allow someone to force the refund leaf executor to call a malicious ERC20.transfer() function

    * add tests

    * Make check unilateral

    * Update SpokePool.Deposit.ts

    * apply tests

    * storage layouts

    * merge conflicts

    * Create SwapAndBridge.sol

    * Fix conflicts

    * Fix storage layouts

    * Remove solana setEnableRoute special logic

    * Remove MAX_ERC20_TRANSFER_GAS_COST

    * Update SpokePool.sol

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>
    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

    * feat: Add universal adapters and spoke pools (#916)

    * fix(ZkSync_SpokePool): Add __gap (#907)

    * fix(ZkSync_SpokePool): Add __gap

    This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

    * Update ZkSync_SpokePool.json

    * feat: Add SP1_Adapter and SP1_SpokePool

    Can be used to relay messages from L1 to L2 spoke pools using SP1 + Helios

    * Remove sp1 import

    * Add simple test

    * Re-use storage slots in HubPoolStore

    - SP1_Adapter sets target == address(0) for relayRootBundle() calls to L2 as a gas-optimization
    - Add contractAddress to ContractPublicValues
    - Add deploy script with warning to NOT use create2 as we want each target spoke pool address to be unique

    * Update SP1_SpokePool.sol

    * Added replay protection

    * Updated event

    * Don't include nonce in data hash, emit data hash

    * Store relayRootBundle calldata with no nonce for gas optimization

    * Rename contract public values variables to make it clearer how storage slot proofs could be substituted for eth_call

    * Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

    * first draft of OFTTransportAdapter

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update yarn.lock file

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * Revert "update yarn.lock file"

    This reverts commit 4c216eac40db83889cb41fb5b81aaaaf29ccd7d7.

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add yarn.lock compatible with master

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * polish + fix missing approval

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add context for dstEid

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address most of the PR comments about contracts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update deploy scripts, add tests for OFT messaging, polish contracts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * cleanup comments and extraneous log file

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * revert package.json prepublish change

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update some comments; adjust fee cap naming

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix deploy script, remove incorrect values from consts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * improve comment

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add oftFeeCap as a param to arbitrum adapter construction

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * move OFT functionality to SpokePool for easy further integration and removing boilerplate code

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * remove layerzero from foundry remappings

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address licensing comment; add permalink to LZ OFT code on github

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix a couple of comment typos

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * In HubPoolStore, store byes rather than a struct, add simple unit tests

    * Update SP1_SpokePool.sol

    * feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

    * feat(SpokePoolPeriphery): Support multiple exchanges

    Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

    * rename

    * Update SpokeV3PoolPeriphery.sol

    * Update SpokeV3PoolPeriphery.sol

    * Update SpokeV3PoolPeriphery.sol

    * Add unit tests

    * Add whitelistExchanges only owner method

    * rename

    * Remove onlyOwner

    * Remove whitelist of exchanges, add proxy to bypass approval abuse

    Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

    * Add some protection to callSpokePoolPeriphery

    * Only call swapAndBridge through proxy

    * move periphery funcs into proxy

    * Update SpokePoolV3Periphery.sol

    * remove depositERC20

    * Update SpokePoolV3Periphery.sol

    * Add back safeTransferFron's to permit funcs

    * Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

    * Add interfaces to make sure we don't add new functions as easily

    * Add Create2Factory

    * feat: add permit2 entrypoints to the periphery (#782)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * feat: sponsored swap and deposits (#790)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * feat: sponsored swap and deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    * add mockERC20 which implements permit/receiveWithAuthorization

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for permit, permit2, and receiveWithAuth swaps/deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for invalid witnesses

    Signed-off-by: bennett <bennett@umaproject.org>

    * factor out signature checking

    Signed-off-by: bennett <bennett@umaproject.org>

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * feat: sponsored swap and deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    * add mockERC20 which implements permit/receiveWithAuthorization

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for permit, permit2, and receiveWithAuth swaps/deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for invalid witnesses

    Signed-off-by: bennett <bennett@umaproject.org>

    * feat: Delete SwapAndBridge and add submission fees to gasless flow

    SwapAndBridge is to be replaced with SpokePoolV3Periphery

    Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

    * Internal refactor

    * Update SpokePoolV3Periphery.sol

    * Update PeripherySigningLib.sol

    * Update SpokePoolV3Periphery.sol

    * Update PeripherySigningLib.sol

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Bennett <bennett@umaproject.org>

    * Update SpokePoolV3Periphery.sol

    * Update SpokePoolPeriphery.t.sol

    * Move all comments to interface and use inherit doc

    * fix: eip712 types and hashes (#821)

    * refactor comments

    Signed-off-by: bennett <bennett@umaproject.org>

    * Create IERC20Auth.sol

    * fix tests

    * Comments

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

    * Single AddressBook for all adapters (#919)

    * use a single address book instead of 1 per adapter for oft / xerc20 storage needs

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update comments and naming

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add a gas optimization suggested in OFT PR

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments and minor improvements

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix spokePool test

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * Rename to universal adapter

    * Update UniversalEventInclusionProof_Adapter.sol

    * Add R0_SpokePool capable of receiving events via event inclusion proofs

    * Update R0Steel.sol

    * Steel light client commitments

    * Update R0_SpokePool.sol

    * read storage slots from Helios

    * Change Steel call to more likely interface validateCommitment

    * Link Steel to SP1Helios light client

    * Update HeliosSteelValidator.sol

    * rename to IHelios

    * Pass in Journal instead of bytes; use eventKey as replay protection key.

    * Add OFT adapter to L2 spoke pools

    * Add OFT adapter to Universal adapter

    * Replace OFT/HYP with CCTP

    * Update SP1_SpokePool.t.sol

    * Rebase to master

    * fix

    * Add hub pool store deploy script

    * Update Journal params

    * Update SP1_SpokePool.sol

    * remove verifier from SP1SpokePool

    * update logs

    * Update SP1_SpokePool.sol

    * Rename Sp1SpokePool to StorageProofSpokePool, remove R0 Spoke

    * use challenge period timestamp as nonce in storage proof adapter

    * Update UniversalStorageProof_SpokePool.sol

    * Use slotKey as data hash

    * Add test to spoke pool about dataHash

    * Allow admin root bundles in between livenesses

    * Add checks for admin root bundle

    * Add fallback function to spoke pool

    * move HubPoolStore to utilities folder

    * Remove challenge period timestamp check

    * Adds more robust isAdminRootBundle check, plus unit tests

    We know an admin root bundle is definitely being sent whenever the pending root bundle is empty or in liveness period, or the root bundle calldata is identical to the pending root bundle.

    In the edge case where an admin root bundle is identicl to the pending root bundle and that pending root bundle has passed liveness, we treat the admin bundle as a normal root bundle, which is pretty much harmless

    * add placeholder unit tests

    * Update IHelios.sol

    * Update HubPoolStore.sol

    * Finish universal adapter tests

    * Store bytes32 at relayAdminFunctionCalldata

    * Finish tests

    * Use uint256 nonce as key in HubPoolStore

    * rename deploy scripts

    * Change isAdminSender check

    * Add helios.headTimestamp check

    * Compute slot key in contract to improve UX

    * Update checkStorageLayout.sh

    * Delete UniversalStorageProof_SpokePool.json

    * Delete UniversalStorageProof_SpokePool.json

    * Rename shorter

    * Update utils.hre.ts

    * Update admin messaging

    * Add storage layout

    * fix

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>
    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

    * Rename test file to .t

    * improve: Add Security contact to contracts (#951)

    * improve(Universal_SpokePool): Clarify comments + variable names (#952)

    * improve(Universal_SpokePool): Clarify comments

    * improve(UniversalSpokePool): Clarify variable names

    * Deploy HubPoolStore and UniversalAdapter to Ethereum

    * Add some WIP deployments - still need official Helios contract

    * Bump constants

    * Make DEPRECATED_enabledDepositRoutes private

    * Update yarn.lock

    * Update upgradeSpokePool.ts

    * Update package.json

    * Update SpokePool.Fixture.ts

    * Deploy new impl

    * Update package.json

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>
    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>
    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b03420b5e34a4cfbc24031b3d5cdc9f47569b68f
Author: Pablo Maldonado <pablomaldonadoturci@gmail.com>
Date:   Thu May 1 11:40:09 2025 +0100

    feat(svm): fill with across plus and codama test (#985)

    * feat(svm): fill with across plus and codama test

    Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

    * fix: remove .only from tests

    Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

    ---------

    Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>
    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 7823f55cd3fc8324a15e7880e5888230623cb06b
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Wed Apr 30 07:56:58 2025 -0400

    Squashed commit of the following: (#980)

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit f06f67bf6be8aed14cc8464ec39f4eef9239a978
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 10:18:32 2025 +0000

    Revert "fix: update yarn.lock"

    This reverts commit d8ebec1eb1a56c427fe10f8b4dec81fc11075d57.

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cbdf24581533bef5cd650d5939dcf95b9858e1d4
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 10:11:48 2025 +0000

    fix: update yarn.lock

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 83f834766e71ddfe6bbd438c2605c920984a5ab1
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 09:59:18 2025 +0000

    fixs: ignore optional npm dependencies

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c978152bea9daaee4b8417cc65ba1248479280c0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 09:34:35 2025 +0000

    fix: remove prepublish script

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 144701e1ad842667a3b1765d512efac8c05a454c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 09:07:54 2025 +0000

    fix: trigger ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 74056dcefc81af8302ea88b8fed33fa9478546cb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 08:56:15 2025 +0000

    fix: expression

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 1b60f373d138141cae29f64228084aff1bfaa909
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 08:38:13 2025 +0000

    fix: missing shell

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit a920b19e4e18b9d9f04c109493b320399ef58e92
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 08:36:05 2025 +0000

    fix: cache evm builds

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit e1075c0dfa93f2a5736873e57b6c6a5f54a85a44
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 07:08:58 2025 +0000

    fix: add cache to evm artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit fa8e3f97e90dbf8e8b7367c4d0d58c9b5762c42f
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 17:37:05 2025 +0000

    fix: typechain in artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b0ddc22cb39dceeb9b5a7d2d79a4c8b1477aef45
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 16:28:45 2025 +0000

    fix: download path

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 9ff64386ac46a605339afdb53d3c7c9310bcec87
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 16:15:33 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 508deb53d23a545530579a9bf1a37bb99e9fa1a2
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 15:57:40 2025 +0000

    fix: download path

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 11b8a7f655f1cf135bd6ba7e33730e9c3ab70376
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 15:00:06 2025 +0000

    fix: missing needs

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit a756ca022396b360b2088762e7a4a7460fe6933d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 14:57:49 2025 +0000

    fix: evm artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 80cb0a9b9b03987ce9537bea16026366a36424d8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 14:17:49 2025 +0000

    fix: build-ts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4f7af797997578077e0f5c82809d9a84dfd0ecbe
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Wed May 7 13:57:38 2025 +0000

    fix: renames

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 2ca971fdc8105fe932414785f78e6609def66384
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 17:24:32 2025 +0000

    fix: reorder

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit a516d8669180c01aeddae9b8176896152f8775e8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 16:10:47 2025 +0000

    fix: add evm

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cc61296278288fe1bf099600c7576c514e4dd80c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 15:40:27 2025 +0000

    fix: generate svm assets separately

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 17d86d813680a3037f7224a0f0050a296e3b2b39
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 13:31:24 2025 +0000

    fix: verified production build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 3ceb81190f8bd10527dc2e3a9ed6147f33ed606a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 13:24:53 2025 +0000

    fix: rename

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 326c7ee3cd60a03c858752a2bab18029970683b0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 13:07:34 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 8fd9673b89ef2d6f21a30f18c673aee332ca53c3
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 13:03:58 2025 +0000

    ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 06e10226def7035912400a17549a9beb7ba417f7
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:57:45 2025 +0000

    ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4e852e79bad85880a769bef4cec2ccecbcb29a46
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:40:32 2025 +0000

    ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 130cdba84f4f14e81da352d5cc01205cf410a79a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:35:49 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit df8c37b9cb3b57ef10e3b509d0a32bc96037bb0b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:32:01 2025 +0000

    fix: shell

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 31d05941b88b2f67462fc55fd8f6e98fc6f28cd2
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:29:19 2025 +0000

    fix: rename

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 20eaa4ca9f7c7d2ee0fc14178b0cca25799e2643
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:27:34 2025 +0000

    fix: move node and install to composite job

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 57f320dc71f1dc6fdea8ad9b227ee2d21d30c08e
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:17:27 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4b774c046bce696287eee750e0bb9a1901db938d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:13:57 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 30e6039ccfec3514bde1d8229e6c3d4eb096325b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:07:18 2025 +0000

    fix: cache idl artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 3b1739ebb3a0df143654e83416475f51c698a900
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 11:21:08 2025 +0000

    fix: move generate svm assets script

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 8a401a18e11198cd3a1e96b7b8a01d8d03b8de4a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 11:00:36 2025 +0000

    fix: reuse svm cache action

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 02a53710669101747d1e5f0f8de50cc6f4405c58
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 10:36:26 2025 +0000

    fix: remove cargo cache

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c1b94746ddaa72d7fd7a3ac155fac283f099ab71
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 10:27:35 2025 +0000

    fix: update comments

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c72dc1eed61cdec47a70f0a2aacef8d9e23255f8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 10:09:20 2025 +0000

    fix: download svm artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6c375752258a1202088c738078372f9008d216c6
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 09:52:44 2025 +0000

    fix: svm assets in artefact

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 518948b3654dc4b1d8d6817aa3cc59d2d2cc1578
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 17:24:23 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 2162e786a6895078926d32d6cfc54897c4784f4f
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 17:23:04 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 714abf14ee5b8b108da2575060863ddc1d33354a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 16:27:12 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 19a5ca529434c0fc18fb91d8159142785594b398
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 16:23:47 2025 +0000

    fix: cleanup

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit ffdafb23c52752844486cabfa1974fb69d05a7d5
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 16:09:24 2025 +0000

    fix: use bash

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 514304bafaad8a28903e810ba651ffd0cfc005cd
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 16:00:58 2025 +0000

    fix: separate idl build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 0e5dbfd5af757d9b2eda630b503d60add34e5b67
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:46:11 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit a4182d40d3d6ebf4213e20d2e891e841d51f374a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:41:34 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 30e045726281936b44ca30448e3c4364a5d590bb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:34:02 2025 +0000

    fix: cargo cache

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 9192075c6d406f3620173ac3f0c285f93a0f373a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:30:53 2025 +0000

    fix: setup solana anchor

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 144f119e6588f504e844a00a3d19ebdac3e84f37
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:28:20 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 692244059eca216428086cb21a8ee70a7b57bb7d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:00:47 2025 +0000

    fix: lint job

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 459910dfeb6d99236d618b9b84f61d22cb5435ec
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 14:54:46 2025 +0000

    fixs

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 31cb9f93bd7309f91053df72f12dfb8bce5c2d34
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 14:50:09 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5c718fb685b7323e833a9255ec179d86cb05d74b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 14:47:54 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 1949268be81ba118fc98547e67daec2daa5030e1
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 14:45:47 2025 +0000

    fix: remove solana from linting

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6c288a7854315d07ce5d27d10e57d6ce3238d8dd
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 13:25:35 2025 +0000

    fix: disable cache

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit ccaadea89420495d5c91ed78dbf2ca9d476f8769
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 13:20:44 2025 +0000

    fix: dbug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5163985a1a466966487d0e574d60c39da38e5b6c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 13:18:49 2025 +0000

    fix: dbug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 7d6b6d4a6d9ae48063ea002404f788cbe6ad23fb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:57:31 2025 +0000

    fix: add back evm build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 1c3bd16a4cfad884f685c55137deef4acbd1df75
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:54:24 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6d2a1f153160d5fda4c57f68b597df516e23fab9
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:50:59 2025 +0000

    fix: add outputs to composite action

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c94cd2d259dc316cecd6995da2ea72a72a16bc41
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:44:51 2025 +0000

    fix: debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 1e0b5f8930d2c4d06718a47fce08893e7151d68b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:34:10 2025 +0000

    fix: reorder

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 09d024fd3333c3167e1070042e7d77a5bfb95f10
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:23:06 2025 +0000

    fix: generate svm assets

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4cd0bb7798145fa47a85e69c123c30cc493608a8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:13:47 2025 +0000

    fix: add shell

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b5037f0d817cde641d0b5a9c220d510d8c5a2a79
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:11:36 2025 +0000

    fix: cache svm assets

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 8d0ace358b84319c7b48129515dbfc2b2f7617a0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:33:51 2025 +0000

    fix: trigger pr

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 0d52cefbf271a294c5374b0b39bc9a66889ff93b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:27:46 2025 +0000

    fix: cache idls

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 061e9af8c062346edef097f0d780af1de177011b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:14:44 2025 +0000

    fix: install dependencies first

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 17be47718466b0e55d8889f86d8d23dffb497f99
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:08:26 2025 +0000

    fix: add shell

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 2f609a6c76a21f2de1f80bfdfc3d1fd27b6a6010
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:06:12 2025 +0000

    fix: build svm assets script

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6817fca42300226ae2de67f8ebdde8afa40cf6f4
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 09:52:02 2025 +0000

    fix: composite actions

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit fe655f81078c7c2650b021d0642b1c875dff86a9
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 07:16:18 2025 +0000

    fix: build svm script

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 2f4f6000cdaa16718132b0c7e5ebd37571ec9343
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 07:14:43 2025 +0000

    fix: cleanup

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 928c8fc49ca9478437178dfe43e39738dd50b8c6
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 07:08:26 2025 +0000

    fix: cache svm clients

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4208f34b41c4c10109c622cea98a6bde15ee23ee
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 07:05:14 2025 +0000

    fix: cache svm assets

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 665edfefa151bff867dfcdf0ee237eb531d6d6d7
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 06:40:41 2025 +0000

    test: only codama deposit

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit aa51b282ebac1e5976bd2bab732d5235ce69b950
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 06:26:48 2025 +0000

    fix: cache verified build assets

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 9170f2711c7af0a1d5020b6b218ae18dfee28b98
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:57:50 2025 +0000

    fix: cleanup

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 760b3b68a69b46ec2538a887062e56a16157e8df
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:26:31 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 00d790855cd2ba8c10f4c30b0ddae1722298f833
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:23:37 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c07821e2b36dd58174fc3162fb47404659f4c88f
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:21:25 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b6632c7c48ceab862d41bc4ff03d1dd34862ae64
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:18:40 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b6a53a6237047a1c549262e82ff3f5f0407eb09c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:15:52 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5019fc43869f44d2661814d72d6ffbba1c15f6c3
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:48:20 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c7f65e71da418834fc6b97442ded0ec5689c103b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:42:10 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit e73ea3cbb8b555780e3d60a7dc7fa9dccc2a2dad
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:39:03 2025 +0000

    fix: comment

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cb4e556b44ff54245e49e515fcc6704a70253e8c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:30:35 2025 +0000

    fix: comment

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 97650fb23790d9b198bd02a858e26c2e92586d0a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:21:41 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 72ad5016d762239f9bdf59973979fb1428fb5fb4
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:17:16 2025 +0000

    fix: remove keypairs

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit bcae287b52aba2693e390c4733988287154a6588
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 11:58:23 2025 +0000

    fix: versioned cache key

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6c5f3c52af98ff3e45e3fb89a41bd538a7694ca0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 11:56:05 2025 +0000

    fix: cache idl and types

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 76a5df3cee14cdb0bf5f7c6cb377931f263d8a7e
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 11:49:07 2025 +0000

    fix: trigger ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 046df93edd73dee807fa29cd9643a689ce76a69d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 11:39:17 2025 +0000

    fix: cache verified

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 0b1580b28d16a8e6f60238bc917e0017c3e6bd26
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 10:45:02 2025 +0000

    fix: sudo

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5d9e185512a1e906d33805af2b93103b23f1049f
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 10:35:35 2025 +0000

    fix: sudo

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cb5fbd9c7e2def35d507d1fcee1b53dad3304e57
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 10:30:56 2025 +0000

    fix: debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 00b574ff141ad32e2da4a19061f8c2df5f0b3c4d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 10:10:10 2025 +0000

    fix: debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 68a0b79d5debb67b0895a244ad3a7a2a1a90bfb3
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 09:33:27 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit dcbfe36c36fd818e760daf0e86b5fa8ab6c32e32
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 09:29:10 2025 +0000

    fix: check permissions

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b967735280099d943146d21415152b8d04d9dbea
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 07:26:24 2025 +0000

    fix: remove metadata

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5c3e7b61085b9eac89a47e61cbbe1aa69c7bd974
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 07:25:09 2025 +0000

    fix: missing dirs

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit fbc2ffa0ac47edd1c7268db173187bc48175a8c1
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 07:08:35 2025 +0000

    fix: metadata

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cb927544f623d0d3df9e5bb0ed5c5393980abbdf
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 07:04:17 2025 +0000

    fix: test verified build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 39f371ae5dd9a9f61b152a677e78fe4321005ecf
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 19:00:21 2025 +0000

    fix: test cache hit

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit de358df78035e5c216c71099468102f74c6923c8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 18:48:11 2025 +0000

    fix: cleanup

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4f920b441b3fbbfce74f08a1229989ffb93c2bd8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 18:37:26 2025 +0000

    fix: cargo metadata

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit e7d7528a92856d9375ed41a832fb182b6d7e75ec
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 18:18:30 2025 +0000

    fix: add test build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 7b658c938a203cdf3dca5fa6a851a70256ba7286
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 17:54:54 2025 +0000

    fix: try regular build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit e106fea498ba1025c2dae5fd2a009edfebea945b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 17:35:15 2025 +0000

    fix: more debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 183a3bf0c86a23b029cba876ceb99c4f3c1a988c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 17:12:10 2025 +0000

    fix: debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cb825bdd619a946c4c29e337d94cc2998434a429
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 16:47:33 2025 +0000

    fix: trigger ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 3fd1141c784189d7e46a626818f1955ae48fa2eb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 16:40:48 2025 +0000

    fix: cargo target dir

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit ed150f7608390bba276c0ec3a6544188f47423ba
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 16:23:45 2025 +0000

    fix: test regular build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 04c23675ad41c7952a19ef6ea63d73f69732ab50
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 16:09:17 2025 +0000

    fix: move copy-idl to prepublish

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 3b41124adee1ad120bf76df97553903bb7edcd2b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 15:33:44 2025 +0000

    fix: cache cargo in verified build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit bc7ab236b95a50fed84a877226787ba51c66e4d4
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 14:20:34 2025 +0000

    fix: separate evm workflow

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 46fed97486276c369d7fd759d60f5762fad168cb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 13:36:12 2025 +0000

    fix: use matrix node

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b4be36f5f231ac10425837e52c87fdbbf3a95a30
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 13:25:38 2025 +0000

    fix: remove temp workflow

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit accb0f80d0c517cf8e37f658f24d61b3b50d13d0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 11:49:53 2025 +0000

    fix: optimize lint

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 398d744fd58a8c7ad1b4df8622b43c1dcce8a1ad
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 11:37:48 2025 +0000

    fix: optimize forge job

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 06054c11023f927d18bc1659ef6b4a66cffa0b8e
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 10:41:27 2025 +0000

    fix: artifact version

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 8996a1515c44bfbd46def6a2324672f3185d8ad5
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 10:08:24 2025 +0000

    fix: ci syntax

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5bb10ace2d114cfbb3a3f1c485b2b0d1533c1b96
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:59:40 2025 +0000

    fix: ci syntax

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 01887d92c4ce411a55b335eab746e810155168d1
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:57:34 2025 +0000

    fix: include matrix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cf79fa0388635886bd31305d039c4795b395de5c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:53:27 2025 +0000

    fix: include matrix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit f1a97a36a1c3689132c850ec3f4fe8e0fa8268e2
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:46:55 2025 +0000

    fix: rename

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit afde508fd1629ab7af79cd5f218dbecc21c1d552
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:44:58 2025 +0000

    fix: test dependant c…
Reinis-FRP added a commit that referenced this pull request May 9, 2025
commit 16c8972cd67e8567aa64181cd8007772b28984c3
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 10:25:54 2025 +0000

    fix: remove ignore-optional

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 0cb0034d8dcaa50d7b78809d8fb9b5097efbd837
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Wed May 7 11:06:31 2025 -0400

    feat: Linea CCTP V2 deployments  (#950)

    * feat: Linea CCTP V2 deployments (#947)

    * feat: Deploy Linea Adapter and SpokePool with CCTP V2 support

    - TODO: Deploy SpokePool

    * Add LineaSpokePool deployment

    * improve: query shared bridge address dynamically (#944)

    * improve: query shared bridge address dynamically

    Signed-off-by: bennett <bennett@umaproject.org>

    * refactor

    ---------

    Signed-off-by: bennett <bennett@umaproject.org>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * Revert "feat: Linea CCTP V2 deployments (#947)" (#949)

    This reverts commit d68d1f7dfa463f9ed84d6e324ad1dac3552baeba.

    * Revert "Revert "feat: Linea CCTP V2 deployments (#947)" (#949)"

    This reverts commit 0dcf7efb929e873e172cb467a9a88a274db3b3a5.

    * Revert "improve: query shared bridge address dynamically (#944)"

    This reverts commit 2727922aa2e3c117dd15b5a54c88f8250249655c.

    * Rdeploy spok epool

    ---------

    Signed-off-by: bennett <bennett@umaproject.org>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cf6d2456b8acc7423e3e485295f0fc83e63a3ac8
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Wed May 7 10:36:16 2025 -0400

    feat(UniversalSpokePool): Redeploy using correct SP1Helios (#987)

    The previous SP1Helios contract attached to the Universal_SpokePool doesn't have the correct UPDATER roles assigned.

    New Universal_SpokePool implementation deployed @ [0xF962E0e485A5B9f8aDa9a438cEecc35c0020B6e7](
    https://bscscan.com/address/0xF962E0e485A5B9f8aDa9a438cEecc35c0020B6e7#code)

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit f23b141da00e2d8bd89990f14dfae29f194880b8
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Wed May 7 10:35:48 2025 -0400

    feat(SpokePoolVerifier): Redeploy with outputToken as parameter (#990)

    * feat(SpokePoolVerifier): Redeploy with outputToken as parameter

    We want to discourage setting 0x0 as the output token for deposits and the SpokePoolVerifier does this currently

    This PR changes the Verifier code and redeploys

    * feat: Deploy SpokePoolVerifier with outputToken as parameter

    * Redeploy

    * fix tests

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 01307741c94abdd0098e650ddbca91eaa6348e9d
Author: Paul <108695806+pxrl@users.noreply.github.com>
Date:   Fri May 2 18:24:54 2025 +0200

    feat: Support USDC on Lens (#986)

    Lens uses Circle's Bridged (upgradable) USDC standard and requires a custom bridge for it. On mainnet, the chain adapter contract needs a modified workflow to make deposits. On the L2 it's as simple as depositing via a different contract address, albeit with the same contract interface as the standard ERC20 bridge.

    As part of this change, both ends are updated for eventual CCTP compatibility. This introduces some configuration nuance to the constructor arguments of both contracts:

    usdcAddress = 0x0 => USDC tokens are routed via the standard ERC20 bridge (current required for zkSync USDC.e).
    usdcAddress != 0x0 AND cctpTokenMessenger != 0x0 => USDC tokens are routed via Circle's CCTP bridges.
    usdcAddress != 0x0 AND zkUSDCBridge != 0x0 => USDC tokens are routed via the custom bridge for Circle Bridged (upgradable) USDC.
    A simple check on the various constructor arguments imposed during deployment, but it's highly recommended to manually verify the configurations post-deployment.

    Implementation according to the Matter Labs guidance at https://github.com/matter-labs/usdc-bridge

    This is immediately for Lens but is generalised to apply to any zkSync-stack deployment.

    This implementation was audited by OpenZeppelin.

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 43c9a9321cdab3442acb2e324ce46cce589595f9
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Thu May 1 14:25:41 2025 -0400

    feat: Add EVM Universal Adapter and remove deposit whitelist checks (#974)

    * feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit (#926)

    * fix(ZkSync_SpokePool): Add __gap (#907)

    * fix(ZkSync_SpokePool): Add __gap

    This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

    * Update ZkSync_SpokePool.json

    * Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

    * first draft of OFTTransportAdapter

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update yarn.lock file

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * Revert "update yarn.lock file"

    This reverts commit 4c216eac40db83889cb41fb5b81aaaaf29ccd7d7.

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add yarn.lock compatible with master

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * polish + fix missing approval

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add context for dstEid

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address most of the PR comments about contracts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update deploy scripts, add tests for OFT messaging, polish contracts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * cleanup comments and extraneous log file

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * revert package.json prepublish change

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update some comments; adjust fee cap naming

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix deploy script, remove incorrect values from consts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * improve comment

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add oftFeeCap as a param to arbitrum adapter construction

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * move OFT functionality to SpokePool for easy further integration and removing boilerplate code

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * remove layerzero from foundry remappings

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address licensing comment; add permalink to LZ OFT code on github

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix a couple of comment typos

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

    * feat(SpokePoolPeriphery): Support multiple exchanges

    Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

    * rename

    * Update SpokeV3PoolPeriphery.sol

    * Update SpokeV3PoolPeriphery.sol

    * Update SpokeV3PoolPeriphery.sol

    * Add unit tests

    * Add whitelistExchanges only owner method

    * rename

    * Remove onlyOwner

    * Remove whitelist of exchanges, add proxy to bypass approval abuse

    Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

    * Add some protection to callSpokePoolPeriphery

    * Only call swapAndBridge through proxy

    * move periphery funcs into proxy

    * Update SpokePoolV3Periphery.sol

    * remove depositERC20

    * Update SpokePoolV3Periphery.sol

    * Add back safeTransferFron's to permit funcs

    * Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

    * Add interfaces to make sure we don't add new functions as easily

    * Add Create2Factory

    * feat: add permit2 entrypoints to the periphery (#782)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * feat: sponsored swap and deposits (#790)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * feat: sponsored swap and deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    * add mockERC20 which implements permit/receiveWithAuthorization

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for permit, permit2, and receiveWithAuth swaps/deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for invalid witnesses

    Signed-off-by: bennett <bennett@umaproject.org>

    * factor out signature checking

    Signed-off-by: bennett <bennett@umaproject.org>

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * feat: sponsored swap and deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    * add mockERC20 which implements permit/receiveWithAuthorization

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for permit, permit2, and receiveWithAuth swaps/deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for invalid witnesses

    Signed-off-by: bennett <bennett@umaproject.org>

    * feat: Delete SwapAndBridge and add submission fees to gasless flow

    SwapAndBridge is to be replaced with SpokePoolV3Periphery

    Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

    * Internal refactor

    * Update SpokePoolV3Periphery.sol

    * Update PeripherySigningLib.sol

    * Update SpokePoolV3Periphery.sol

    * Update PeripherySigningLib.sol

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Bennett <bennett@umaproject.org>

    * Update SpokePoolV3Periphery.sol

    * Update SpokePoolPeriphery.t.sol

    * Move all comments to interface and use inherit doc

    * fix: eip712 types and hashes (#821)

    * refactor comments

    Signed-off-by: bennett <bennett@umaproject.org>

    * Create IERC20Auth.sol

    * fix tests

    * Comments

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

    * Single AddressBook for all adapters (#919)

    * use a single address book instead of 1 per adapter for oft / xerc20 storage needs

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update comments and naming

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add a gas optimization suggested in OFT PR

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments and minor improvements

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix spokePool test

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * feat(SpokePool): Remove enabledDepositRoutes check for unsafeDeposit

    Allows Across to support inputTokens without enabling deposit routes for them, by forcing filler to take repayment of the token on the origin chain.

    Enhances protection against gas cost griefing vector in when executing refund leaves, since removal of this enabledDepositRoutes check would allow someone to force the refund leaf executor to call a malicious ERC20.transfer() function

    * add tests

    * Make check unilateral

    * Update SpokePool.Deposit.ts

    * apply tests

    * storage layouts

    * merge conflicts

    * Create SwapAndBridge.sol

    * Fix conflicts

    * Fix storage layouts

    * Remove solana setEnableRoute special logic

    * Remove MAX_ERC20_TRANSFER_GAS_COST

    * Update SpokePool.sol

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>
    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

    * feat: Add universal adapters and spoke pools (#916)

    * fix(ZkSync_SpokePool): Add __gap (#907)

    * fix(ZkSync_SpokePool): Add __gap

    This contract gets extended by the Lens_SpokePool which doesn't add any storage but we should add it in case a future variable gets added to the Lens_SpokePool

    * Update ZkSync_SpokePool.json

    * feat: Add SP1_Adapter and SP1_SpokePool

    Can be used to relay messages from L1 to L2 spoke pools using SP1 + Helios

    * Remove sp1 import

    * Add simple test

    * Re-use storage slots in HubPoolStore

    - SP1_Adapter sets target == address(0) for relayRootBundle() calls to L2 as a gas-optimization
    - Add contractAddress to ContractPublicValues
    - Add deploy script with warning to NOT use create2 as we want each target spoke pool address to be unique

    * Update SP1_SpokePool.sol

    * Added replay protection

    * Updated event

    * Don't include nonce in data hash, emit data hash

    * Store relayRootBundle calldata with no nonce for gas optimization

    * Rename contract public values variables to make it clearer how storage slot proofs could be substituted for eth_call

    * Add `OFTTransportAdapter` to support cross-chain token transfers of `USDT0` via `OFT` messaging protocol (#902)

    * first draft of OFTTransportAdapter

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update yarn.lock file

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * Revert "update yarn.lock file"

    This reverts commit 4c216eac40db83889cb41fb5b81aaaaf29ccd7d7.

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add yarn.lock compatible with master

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * polish OFTTransportAdapter, add OFT support to Arbitrum_Adapter on L1, and Arbitrum_SpokePool on L2

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * polish + fix missing approval

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add context for dstEid

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address most of the PR comments about contracts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update deploy scripts, add tests for OFT messaging, polish contracts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * cleanup comments and extraneous log file

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * revert package.json prepublish change

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * generalize oft adapter to support multiple tokens. Introduce OFTAddressBook to support that. Update deploy / test scripts to reflect new functionality

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add __gap to ArbitrumSpokePool, update stale comments on OFTTransportAdapter, update layouts of ArbitrumSpokePool and AlephZeroSpokePool

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update some comments; adjust fee cap naming

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix deploy script, remove incorrect values from consts

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * improve comment

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add oftFeeCap as a param to arbitrum adapter construction

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * move OFT functionality to SpokePool for easy further integration and removing boilerplate code

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * remove layerzero from foundry remappings

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address licensing comment; add permalink to LZ OFT code on github

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix a couple of comment typos

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * In HubPoolStore, store byes rather than a struct, add simple unit tests

    * Update SP1_SpokePool.sol

    * feat(SpokePoolPeriphery): Support multiple exchanges  (#777)

    * feat(SpokePoolPeriphery): Support multiple exchanges

    Currently we can only initialize the periphery contract with a single exchange to swap with. This PR allows us to initialize it with multiple exchanges to swap with. Like before, these initial set of exchanges and function selectors cannot be changed post-initialization, which gives the user assurances.

    * rename

    * Update SpokeV3PoolPeriphery.sol

    * Update SpokeV3PoolPeriphery.sol

    * Update SpokeV3PoolPeriphery.sol

    * Add unit tests

    * Add whitelistExchanges only owner method

    * rename

    * Remove onlyOwner

    * Remove whitelist of exchanges, add proxy to bypass approval abuse

    Make user approve proxy contract so no one can use `exchange` + `routerCalldata` to steal their already approved funds via the `SpokePoolPeriphery`

    * Add some protection to callSpokePoolPeriphery

    * Only call swapAndBridge through proxy

    * move periphery funcs into proxy

    * Update SpokePoolV3Periphery.sol

    * remove depositERC20

    * Update SpokePoolV3Periphery.sol

    * Add back safeTransferFron's to permit funcs

    * Add unit tests that check if calling deposit and swapAndBridge with no value fails directly

    * Add interfaces to make sure we don't add new functions as easily

    * Add Create2Factory

    * feat: add permit2 entrypoints to the periphery (#782)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * feat: sponsored swap and deposits (#790)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * feat: sponsored swap and deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    * add mockERC20 which implements permit/receiveWithAuthorization

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for permit, permit2, and receiveWithAuth swaps/deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for invalid witnesses

    Signed-off-by: bennett <bennett@umaproject.org>

    * factor out signature checking

    Signed-off-by: bennett <bennett@umaproject.org>

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
    Co-authored-by: nicholaspai <npai.nyc@gmail.com>

    * feat: Delete SwapAndBridge and add submission fees to gasless flow (#809)

    * feat: add permit2 entrypoints to the periphery

    Signed-off-by: Bennett <bennett@umaproject.org>

    * Update test/evm/foundry/local/SpokePoolPeriphery.t.sol

    * Update SpokePoolPeriphery.t.sol

    * move permit2 to proxy

    * fix permit2

    Signed-off-by: bennett <bennett@umaproject.org>

    * wip: swap arguments refactor

    Signed-off-by: bennett <bennett@umaproject.org>

    * implement isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * 1271

    Signed-off-by: bennett <bennett@umaproject.org>

    * simplify isValidSignature

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase /programs on master

    Signed-off-by: nicholaspai <npai.nyc@gmail.com>

    * clean up comments

    * rebase programs

    * feat: sponsored swap and deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix: consolidate structs so that permit2 witnesses cover inputs

    Signed-off-by: bennett <bennett@umaproject.org>

    * begin permit2 unit tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rebase

    * Update SpokePoolPeriphery.t.sol

    * move type definitions to interface

    Signed-off-by: bennett <bennett@umaproject.org>

    * fix permit2 test

    Signed-off-by: bennett <bennett@umaproject.org>

    * transfer type tests

    Signed-off-by: bennett <bennett@umaproject.org>

    * rename EIP1271Signature to Permi2Approval

    Signed-off-by: bennett <bennett@umaproject.org>

    * add mockERC20 which implements permit/receiveWithAuthorization

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for permit, permit2, and receiveWithAuth swaps/deposits

    Signed-off-by: bennett <bennett@umaproject.org>

    * add tests for invalid witnesses

    Signed-off-by: bennett <bennett@umaproject.org>

    * feat: Delete SwapAndBridge and add submission fees to gasless flow

    SwapAndBridge is to be replaced with SpokePoolV3Periphery

    Gasless flows will require user to cover gas cost of whoever submits the transaction, but they can be set to 0 if the user wants to submit themselves.

    * Internal refactor

    * Update SpokePoolV3Periphery.sol

    * Update PeripherySigningLib.sol

    * Update SpokePoolV3Periphery.sol

    * Update PeripherySigningLib.sol

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Bennett <bennett@umaproject.org>

    * Update SpokePoolV3Periphery.sol

    * Update SpokePoolPeriphery.t.sol

    * Move all comments to interface and use inherit doc

    * fix: eip712 types and hashes (#821)

    * refactor comments

    Signed-off-by: bennett <bennett@umaproject.org>

    * Create IERC20Auth.sol

    * fix tests

    * Comments

    ---------

    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

    * Single AddressBook for all adapters (#919)

    * use a single address book instead of 1 per adapter for oft / xerc20 storage needs

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * update comments and naming

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * add a gas optimization suggested in OFT PR

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments and minor improvements

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * fix spokePool test

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * address PR comments

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>

    * Rename to universal adapter

    * Update UniversalEventInclusionProof_Adapter.sol

    * Add R0_SpokePool capable of receiving events via event inclusion proofs

    * Update R0Steel.sol

    * Steel light client commitments

    * Update R0_SpokePool.sol

    * read storage slots from Helios

    * Change Steel call to more likely interface validateCommitment

    * Link Steel to SP1Helios light client

    * Update HeliosSteelValidator.sol

    * rename to IHelios

    * Pass in Journal instead of bytes; use eventKey as replay protection key.

    * Add OFT adapter to L2 spoke pools

    * Add OFT adapter to Universal adapter

    * Replace OFT/HYP with CCTP

    * Update SP1_SpokePool.t.sol

    * Rebase to master

    * fix

    * Add hub pool store deploy script

    * Update Journal params

    * Update SP1_SpokePool.sol

    * remove verifier from SP1SpokePool

    * update logs

    * Update SP1_SpokePool.sol

    * Rename Sp1SpokePool to StorageProofSpokePool, remove R0 Spoke

    * use challenge period timestamp as nonce in storage proof adapter

    * Update UniversalStorageProof_SpokePool.sol

    * Use slotKey as data hash

    * Add test to spoke pool about dataHash

    * Allow admin root bundles in between livenesses

    * Add checks for admin root bundle

    * Add fallback function to spoke pool

    * move HubPoolStore to utilities folder

    * Remove challenge period timestamp check

    * Adds more robust isAdminRootBundle check, plus unit tests

    We know an admin root bundle is definitely being sent whenever the pending root bundle is empty or in liveness period, or the root bundle calldata is identical to the pending root bundle.

    In the edge case where an admin root bundle is identicl to the pending root bundle and that pending root bundle has passed liveness, we treat the admin bundle as a normal root bundle, which is pretty much harmless

    * add placeholder unit tests

    * Update IHelios.sol

    * Update HubPoolStore.sol

    * Finish universal adapter tests

    * Store bytes32 at relayAdminFunctionCalldata

    * Finish tests

    * Use uint256 nonce as key in HubPoolStore

    * rename deploy scripts

    * Change isAdminSender check

    * Add helios.headTimestamp check

    * Compute slot key in contract to improve UX

    * Update checkStorageLayout.sh

    * Delete UniversalStorageProof_SpokePool.json

    * Delete UniversalStorageProof_SpokePool.json

    * Rename shorter

    * Update utils.hre.ts

    * Update admin messaging

    * Add storage layout

    * fix

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>
    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>

    * Rename test file to .t

    * improve: Add Security contact to contracts (#951)

    * improve(Universal_SpokePool): Clarify comments + variable names (#952)

    * improve(Universal_SpokePool): Clarify comments

    * improve(UniversalSpokePool): Clarify variable names

    * Deploy HubPoolStore and UniversalAdapter to Ethereum

    * Add some WIP deployments - still need official Helios contract

    * Bump constants

    * Make DEPRECATED_enabledDepositRoutes private

    * Update yarn.lock

    * Update upgradeSpokePool.ts

    * Update package.json

    * Update SpokePool.Fixture.ts

    * Deploy new impl

    * Update package.json

    ---------

    Signed-off-by: Ihor Farion <ihor@umaproject.org>
    Signed-off-by: Bennett <bennett@umaproject.org>
    Signed-off-by: bennett <bennett@umaproject.org>
    Signed-off-by: nicholaspai <npai.nyc@gmail.com>
    Co-authored-by: Ihor Farion <65650773+grasphoper@users.noreply.github.com>
    Co-authored-by: bmzig <57361391+bmzig@users.noreply.github.com>
    Co-authored-by: Bennett <bennett@umaproject.org>
    Co-authored-by: Dong-Ha Kim <dongha.kim210@gmail.com>
    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b03420b5e34a4cfbc24031b3d5cdc9f47569b68f
Author: Pablo Maldonado <pablomaldonadoturci@gmail.com>
Date:   Thu May 1 11:40:09 2025 +0100

    feat(svm): fill with across plus and codama test (#985)

    * feat(svm): fill with across plus and codama test

    Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

    * fix: remove .only from tests

    Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>

    ---------

    Signed-off-by: Pablo Maldonado <pablomaldonadoturci@gmail.com>
    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 7823f55cd3fc8324a15e7880e5888230623cb06b
Author: nicholaspai <9457025+nicholaspai@users.noreply.github.com>
Date:   Wed Apr 30 07:56:58 2025 -0400

    Squashed commit of the following: (#980)

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit f06f67bf6be8aed14cc8464ec39f4eef9239a978
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 10:18:32 2025 +0000

    Revert "fix: update yarn.lock"

    This reverts commit d8ebec1eb1a56c427fe10f8b4dec81fc11075d57.

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cbdf24581533bef5cd650d5939dcf95b9858e1d4
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 10:11:48 2025 +0000

    fix: update yarn.lock

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 83f834766e71ddfe6bbd438c2605c920984a5ab1
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 09:59:18 2025 +0000

    fixs: ignore optional npm dependencies

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c978152bea9daaee4b8417cc65ba1248479280c0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 09:34:35 2025 +0000

    fix: remove prepublish script

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 144701e1ad842667a3b1765d512efac8c05a454c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 09:07:54 2025 +0000

    fix: trigger ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 74056dcefc81af8302ea88b8fed33fa9478546cb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 08:56:15 2025 +0000

    fix: expression

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 1b60f373d138141cae29f64228084aff1bfaa909
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 08:38:13 2025 +0000

    fix: missing shell

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit a920b19e4e18b9d9f04c109493b320399ef58e92
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 08:36:05 2025 +0000

    fix: cache evm builds

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit e1075c0dfa93f2a5736873e57b6c6a5f54a85a44
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 9 07:08:58 2025 +0000

    fix: add cache to evm artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit fa8e3f97e90dbf8e8b7367c4d0d58c9b5762c42f
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 17:37:05 2025 +0000

    fix: typechain in artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b0ddc22cb39dceeb9b5a7d2d79a4c8b1477aef45
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 16:28:45 2025 +0000

    fix: download path

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 9ff64386ac46a605339afdb53d3c7c9310bcec87
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 16:15:33 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 508deb53d23a545530579a9bf1a37bb99e9fa1a2
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 15:57:40 2025 +0000

    fix: download path

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 11b8a7f655f1cf135bd6ba7e33730e9c3ab70376
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 15:00:06 2025 +0000

    fix: missing needs

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit a756ca022396b360b2088762e7a4a7460fe6933d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 14:57:49 2025 +0000

    fix: evm artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 80cb0a9b9b03987ce9537bea16026366a36424d8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 8 14:17:49 2025 +0000

    fix: build-ts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4f7af797997578077e0f5c82809d9a84dfd0ecbe
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Wed May 7 13:57:38 2025 +0000

    fix: renames

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 2ca971fdc8105fe932414785f78e6609def66384
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 17:24:32 2025 +0000

    fix: reorder

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit a516d8669180c01aeddae9b8176896152f8775e8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 16:10:47 2025 +0000

    fix: add evm

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cc61296278288fe1bf099600c7576c514e4dd80c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 15:40:27 2025 +0000

    fix: generate svm assets separately

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 17d86d813680a3037f7224a0f0050a296e3b2b39
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 13:31:24 2025 +0000

    fix: verified production build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 3ceb81190f8bd10527dc2e3a9ed6147f33ed606a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 13:24:53 2025 +0000

    fix: rename

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 326c7ee3cd60a03c858752a2bab18029970683b0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 13:07:34 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 8fd9673b89ef2d6f21a30f18c673aee332ca53c3
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 13:03:58 2025 +0000

    ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 06e10226def7035912400a17549a9beb7ba417f7
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:57:45 2025 +0000

    ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4e852e79bad85880a769bef4cec2ccecbcb29a46
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:40:32 2025 +0000

    ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 130cdba84f4f14e81da352d5cc01205cf410a79a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:35:49 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit df8c37b9cb3b57ef10e3b509d0a32bc96037bb0b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:32:01 2025 +0000

    fix: shell

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 31d05941b88b2f67462fc55fd8f6e98fc6f28cd2
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:29:19 2025 +0000

    fix: rename

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 20eaa4ca9f7c7d2ee0fc14178b0cca25799e2643
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:27:34 2025 +0000

    fix: move node and install to composite job

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 57f320dc71f1dc6fdea8ad9b227ee2d21d30c08e
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:17:27 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4b774c046bce696287eee750e0bb9a1901db938d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:13:57 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 30e6039ccfec3514bde1d8229e6c3d4eb096325b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 12:07:18 2025 +0000

    fix: cache idl artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 3b1739ebb3a0df143654e83416475f51c698a900
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 11:21:08 2025 +0000

    fix: move generate svm assets script

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 8a401a18e11198cd3a1e96b7b8a01d8d03b8de4a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 11:00:36 2025 +0000

    fix: reuse svm cache action

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 02a53710669101747d1e5f0f8de50cc6f4405c58
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 10:36:26 2025 +0000

    fix: remove cargo cache

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c1b94746ddaa72d7fd7a3ac155fac283f099ab71
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 10:27:35 2025 +0000

    fix: update comments

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c72dc1eed61cdec47a70f0a2aacef8d9e23255f8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 10:09:20 2025 +0000

    fix: download svm artifacts

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6c375752258a1202088c738078372f9008d216c6
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Tue May 6 09:52:44 2025 +0000

    fix: svm assets in artefact

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 518948b3654dc4b1d8d6817aa3cc59d2d2cc1578
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 17:24:23 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 2162e786a6895078926d32d6cfc54897c4784f4f
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 17:23:04 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 714abf14ee5b8b108da2575060863ddc1d33354a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 16:27:12 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 19a5ca529434c0fc18fb91d8159142785594b398
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 16:23:47 2025 +0000

    fix: cleanup

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit ffdafb23c52752844486cabfa1974fb69d05a7d5
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 16:09:24 2025 +0000

    fix: use bash

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 514304bafaad8a28903e810ba651ffd0cfc005cd
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 16:00:58 2025 +0000

    fix: separate idl build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 0e5dbfd5af757d9b2eda630b503d60add34e5b67
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:46:11 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit a4182d40d3d6ebf4213e20d2e891e841d51f374a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:41:34 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 30e045726281936b44ca30448e3c4364a5d590bb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:34:02 2025 +0000

    fix: cargo cache

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 9192075c6d406f3620173ac3f0c285f93a0f373a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:30:53 2025 +0000

    fix: setup solana anchor

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 144f119e6588f504e844a00a3d19ebdac3e84f37
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:28:20 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 692244059eca216428086cb21a8ee70a7b57bb7d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 15:00:47 2025 +0000

    fix: lint job

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 459910dfeb6d99236d618b9b84f61d22cb5435ec
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 14:54:46 2025 +0000

    fixs

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 31cb9f93bd7309f91053df72f12dfb8bce5c2d34
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 14:50:09 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5c718fb685b7323e833a9255ec179d86cb05d74b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 14:47:54 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 1949268be81ba118fc98547e67daec2daa5030e1
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 14:45:47 2025 +0000

    fix: remove solana from linting

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6c288a7854315d07ce5d27d10e57d6ce3238d8dd
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 13:25:35 2025 +0000

    fix: disable cache

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit ccaadea89420495d5c91ed78dbf2ca9d476f8769
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 13:20:44 2025 +0000

    fix: dbug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5163985a1a466966487d0e574d60c39da38e5b6c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 13:18:49 2025 +0000

    fix: dbug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 7d6b6d4a6d9ae48063ea002404f788cbe6ad23fb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:57:31 2025 +0000

    fix: add back evm build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 1c3bd16a4cfad884f685c55137deef4acbd1df75
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:54:24 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6d2a1f153160d5fda4c57f68b597df516e23fab9
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:50:59 2025 +0000

    fix: add outputs to composite action

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c94cd2d259dc316cecd6995da2ea72a72a16bc41
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:44:51 2025 +0000

    fix: debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 1e0b5f8930d2c4d06718a47fce08893e7151d68b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:34:10 2025 +0000

    fix: reorder

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 09d024fd3333c3167e1070042e7d77a5bfb95f10
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:23:06 2025 +0000

    fix: generate svm assets

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4cd0bb7798145fa47a85e69c123c30cc493608a8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:13:47 2025 +0000

    fix: add shell

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b5037f0d817cde641d0b5a9c220d510d8c5a2a79
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 12:11:36 2025 +0000

    fix: cache svm assets

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 8d0ace358b84319c7b48129515dbfc2b2f7617a0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:33:51 2025 +0000

    fix: trigger pr

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 0d52cefbf271a294c5374b0b39bc9a66889ff93b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:27:46 2025 +0000

    fix: cache idls

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 061e9af8c062346edef097f0d780af1de177011b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:14:44 2025 +0000

    fix: install dependencies first

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 17be47718466b0e55d8889f86d8d23dffb497f99
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:08:26 2025 +0000

    fix: add shell

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 2f609a6c76a21f2de1f80bfdfc3d1fd27b6a6010
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 10:06:12 2025 +0000

    fix: build svm assets script

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6817fca42300226ae2de67f8ebdde8afa40cf6f4
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 09:52:02 2025 +0000

    fix: composite actions

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit fe655f81078c7c2650b021d0642b1c875dff86a9
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 07:16:18 2025 +0000

    fix: build svm script

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 2f4f6000cdaa16718132b0c7e5ebd37571ec9343
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 07:14:43 2025 +0000

    fix: cleanup

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 928c8fc49ca9478437178dfe43e39738dd50b8c6
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 07:08:26 2025 +0000

    fix: cache svm clients

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4208f34b41c4c10109c622cea98a6bde15ee23ee
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 07:05:14 2025 +0000

    fix: cache svm assets

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 665edfefa151bff867dfcdf0ee237eb531d6d6d7
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 06:40:41 2025 +0000

    test: only codama deposit

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit aa51b282ebac1e5976bd2bab732d5235ce69b950
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Mon May 5 06:26:48 2025 +0000

    fix: cache verified build assets

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 9170f2711c7af0a1d5020b6b218ae18dfee28b98
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:57:50 2025 +0000

    fix: cleanup

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 760b3b68a69b46ec2538a887062e56a16157e8df
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:26:31 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 00d790855cd2ba8c10f4c30b0ddae1722298f833
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:23:37 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c07821e2b36dd58174fc3162fb47404659f4c88f
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:21:25 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b6632c7c48ceab862d41bc4ff03d1dd34862ae64
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:18:40 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b6a53a6237047a1c549262e82ff3f5f0407eb09c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 13:15:52 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5019fc43869f44d2661814d72d6ffbba1c15f6c3
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:48:20 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit c7f65e71da418834fc6b97442ded0ec5689c103b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:42:10 2025 +0000

    fix: test caching

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit e73ea3cbb8b555780e3d60a7dc7fa9dccc2a2dad
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:39:03 2025 +0000

    fix: comment

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cb4e556b44ff54245e49e515fcc6704a70253e8c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:30:35 2025 +0000

    fix: comment

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 97650fb23790d9b198bd02a858e26c2e92586d0a
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:21:41 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 72ad5016d762239f9bdf59973979fb1428fb5fb4
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 12:17:16 2025 +0000

    fix: remove keypairs

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit bcae287b52aba2693e390c4733988287154a6588
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 11:58:23 2025 +0000

    fix: versioned cache key

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 6c5f3c52af98ff3e45e3fb89a41bd538a7694ca0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 11:56:05 2025 +0000

    fix: cache idl and types

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 76a5df3cee14cdb0bf5f7c6cb377931f263d8a7e
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 11:49:07 2025 +0000

    fix: trigger ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 046df93edd73dee807fa29cd9643a689ce76a69d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 11:39:17 2025 +0000

    fix: cache verified

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 0b1580b28d16a8e6f60238bc917e0017c3e6bd26
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 10:45:02 2025 +0000

    fix: sudo

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5d9e185512a1e906d33805af2b93103b23f1049f
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 10:35:35 2025 +0000

    fix: sudo

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cb5fbd9c7e2def35d507d1fcee1b53dad3304e57
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 10:30:56 2025 +0000

    fix: debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 00b574ff141ad32e2da4a19061f8c2df5f0b3c4d
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 10:10:10 2025 +0000

    fix: debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 68a0b79d5debb67b0895a244ad3a7a2a1a90bfb3
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 09:33:27 2025 +0000

    fix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit dcbfe36c36fd818e760daf0e86b5fa8ab6c32e32
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 09:29:10 2025 +0000

    fix: check permissions

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b967735280099d943146d21415152b8d04d9dbea
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 07:26:24 2025 +0000

    fix: remove metadata

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5c3e7b61085b9eac89a47e61cbbe1aa69c7bd974
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 07:25:09 2025 +0000

    fix: missing dirs

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit fbc2ffa0ac47edd1c7268db173187bc48175a8c1
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 07:08:35 2025 +0000

    fix: metadata

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cb927544f623d0d3df9e5bb0ed5c5393980abbdf
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Fri May 2 07:04:17 2025 +0000

    fix: test verified build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 39f371ae5dd9a9f61b152a677e78fe4321005ecf
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 19:00:21 2025 +0000

    fix: test cache hit

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit de358df78035e5c216c71099468102f74c6923c8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 18:48:11 2025 +0000

    fix: cleanup

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 4f920b441b3fbbfce74f08a1229989ffb93c2bd8
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 18:37:26 2025 +0000

    fix: cargo metadata

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit e7d7528a92856d9375ed41a832fb182b6d7e75ec
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 18:18:30 2025 +0000

    fix: add test build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 7b658c938a203cdf3dca5fa6a851a70256ba7286
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 17:54:54 2025 +0000

    fix: try regular build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit e106fea498ba1025c2dae5fd2a009edfebea945b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 17:35:15 2025 +0000

    fix: more debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 183a3bf0c86a23b029cba876ceb99c4f3c1a988c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 17:12:10 2025 +0000

    fix: debug

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cb825bdd619a946c4c29e337d94cc2998434a429
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 16:47:33 2025 +0000

    fix: trigger ci

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 3fd1141c784189d7e46a626818f1955ae48fa2eb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 16:40:48 2025 +0000

    fix: cargo target dir

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit ed150f7608390bba276c0ec3a6544188f47423ba
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 16:23:45 2025 +0000

    fix: test regular build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 04c23675ad41c7952a19ef6ea63d73f69732ab50
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 16:09:17 2025 +0000

    fix: move copy-idl to prepublish

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 3b41124adee1ad120bf76df97553903bb7edcd2b
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 15:33:44 2025 +0000

    fix: cache cargo in verified build

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit bc7ab236b95a50fed84a877226787ba51c66e4d4
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 14:20:34 2025 +0000

    fix: separate evm workflow

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 46fed97486276c369d7fd759d60f5762fad168cb
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 13:36:12 2025 +0000

    fix: use matrix node

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit b4be36f5f231ac10425837e52c87fdbbf3a95a30
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 13:25:38 2025 +0000

    fix: remove temp workflow

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit accb0f80d0c517cf8e37f658f24d61b3b50d13d0
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 11:49:53 2025 +0000

    fix: optimize lint

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 398d744fd58a8c7ad1b4df8622b43c1dcce8a1ad
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 11:37:48 2025 +0000

    fix: optimize forge job

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 06054c11023f927d18bc1659ef6b4a66cffa0b8e
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 10:41:27 2025 +0000

    fix: artifact version

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 8996a1515c44bfbd46def6a2324672f3185d8ad5
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 10:08:24 2025 +0000

    fix: ci syntax

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 5bb10ace2d114cfbb3a3f1c485b2b0d1533c1b96
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:59:40 2025 +0000

    fix: ci syntax

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit 01887d92c4ce411a55b335eab746e810155168d1
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:57:34 2025 +0000

    fix: include matrix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit cf79fa0388635886bd31305d039c4795b395de5c
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:53:27 2025 +0000

    fix: include matrix

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit f1a97a36a1c3689132c850ec3f4fe8e0fa8268e2
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:46:55 2025 +0000

    fix: rename

    Signed-off-by: Reinis Martinsons <reinis@umaproject.org>

commit afde508fd1629ab7af79cd5f218dbecc21c1d552
Author: Reinis Martinsons <reinis@umaproject.org>
Date:   Thu May 1 09:44:58 2025 +0000

    fix: test dependant c…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants