{
"contracts": {
"addresses": {
"ethereum": [
{
"name": "HubPoolStore",
"isVerified": true,
"address": "eth:0x1Ace3BbD69b63063F859514Eca29C9BDd8310E61",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple data store used by the Universal_Adapter to store message calldata hashes. The content of this calldata can be proven by Ethereum zk light clients on remote chains and then executed to relay root bundles or arbitrary messages.\n",
"discoveryDrivenData": true
},
{
"name": "AcrossConfigStore",
"isVerified": true,
"address": "eth:0x3B03509645713718B78951126E0A6de6f10043f5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Simple, owner-controlled contract for storing protocol-wide, token-specific configuration data.\n* Roles:\n * **owner**: Across Multisig; ultimately OptimisticGovernor",
"discoveryDrivenData": true
},
{
"name": "AdapterStore",
"isVerified": true,
"address": "eth:0x42df4D71f35ffBD28ae217d52E83C1DA0007D63b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A helper contract for chain adapters on the hub chain that support OFT messaging. Handles token -> messenger mapping.\n* Roles:\n * **owner**: Across Multisig; ultimately OptimisticGovernor",
"discoveryDrivenData": true
},
{
"name": "Ethereum_SpokePool",
"isVerified": true,
"address": "eth:0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda"
],
"implementations": [
"eth:0x5E5B726C81f43B953a62AD87E2835C85c4D9Dd3B"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1682355155,
"transactionHash": "0x411ae8360c51beff3d6034ea63f03c41e6cf8b031432391fc44bc4f5a1b908ef",
"implementations": [
"eth:0xA667498F46457548f1D3ad557340b95Fdb290148"
]
},
{
"timestamp": 1692663659,
"transactionHash": "0xceb5b11cd6c78b29d16d2c91bedcb4ec7467814fdce84a753f468c452c36c0d6",
"implementations": [
"eth:0x326510c1bf9d85Fb73d0AB8d20Aa5BbE9c7561e9"
]
},
{
"timestamp": 1696340927,
"transactionHash": "0x946dec56639129cadd298ce5a44341b6f361c5c632f5dea2a80d9cb023b836c6",
"implementations": [
"eth:0x5ab0A812327aD959dE664AEC8408Ef8c6ABe7184"
]
},
{
"timestamp": 1708538663,
"transactionHash": "0xf08778addb8376b0beb500bf569c6251eadc124e6aeeaf5f702ab1dbf576379f",
"implementations": [
"eth:0x90438AD3d81a0739ce1Cb20C73564682388c5FdD"
]
},
{
"timestamp": 1710769247,
"transactionHash": "0x3ebfeeedb62ab726a1cb350595df3d4b2212f2fda619ae08015d16f304fc8332",
"implementations": [
"eth:0xa4D3535f33549749Fb97fA42903AC80F6fb54af6"
]
},
{
"timestamp": 1715785919,
"transactionHash": "0xa604480755748d8162a3fb11442719682d473d868450e7460d9dd111a0b8903a",
"implementations": [
"eth:0x08C21b200eD06D2e32cEC91a770C3FcA8aD5F877"
]
},
{
"timestamp": 1725378503,
"transactionHash": "0xd3cfc5a7476fd33d3d3fdc2d77adac2bf6900945f9a5c5f35f65b6507dde381f",
"implementations": [
"eth:0x48Dcf75EA18233BA947E4480dCd70594720449C1"
]
},
{
"timestamp": 1738111451,
"transactionHash": "0x4d37ad20bb31cedba7434223e08229ca95fbfd32eaf2bcbd456af0d0a32bba8b",
"implementations": [
"eth:0xD576931ab0bDC3dfdc2c041d3C7b9d2ED0c6dd9a"
]
},
{
"timestamp": 1738939607,
"transactionHash": "0xbea88935fe99b6faba60ee273a5eb146cd6c2d12decfef8842c5c719a0009376",
"implementations": [
"eth:0x0190a2328e072Fc5a7fA00F6C9ae2a16c7F4E32a"
]
},
{
"timestamp": 1751304083,
"transactionHash": "0xa4cfc9525849a8a3052a587a29006303e9b16ce08fa096460bb6fe2017b1a3ef",
"implementations": [
"eth:0xFBc81a18EcDa8E6A91275cFDF5FC6d91A7C5AE80"
]
},
{
"timestamp": 1770055271,
"transactionHash": "0xce91ef569315a356ecbf8133df44de6a7f0cbbcc8f50433eb3ab5116d71a111f",
"implementations": [
"eth:0x5E5B726C81f43B953a62AD87E2835C85c4D9Dd3B"
]
}
],
"description": "The user-facing contract on each connected chain where funds are deposited to initiate a bridge transfer. It also receives settlement data from the HubPool to process refunds for the relayers who fulfilled those transfers.\n* Roles:\n * **crossDomainAdmin**: HubPool; ultimately Across Multisig, OptimisticGovernor",
"upgradableBy": [
{
"name": "OptimisticGovernor",
"delay": "2d"
},
{
"name": "Across Multisig",
"delay": "no"
}
],
"discoveryDrivenData": true
},
{
"name": "HubPool",
"isVerified": true,
"address": "eth:0xc186fA914353c44b2E33eBE05f21846F1048bEda",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "The central L1 contract (hub) that manages liquidity from LPs and coordinates cross-chain settlements. It receives and secures settlement proposals (root bundles) using the UMA Optimistic Oracle, with a challenge period of 30m and a bond amount of 0.45 ABT.\n* Roles:\n * **owner**: Across Multisig; ultimately OptimisticGovernor",
"discoveryDrivenData": true
},
{
"name": "AcrossBondToken (ABT)",
"isVerified": true,
"address": "eth:0xee1DC6BCF1Ee967a350e9aC6CaaAA236109002ea",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A bond token wrapping ETH for usage in the Across protocol. Implements modified ERC20 logic to only allow permissioned proposers to use it as a bond for root bundle proposals.\n* Roles:\n * **owner**: Across Multisig; ultimately OptimisticGovernor\n * **proposers**: EOA 1",
"discoveryDrivenData": true
},
{
"name": "VotingV2",
"isVerified": true,
"address": "eth:0x004395edb43EFca9885CEdad51EC9fAf93Bd34ac",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Core smart contract for UMA's Data Verification Mechanism (DVM), serving as source of truth for disputed claims. UMA token holders collectively resolve price requests and earn rewards for correct participation. Commit- and reveal phases for the voting take 1d each.\n* Roles:\n * **owner**: GovernorV2",
"discoveryDrivenData": true
},
{
"name": "Registry",
"isVerified": true,
"address": "eth:0x3e532e6222afe9Bcf02DCB87216802c75D5113aE",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Registry for contracts that are allowed to call `requestPrice()` in the UMA voting contracts (ie. request dispute resolution by the UMA DVM).\n* Roles:\n * **owner**: GovernorV2",
"discoveryDrivenData": true
},
{
"name": "Finder",
"isVerified": true,
"address": "eth:0x40f941E48A552bF496B154Af6bf55725f18D77c3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Maps interface names to contract addresses (UMA protocol contracts).\n* Roles:\n * **owner**: GovernorV2",
"discoveryDrivenData": true
},
{
"name": "Store",
"isVerified": true,
"address": "eth:0x54f44eA3D2e7aA0ac089c4d8F7C93C27844057BF",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "UMA protocol contract responsible for calculating and collecting regular and final fees for using the DVM.\n* Roles:\n * **owner**: GovernorV2\n * **withdrawer**: EOA 3",
"discoveryDrivenData": true
},
{
"name": "FixedSlashSlashingLibrary",
"isVerified": true,
"address": "eth:0x9a406ba5a99983250Fd663947b3c968D387ce5cd",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Stores slashing parameters and calculates slashing amounts based on that (UMA protocol).\n",
"discoveryDrivenData": true
},
{
"name": "IdentifierWhitelist",
"isVerified": true,
"address": "eth:0xcF649d9Da4D1362C4DAEa67573430Bd6f945e570",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Keeps a list of whitelisted identifiers that are accepted by the UMA v3 protocol. Across uses the identifier `ACROSS-V2` for its disputes.\n* Roles:\n * **owner**: GovernorV2",
"discoveryDrivenData": true
},
{
"name": "AddressWhitelist",
"isVerified": true,
"address": "eth:0xdBF90434dF0B98219f87d112F37d74B1D90758c7",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "A simple address whitelist for tokens that can be used as bonds and/or fees. This whitelist is checked and enforced by various smart contracts in the UMA ecosystem.\n* Roles:\n * **owner**: GovernorV2",
"discoveryDrivenData": true
},
{
"name": "SkinnyOptimisticOracle",
"isVerified": true,
"address": "eth:0xeE3Afe347D5C74317041E2618C49534dAf887c24",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Validates bridge messages by allowing proposers to make bonded assertions about crosschain events. It enforces a challenge period during which any invalid claims can be disputed and escalated to UMA's Data Verification Mechanism (DVM) for resolution.\n",
"discoveryDrivenData": true
},
{
"name": "OptimisticOracleV3",
"isVerified": true,
"address": "eth:0xfb55F43fB9F48F63f9269DB7Dde3BbBe1ebDC0dE",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Standard UMA optimistic oracle contract that allows anyone to make an arbitrary claim by posting a bond. The claim is considered true unless it is successfully disputed within a challenge window, with UMA's DVM acting as the final arbiter for disputes.\n* Roles:\n * **owner**: GovernorV2",
"discoveryDrivenData": true
},
{
"name": "Zora_Adapter",
"isVerified": true,
"address": "eth:0x024F2fC31CBDD8de17194b1892c834f98Ef5169b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Soneium_Adapter",
"isVerified": true,
"address": "eth:0x0c9d064523177dBB55CFE52b9D0c485FBFc35FD2",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "HyperEVM_Adapter",
"isVerified": true,
"address": "eth:0x0ec70777Ac388774041dD5A1778Cdf3AF3134D2B",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This adapter can be used to send messages / root bundles to HyperEVM. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n",
"discoveryDrivenData": true
},
{
"name": "Redstone_Adapter",
"isVerified": true,
"address": "eth:0x188F8C95B7cfB7993B53a4F643efa687916f73fA",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Scroll_Adapter",
"isVerified": true,
"address": "eth:0x2DA799c2223c6ffB595e578903AE6b95839160d8",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Boba_Adapter",
"isVerified": true,
"address": "eth:0x33B0Ec794c15D6Cc705818E70d4CaCe7bCfB5Af3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Optimism_Adapter",
"isVerified": true,
"address": "eth:0x3562e309C6C79626E5F0Cf746FB5Bf4f6b8EebE5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Tempo_Adapter",
"isVerified": true,
"address": "eth:0x4577980eBFCC6fC8ff516aC06dA9e729c40cA57c",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This adapter can be used to send messages / root bundles to Tempo. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n",
"discoveryDrivenData": true
},
{
"name": "Ethereum_Adapter",
"isVerified": true,
"address": "eth:0x527E872a5c3f0C7c24Fe33F2593cFB890a285084",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Polygon_Adapter",
"isVerified": true,
"address": "eth:0x537abE038C223066B50312474409924487D2E655",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Ink_Adapter",
"isVerified": true,
"address": "eth:0x545E43B6eC2f9a44CAa531298699Ff05958670B5",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Linea_Adapter",
"isVerified": true,
"address": "eth:0x5A44A32c13e2C43416bFDE5dDF5DCb3880c42787",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Lens_Adapter",
"isVerified": true,
"address": "eth:0x5e0B7e20a77BDf11812837D30F1326068Bcf24Cf",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "BNBSmartChain_Adapter",
"isVerified": true,
"address": "eth:0x6f1C9d3bcDF51316E7b515a62C02F601500b084b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This adapter can be used to send messages / root bundles to Binance Smart Chain. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero.\n",
"discoveryDrivenData": true
},
{
"name": "Alephzero_Adapter",
"isVerified": true,
"address": "eth:0x6F4083304C2cA99B077ACE06a5DcF670615915Af",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Base_Adapter",
"isVerified": true,
"address": "eth:0x799BDC55d91864b14B2eD63A34DeF5d502AA897f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Unichain_Adapter",
"isVerified": true,
"address": "eth:0x8956eFa31572E1d7ed5c8e36772F214A57DFA0D1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "WorldChain_Adapter",
"isVerified": true,
"address": "eth:0x8bbdD67102D743b8533c1277a4ffdA04Dea158D1",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Solana_Adapter",
"isVerified": true,
"address": "eth:0x9F788694934fD2Ed34D5340B9a76EB34f2bFD7B3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Adapter for Solana. Uses CCTP v1 AMB to relay root bundles to the Solana spokepool.\n",
"discoveryDrivenData": true
},
{
"name": "Tron_Adapter",
"isVerified": true,
"address": "eth:0xA1da1A70cc9F27F4aEDff1d515B1a0C47fb6c3Db",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This adapter can be used to send messages / root bundles to Tron. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n",
"discoveryDrivenData": true
},
{
"name": "ZkSyncEra_Adapter",
"isVerified": true,
"address": "eth:0xA374585E6062517Ee367ee5044946A6fBe17724f",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Plasma_Adapter",
"isVerified": true,
"address": "eth:0xb47fD69FE25878F4E43aAF2F9ad7D0A3A0B22363",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This adapter can be used to send messages / root bundles to Plasma Mainnet. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero.\n",
"discoveryDrivenData": true
},
{
"name": "Universal_Adapter",
"isVerified": true,
"address": "eth:0xbc5E82035e2C8d4B335Ccb751D6BF47e44Dec678",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This adapter can be used to send messages / root bundles to chains that do not have a canonical adapter. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n",
"discoveryDrivenData": true
},
{
"name": "Arbitrum_Adapter",
"isVerified": true,
"address": "eth:0xc0b6d2f794cc787C71f2cA5ceCD57102C32379B3",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Monad_Adapter",
"isVerified": true,
"address": "eth:0xC29a3Ba0fBf477F16Fd53d2C438Eade024FD8452",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This adapter can be used to send messages / root bundles to chains that do not have a canonical adapter. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n",
"discoveryDrivenData": true
},
{
"name": "Universal_Adapter",
"isVerified": true,
"address": "eth:0xCA5f9960022078F3585a188e06F910eeC29c7eBD",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "This adapter can be used to send messages / root bundles to chains that do not have a canonical adapter. It stores calldata in the HubPoolStore on Ethereum, which can then be zk proven on a remote chain. This adapter also supports bridging OFTs via LayerZero and USDC via CCTP.\n",
"discoveryDrivenData": true
},
{
"name": "MegaETH_Adapter",
"isVerified": true,
"address": "eth:0xE1f04404b74F996A311F13aE291849fC153578Ac",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Lisk_Adapter",
"isVerified": true,
"address": "eth:0xF039AdCC74936F90fE175e8b3FE0FdC8b8E0c73b",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Mode_Adapter",
"isVerified": true,
"address": "eth:0xf1B59868697f3925b72889ede818B9E7ba0316d0",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
},
{
"name": "Blast_Adapter",
"isVerified": true,
"address": "eth:0xF2bEf5E905AAE0295003ab14872F811E914EdD81",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "ethereum",
"description": "Modular, chain-specific contract that abstracts the communication logic for settlement between the HubPool and various SpokePools and their Relayers, often via canonical bridges.\n",
"discoveryDrivenData": true
}
],
"optimism": [
{
"name": "Optimism_SpokePool",
"isVerified": true,
"address": "oeth:0x6f26Bf09B1C792e3228e5467807a900A503c0281",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"oeth:0x0000000000000000000000000000000000000000"
],
"implementations": [
"oeth:0x0966F5034261CC50926fB9D5C1603A5034Ffa81c"
]
},
"chain": "optimism",
"pastUpgrades": [
{
"timestamp": 1682354696,
"transactionHash": "0xf09b511734ba603400579c64ce6eeb8286e4429e11ab45e2f36df22f0eb59add",
"implementations": [
"oeth:0x618C854204834e110eB77f092e7063d7Ae2855d8"
]
},
{
"timestamp": 1686315223,
"transactionHash": "0x28a173e69040f2f96ebcd4bf6b793c593bff7c2027a455905610119740e9564f",
"implementations": [
"oeth:0xEc88d3C08E2939562Ff8188B4e30A52236C3FF09"
]
},
{
"timestamp": 1692796375,
"transactionHash": "0x792f7cc7f232d7c3616149394b8a2903b8000a3b28ef74c5cc9100aff6ffed42",
"implementations": [
"oeth:0xFd7F000C26B7205c1A3f9b846F44Dc11Ff5E6eb8"
]
},
{
"timestamp": 1696340997,
"transactionHash": "0x14f1c15037cef66839ce570174aad27a4ea7f33a3e2496e36ba2bbb5b6650637",
"implementations": [
"oeth:0xC127c7A25e6D1e1999DF3dC1accddeF278A87303"
]
},
{
"timestamp": 1708538741,
"transactionHash": "0xe34f46235ddb8e21d5fd4f490565d2a39664fc9603c77b15322004a6e5320a3a",
"implementations": [
"oeth:0xE287AAd8F3B99e411f1939492565C7D3F0e77FeF"
]
},
{
"timestamp": 1708826605,
"transactionHash": "0xc0461376071132e3a21654c5f61a6d2ca2f3cebe1ec3ab263c67b91b07db4dcf",
"implementations": [
"oeth:0x2e69a3962E7fF2EEF0c98a76aC3B294b03Dc4C3D"
]
},
{
"timestamp": 1710769317,
"transactionHash": "0x284c45850a83457ea38a5d25e2c0630ac5161026e839f7b27a8c88bfe22456ad",
"implementations": [
"oeth:0x5226a5D010F24F0df089963E94ce88E4c87EB53b"
]
},
{
"timestamp": 1715794729,
"transactionHash": "0xaf6f0949809d1e81f126f9288e833e90eea180f5159a3637d53ad367b294e5ad",
"implementations": [
"oeth:0xAF0079c65Cf5D2f38472956032f5012Cce7b1ba4"
]
},
{
"timestamp": 1716294163,
"transactionHash": "0x59d665d6c0c49dd5486bcc6809b21f485816efa779338497e7e67542fd7a5871",
"implementations": [
"oeth:0x0fDF0fa7FEA145c6c141BCa763c0D4c2e906b3e1"
]
},
{
"timestamp": 1725378635,
"transactionHash": "0x216fb5f149aebdda4ca076d3c9bca9d36f85e307b510a425848b40bd8801f86a",
"implementations": [
"oeth:0xA084031BA301D874a24525450297c1D51b0BF8Bd"
]
},
{
"timestamp": 1738111589,
"transactionHash": "0x055412f01d41dc49be4c853395e79f5ee4e10e736fe5420b5992997b0dc27add",
"implementations": [
"oeth:0x1a4b76a1366c9BceCd187289882823410512d8EB"
]
},
{
"timestamp": 1738939687,
"transactionHash": "0xc530c24b7b6fd88197b9adb1ff44360bc12087aed26bffcf0c62ec0d789131bd",
"implementations": [
"oeth:0xF383FD9A49282C9e1C99eB07a819e27E0d7B956c"
]
},
{
"timestamp": 1751304215,
"transactionHash": "0x612d2761ea8d8df4a72d12724c4b0d26d5ff8b1c1f17fe81d1e3012ba746072e",
"implementations": [
"oeth:0xD51099ac551350Bf3198c69104B5dc4694b3a536"
]
},
{
"timestamp": 1759844157,
"transactionHash": "0xd68d8d6f62cdeb169f7c8b7cd6b8df87e45679f1fe8577bd03322fc1dceec71f",
"implementations": [
"oeth:0x21352B3495A6eE1Bd2921Bdb0a876FaDc3A9245E"
]
},
{
"timestamp": 1770053069,
"transactionHash": "0xe3918b151a7edd22c00b59843b61403cbe665d76f55b6c47db1c1bfbf8454174",
"implementations": [
"oeth:0x0966F5034261CC50926fB9D5C1603A5034Ffa81c"
]
}
],
"description": "The user-facing contract on each connected chain where funds are deposited to initiate a bridge transfer. It also receives settlement data from the HubPool to process refunds for the relayers who fulfilled those transfers.\n* Roles:\n * **admin**: EOA 2\n * **crossDomainAdmin**: HubPool; ultimately Across Multisig, OptimisticGovernor",
"upgradableBy": [
{
"name": "OptimisticGovernor",
"delay": "2d"
},
{
"name": "Across Multisig",
"delay": "no"
},
{
"id": "EOA-2",
"name": "EOA 2",
"delay": "no"
}
],
"discoveryDrivenData": true
}
]
},
"risks": []
},
"description": "Intent framework specialised on popular chains and assets, speed and security.",
"detailedDescription": "# Crosschain transfer flow\n\nThe user initiates a transfer (sometimes called an intent) by depositing into the local chain \"SpokePool\" contract. The deposit specifies the recipient, the destination chain, the amount, the input token, the output token, a fill deadline by which the destination chain transfer must complete, and an optional exclusivity window during which only a chosen relayer can fill. User funds remain in the SpokePool; the deposit's parameters are not persisted in contract storage but only captured in a FundsDeposited event log, which relayers index offchain to learn about deposits.\n\nRelayers fill a crosschain request by calling the destination chain's SpokePool. During the exclusivity window only the chosen relayer can fill; after it expires anyone can. No fill is accepted past the fill deadline. Funds go to the user and the relay hash is marked Filled in the SpokePool's fillStatuses mapping to prevent double-fills.\n\n# Relayer repayments\n\nWhen a crosschain transfer is fulfilled, the relayer specifies on which chain and to which address they want to be repaid. A whitelisted proposer periodically posts a \"root bundle\" to the HubPool containing how much the protocol owes to each relayer (relayer refunds) and the pool rebalances needed so that there is enough liquidity on each chain for the refunds to be paid. The correctness of these roots is crucial; otherwise relayers could lie about filling a transfer and capture user funds.\n\nRoot bundles settle in two levels:\n\n1. Optimistic (Across-native): the proposer bonds 0.45 ABT (a simple ETH wrapper, not to be confused with the ACX governance token) and the root sits in a challenge period of 30m. If unchallenged, the bundle executes; UMA is not involved in this happy path.\n2. Dispute escalation (UMA): anyone can call disputeRootBundle() within the challenge period by posting an equal counter-bond. The disputed bundle is discarded immediately so a new proposal can be submitted, while the dispute itself is escalated to UMA's optimistic oracle, which resolves via UMA token voting; the losing party loses their bond.\n\nFor chains with a canonical L1 to L2 messenger, tokens and admin / refund messages move from the HubPool to each SpokePool through that chain's canonical bridge via a per-chain adapter. For chains without one (BNB Smart Chain, HyperEVM, Plasma, Tempo, Tron, ...), Across uses universal adapters: the HubPool writes the message calldata into the HubPoolStore on Ethereum, and the destination chain reads it by verifying a storage proof against Ethereum's state through a light client contract on the destination. Tokens travel via LayerZero OFT, or via Circle CCTP for USDC.\n\nLPs can provide single-token liquidity to the HubPool to front relayer refunds across chains, earning yield from an LP fee captured on every transfer.",
"permissions": {
"ethereum": {
"roles": [],
"actors": [
{
"id": "OptimisticGovernor",
"name": "OptimisticGovernor",
"accounts": [
{
"address": "eth:0x8692B776d1Ff0664177c90465038056Dc64f8991",
"type": "Contract",
"isVerified": true,
"name": "0x8692…8991",
"url": "https://etherscan.io/address/0x8692B776d1Ff0664177c90465038056Dc64f8991"
}
],
"chain": "ethereum",
"description": "Optimistic Governance module allowing for proposals by anyone with a bond of 2 WETH. They become executable if not challenged within 2d. The rules for proposals can be read directly from the contract values.\n* Can upgrade **with 2d delay**\n * Ethereum_SpokePool [via: Across Multisig with 2d delay → HubPool]\n * Optimism_SpokePool [via: Across Multisig with 2d delay → HubPool]\n* Can interact with AcrossConfigStore\n * update configuration values **with 2d delay** [via: Across Multisig with 2d delay]\n* Can interact with AdapterStore\n * set the token-to-messenger mappings that adapters use to route OFT cross-chain transfers **with 2d delay** [via: Across Multisig with 2d delay]\n* Can interact with Ethereum_SpokePool\n * relay and delete root bundles, pause the contract, manage routes, set the withdrawal recipient (crosschain rebalancing target) **with 2d delay** [via: Across Multisig with 2d delay → HubPool]\n* Can interact with OptimisticGovernor\n * set guard, avatar, target, delay, identifier, escalationManager, bond token and amount **with 2d delay** [via: Across Multisig with 2d delay]\n* Can interact with HubPool\n * pause the system, manage all fees, bonds and security parameters, manage tokens and chain support, and critical emergency actions like admin functions on remote SpokePools or deleting proposals (can steal funds) **with 2d delay** [via: Across Multisig with 2d delay]\n* Can interact with AcrossBondToken (ABT)\n * manage the proposer role **with 2d delay** [via: Across Multisig with 2d delay]\n* Can interact with Optimism_SpokePool\n * relay and delete root bundles, pause the contract, manage routes, set the withdrawal recipient (crosschain rebalancing target) **with 2d delay** [via: Across Multisig with 2d delay → HubPool]",
"discoveryDrivenData": true
},
{
"id": "Across Multisig",
"name": "Across Multisig",
"description": "A Multisig with 3/5 threshold. It uses the following modules: OptimisticGovernor (Optimistic Governance module allowing for proposals by anyone with a bond of 2 WETH. They become executable if not challenged within 2d. The rules for proposals can be read directly from the contract values).\n* Can upgrade **with no delay**\n * Ethereum_SpokePool [via: HubPool]\n * Optimism_SpokePool [via: HubPool]\n* Can interact with AcrossConfigStore\n * update configuration values \n* Can interact with AdapterStore\n * set the token-to-messenger mappings that adapters use to route OFT cross-chain transfers \n* Can interact with Ethereum_SpokePool\n * relay and delete root bundles, pause the contract, manage routes, set the withdrawal recipient (crosschain rebalancing target) [via: HubPool]\n* Can interact with OptimisticGovernor\n * set guard, avatar, target, delay, identifier, escalationManager, bond token and amount \n* Can interact with HubPool\n * pause the system, manage all fees, bonds and security parameters, manage tokens and chain support, and critical emergency actions like admin functions on remote SpokePools or deleting proposals (can steal funds) \n* Can interact with AcrossBondToken (ABT)\n * manage the proposer role \n* Can interact with Optimism_SpokePool\n * relay and delete root bundles, pause the contract, manage routes, set the withdrawal recipient (crosschain rebalancing target) [via: HubPool]",
"accounts": [
{
"address": "eth:0xB524735356985D2f267FA010D681f061DfF03715",
"type": "Contract",
"isVerified": true,
"name": "0xB524…3715",
"url": "https://etherscan.io/address/0xB524735356985D2f267FA010D681f061DfF03715"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x72b32C1a6A75CBAfAe36c0CA8e763946d370E766",
"type": "EOA",
"isVerified": true,
"name": "0x72b3…E766",
"url": "https://etherscan.io/address/0x72b32C1a6A75CBAfAe36c0CA8e763946d370E766"
},
{
"address": "eth:0x837219D7a9C666F5542c4559Bf17D7B804E5c5fe",
"type": "EOA",
"isVerified": true,
"name": "0x8372…c5fe",
"url": "https://etherscan.io/address/0x837219D7a9C666F5542c4559Bf17D7B804E5c5fe"
},
{
"address": "eth:0x996267d7d1B7f5046543feDe2c2Db473Ed4f65e9",
"type": "EOA",
"isVerified": true,
"name": "0x9962…65e9",
"url": "https://etherscan.io/address/0x996267d7d1B7f5046543feDe2c2Db473Ed4f65e9"
},
{
"address": "eth:0xcc400c09ecBAC3e0033e4587BdFAABB26223e37d",
"type": "EOA",
"isVerified": true,
"name": "0xcc40…e37d",
"url": "https://etherscan.io/address/0xcc400c09ecBAC3e0033e4587BdFAABB26223e37d"
},
{
"address": "eth:0x868CF19464e17F76D6419ACC802B122c22D2FD34",
"type": "EOA",
"isVerified": true,
"name": "0x868C…FD34",
"url": "https://etherscan.io/address/0x868CF19464e17F76D6419ACC802B122c22D2FD34"
}
],
"discoveryDrivenData": true
},
{
"id": "GovernorV2",
"name": "GovernorV2",
"accounts": [
{
"address": "eth:0x7b292034084A41B9D441B71b6E3557Edd0463fa8",
"type": "Contract",
"isVerified": true,
"name": "0x7b29…3fa8",
"url": "https://etherscan.io/address/0x7b292034084A41B9D441B71b6E3557Edd0463fa8"
}
],
"chain": "ethereum",
"description": "Central UMA governance contract. It executes administrative proposals that have been passed by UMA token holder votes.\n* Can interact with VotingV2\n * set critical administrative parameters like migrating to a new contract and requesting governance actions (`requestPrice()`) directly \n* Can interact with Registry\n * manage registered contracts \n* Can interact with Finder\n * manage address mappings \n* Can interact with ProposerV2\n * set the bond amount \n* Can interact with Store\n * set fees for disputes and manage all roles in the contract \n* Can interact with GovernorV2\n * manage all roles in the contract \n* Can interact with EmergencyProposer\n * remove and slash proposals, set the bond amount and the expiry time, manage the executor address \n* Can interact with IdentifierWhitelist\n * manage the whitelist \n* Can interact with AddressWhitelist\n * manage the addresses on the whitelist \n* Can interact with OptimisticOracleV3\n * set critical administrative parameters like default bonds, bond token, fees ",
"discoveryDrivenData": true
},
{
"id": "ProposerV2",
"name": "ProposerV2",
"accounts": [
{
"address": "eth:0x50efaC9619225d7fB4703C5872da978849B6E7cC",
"type": "Contract",
"isVerified": true,
"name": "0x50ef…E7cC",
"url": "https://etherscan.io/address/0x50efaC9619225d7fB4703C5872da978849B6E7cC"
}
],
"chain": "ethereum",
"description": "Token governance contract allowing anyone to create a UMA governance proposal for a bond of 5,000 UMA tokens.\n* Can interact with GovernorV2\n * propose governance actions ",
"discoveryDrivenData": true
},
{
"id": "UMA Multisig",
"name": "UMA Multisig",
"description": "A Multisig with 2/4 threshold. \n* Can interact with EmergencyProposer\n * remove proposals, execute emergency proposals ",
"accounts": [
{
"address": "eth:0x8180D59b7175d4064bDFA8138A58e9baBFFdA44a",
"type": "Contract",
"isVerified": true,
"name": "0x8180…A44a",
"url": "https://etherscan.io/address/0x8180D59b7175d4064bDFA8138A58e9baBFFdA44a"
}
],
"chain": "ethereum",
"references": [],
"participants": [
{
"address": "eth:0x363605C0bdE9F1F5053aDA30618d95dbFc109Bf5",
"type": "EOA",
"isVerified": true,
"name": "0x3636…9Bf5",
"url": "https://etherscan.io/address/0x363605C0bdE9F1F5053aDA30618d95dbFc109Bf5"
},
{
"address": "eth:0xcc400c09ecBAC3e0033e4587BdFAABB26223e37d",
"type": "EOA",
"isVerified": true,
"name": "0xcc40…e37d",
"url": "https://etherscan.io/address/0xcc400c09ecBAC3e0033e4587BdFAABB26223e37d"
},
{
"address": "eth:0x72b32C1a6A75CBAfAe36c0CA8e763946d370E766",
"type": "EOA",
"isVerified": true,
"name": "0x72b3…E766",
"url": "https://etherscan.io/address/0x72b32C1a6A75CBAfAe36c0CA8e763946d370E766"
},
{
"address": "eth:0x837219D7a9C666F5542c4559Bf17D7B804E5c5fe",
"type": "EOA",
"isVerified": true,
"name": "0x8372…c5fe",
"url": "https://etherscan.io/address/0x837219D7a9C666F5542c4559Bf17D7B804E5c5fe"
}
],
"discoveryDrivenData": true
},
{
"id": "EmergencyProposer",
"name": "EmergencyProposer",
"accounts": [
{
"address": "eth:0x91F1804aCaf87C2D34A34A70be1bb16bB85D6748",
"type": "Contract",
"isVerified": true,
"name": "0x91F1…6748",
"url": "https://etherscan.io/address/0x91F1804aCaf87C2D34A34A70be1bb16bB85D6748"
}
],
"chain": "ethereum",
"description": "Token governance contract allowing anyone to create a UMA governance proposal for a bond of 5,000,000 UMA tokens. This circumvents the UMA optimistic oracle but can only be executed or removed after 10d, and only by UMA Multisig.\n* Can interact with GovernorV2\n * can bypass the voting system and execute proposals immediately ",
"discoveryDrivenData": true
},
{
"id": "EOA-1",
"name": "EOA 1",
"accounts": [
{
"address": "eth:0xf7bAc63fc7CEaCf0589F25454Ecf5C2ce904997c",
"type": "EOA",
"isVerified": true,
"name": "0xf7bA…997c",
"url": "https://etherscan.io/address/0xf7bAc63fc7CEaCf0589F25454Ecf5C2ce904997c",
"displayName": "EOA 1"
}
],
"chain": "ethereum",
"description": "* Can interact with AcrossBondToken (ABT)\n * propose new root bundles to the HubPool by posting an ABT bond. Proposals settle optimistically; only disputes (via `disputeRootBundle()`) escalate to UMA token voting ",
"discoveryDrivenData": true
},
{
"id": "EOA-3",
"name": "EOA 3",
"accounts": [
{
"address": "eth:0x2bAaA41d155ad8a4126184950B31F50A1513cE25",
"type": "EOA",
"isVerified": true,
"name": "0x2bAa…cE25",
"url": "https://etherscan.io/address/0x2bAaA41d155ad8a4126184950B31F50A1513cE25",
"displayName": "EOA 3"
}
],
"chain": "ethereum",
"description": "* Can interact with Store\n * withdraw fees ",
"discoveryDrivenData": true
}
]
},
"optimism": {
"roles": [],
"actors": [
{
"id": "EOA-2",
"name": "EOA 2",
"accounts": [
{
"address": "oeth:0x0000000000000000000000000000000000000000",
"type": "EOA",
"isVerified": true,
"name": "0x0000…0000",
"url": "https://optimistic.etherscan.io/address/0x0000000000000000000000000000000000000000",
"displayName": "EOA 2"
}
],
"chain": "optimism",
"description": "* Can upgrade **with no delay**\n * Optimism_SpokePool ",
"discoveryDrivenData": true
}
]
}
},
"plugins": [
{
"plugin": "across",
"bridgeType": "nonMinting"
}
],
"type": "intent"
}