contracts
+2 -2
{
"addresses": {
"linea": [
{
"name": "LineaL1ERC20Bridge",
"isVerified": true,
"address": "linea:0x62cE247f34dc316f93D3830e4Bf10959FCe630f8",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"linea:0xeF528a8Ca4B6aFDB6716Ef9f11bCa0c5C47454ec"
],
"implementations": [
"linea:0xDe1d7311d3eb7bc94f7EBAEd86978d3a82d5328A"
]
},
"chain": "linea",
"pastUpgrades": [
{
"timestamp": 1709218113,
"transactionHash": "0xd4a7bf62cc26e7852b2f27b65739c9d3fb4c0f7ad57757d0a854391c9b1395c3",
"implementations": [
"linea:0xB8017A397E7844635c5a2750d0BEB2af97506461"
]
},
{
"timestamp": 1712147411,
"transactionHash": "0x151e5e3496cc0cfa545a4515a036154bb172dea85ccafce5563b408a83793570",
"implementations": [
"linea:0xDe1d7311d3eb7bc94f7EBAEd86978d3a82d5328A"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from Linea to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "LineaOwner",
"delay": "no"
}
],
"url": "https://lineascan.build/address/0x62cE247f34dc316f93D3830e4Bf10959FCe630f8#code"
},
{
"name": "LineazkLink",
"isVerified": false,
"address": "linea:0x5Cb18b6e4e6F3b46Ce646b0f4704D53724C5Df05",
"upgradeability": {
"proxyType": "EIP2535 diamond proxy",
"admins": [],
"implementations": [
"linea:0x6a91814E3481967Ea350398cf748aB845DF43c05",
"linea:0xF3d053C29666D653Fa8629190579844BffE9FB92",
"linea:0xa3A4de013fbC21F46a3AB0F504dcEFfAd217252e",
"linea:0xFF6e83e6A5cc362b8B40d819fBE7840aD13A3488"
],
"immutable": false
},
"chain": "linea",
"pastUpgrades": [
{
"timestamp": 1709218085,
"transactionHash": "0x819d006b90a1059b199bc80dd0bdc799ff3bfc4835056c5a818ebe4d6e7a0b2e",
"implementations": [
"linea:0x73B076425025A3Bf059001D5bE0E21384C8cf049",
"linea:0xfE3EB2e5AfaA936093C0DD2dB8898F4a2643FfE0",
"linea:0x6052B353022dA2C61a999bf081C349260de993Af",
"linea:0x5e7077bf147Fc1Bb8f46039cc40bBd39F2dDfEa0"
]
},
{
"timestamp": 1709522773,
"transactionHash": "0x33b1bba23b3c4bf16fb2b10b47dfda138dc2ff659fc32e2d0926b716e76f3dbc",
"implementations": [
"linea:0x73B076425025A3Bf059001D5bE0E21384C8cf049",
"linea:0xfE3EB2e5AfaA936093C0DD2dB8898F4a2643FfE0",
"linea:0x5e7077bf147Fc1Bb8f46039cc40bBd39F2dDfEa0",
"linea:0x841f709F4219a1283300c0250cA7c582aD2B289c"
]
},
{
"timestamp": 1709978074,
"transactionHash": "0xdc95a41e73ce7a4cb3200d9b2ecdcb33b548678392e2ac62e35dfc10e37f3308",
"implementations": [
"linea:0x73B076425025A3Bf059001D5bE0E21384C8cf049",
"linea:0xfE3EB2e5AfaA936093C0DD2dB8898F4a2643FfE0",
"linea:0x5e7077bf147Fc1Bb8f46039cc40bBd39F2dDfEa0",
"linea:0x841f709F4219a1283300c0250cA7c582aD2B289c"
]
},
{
"timestamp": 1709978562,
"transactionHash": "0xe5ccaa4de67ac346e3a8360734dc8d32e894e60ef78686734428bc400f621781",
"implementations": [
"linea:0xcE8E69a2685c80Eb6bd825d0552f44BB34f35503",
"linea:0xb1d0354063527E4426c4bEcbDB75fE0fb112e3CB",
"linea:0x11bf5BC6327f7BECB0AE753932A181c8fB5780bA",
"linea:0x1b19287CE898217D937571EABa97ec50F27d1206"
]
},
{
"timestamp": 1713840533,
"transactionHash": "0x72a67f79ae66e93c75e22e06ccc384e73bcf1be4dfb587597aee5467c7f2bddf",
"implementations": [
"linea:0x2b1f8EcEc8C5E09395D83910b5Cbf0E149E271DC",
"linea:0xF3d053C29666D653Fa8629190579844BffE9FB92",
"linea:0x253AbB100Dd2606e73E41A26D03269fd13de5548",
"linea:0x268F47D6058c3122131e2f8Df1B634793e4B0a7c"
]
},
{
"timestamp": 1716393189,
"transactionHash": "0x63cc92d7d7f235ed4094027a72b93973cb159c4cca509f669668032a0b6d9e96",
"implementations": [
"linea:0xB76Ee80B3344D86580C990638bDE1915E58d2c6f",
"linea:0xF3d053C29666D653Fa8629190579844BffE9FB92",
"linea:0x495220D99B432b0de3e1F1fe206AA0E26A051C63",
"linea:0x9f2E11F287733c4EF5B9A6ED923b780c28062727"
]
},
{
"timestamp": 1747193745,
"transactionHash": "0xc126f92dc36c78ecb4aac331b0cc9e92ba1693d8b1a83981f4cb789cd1c55a6b",
"implementations": [
"linea:0x6a91814E3481967Ea350398cf748aB845DF43c05",
"linea:0xF3d053C29666D653Fa8629190579844BffE9FB92",
"linea:0xa3A4de013fbC21F46a3AB0F504dcEFfAd217252e",
"linea:0xFF6e83e6A5cc362b8B40d819fBE7840aD13A3488"
]
}
],
"description": "Main contract of the system where blocks are committed, proven and executed. It syncs messages from secondary chains (\"slow\" path) and accepts \"fast\" forwarded requests from permissioned validators that are later cross-checked with the slow path. ETH coming from secondary chains are transferred and escrowed here. State roots are then synced back to the secondary chains.",
"upgradableBy": [
{
"name": "LineaOwner",
"delay": "no"
}
],
"url": "https://lineascan.build/address/0x5Cb18b6e4e6F3b46Ce646b0f4704D53724C5Df05#code"
},
{
"name": "LineaL2Gateway",
"isVerified": true,
"address": "linea:0x7b5780d6df85A7dF96a3e1A019639a1dbDe937dB",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"linea:0x0Bff4B38792a95314b3463E1Bf9831BDa1995391"
],
"implementations": [
"linea:0x0C25f3ACCB17a9D60408D1c79bD7218073DAd518"
]
},
"chain": "linea",
"pastUpgrades": [
{
"timestamp": 1709279545,
"transactionHash": "0xa810024f29ca544f9587b26bd9ca270c0811b58dd9fcc75ee870e24c316468cc",
"implementations": [
"linea:0xaFc54E8277f8Bb8c195C794B0D10D6766e89DF0a"
]
},
{
"timestamp": 1709981434,
"transactionHash": "0x37af14ba1cab3bbd0b202ad21c9bd057c8d36f654ff515e18fc22af68ea72d33",
"implementations": [
"linea:0x0C25f3ACCB17a9D60408D1c79bD7218073DAd518"
]
}
],
"description": "High level interface between the main zkLink contract and Linea's message service.",
"upgradableBy": [
{
"name": "LineaOwner",
"delay": "no"
}
],
"url": "https://lineascan.build/address/0x7b5780d6df85A7dF96a3e1A019639a1dbDe937dB#code"
},
{
"name": "ValidatorTimelock",
"isVerified": true,
"address": "linea:0x509ff56c152315EdeE91A2e0f059195519507e01",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "Intermediary contract between the one of the validators and the ZKsync Era diamond that can delay block execution (ie withdrawals and other L3 --> L2 messages). Currently, the delay is set to 0s.",
"url": "https://lineascan.build/address/0x509ff56c152315EdeE91A2e0f059195519507e01#code"
},
{
"name": "Verifier",
"isVerified": true,
"address": "linea:0x902C3806A84f4e855a8746e92d7F1C9a51400458",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "Implements ZK proof verification logic.",
"upgradableBy": [
{
"name": "LineaOwner",
"delay": "no"
}
],
"url": "https://lineascan.build/address/0x902C3806A84f4e855a8746e92d7F1C9a51400458#code"
},
{
"name": "Governance",
"isVerified": true,
"address": "linea:0xeF528a8Ca4B6aFDB6716Ef9f11bCa0c5C47454ec",
"upgradeability": {
"proxyType": "immutable",
"admins": [],
"implementations": [],
"immutable": true
},
"chain": "linea",
"description": "Intermediary governance contract with two roles and a customizable delay. This delay is only mandatory for transactions scheduled by the Owner role and can be set by the SecurityCouncil role. The SecurityCouncil role can execute arbitrary upgrade transactions immediately. Currently the delay is set to 0s and the SecurityCouncil role is not used.",
"url": "https://lineascan.build/address/0xeF528a8Ca4B6aFDB6716Ef9f11bCa0c5C47454ec#code"
}
],
"ethereum": [
{
"name": "EthereumL1ERC20Bridge",
"isVerified": true,
"address": "eth:0xAd16eDCF7DEB7e90096A259c81269d811544B6B6",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x315255c1bA35A1DdAc48CF054bc4e3a0929160b2"
],
"implementations": [
"eth:0x3203E813930bD710043c1d899fE38dD359307352"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709295323,
"transactionHash": "0x185cdd8d3ef12b9ccfb69bde86098b46813cd9c97ceda3d290a008be59c7fd19",
"implementations": [
"eth:0xc271a8e9eB2b10FCDe1709D76de6681249669D2e"
]
},
{
"timestamp": 1712211827,
"transactionHash": "0xc9c60ef44c8cef2b33a3f0af91e3d064ea479d616c1aafd9d2535cc377be0382",
"implementations": [
"eth:0x3203E813930bD710043c1d899fE38dD359307352"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from Ethereum to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xAd16eDCF7DEB7e90096A259c81269d811544B6B6#code"
},
{
"name": "EthereumzkLink",
"isVerified": true,
"address": "eth:0x5fD9F73286b7E8683Bab45019C94553b93e015Cf",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0xeaC8E6c1acBabC7135Fc8357FF2D718a36177Ab7"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709278799,
"transactionHash": "0xbe3c99c5f0c926495895beed70b15cbc9fe4dfb1b541d08d1c4f9b6c7ff59ce5",
"implementations": [
"eth:0xA89aa7e3D34516EAB7129E401215d5d1239Ce715"
]
},
{
"timestamp": 1709979011,
"transactionHash": "0x6fb95bcc6d76a0ad1a5f53b1bf99fb6e40672ac789e931d5565691f473d13ced",
"implementations": [
"eth:0xCC8256b3eBF21e27f04E360eED012f5752c1F5DD"
]
},
{
"timestamp": 1713615719,
"transactionHash": "0xee6a34e852c4927c2afcf361307e2245771cf97a2e57f02f46ce8e9dfdd4771f",
"implementations": [
"eth:0xeaC8E6c1acBabC7135Fc8357FF2D718a36177Ab7"
]
}
],
"description": "Main messaging contract on Ethereum and ETH escrow. Outgoing messages (like deposits) are sent through the EthereumL2Gateway which ultimately makes use of Ethereum's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x5fD9F73286b7E8683Bab45019C94553b93e015Cf#code"
},
{
"name": "EthereumL1Gateway",
"isVerified": true,
"address": "eth:0x83Bc7394738A7A084081aF22EEC0051908c0055c",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0x65c7B3E1B877131986247B49474834b0347eF332"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709278979,
"transactionHash": "0x20bb9ab00c3acf52a01d22bb87c0af9ba1195ba50291c21cfc581322057d1ba4",
"implementations": [
"eth:0x87743f9CccA4a6DFbFfB2856dC6839b1919a43FB"
]
},
{
"timestamp": 1709980895,
"transactionHash": "0x50a3b1abdbfb058cd85b72555a8734666f7b05f5ca0c1abd82559c61b54f237e",
"implementations": [
"eth:0x240cfBdb89eBc09b678b24ba5d640A27B7D3051b"
]
},
{
"timestamp": 1713615719,
"transactionHash": "0xee6a34e852c4927c2afcf361307e2245771cf97a2e57f02f46ce8e9dfdd4771f",
"implementations": [
"eth:0x65c7B3E1B877131986247B49474834b0347eF332"
]
}
],
"description": "High level interface between the local zkLink contract and Ethereum's message service.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x83Bc7394738A7A084081aF22EEC0051908c0055c#code"
},
{
"name": "Arbitrator",
"isVerified": true,
"address": "eth:0x1Ee09A2cAa0813A5183f90F5a6d0E4871f4C6002",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0x7a0Bb4805EcB7fD3C8DAbbE4AFa0E91cB1761E34"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709275199,
"transactionHash": "0x4982bb48f0071f234c1708804bd549ccb1b79f3eafdad5cdf644aeb3f9078553",
"implementations": [
"eth:0xD2b679671354087ead3C683F48da4b738f0fC675"
]
},
{
"timestamp": 1709980835,
"transactionHash": "0xd9a9e46b9d7321babc6608896c2d2438db12c25b92e96b39a705384560e4d67c",
"implementations": [
"eth:0xb3EE39F57d96C3F2A5ab3886572dDc4EA34B529a"
]
},
{
"timestamp": 1713615719,
"transactionHash": "0xee6a34e852c4927c2afcf361307e2245771cf97a2e57f02f46ce8e9dfdd4771f",
"implementations": [
"eth:0x7a0Bb4805EcB7fD3C8DAbbE4AFa0E91cB1761E34"
]
}
],
"description": "Contract storing the mapping between secondary chain bridges and acts as an intermediary to receive and relay messages to and from the main zkLink contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x1Ee09A2cAa0813A5183f90F5a6d0E4871f4C6002#code"
},
{
"name": "LineaL1Gateway",
"isVerified": true,
"address": "eth:0x803460416C2682Ac54FccF03eF77b10A12f2809b",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0xD2ED3FA35be899fe850075946Fc7320bB4c18C29"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709281007,
"transactionHash": "0x01bb57dff1464aa31b2871caddf2cd239068df11076fea2d6e041275eb5fc701",
"implementations": [
"eth:0x67EBB0b6273A2e5728410Af81609226A96ACcb3e"
]
},
{
"timestamp": 1709981111,
"transactionHash": "0x2010b0544391cadef00257da2bf40d85288c1fc2bcc63e611cf89f5bd8e1d951",
"implementations": [
"eth:0xD2ED3FA35be899fe850075946Fc7320bB4c18C29"
]
}
],
"description": "L1 counterpart receiving messages from the LineaL2Gateway on Linea. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x803460416C2682Ac54FccF03eF77b10A12f2809b#code"
},
{
"name": "MantaL1Gateway",
"isVerified": true,
"address": "eth:0x649Dfa2c4d09D877419fA1eDC4005BfbEF7CD82D",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0x6d6Ce5A491cC2BE2f56AA02aa68AaE8acE927962"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709281103,
"transactionHash": "0x4edc02a8e19662c19aa6263b39b11c5faa8be3312a83505f79e1c64352b20c53",
"implementations": [
"eth:0x161f4BAAb4052f20F5f4347eC4422556aA0477f0"
]
},
{
"timestamp": 1709981231,
"transactionHash": "0xb5a1a3bd4ba7f9fb2d0f3d22755881f2d6998f9dfaf6f70194659f71aedf86b8",
"implementations": [
"eth:0x6d6Ce5A491cC2BE2f56AA02aa68AaE8acE927962"
]
}
],
"description": "L1 counterpart receiving messages from the MantaL2Gateway on Manta Pacific. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x649Dfa2c4d09D877419fA1eDC4005BfbEF7CD82D#code"
},
{
"name": "MantleL1Gateway",
"isVerified": true,
"address": "eth:0xdE1Ce751405Fe6D836349226EEdCDFFE1C3BE269",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0xe98EDDAd1f49abc7586eE516d019D834FBDc2951"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709281211,
"transactionHash": "0x373a2fba4cbf35d0dbe1e93d4c3d3a5cec9853c84b81b6088f3aa6990f22f4f1",
"implementations": [
"eth:0xa86ef37098C0507196A5f411AfFbf8f51FCe9637"
]
},
{
"timestamp": 1709981171,
"transactionHash": "0x36b3bf7e49f03b37dc4fc5ffc4086d6a93dfea8536e80ffde066de879db7f2cd",
"implementations": [
"eth:0xe98EDDAd1f49abc7586eE516d019D834FBDc2951"
]
}
],
"description": "L1 counterpart receiving messages from the MantleL2Gateway on Mantle. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xdE1Ce751405Fe6D836349226EEdCDFFE1C3BE269#code"
},
{
"name": "EraL1Gateway",
"isVerified": true,
"address": "eth:0xeCD189e0f390826E137496a4e4a23ACf76c942Ab",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0x59Ad3580c9e0992D474954327f5879AF5B3e4a22"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709281355,
"transactionHash": "0xa8070c4addf0258525ca69e13ee1d2d7a5098c0a7ffd29ec28f1920f4fc465b8",
"implementations": [
"eth:0xFF2568C81453a0741b1b97f3Fe598B07a927d79E"
]
},
{
"timestamp": 1709622143,
"transactionHash": "0xc24ab17a2b61d12b44999bbb861baf3f0f73b59881c80fae8c9763f83c7d1219",
"implementations": [
"eth:0x04bF7cf48a68dfC744fc22662B90e2ecaf14D716"
]
},
{
"timestamp": 1709981051,
"transactionHash": "0x337b3879d9a4e751f6aff14cdb948d3b5cb63cbb60233cbd789adca9205d4aaa",
"implementations": [
"eth:0x8915B1750f337342F2b6A2eF1BF12e279e3b497E"
]
},
{
"timestamp": 1713615719,
"transactionHash": "0xee6a34e852c4927c2afcf361307e2245771cf97a2e57f02f46ce8e9dfdd4771f",
"implementations": [
"eth:0x59Ad3580c9e0992D474954327f5879AF5B3e4a22"
]
}
],
"description": "L1 counterpart receiving messages from the EraL2Gateway on ZKsync Era. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0xeCD189e0f390826E137496a4e4a23ACf76c942Ab#code"
},
{
"name": "ArbitrumL1Gateway",
"isVerified": true,
"address": "eth:0x273D59aed2d793167c162E64b9162154B07583C0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0xF69302b6fF21116F9266bFA2fbE4ee23f6292875"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1709281415,
"transactionHash": "0x8ff3969fc5600c4a0f42b86a858be420ac1eb3005ca3a5766fa04844dd8cbfa1",
"implementations": [
"eth:0xa005091c98e6793b90E1340Bbd36C5d6De36fB60"
]
},
{
"timestamp": 1709980991,
"transactionHash": "0x57a6a5ba63d2b0b231901f39e869036ada97f0c769faca33f45fcce37eb21aad",
"implementations": [
"eth:0xF69302b6fF21116F9266bFA2fbE4ee23f6292875"
]
}
],
"description": "L1 counterpart receiving messages from the ArbitrumL2Gateway on Arbitrum One. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x273D59aed2d793167c162E64b9162154B07583C0#code"
},
{
"name": "BlastL1Gateway",
"isVerified": true,
"address": "eth:0x41FaF46Ca4Dfd912B65B66D29BdD432782BB1158",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0x01334Df58feE28db184ae9D11467F38F7437FD80"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1710418475,
"transactionHash": "0x5d17ffa3cd6b87a4abf52debbd5348ecdd275b5d20733277c7ac517cfa61f901",
"implementations": [
"eth:0x1DFF9a84A7Df94084995cAE2feac4a31fBCf4c9E"
]
},
{
"timestamp": 1713615719,
"transactionHash": "0xee6a34e852c4927c2afcf361307e2245771cf97a2e57f02f46ce8e9dfdd4771f",
"implementations": [
"eth:0x01334Df58feE28db184ae9D11467F38F7437FD80"
]
}
],
"description": "L1 counterpart receiving messages from the BlastL2Gateway on Blast. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x41FaF46Ca4Dfd912B65B66D29BdD432782BB1158#code"
},
{
"name": "OptimismL1Gateway",
"isVerified": true,
"address": "eth:0x668e8F67adB8219e1816C2E5bBEa055A78AF3026",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x344A908d1a7b7d06B7AD7169C1db81fc9d496dE9"
],
"implementations": [
"eth:0x2e8AD1434663b209EE59eF1a6612114239F4a190"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1711092707,
"transactionHash": "0x70ae3fc5f6442e19741bfcf455957088729aee976bb1b80d7224c4a37d2ce6bd",
"implementations": [
"eth:0x2e8AD1434663b209EE59eF1a6612114239F4a190"
]
}
],
"description": "L1 counterpart receiving messages from the OptimismL2Gateway on OP Mainnet. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x668e8F67adB8219e1816C2E5bBEa055A78AF3026#code"
},
{
"name": "BaseL1Gateway",
"isVerified": true,
"address": "eth:0x4eEA93966AA5cd658225E0D43b665A5a491d2b7E",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0x344A908d1a7b7d06B7AD7169C1db81fc9d496dE9"
],
"implementations": [
"eth:0x0C25f3ACCB17a9D60408D1c79bD7218073DAd518"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1711095887,
"transactionHash": "0x93767478c99ec84e15e69f2f18adb4fef4e1017c524c44088168d95d60d17419",
"implementations": [
"eth:0x0C25f3ACCB17a9D60408D1c79bD7218073DAd518"
]
}
],
"description": "L1 counterpart receiving messages from the BaseL2Gateway on Base. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x4eEA93966AA5cd658225E0D43b665A5a491d2b7E#code"
},
{
"name": "ScrollL1Gateway",
"isVerified": true,
"address": "eth:0x986c905087a663db3C81ad319b94c1E9dd388e92",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"eth:0xdb4D755E3b8735314147b9bB146327C269701E2D"
],
"implementations": [
"eth:0xdB97dBF9c0A20aA8B4787563B6bE04e83E7ECDFB"
]
},
"chain": "ethereum",
"pastUpgrades": [
{
"timestamp": 1718004791,
"transactionHash": "0x380f252111050403dc380bc5b2b0f894555743e4bcec985e41602b9abb40e2de",
"implementations": [
"eth:0xdB97dBF9c0A20aA8B4787563B6bE04e83E7ECDFB"
]
}
],
"description": "L1 counterpart receiving messages from the ScrollL2Gateway on Scroll. It redirects them to the Arbitrator contract.",
"upgradableBy": [
{
"name": "EthereumOwner",
"delay": "no"
}
],
"url": "https://etherscan.io/address/0x986c905087a663db3C81ad319b94c1E9dd388e92#code"
}
],
"optimism": [
{
"name": "OptimismL1ERC20Bridge",
"isVerified": true,
"address": "oeth:0x5Bd51296423A9079b931414C1De65e7057326EaA",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"oeth:0xA688B4E1375Ed6b9129dF4959da4a271B33e50a4"
],
"implementations": [
"oeth:0x21Fe89FfB96d4092b42c8ab35dcFEee50a86C3B8"
]
},
"chain": "optimism",
"pastUpgrades": [
{
"timestamp": 1711095511,
"transactionHash": "0x965f198c04e811f47221086ef6452f50af7e949ff2f5bb10125ba1a516999e44",
"implementations": [
"oeth:0x683669E5B6cDc6636673a5f7ddB68E20812216F5"
]
},
{
"timestamp": 1712211893,
"transactionHash": "0x5154061f44b9d3baf51c0211c4a0126b47486e3e06d89006106034afd62e24f8",
"implementations": [
"oeth:0x21Fe89FfB96d4092b42c8ab35dcFEee50a86C3B8"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from OP Mainnet to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "OptimismOwner",
"delay": "no"
}
],
"url": "https://optimistic.etherscan.io/address/0x5Bd51296423A9079b931414C1De65e7057326EaA#code"
},
{
"name": "OptimismzkLink",
"isVerified": true,
"address": "oeth:0x46C8D02E93d5a03899dFa7Cf8A40A07589A3fA1b",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"oeth:0x2c3FF918E3925CC3ba95f41307D1cfBEFDF93dB9"
],
"implementations": [
"oeth:0xe71A6Cfb42D0398f6d6aeD8a19987C83bbE3B86E"
]
},
"chain": "optimism",
"pastUpgrades": [
{
"timestamp": 1711092485,
"transactionHash": "0x412ad99eb52f12520a7367ec39f9b56a06e25aa1b17847dbe23f6700baa4bfaa",
"implementations": [
"oeth:0xebdA7f097EF976e8E82FA11F05ef1906f3068105"
]
},
{
"timestamp": 1713446493,
"transactionHash": "0xc9ff607b3fb208f26fadc47cde08c41273c79039e1f7bf2c9f5313d4b3869107",
"implementations": [
"oeth:0xe71A6Cfb42D0398f6d6aeD8a19987C83bbE3B86E"
]
}
],
"description": "Main messaging contract on OP Mainnet and ETH escrow. Outgoing messages (like deposits) are sent through the OptimismL2Gateway which ultimately makes use of OP Mainnet's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "OptimismOwner",
"delay": "no"
}
],
"url": "https://optimistic.etherscan.io/address/0x46C8D02E93d5a03899dFa7Cf8A40A07589A3fA1b#code"
},
{
"name": "OptimismL2Gateway",
"isVerified": true,
"address": "oeth:0xaD5d729291C0d6A299E370814CA6Ce1c8C25b51c",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"oeth:0x344A908d1a7b7d06B7AD7169C1db81fc9d496dE9"
],
"implementations": [
"oeth:0x3C3f4b866f8c6F0D2c912feE36D5Ad337a9AA98e"
]
},
"chain": "optimism",
"pastUpgrades": [
{
"timestamp": 1711092577,
"transactionHash": "0x2da77621f5936cebac55ac1c25951289f2aad1fae1a7a0ccb8388b2332f804e4",
"implementations": [
"oeth:0x3C3f4b866f8c6F0D2c912feE36D5Ad337a9AA98e"
]
}
],
"description": "High level interface between the local zkLink contract and OP's message service.",
"upgradableBy": [
{
"name": "OptimismOwner",
"delay": "no"
}
],
"url": "https://optimistic.etherscan.io/address/0xaD5d729291C0d6A299E370814CA6Ce1c8C25b51c#code"
}
],
"arbitrum": [
{
"name": "ArbitrumL1ERC20Bridge",
"isVerified": true,
"address": "arb1:0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0x48698A17D193bFc882395AC06a1DEdbb222F2917"
],
"implementations": [
"arb1:0x1202e0557A23531D09015C802e993d6423685FfB"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1709296973,
"transactionHash": "0x4879e7a6e35cdd40863e69eec2b64cafa514ca68ea8b4b9942c9624a18bfa2bf",
"implementations": [
"arb1:0x5f58BcCE409CDaFBbD705e720743b1EfF9fef28c"
]
},
{
"timestamp": 1712211957,
"transactionHash": "0x99c592973087e232fa0685460c1e5992ef3a5cd0d80e8c6739d738b08787bece",
"implementations": [
"arb1:0x1202e0557A23531D09015C802e993d6423685FfB"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from Arbitrum One to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "ArbitrumOwner",
"delay": "no"
}
],
"url": "https://arbiscan.io/address/0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585#code"
},
{
"name": "ArbitrumzkLink",
"isVerified": true,
"address": "arb1:0xFF73a1a1d27951A005eb23276dc99CB7F8d5420A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0xa29fFe244898CBec19DFEaAfB5cE671389FfF60F"
],
"implementations": [
"arb1:0xe2cd603BFAe63EEFBDf0C51485f835D8B419A305"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1709280428,
"transactionHash": "0x188f9617f4266ba6c55c01e49a2b918860f60ab012dd921f7a6bbf2478380b4b",
"implementations": [
"arb1:0x50efC7f1290479cb879473512D89fDC80B726211"
]
},
{
"timestamp": 1709980757,
"transactionHash": "0x2d6ab13f653c95e66eb8f995ecec5218aaa69dc457d8c314d5c0df3383b0a7eb",
"implementations": [
"arb1:0x04C6a52f3bf9F73618cD70F234AdB95a73325D1e"
]
},
{
"timestamp": 1713752983,
"transactionHash": "0x22f2009bf7f9c0cec80080ccd77d22c1bcf8e318cc2d2a442cae078746f19a6e",
"implementations": [
"arb1:0xe2cd603BFAe63EEFBDf0C51485f835D8B419A305"
]
}
],
"description": "Main messaging contract on Arbitrum One and ETH escrow. Outgoing messages (like deposits) are sent through the ArbitrumL2Gateway which ultimately makes use of Arbitrum One's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "ArbitrumOwner",
"delay": "no"
}
],
"url": "https://arbiscan.io/address/0xFF73a1a1d27951A005eb23276dc99CB7F8d5420A#code"
},
{
"name": "ArbitrumL2Gateway",
"isVerified": true,
"address": "arb1:0x7bd79DEd935B542fb22c74305a4d2A293C18483a",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"arb1:0xa29fFe244898CBec19DFEaAfB5cE671389FfF60F"
],
"implementations": [
"arb1:0x413552461b0b2c13f117d885b52AaA2f23374B1D"
]
},
"chain": "arbitrum",
"pastUpgrades": [
{
"timestamp": 1709280477,
"transactionHash": "0xaa8e1f332b3da71bb09cffdf5b797cdf7bc285cfad780a78d294c02619dba31e",
"implementations": [
"arb1:0xA194FB4EaB262EC9886A119609bbB2800bdD3a2E"
]
},
{
"timestamp": 1709981757,
"transactionHash": "0x2bc75a8c67da17b0d0c4543bfc3bbc51248fba5b4430ecf3f8836fe83d7b065a",
"implementations": [
"arb1:0x413552461b0b2c13f117d885b52AaA2f23374B1D"
]
}
],
"description": "High level interface between the local zkLink contract and Arbitrum's message service.",
"upgradableBy": [
{
"name": "ArbitrumOwner",
"delay": "no"
}
],
"url": "https://arbiscan.io/address/0x7bd79DEd935B542fb22c74305a4d2A293C18483a#code"
}
],
"base": [
{
"name": "BaseL1ERC20Bridge",
"isVerified": true,
"address": "base:0x80d12A78EfE7604F00ed07aB2f16F643301674D5",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x85F0d9da054C5FE399E079Cc0b47de74be5b22AE"
],
"implementations": [
"base:0xA89aa7e3D34516EAB7129E401215d5d1239Ce715"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1711098033,
"transactionHash": "0xd9b67d7dc47832724dd1b7bdc7e734d949b55a7e329662ccc91016eeed6fb60a",
"implementations": [
"base:0x413552461b0b2c13f117d885b52AaA2f23374B1D"
]
},
{
"timestamp": 1712212773,
"transactionHash": "0xe6819dfc1ae0abb6a95ad6b8778ca1ad6eda78b48e4f9685819bb09df8b5c8c8",
"implementations": [
"base:0xA89aa7e3D34516EAB7129E401215d5d1239Ce715"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from Base to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "BaseOwner",
"delay": "no"
}
],
"url": "https://basescan.org/address/0x80d12A78EfE7604F00ed07aB2f16F643301674D5#code"
},
{
"name": "BasezkLink",
"isVerified": true,
"address": "base:0xE473ce141b1416Fe526eb63Cf7433b7B8d7264Dd",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0xEf1c84A2fdCE663b75dB3F822cBe1cFddaaa162C"
],
"implementations": [
"base:0x08Ca9154DA9318323D3f6DFd872f5cDC4C85E388"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1711095697,
"transactionHash": "0xb135f489f7b7bcb2593e487ba1c07df4c6bb382b98f3ee1cb37a608715f7b180",
"implementations": [
"base:0x314bF0D901361F2e31A18cb3500bFD33aF51dE47"
]
},
{
"timestamp": 1713446693,
"transactionHash": "0x6c9c54497c2950dfbedc2c1c5e77cfadb8381e95743c32a240d43605a7f8f2b4",
"implementations": [
"base:0x08Ca9154DA9318323D3f6DFd872f5cDC4C85E388"
]
}
],
"description": "Main messaging contract on Base and ETH escrow. Outgoing messages (like deposits) are sent through the BaseL2Gateway which ultimately makes use of Base's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "BaseOwner",
"delay": "no"
}
],
"url": "https://basescan.org/address/0xE473ce141b1416Fe526eb63Cf7433b7B8d7264Dd#code"
},
{
"name": "BaseL2Gateway",
"isVerified": true,
"address": "base:0x1054Ff8B3B7B9F68d2e55C4A42E8952332c69011",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"base:0x344A908d1a7b7d06B7AD7169C1db81fc9d496dE9"
],
"implementations": [
"base:0x7f00134427437b2883F59EF3880597FDc836E356"
]
},
"chain": "base",
"pastUpgrades": [
{
"timestamp": 1711095783,
"transactionHash": "0xceb644026cf3c4c4f5c91e64352f5b2bceaaacc69e8f3c6a23591bf29fa16978",
"implementations": [
"base:0x7f00134427437b2883F59EF3880597FDc836E356"
]
}
],
"description": "High level interface between the local zkLink contract and Base's message service.",
"upgradableBy": [
{
"name": "BaseOwner",
"delay": "no"
}
],
"url": "https://basescan.org/address/0x1054Ff8B3B7B9F68d2e55C4A42E8952332c69011#code"
}
],
"mantapacific": [
{
"name": "MantaL1ERC20Bridge",
"isVerified": true,
"address": "manta:0x44a65dc12865A1e5249b45b4868f32b0E37168FF",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"manta:0x01aFbE3D5DC8A0C8271de9bCB091224f037EfE05"
],
"implementations": [
"manta:0x5f58BcCE409CDaFBbD705e720743b1EfF9fef28c"
]
},
"chain": "mantapacific",
"pastUpgrades": [
{
"timestamp": 1709295839,
"transactionHash": "0x2943e153ac49278eb44cc3606eb830489bd39126056837515c5f1d4fd6262943",
"implementations": [
"manta:0x0d53cE63f3A72879d543ed6272A081308A731470"
]
},
{
"timestamp": 1712212849,
"transactionHash": "0x15196bbffee8d57f18df9fead80e6301e9468716eef250ffbc5822cd435dd4a1",
"implementations": [
"manta:0x5f58BcCE409CDaFBbD705e720743b1EfF9fef28c"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from Manta Pacific to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "MantaOwner",
"delay": "no"
}
],
"url": "https://pacific-explorer.manta.network/address/0x44a65dc12865A1e5249b45b4868f32b0E37168FF#code"
},
{
"name": "MantazkLink",
"isVerified": true,
"address": "manta:0xD784d7128B46B60Ca7d8BdC17dCEC94917455657",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"manta:0x6ed8745d9ad0EE1fEeB060d63c7cf78A7E4c2dE3"
],
"implementations": [
"manta:0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585"
]
},
"chain": "mantapacific",
"pastUpgrades": [
{
"timestamp": 1709279099,
"transactionHash": "0xc4750009e40fe4c7c227dc379408c428ce6ff26c296f9eb06815b021339fdf69",
"implementations": [
"manta:0x5715Dec4cd747675E47b969D3a15aab909b8ce05"
]
},
{
"timestamp": 1709979429,
"transactionHash": "0x8ee4d527346b72e8b98838d84ef8667fc841944314f583cabf9993f6f462f848",
"implementations": [
"manta:0xe89635a7339bf46198f76b17bCFdAD977699cc13"
]
},
{
"timestamp": 1713753109,
"transactionHash": "0x469dbeecfffe82b89157782a568b255280c6058eb429a32feff865321c640339",
"implementations": [
"manta:0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585"
]
}
],
"description": "Main messaging contract on Manta Pacific and ETH escrow. Outgoing messages (like deposits) are sent through the MantaPacificL2Gateway which ultimately makes use of Manta Pacific's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "MantaOwner",
"delay": "no"
}
],
"url": "https://pacific-explorer.manta.network/address/0xD784d7128B46B60Ca7d8BdC17dCEC94917455657#code"
},
{
"name": "MantaL2Gateway",
"isVerified": true,
"address": "manta:0xe946aBB40928326ce5bFF303E7B8f0f253EA39D0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"manta:0x6ed8745d9ad0EE1fEeB060d63c7cf78A7E4c2dE3"
],
"implementations": [
"manta:0x50efC7f1290479cb879473512D89fDC80B726211"
]
},
"chain": "mantapacific",
"pastUpgrades": [
{
"timestamp": 1709279189,
"transactionHash": "0x1fca63a739c05f1e22df26b3cc5b2af31de992156fc017e7810cc94671913fee",
"implementations": [
"manta:0x55fa5276c44c1B465196898b144524C9c852235E"
]
},
{
"timestamp": 1709292159,
"transactionHash": "0x59d14b41116012c515c95ed7546fdcc82a1535184eb2a134daff77bf2db9c5f6",
"implementations": [
"manta:0xbfa352a683D82a04233Cc45AC1308621BA63283f"
]
},
{
"timestamp": 1709292569,
"transactionHash": "0x4a6764267c156b1453ce1460fca710b3544d2df4ddeb03c625843c891886cb1b",
"implementations": [
"manta:0x55fa5276c44c1B465196898b144524C9c852235E"
]
},
{
"timestamp": 1709981569,
"transactionHash": "0x40fe517bb5f7d135cc8dc1c39fe59b6ec44bf2b9477ab4f9f3e7fc09f658e892",
"implementations": [
"manta:0x50efC7f1290479cb879473512D89fDC80B726211"
]
}
],
"description": "High level interface between the local zkLink contract and Manta Pacific's message service.",
"upgradableBy": [
{
"name": "MantaOwner",
"delay": "no"
}
],
"url": "https://pacific-explorer.manta.network/address/0xe946aBB40928326ce5bFF303E7B8f0f253EA39D0#code"
}
],
"mantle": [
{
"name": "MantleL1ERC20Bridge",
"isVerified": true,
"address": "mantle:0x62351b47e060c61868Ab7E05920Cb42bD9A5f2B2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"mantle:0xeAe8e5180EAE503E4Ffef2F5D48E20164eD41b82"
],
"implementations": [
"mantle:0x7769C18828569692Dfb65affa0856533613ea458"
]
},
"chain": "mantle",
"pastUpgrades": [
{
"timestamp": 1709296907,
"transactionHash": "0xaf05aafd35db4063ec7549aeed61f0a2ced59a80c34aefe1a2f7e0de6a1ac7c8",
"implementations": [
"mantle:0xbfa352a683D82a04233Cc45AC1308621BA63283f"
]
},
{
"timestamp": 1712212048,
"transactionHash": "0xed9f3f5842ead3da2348d8edfbcacf5bf0572cc53ec3443c5229c23845d63f9c",
"implementations": [
"mantle:0x7769C18828569692Dfb65affa0856533613ea458"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from Mantle to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "MantleOwner",
"delay": "no"
}
],
"url": "https://explorer.mantle.xyz/address/0x62351b47e060c61868Ab7E05920Cb42bD9A5f2B2#code"
},
{
"name": "MantlezkLink",
"isVerified": true,
"address": "mantle:0xD784d7128B46B60Ca7d8BdC17dCEC94917455657",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"mantle:0x1aB4D3cfcCCB28DBc8993454f461f3565281BB60"
],
"implementations": [
"mantle:0x0C04046546C46652969Aa9eB4BFB758cFDf1e821"
]
},
"chain": "mantle",
"pastUpgrades": [
{
"timestamp": 1709279309,
"transactionHash": "0x6a00d05f32d4cad32533eacc6bfe09f424002d60b1474ec6d9615d7ad7f86abe",
"implementations": [
"mantle:0x5715Dec4cd747675E47b969D3a15aab909b8ce05"
]
},
{
"timestamp": 1709979353,
"transactionHash": "0x0f8754436aa05997946fd34f1a0573cb22a6c27181af505cb4d4121723bdd1cd",
"implementations": [
"mantle:0x85079cb83B6cadba34e64bc0f24493F49D8b1F4e"
]
},
{
"timestamp": 1713753082,
"transactionHash": "0xecf1785a348ae45261abf6f4bc82163701840e4740a5c104f036305677d800e8",
"implementations": [
"mantle:0xa8486096C719024D4eB2262A45AAc5cA8A256Cd6"
]
},
{
"timestamp": 1714727390,
"transactionHash": "0x10bb5a3d57fc38cfc2e56d9046c00aba1a47fe4ad38162ba0a5ec19c6b2cc6e7",
"implementations": [
"mantle:0x0C04046546C46652969Aa9eB4BFB758cFDf1e821"
]
}
],
"description": "Main messaging contract on Mantle and ETH escrow. Outgoing messages (like deposits) are sent through the MantleL2Gateway which ultimately makes use of Mantle's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "MantleOwner",
"delay": "no"
}
],
"url": "https://explorer.mantle.xyz/address/0xD784d7128B46B60Ca7d8BdC17dCEC94917455657#code"
},
{
"name": "MantleL2Gateway",
"isVerified": true,
"address": "mantle:0xe946aBB40928326ce5bFF303E7B8f0f253EA39D0",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"mantle:0x1aB4D3cfcCCB28DBc8993454f461f3565281BB60"
],
"implementations": [
"mantle:0xCdcDF691aF3e3717A35A2352aB7e34fd2980613D"
]
},
"chain": "mantle",
"pastUpgrades": [
{
"timestamp": 1709279398,
"transactionHash": "0xdb5d3920a2bbd9c5a3d97b54c227aa56d0f555060a03d7212a0d05b4239ec0f9",
"implementations": [
"mantle:0x55fa5276c44c1B465196898b144524C9c852235E"
]
},
{
"timestamp": 1709981511,
"transactionHash": "0xd264b50869bc4bd7d2c3ad80541399bc5a1963aa4ef010ea40e699ab0a56a9a7",
"implementations": [
"mantle:0x09CB6C5A235939258e3F6Ae2989cf6f26EeE1c72"
]
},
{
"timestamp": 1714727390,
"transactionHash": "0x10bb5a3d57fc38cfc2e56d9046c00aba1a47fe4ad38162ba0a5ec19c6b2cc6e7",
"implementations": [
"mantle:0xCdcDF691aF3e3717A35A2352aB7e34fd2980613D"
]
}
],
"description": "High level interface between the local zkLink contract and Mantle's message service.",
"upgradableBy": [
{
"name": "MantleOwner",
"delay": "no"
}
],
"url": "https://explorer.mantle.xyz/address/0xe946aBB40928326ce5bFF303E7B8f0f253EA39D0#code"
}
],
"scroll": [
{
"name": "ScrollL1ERC20Bridge",
"isVerified": true,
"address": "scr:0x3C7c0ebFCD5786ef48df5ed127cdDEb806db976c",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xC4673dAbfAf04D2A430e244B63F040D27199102f"
],
"implementations": [
"scr:0x067c7126a83560Ed2Fc345d25799F696B7Ea47Ca"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1718026877,
"transactionHash": "0xd2775129688587d97fff37813acd0581f68fdfe7f1a52b36a779e4ef9021c3fe",
"implementations": [
"scr:0x067c7126a83560Ed2Fc345d25799F696B7Ea47Ca"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from Scroll to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "ScrollOwner",
"delay": "no"
}
],
"url": "https://scrollscan.com/address/0x3C7c0ebFCD5786ef48df5ed127cdDEb806db976c#code"
},
{
"name": "ScrollzkLink",
"isVerified": true,
"address": "scr:0x119B9459D9119D07c23aD06778AeaBec804Fd1a2",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xeCa8EB8B909A29C2F912d5b0cBB153a43c860c77"
],
"implementations": [
"scr:0xCdcDF691aF3e3717A35A2352aB7e34fd2980613D"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1718004361,
"transactionHash": "0x9d2ffc640100c25deacf7308dafb540b000bfc8a3d6fa8dab19ec9150ce38434",
"implementations": [
"scr:0xCdcDF691aF3e3717A35A2352aB7e34fd2980613D"
]
}
],
"description": "Main messaging contract on Scroll and ETH escrow. Outgoing messages (like deposits) are sent through the ScrollL2Gateway which ultimately makes use of Scroll's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "ScrollOwner",
"delay": "no"
}
],
"url": "https://scrollscan.com/address/0x119B9459D9119D07c23aD06778AeaBec804Fd1a2#code"
},
{
"name": "ScrollL2Gateway",
"isVerified": true,
"address": "scr:0xd8428A59B60Df2d81514D429D57DF23293f1bCe7",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"scr:0xeCa8EB8B909A29C2F912d5b0cBB153a43c860c77"
],
"implementations": [
"scr:0xe469c1330cEEcC375fE17E7D649eA270186D344F"
]
},
"chain": "scroll",
"pastUpgrades": [
{
"timestamp": 1718004634,
"transactionHash": "0xa45f6d61d7c5c041f10950e9448a39a9fbf490d2fcb3155ff9add77b43cfc0c6",
"implementations": [
"scr:0xe469c1330cEEcC375fE17E7D649eA270186D344F"
]
}
],
"description": "High level interface between the local zkLink contract and Scroll's message service.",
"upgradableBy": [
{
"name": "ScrollOwner",
"delay": "no"
}
],
"url": "https://scrollscan.com/address/0xd8428A59B60Df2d81514D429D57DF23293f1bCe7#code"
}
],
"blast": [
{
"name": "BlastL1ERC20Bridge",
"isVerified": true,
"address": "blastmainnet:0x8Df0c2bA3916bF4789c50dEc5A79b2fc719F500b",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"blastmainnet:0xB5111Bda1E59b220d0Cf8D519CEDac46cb3B4c19"
],
"implementations": [
"blastmainnet:0xc24864769346073f5fEf0386A18734F0eF5503F5"
]
},
"chain": "blast",
"pastUpgrades": [
{
"timestamp": 1710427013,
"transactionHash": "0x6c75a5c435f7e399d35fa65b31295cfa722742a9cd03208bcf726891f028d0b2",
"implementations": [
"blastmainnet:0x4D7012d5C62c351804CCe49c2d7C09A401fD3deC"
]
},
{
"timestamp": 1712212871,
"transactionHash": "0x319fa19f70ff861bf9b573f1cc6054d236dcb99dec620756e3f85d2c35c0040b",
"implementations": [
"blastmainnet:0xc24864769346073f5fEf0386A18734F0eF5503F5"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from Blast to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "BlastOwner",
"delay": "no"
}
],
"url": "https://blastscan.io/address/0x8Df0c2bA3916bF4789c50dEc5A79b2fc719F500b#code"
},
{
"name": "BlastzkLink",
"isVerified": true,
"address": "blastmainnet:0x29BA92Fe724beD5c5EBfd0099F2F64a6DC5078FD",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"blastmainnet:0x730200f698cc8Ff16C00F4E8520Fd780B916D50E"
],
"implementations": [
"blastmainnet:0xDe4Be50Bfe9503180231357Eab19d709F8F73C66"
]
},
"chain": "blast",
"pastUpgrades": [
{
"timestamp": 1710417729,
"transactionHash": "0xd2b32d00ff07d1bb06d1fb01f3aedb6163ee3bf6fbe547310c4674f592d4d7f5",
"implementations": [
"blastmainnet:0x35E808DB3A37eec12ecF6A22Cc951C9F867f1D64"
]
},
{
"timestamp": 1713753045,
"transactionHash": "0xb0fd8cd86cd093af8f866f6fd599067fc5d202d36fd1f4967bda245c41ee16aa",
"implementations": [
"blastmainnet:0xDe4Be50Bfe9503180231357Eab19d709F8F73C66"
]
}
],
"description": "Main messaging contract on Blast and ETH escrow. Outgoing messages (like deposits) are sent through the BlastL2Gateway which ultimately makes use of Blast's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "BlastOwner",
"delay": "no"
}
],
"url": "https://blastscan.io/address/0x29BA92Fe724beD5c5EBfd0099F2F64a6DC5078FD#code"
},
{
"name": "BlastL2Gateway",
"isVerified": true,
"address": "blastmainnet:0x3f64e2e09732969813904a8473074CFADeE66AF1",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"blastmainnet:0x730200f698cc8Ff16C00F4E8520Fd780B916D50E"
],
"implementations": [
"blastmainnet:0xd1dCd063A4e650DCECd8BD211fe6D18a934ecCaD"
]
},
"chain": "blast",
"pastUpgrades": [
{
"timestamp": 1710418385,
"transactionHash": "0x05e9bceb1c88e60beabf453da2cfc31525989a529e5d600fbe170dfdb1325c88",
"implementations": [
"blastmainnet:0xd1dCd063A4e650DCECd8BD211fe6D18a934ecCaD"
]
}
],
"description": "High level interface between the local zkLink contract and Blast's message service.",
"upgradableBy": [
{
"name": "BlastOwner",
"delay": "no"
}
],
"url": "https://blastscan.io/address/0x3f64e2e09732969813904a8473074CFADeE66AF1#code"
}
],
"zksync2": [
{
"name": "EraL1ERC20Bridge",
"isVerified": false,
"isVerified": true,
"address": "zksync:0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zksync:0xe8184919c7200EF09e7007DFaB89BA4a99CeDc98"
],
"implementations": [
"zksync:0xdBA32e62e929a7e2Fa65782F812416CA65208E40"
]
},
"chain": "zksync2",
"pastUpgrades": [
{
"timestamp": 1709297079,
"transactionHash": "0x0564dfd39bc1c198014393565488b4808d94d76790f60c342ac6b031a000233d",
"implementations": [
"zksync:0x022c9D356d6B020D3128de430458A28C7183a13d"
]
},
{
"timestamp": 1712211917,
"transactionHash": "0x7886648572871a6eb12027c117e273d16ee8026b5f51c0b01b209c0218caf005",
"implementations": [
"zksync:0xdBA32e62e929a7e2Fa65782F812416CA65208E40"
]
}
],
"description": "Main entry point for depositing ERC20 tokens from ZKsync Era to zkLink Nova. Outgoing messages and incoming withdrawal validation is delegated to the zkLink contract.",
"upgradableBy": [
{
"name": "EraOwner",
"delay": "no"
}
],
"url": "https://explorer.zksync.io/address/0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08#code"
},
{
"name": "ErazkLink",
"isVerified": false,
"isVerified": true,
"address": "zksync:0xaFe8C7Cf33eD0fee179DFF20ae174C660883273A",
"upgradeability": {
"proxyType": "EIP1967 proxy",
"admins": [
"zksync:0x3334552599C9aA1FE08CfF276A02033FF37646ca"
],
"implementations": [
"zksync:0xC9bBbdCf1778A4aA86544F02CccBf09fd3A0706E"
]
},
"chain": "zksync2",
"pastUpgrades": [
{
"timestamp": 1709280624,
"transactionHash": "0xc46fbc277cb8c7a4cc234225d13ef11be35301d8aae17df2537a2b54692ab750",
"implementations": [
"zksync:0x1D3A82B3BDE1d23D3989b77325C4875395c9D6a9"
]
},
{
"timestamp": 1709979716,
"transactionHash": "0x36b4b07ab7556a46e511974d1e6ef3baacce9b569299326bba10f33d8166d0f0",
"implementations": [
"zksync:0xCaAeA20e1e35214342f4Efe87d3912493E3e1CE5"
]
},
{
"timestamp": 1713752936,
"transactionHash": "0x35dad9f42bcd7e9c55385a3656325f94616498878f636e080dbd059f80618492",
"implementations": [
"zksync:0xC9bBbdCf1778A4aA86544F02CccBf09fd3A0706E"
]
}
],
"description": "Main messaging contract on ZKsync Era and ETH escrow. Outgoing messages (like deposits) are sent through the ZKsync2L2Gateway which ultimately makes use of ZKsync Era's canonical messaging bridge to reach the Arbitrator on L1. Only whitelisted validators can sync messages with zkLink Nova, which also transfer the ETH to it via the respective canonical bridges. Incoming messages (like withdrawals) are validated on Linea first and then sent to this contract through the same path. Whitelisted validators can also relay messages to zkLink without going through the canonical bridge (fast path), which are later cross-checked with the slow path. If the check fails, the system halts.",
"upgradableBy": [
{
"name": "EraOwner",
"delay": "no"
}
],
"url": "https://explorer.zksync.io/address/0xaFe8C7Cf33eD0fee179DFF20ae174C660883273A#code"
}
]
},
"escrows": [
{
"chain": "optimism",
"includeInTotal": false,
"address": "0x46C8D02E93d5a03899dFa7Cf8A40A07589A3fA1b",
"sinceTimestamp": 1711092485,
"tokens": [
"ETH"
],
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Optimism"
}
]
},
"chainId": 10
},
{
"chain": "optimism",
"includeInTotal": false,
"address": "0x5Bd51296423A9079b931414C1De65e7057326EaA",
"sinceTimestamp": 1711095511,
"tokens": "*",
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Optimism"
}
]
},
"chainId": 10
},
{
"chain": "linea",
"includeInTotal": false,
"address": "0x5Cb18b6e4e6F3b46Ce646b0f4704D53724C5Df05",
"sinceTimestamp": 1709218085,
"tokens": [
"ETH"
],
"chainId": 59144
},
{
"chain": "linea",
"includeInTotal": false,
"address": "0x62cE247f34dc316f93D3830e4Bf10959FCe630f8",
"sinceTimestamp": 1709218113,
"tokens": "*",
"chainId": 59144
},
{
"chain": "ethereum",
"includeInTotal": false,
"address": "0x5fD9F73286b7E8683Bab45019C94553b93e015Cf",
"sinceTimestamp": 1709278799,
"tokens": [
"ETH"
],
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Ethereum"
}
]
},
"chainId": 1
},
{
"chain": "ethereum",
"includeInTotal": false,
"address": "0xAd16eDCF7DEB7e90096A259c81269d811544B6B6",
"sinceTimestamp": 1709295323,
"tokens": "*",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Ethereum"
}
]
},
"premintedTokens": [
"ZKL"
],
"chainId": 1
},
{
"chain": "mantapacific",
"includeInTotal": false,
"address": "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657",
"sinceTimestamp": 1709279099,
"tokens": [
"ETH"
],
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Mantapacific"
}
]
},
"chainId": 169
},
{
"chain": "mantapacific",
"includeInTotal": false,
"address": "0x44a65dc12865A1e5249b45b4868f32b0E37168FF",
"sinceTimestamp": 1709295839,
"tokens": "*",
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Mantapacific"
}
]
},
"chainId": 169
},
{
"chain": "mantle",
"includeInTotal": false,
"address": "0xD784d7128B46B60Ca7d8BdC17dCEC94917455657",
"sinceTimestamp": 1709279309,
"tokens": [
"MNT"
],
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Mantle"
}
]
},
"chainId": 5000
},
{
"chain": "mantle",
"includeInTotal": false,
"address": "0x62351b47e060c61868Ab7E05920Cb42bD9A5f2B2",
"sinceTimestamp": 1709296907,
"tokens": "*",
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Mantle"
}
]
},
"chainId": 5000
},
{
"chain": "zksync2",
"includeInTotal": false,
"address": "0xaFe8C7Cf33eD0fee179DFF20ae174C660883273A",
"sinceTimestamp": 1709280600,
"tokens": [
"ETH"
],
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from ZKsync Era"
}
]
},
"chainId": 324
},
{
"chain": "zksync2",
"includeInTotal": false,
"address": "0xaB3DDB86072a35d74beD49AA0f9210098ebf2D08",
"sinceTimestamp": 1709297040,
"tokens": "*",
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from ZKsync Era"
}
]
},
"chainId": 324
},
{
"chain": "arbitrum",
"includeInTotal": false,
"address": "0xFF73a1a1d27951A005eb23276dc99CB7F8d5420A",
"sinceTimestamp": 1709280428,
"tokens": [
"ETH"
],
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Arbitrum"
}
]
},
"chainId": 42161
},
{
"chain": "arbitrum",
"includeInTotal": false,
"address": "0xfB0Ad0B3C2605A7CA33d6badd0C685E11b8F5585",
"sinceTimestamp": 1709296973,
"tokens": "*",
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Arbitrum"
}
]
},
"chainId": 42161
},
{
"chain": "blast",
"includeInTotal": false,
"address": "0x29BA92Fe724beD5c5EBfd0099F2F64a6DC5078FD",
"sinceTimestamp": 1710417729,
"tokens": [
"ETH"
],
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Blast"
}
]
},
"chainId": 81457
},
{
"chain": "blast",
"includeInTotal": false,
"address": "0x8Df0c2bA3916bF4789c50dEc5A79b2fc719F500b",
"sinceTimestamp": 1710427013,
"tokens": "*",
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Blast"
}
]
},
"chainId": 81457
},
{
"chain": "base",
"includeInTotal": false,
"address": "0xE473ce141b1416Fe526eb63Cf7433b7B8d7264Dd",
"sinceTimestamp": 1711095697,
"tokens": [
"ETH"
],
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Base"
}
]
},
"chainId": 8453
},
{
"chain": "base",
"includeInTotal": false,
"address": "0x80d12A78EfE7604F00ed07aB2f16F643301674D5",
"sinceTimestamp": 1711098033,
"tokens": "*",
"source": "external",
"bridgedUsing": {
"bridges": [
{
"name": "zkLink Nova Bridge from Base"
}
]
},
"chainId": 8453
}
],
"risks": [
{
"category": "Funds can be stolen if",
"text": "a contract receives a malicious code upgrade. There is no delay on code upgrades.",
"isCritical": true
},
{
"category": "Funds can be stolen if",
"text": "the source code of unverified contracts contains malicious code.",
"isCritical": true
}
],
"zkVerifiers": [
"linea:0x902C3806A84f4e855a8746e92d7F1C9a51400458"
]
}