A set of basic libraries built on top of OpenZeppelin and Solady contracts which help developers write multichain smart contracts based on Optimism interops.
Managing deployments on many chains is tough. These libraries provide a simple and easy way for developers to change permissions on one chain which are then automatically updated on all chains the contract is deployed on using interops.
The library currently contains 3 contracts:
Built on top of Ownable from Solady, it enables developers to set one admin chainId which can update ownership across all chains. For example, if governance is operated on OP Mainnet and contracts are deployed on Base, Mode, and OP Mainnet:
- Setting the admin chain as
OP Mainnetallows governance to calltransferOwnership - This updates ownership on the main chain (
OP Mainnet) - Emits an
InitiateCrosschainOwnershipTransferevent - Event is indexed in the
CrossL2Inboxand picked up by a relayer - Relayer calls
updateCrosschainOwner()on contracts on all other chains (Base,Mode, etc.)
Built on top of Pausable from OpenZeppelin, it helps developers manage pausing of multichain contracts using interops. Benefits:
- Eliminates need to pause contracts individually on each chain
- Reduces delays during emergencies
- When paused on one chain, emits
CrosschainPauseStateChangedevent - Event is picked up by relayer from CrossL2Inbox
- Relayer calls
updateCrosschainPauseState()to pause contracts on all deployed chains
Development in Progress
When the ProxyAdmin owner or proxy implementation is updated, it automatically updates all proxied implementations and owners across all chains where the proxied contract is deployed.