diff --git a/.env.example b/.env.example index 3655143c..74b67486 100644 --- a/.env.example +++ b/.env.example @@ -141,3 +141,7 @@ SEI_RPC=' ' PLASMA_RPC=' ' MONAD_RPC=' ' + +MEGAETH_RPC=' ' + +ETHEREAL_RPC=' ' diff --git a/.prettierignore b/.prettierignore index 90884e9c..f85919e7 100644 --- a/.prettierignore +++ b/.prettierignore @@ -16,7 +16,7 @@ scratchpad .gitignore .gitmodules .prettierignore -deploy.sh +*.sh foundry.toml LICENSE remappings.txt diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 00000000..df6ae4c8 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,122 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +Socket DL (Data Layer) is a protocol for generic message passing between blockchains. It enables dapps ("plugs") to send and receive cross-chain messages with configurable security/speed tradeoffs. The protocol is deployed across 70+ EVM chains. + +## Build and Test Commands + +```bash +# Install dependencies +forge install && yarn install + +# Compile contracts +forge build # or: yarn compile + +# Run tests (formats changed files first) +yarn test # runs: prettier + forge test + +# Run specific test file +forge test --match-path test/socket/SocketSrc.t.sol + +# Run specific test function +forge test --match-test testOutbound + +# Lint/format +yarn lint + +# Export ABIs +yarn abi # or: hardhat export-abi + +# Build TypeScript package +yarn build # exports ABIs + compiles TS +``` + +## Deployment + +Deployment uses Hardhat. Three modes exist: `dev`, `surge`, `prod` (set via `DEPLOYMENT_MODE` env var). + +```bash +# Full deployment flow +bash deploy.sh + +# Individual steps +npx hardhat run scripts/deploy/deploy.ts # Deploy contracts +npx hardhat run scripts/deploy/verify.ts # Verify on explorers +``` + +Key deployment files: + +- [scripts/deploy/config/config.ts](scripts/deploy/config/config.ts) - Chain configuration, role addresses +- [deployments/{mode}\_addresses.json](deployments/) - Deployed contract addresses +- `.env` - Private keys, RPC URLs, API keys (see `.env.example`) + +## Architecture + +### Core Message Flow + +1. **Source Chain**: Plug calls `Socket.outbound()` → message packed into Capacitor → Transmitter seals packet +2. **Destination Chain**: Transmitter proposes packet root → Switchboard verifies → Executor calls `Socket.execute()` → Plug receives `inbound()` + +### Contract Hierarchy + +``` +Socket (main entry point) +├── SocketSrc - Outbound message handling, packet sealing +├── SocketDst - Inbound execution, packet verification +├── SocketConfig - Plug configuration, switchboard registration +└── SocketBase - Shared state (hasher, capacitorFactory, managers) +``` + +### Key Contracts + +- **Socket** ([contracts/socket/Socket.sol](contracts/socket/Socket.sol)): Core contract combining source and destination logic +- **Capacitors** ([contracts/capacitors/](contracts/capacitors/)): Accumulate messages into packets (SingleCapacitor for 1:1, HashChainCapacitor for batching) +- **Switchboards** ([contracts/switchboard/](contracts/switchboard/)): Verify packets. Types: + - `FastSwitchboard` - Watcher-based attestation + - `OptimisticSwitchboard` - Timeout-based + - Native bridges (Arbitrum, Optimism, Polygon) - Use L1↔L2 messaging +- **ExecutionManager** ([contracts/ExecutionManager.sol](contracts/ExecutionManager.sol)): Fee handling, executor verification +- **TransmitManager** ([contracts/TransmitManager.sol](contracts/TransmitManager.sol)): Transmitter signature verification + +### Integration Pattern + +Dapps implement the `IPlug` interface: + +```solidity +interface IPlug { + function inbound( + uint32 srcChainSlug_, + bytes calldata payload_ + ) external payable; +} +``` + +Plugs connect to Socket specifying: sibling plug address, switchboard for inbound/outbound, and capacitor type. + +### TypeScript SDK (`src/`) + +Published as `@socket.tech/dl-core`. Exports: + +- Chain enums (`ChainSlug`, `ChainId`) +- Contract addresses by deployment mode +- Transmission utilities + +## Code Style (Solidity) + +- Private/internal variables and functions: underscore prefix (`_foo`, `_bar()`) +- Function parameters: underscore postfix (`param_`) +- Contract instances: double underscore postfix (`contract__`) +- Events: past tense, emitted immediately after state change +- All state variables should be private/internal with explicit getters where needed + +## Environment Variables + +Required in `.env`: + +- `DEPLOYMENT_MODE` - dev/surge/prod +- `SOCKET_SIGNER_KEY` - Deployer private key +- `SOCKET_OWNER_ADDRESS` - Contract owner +- Chain-specific RPCs and explorer API keys diff --git a/deployments/prod_addresses.json b/deployments/prod_addresses.json index a1bab9e6..b94cf692 100644 --- a/deployments/prod_addresses.json +++ b/deployments/prod_addresses.json @@ -276,6 +276,18 @@ "switchboard": "0xEaa15Fd42D68b8334a3BB1E9bF8cA85BaBE83790" } }, + "4326": { + "FAST": { + "capacitor": "0x2dc44072A920Eb192386BB2d7B7e32B39b1fc441", + "decapacitor": "0xf1158466BC8950fb582B05Ae1b441397306A58ea", + "switchboard": "0xD5a83a40F262E2247e6566171f9ADc76b745F5cD" + }, + "OPTIMISTIC": { + "capacitor": "0xA4200758f73bbAb508CA6acc2d62D09A58B9d31A", + "decapacitor": "0xb9b4a4251fa243e30f549c05e23314B73262c456", + "switchboard": "0xEaa15Fd42D68b8334a3BB1E9bF8cA85BaBE83790" + } + }, "5000": { "FAST": { "capacitor": "0x7873cE9D233a883b54beb5cFc512f3e8e2e299f8", @@ -533,6 +545,18 @@ "switchboard": "0xEaa15Fd42D68b8334a3BB1E9bF8cA85BaBE83790" } }, + "5064014": { + "FAST": { + "capacitor": "0x85B325753B10592Fe968526cc419bD11F9C8c9af", + "decapacitor": "0x5622A1036ed6F7C6c005fC7c67148BC72d0C9049", + "switchboard": "0xD5a83a40F262E2247e6566171f9ADc76b745F5cD" + }, + "OPTIMISTIC": { + "capacitor": "0x75385994bfDFFD03eA73e1E4f8c4e786899cbd59", + "decapacitor": "0x3E2319ed2E89d967f7cc3D54a996390aa22c7aF4", + "switchboard": "0xEaa15Fd42D68b8334a3BB1E9bF8cA85BaBE83790" + } + }, "1324967486": { "FAST": { "capacitor": "0xc3C3c70C0A8540d02142fF9a90189d85E7F508A5", @@ -920,6 +944,18 @@ "switchboard": "0x09A6e77912a6bcFc3abfDfb841A85380Bb2A8B97" } }, + "4326": { + "FAST": { + "capacitor": "0xC8BdA67cE0ab0900fe7D9bAD9BfDB8759C05971f", + "decapacitor": "0xE82553E1Ff3F2Ec606540BB6bE2653e67D21F67F", + "switchboard": "0x09A6e77912a6bcFc3abfDfb841A85380Bb2A8B97" + }, + "OPTIMISTIC": { + "capacitor": "0x2BB679054c0035E23216332d6094f6408742D3aF", + "decapacitor": "0x453De1D6332dA7bb62Ba70fbA647F46676E43C53", + "switchboard": "0xb113d72896d4874111AF00c9499b5a64e9f1e3f4" + } + }, "5000": { "FAST": { "capacitor": "0x82538D7b0506c2aB3B074a13413aF8d6456256db", @@ -1172,6 +1208,18 @@ "switchboard": "0xb113d72896d4874111AF00c9499b5a64e9f1e3f4" } }, + "5064014": { + "FAST": { + "capacitor": "0x226EBF7D84edE7286510F0FC38879bd6f07cD3f4", + "decapacitor": "0xB5086F38FD9FBA266fC23d7483a952a7Fb90728f", + "switchboard": "0x09A6e77912a6bcFc3abfDfb841A85380Bb2A8B97" + }, + "OPTIMISTIC": { + "capacitor": "0x627AfDFbD5D32cB11441aB86a759D834Ec65b1Af", + "decapacitor": "0xdF4Fbf94bc961c8188BFFD47B8a2D13d07695675", + "switchboard": "0xb113d72896d4874111AF00c9499b5a64e9f1e3f4" + } + }, "1324967486": { "FAST": { "capacitor": "0x1FF65cB4Ac00d4a9F51D78b20a75411f3844f624", @@ -1436,6 +1484,18 @@ "switchboard": "0xCedce2e52aa6551bC407f640D8Bd9179b528347C" } }, + "4326": { + "FAST": { + "capacitor": "0x62A9414d763B983E7FEA5F244A8Dd5869d8943A9", + "decapacitor": "0x09D6908c982dC1b1B8947daf0278227348f5d555", + "switchboard": "0xCedce2e52aa6551bC407f640D8Bd9179b528347C" + }, + "OPTIMISTIC": { + "capacitor": "0xC2AE73F8AD7488F06a33eC62C2ffa7e25ac08A3c", + "decapacitor": "0x33781FAcf81b3fbE6fF3291527CD5E140aD82195", + "switchboard": "0x5490aBcD9949833FB68e4d222ee68dc225881c25" + } + }, "5000": { "FAST": { "capacitor": "0xB09D5eA0c14e91488C4C2846B71E10Ce8e5DdaB3", @@ -1639,6 +1699,18 @@ "decapacitor": "0x73A17d2EC93C4207aAD062b5A2A76749622C2Bc8", "switchboard": "0x5490aBcD9949833FB68e4d222ee68dc225881c25" } + }, + "5064014": { + "FAST": { + "capacitor": "0x700ec74a0652c937700b5ef358a2d229cFf361A0", + "decapacitor": "0x94e0C8791B26CEcA58d35eeaBBf0A9F243eb29Aa", + "switchboard": "0xCedce2e52aa6551bC407f640D8Bd9179b528347C" + }, + "OPTIMISTIC": { + "capacitor": "0x60100f93FdFf8994D3A488A9F2Dc21AC26B1C841", + "decapacitor": "0xDcFf079cB244162c1701b0A9B3e1418F6E23c2AD", + "switchboard": "0x5490aBcD9949833FB68e4d222ee68dc225881c25" + } } }, "OptimisticSwitchboard": "0x5490aBcD9949833FB68e4d222ee68dc225881c25", @@ -1892,6 +1964,18 @@ "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } }, + "4326": { + "FAST": { + "capacitor": "0x48903bEDc1344B728182c27d04612A1b432BaCA2", + "decapacitor": "0x3Ba9ab394F323825B30f8C3bDc1a74353811FA99", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0x55bc65eeD2A9044A5467e54B04D2F71e84e12f67", + "decapacitor": "0xc4DFED08A6d0De77de096C1571e168F203542f8E", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } + }, "5000": { "FAST": { "capacitor": "0xCF029dbbFCeBf82C981B3Ffe78CCB38bbC57a6FC", @@ -2071,6 +2155,18 @@ "decapacitor": "0x7Fbccbd4ad43400CC72565a2385407d9ABBb3505", "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } + }, + "5064014": { + "FAST": { + "capacitor": "0x123780Ca2c86A1ee12907f5E1C9Ffc5037d99Edd", + "decapacitor": "0x22Beb849aabC784400CAB3b2CE718143A6B42e4d", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0x12DAaffe67DF93E0bf41B18AA80E7234F63b2814", + "decapacitor": "0x7f29D3957Bf56520e2a630167698C7898Ce0E1A9", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } } }, "SafeL2": "0x6ee3907D1B9423584195979812379143B327fb48", @@ -2267,6 +2363,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "4326": { + "FAST": { + "capacitor": "0xcE6a97c8A36362d86239F31fe5B1A07eCfD5EFa9", + "decapacitor": "0x8858388BdD9899a9C938E7154ddc5a9c4C802B90", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xAD91E817224BAB044FC4DF88B9df13D68961EB63", + "decapacitor": "0x6F981646d70980609756CA0Cd72044a269202781", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "5000": { "FAST": { "capacitor": "0xde809627100191f5032358fE0B4Fa845Bac48803", @@ -2434,6 +2542,18 @@ "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } + }, + "5064014": { + "FAST": { + "capacitor": "0x554763ad0429eFf30432D78D4be7D652fDd06CcE", + "decapacitor": "0x7371768c221038e8b63A9DAd67D97CadFe8B827A", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x645c100843a33C4A32621d2d3e2023D2BdAA2C5f", + "decapacitor": "0x943E0383883C720C74d6e0977144Cf13EE2154dD", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } } } }, @@ -2690,6 +2810,18 @@ "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" } }, + "4326": { + "FAST": { + "capacitor": "0x6B9a2c42F3457d04842Ef8f2Ef1CA290FdF26038", + "decapacitor": "0xC595E64B00BDE73B0e24a8d790225e17E0cD3511", + "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + }, + "OPTIMISTIC": { + "capacitor": "0x319A2F87403DF7b87655d284B7f1495856D265bd", + "decapacitor": "0x7666796040E022110c44F7E421250A7B03F03D72", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + }, "5000": { "FAST": { "capacitor": "0x16E9A398baCFFAb459FBC3a0A110696D26BD841C", @@ -2894,6 +3026,18 @@ "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" } }, + "5064014": { + "FAST": { + "capacitor": "0x9fe5719a160F16bFCf5A1511eab577b64C6aba29", + "decapacitor": "0xd653b9420C3969dA9e028452180B0B391f3D277B", + "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + }, + "OPTIMISTIC": { + "capacitor": "0xfA84Cf7cce5c2C283B88dC40a3f044A81Aba0cC1", + "decapacitor": "0x80c2a373061c86EC01dA7fEe272136e2B1d5f410", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + }, "1324967486": { "FAST": { "capacitor": "0x93DD5613D77b3eaD19cE6a9F19f488F262C9EdBB", @@ -3099,6 +3243,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "4326": { + "FAST": { + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "5000": { "FAST": { "capacitor": "0x5fE86Da2b8680c0341fB8b97449C573258359CF7", @@ -3266,6 +3422,18 @@ "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } + }, + "5064014": { + "FAST": { + "capacitor": "0xcE6a97c8A36362d86239F31fe5B1A07eCfD5EFa9", + "decapacitor": "0x8858388BdD9899a9C938E7154ddc5a9c4C802B90", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xAD91E817224BAB044FC4DF88B9df13D68961EB63", + "decapacitor": "0x6F981646d70980609756CA0Cd72044a269202781", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } } } }, @@ -3454,6 +3622,18 @@ "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } }, + "4326": { + "FAST": { + "capacitor": "0xf0D73e55fBf3370738058B6074EB6938769a2486", + "decapacitor": "0x97B9c8C138f61745f8Ab8DB0dF3D3e733f28D25B", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0x71C64D73DF1914AFa73A315d9F0604a5FA73C30F", + "decapacitor": "0xFF0FF0876363d8745A9734C4920067f73f563A4b", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } + }, "5000": { "FAST": { "capacitor": "0xF6f648CF8164Dd7Ec04C0dba8fc91e7b66A154C0", @@ -3633,6 +3813,18 @@ "decapacitor": "0x01e651d3C13fA3BC0E301D040acbB31Ad5f87f56", "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } + }, + "5064014": { + "FAST": { + "capacitor": "0xD9596ede5a0f8E25dDee8566440391E4E7644701", + "decapacitor": "0x105aFeb4225Ffe7791f4920a23dcAd4c05100856", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0xb0E95F897Db1737e560AFF512D1598925b6E61C3", + "decapacitor": "0x01ee7e3d895212E3d8114f7487c64E122c764203", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } } }, "SafeL2": "0x1C4E51f453df3208A01EE8AF9f6420FDf02D373a", @@ -4611,6 +4803,18 @@ "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" } }, + "4326": { + "FAST": { + "capacitor": "0x0D821dE5e6Ece6C002e67a37af71b0C45e62e313", + "decapacitor": "0xcB6CC185d194DF188578bF19e1848f33c74a196e", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + }, + "OPTIMISTIC": { + "capacitor": "0xbDe2E7ef94751e7e3Cf9195961da09D0f0c12A08", + "decapacitor": "0x8CBFB23bBd4fB7d8C5d88fab05B49bF0dD62FDb8", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + } + }, "5000": { "FAST": { "capacitor": "0x92A490276C8636Dd7fB94c8d57D1a6e46abf7254", @@ -4778,6 +4982,18 @@ "decapacitor": "0x0D723eaBC304733F1E8e2D6B48133d8e4440C87F", "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" } + }, + "5064014": { + "FAST": { + "capacitor": "0xA8239C0D896e3315973B2e96d8bC7d9058e0f717", + "decapacitor": "0xb2b3F26d9CD253d88555C0eCb3FF14D2d5e32c38", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + }, + "OPTIMISTIC": { + "capacitor": "0xFa500Bd7dB16B8ec8b70E7F9E49cCB640A0F05d7", + "decapacitor": "0xc221686Ea6B22EC2c97969e213ddA09141A427BE", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + } } } }, @@ -5466,6 +5682,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "4326": { + "FAST": { + "capacitor": "0xcE6a97c8A36362d86239F31fe5B1A07eCfD5EFa9", + "decapacitor": "0x8858388BdD9899a9C938E7154ddc5a9c4C802B90", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xAD91E817224BAB044FC4DF88B9df13D68961EB63", + "decapacitor": "0x6F981646d70980609756CA0Cd72044a269202781", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "5000": { "FAST": { "capacitor": "0x3B7eC86684502091C7400f6977845fD1bA39b0aA", @@ -5633,6 +5861,18 @@ "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } + }, + "5064014": { + "FAST": { + "capacitor": "0x554763ad0429eFf30432D78D4be7D652fDd06CcE", + "decapacitor": "0x7371768c221038e8b63A9DAd67D97CadFe8B827A", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x645c100843a33C4A32621d2d3e2023D2BdAA2C5f", + "decapacitor": "0x943E0383883C720C74d6e0977144Cf13EE2154dD", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } } } }, @@ -5912,6 +6152,18 @@ "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } }, + "4326": { + "FAST": { + "capacitor": "0x48903bEDc1344B728182c27d04612A1b432BaCA2", + "decapacitor": "0x3Ba9ab394F323825B30f8C3bDc1a74353811FA99", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0x55bc65eeD2A9044A5467e54B04D2F71e84e12f67", + "decapacitor": "0xc4DFED08A6d0De77de096C1571e168F203542f8E", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } + }, "5000": { "FAST": { "capacitor": "0xdF24b92Ad07D39344B1abA69a8acbb5DEa5BA08a", @@ -6091,6 +6343,18 @@ "decapacitor": "0x7Fbccbd4ad43400CC72565a2385407d9ABBb3505", "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } + }, + "5064014": { + "FAST": { + "capacitor": "0x123780Ca2c86A1ee12907f5E1C9Ffc5037d99Edd", + "decapacitor": "0x22Beb849aabC784400CAB3b2CE718143A6B42e4d", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0x12DAaffe67DF93E0bf41B18AA80E7234F63b2814", + "decapacitor": "0x7f29D3957Bf56520e2a630167698C7898Ce0E1A9", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } } }, "SafeL2": "0x511B2cb97E3DD25083C1654c54b57EB1CF0824b7", @@ -6275,6 +6539,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "4326": { + "FAST": { + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "5000": { "FAST": { "capacitor": "0xE6c7C1343fE0fAF82B0f8552eb2eC0904A212d08", @@ -6442,6 +6718,18 @@ "decapacitor": "0x2AF0D774b661E2a262442e4270e777D37e87d762", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } + }, + "5064014": { + "FAST": { + "capacitor": "0xcE6a97c8A36362d86239F31fe5B1A07eCfD5EFa9", + "decapacitor": "0x8858388BdD9899a9C938E7154ddc5a9c4C802B90", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xAD91E817224BAB044FC4DF88B9df13D68961EB63", + "decapacitor": "0x6F981646d70980609756CA0Cd72044a269202781", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } } } }, @@ -6622,6 +6910,18 @@ "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" } }, + "4326": { + "FAST": { + "capacitor": "0x0D821dE5e6Ece6C002e67a37af71b0C45e62e313", + "decapacitor": "0xcB6CC185d194DF188578bF19e1848f33c74a196e", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + }, + "OPTIMISTIC": { + "capacitor": "0xbDe2E7ef94751e7e3Cf9195961da09D0f0c12A08", + "decapacitor": "0x8CBFB23bBd4fB7d8C5d88fab05B49bF0dD62FDb8", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + } + }, "5000": { "FAST": { "capacitor": "0x9a374a7537E4e8eE0f7B64040c4f2c574CE41dA5", @@ -6789,6 +7089,18 @@ "decapacitor": "0x0D723eaBC304733F1E8e2D6B48133d8e4440C87F", "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" } + }, + "5064014": { + "FAST": { + "capacitor": "0xA8239C0D896e3315973B2e96d8bC7d9058e0f717", + "decapacitor": "0xb2b3F26d9CD253d88555C0eCb3FF14D2d5e32c38", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + }, + "OPTIMISTIC": { + "capacitor": "0xFa500Bd7dB16B8ec8b70E7F9E49cCB640A0F05d7", + "decapacitor": "0xc221686Ea6B22EC2c97969e213ddA09141A427BE", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + } } } }, @@ -6981,6 +7293,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "4326": { + "FAST": { + "capacitor": "0xcE6a97c8A36362d86239F31fe5B1A07eCfD5EFa9", + "decapacitor": "0x8858388BdD9899a9C938E7154ddc5a9c4C802B90", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xAD91E817224BAB044FC4DF88B9df13D68961EB63", + "decapacitor": "0x6F981646d70980609756CA0Cd72044a269202781", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "5000": { "FAST": { "capacitor": "0x6d0a43b0e75ea6c71a3a252d0ABcB6C462085F44", @@ -7143,6 +7467,18 @@ "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } + }, + "5064014": { + "FAST": { + "capacitor": "0x554763ad0429eFf30432D78D4be7D652fDd06CcE", + "decapacitor": "0x7371768c221038e8b63A9DAd67D97CadFe8B827A", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x645c100843a33C4A32621d2d3e2023D2BdAA2C5f", + "decapacitor": "0x943E0383883C720C74d6e0977144Cf13EE2154dD", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } } } }, @@ -7266,72 +7602,431 @@ "SocketSafeProxy": "0xC9BAD71ce40aDB00577bb92dcc101c2B8aCF49AD", "MultiSigWrapper": "0x74EBb564b92A3F7AcfFeb8aF3b322831bF57ac22" }, - "5000": { - "SignatureVerifier": "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - "Hasher": "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - "CapacitorFactory": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - "Socket": "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - "ExecutionManager": "0xc317144DE60E6bC9455363bB09852C00bd14CD61", - "TransmitManager": "0xbDf50eAe568ECef74796ed6022a0d453e8432410", - "FastSwitchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d", - "OptimisticSwitchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65", - "SocketBatcher": "0xf200705d32fD1ED4A840610B756F12570c0ddE39", - "Counter": "0x1141efbA7aDed9eECAa27C785d9bd50C51E54c88", - "startBlock": 47547470, + "4326": { + "SafeL2": "0xbe7241e9D11EC2D1Ac86CE217c4A37b7aD1701cE", + "SafeProxyFactory": "0x1CAdCd88fC148D3966eDe75D029937C886f66009", + "SocketSafeProxy": "0xd6b078f06d4e26eCc6405457d01F50656a1657c0", + "MultiSigWrapper": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b", + "SignatureVerifier": "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "Hasher": "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", + "CapacitorFactory": "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", + "Socket": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + "ExecutionManagerDF": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8", + "TransmitManager": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E", + "FastSwitchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472", + "OptimisticSwitchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + "SocketBatcher": "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", + "Counter": "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", + "SocketSimulator": "0xB152AC07a21966981fef9341DA3146f8e08e22bC", + "SimulatorUtils": "0x134633394c8Cef32a671B6Fed5e99b4B6466f4e4", + "SwitchboardSimulator": "0x10eC45De78BDfE26Cefb953F604E18BF70904FBa", + "CapacitorSimulator": "0xa6191E8c7659161C0745E67e8Ba445d88331b8C0", + "startBlock": 6804737, "integrations": { "1": { "FAST": { - "capacitor": "0xB1ecD6D2d1f52D5Abed57431508733d51BB4Cd6B", - "decapacitor": "0x67e8D09fE657332e312e0d649500c09E8A8c3A2C", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0xAee109a501C97438e85158831c9F7F6a467288F3", + "decapacitor": "0xF8458a091DAE58fc30081FC6eE4E58867F28ee56", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" }, "OPTIMISTIC": { - "capacitor": "0x924b840ea9Cb97Aa103B6B37b5815676a0fA6076", - "decapacitor": "0x4648bA0745A1333eEF1e6790815c2e8d327C0686", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0xb84336636650b3b3bB9e88be66768F80822919f2", + "decapacitor": "0xC820960bEa8c00f25eAa18e39663052261F34d5b", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" } }, "10": { "FAST": { - "capacitor": "0x8590b1DDb6a4A06145bF008e8e708A81f9fb53e6", - "decapacitor": "0x8DFD1D3b6EAF93dDf11AeC821a060e1bc4974CDf", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0x0Ce21Ce4e189167556B433ae6D092A773BF1364B", + "decapacitor": "0x475daA089099668D55Eb37CE11EF3F25A6d369c6", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" }, "OPTIMISTIC": { - "capacitor": "0xA44a50cdb7b9B117f793395dC17bC52847F607f9", - "decapacitor": "0xb1ED25951868138A0bd0eb48ea8b9969B9406D9D", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0x033C827345BF0dBCCa14F77C0CA5b0fE2F20CD2A", + "decapacitor": "0x2A63DaD15015C418033453Ec627Ddc16A39A08B1", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" } }, "56": { "FAST": { - "capacitor": "0xa9D32248962b8675438d488bbb28974081Fd4779", - "decapacitor": "0x298a5bef4052B15E32d66D27Bfe7Fd3677f1aEf1", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0xf7e85e1b9353F67F721225DEb08b4b7e4D923F57", + "decapacitor": "0xb156f21E0C26912Ff3dC8f46661E09ef7a44019D", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" }, "OPTIMISTIC": { - "capacitor": "0x633a828F7EbB3c30bd0fcD80E127d23e45b9CABb", - "decapacitor": "0x1CD4bc16F197FBe5AF493066cdea8095A1Fc46D1", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0x1C228698E82bEAbe79A3D7bbD8368Aa622d4980C", + "decapacitor": "0xbb51df857c1749dED05c9dFC37b55eDCeb24603F", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" } }, "100": { "FAST": { - "capacitor": "0x8f13cFB9F90703318F03B90e1D53891e51Ba4cbE", - "decapacitor": "0x8016673CB8A69886935533331183E5040f503C5D", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0xD4290D15A6c34600560F46B470Bf0B94f28471DF", + "decapacitor": "0x57fadB6F89D71a897f0E371dfc6022F3BB00ECB7", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" }, "OPTIMISTIC": { - "capacitor": "0xD565E419f066fF70685a57160a673D614E2f885e", - "decapacitor": "0x85296450abCDb2D50DBfd6Dcb198ABC2A738497E", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0x8B042E361ca380Daf164db88d9e5869c8C139b62", + "decapacitor": "0x3C4f0883ae9C5078B72922305799478eea09C115", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" } }, "130": { "FAST": { - "capacitor": "0x61A55cf63Bd9510Cc19dFD02414b1130c58B6000", - "decapacitor": "0x090089855191BF5b54B111B021093612bBC03F18", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0x7Af3b13AC8384CA5bB3cF3ce2207e6114C6E2C1E", + "decapacitor": "0x3e514814665913B02d0041B33Cf15eBd6366C766", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x5263F90de79C223dAc0B8558e9cdE28588E1f521", + "decapacitor": "0x116bf4A36dDc0B2366e6AF7B98543432561fd94F", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "137": { + "FAST": { + "capacitor": "0x5A05E5163570fC768d6F8332aa4c3696dB0e4cF0", + "decapacitor": "0x9d1f3c63662F97FBDc2F1d1B79Dd2f93f40F2EE8", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x0d65ade019BEB95bE753cC9Ab18Beca6444E43c0", + "decapacitor": "0x0bba0A85E45B555a83f054805bC130256cEe7B48", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "143": { + "FAST": { + "capacitor": "0x3E0f7a47aA86c4568Bd656A657980cEF7FB31205", + "decapacitor": "0x1C129C48518564D4FFF7da6821bfb82F258168b2", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x7d9Ae1cb21A4A88aE368E257B7c9F78E4D50E018", + "decapacitor": "0x9687fFBbF76FA77C9E6b1aa493778CD07675FA03", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "146": { + "FAST": { + "capacitor": "0x76d5C4d19E95e21Fe1f456F76606a6D09EF01541", + "decapacitor": "0xb085c7edc40eDed999aaeCbadc9A12Aa06BD25a5", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0xA4af5fDcE399d17264F1D8F0E8aBA765cA58C8C2", + "decapacitor": "0x2a76c5F2fb1447aF9b64fC3478278c457eb32FE5", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "480": { + "FAST": { + "capacitor": "0xc06c53Eb2C54EF3A7770D363736250B3fC0E20Cc", + "decapacitor": "0x9d1bD8BA1Fd2037d99e1E328e079FEDe6BE30820", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x58535E1817A3873b28b44e32E45962C7a52c1232", + "decapacitor": "0xEffae63082B4d202381c60F3E95419eE47Ce9CD7", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "999": { + "FAST": { + "capacitor": "0xEAabA6A2bb994c38779F59F45CB58775e1C8b166", + "decapacitor": "0xC75Be4BECe31E03400368f643169Ba32d1286876", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x789647e7dA739BBDD700ED86E9285aC4296b41Bb", + "decapacitor": "0x936024Dc9eb31F39f42f57bdb48172C7E4213855", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "1101": { + "FAST": { + "capacitor": "0x2F069FFC3B1b24D5B76d541A168ef75Bb0D7B1bA", + "decapacitor": "0xefA17A9ad3CD46b45fF4673CB743CAF8F448C457", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x94D4b3CC4d96e1899431e69a333591ffBb1B3829", + "decapacitor": "0x633e24B70E5618891d4C7d0F05CfE60a84e11D41", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "1329": { + "FAST": { + "capacitor": "0xD6bc8196cb9f07A5a3c5C2abf65A6b9b5e7C5EDc", + "decapacitor": "0x92dEa752b47DF9f7d39c860287d9691Bd28275b7", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x3B47E0677Ad124921C9A61Cb3EA974Ab8763b45E", + "decapacitor": "0x97963Ccc875F40ceC3b3e3c30Aee3cA7aF305588", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "1868": { + "FAST": { + "capacitor": "0x46e67E79349E30c3541E80C6ae5dF3BBA772d886", + "decapacitor": "0xAeBfC52F2BA57dcD85CBab4363Adf9c56BA85DBC", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x70a57830C0efB101a7cAa711051385Da4D868086", + "decapacitor": "0x56E3c19A9BCa1E05B6b5917ece531A8b0Ef2FA7B", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "1923": { + "FAST": { + "capacitor": "0x466874FFB5dEb0Fe985E79C348F0977D41b71268", + "decapacitor": "0xCaA6af97Fc2705d44D8c94E353e9c80cab78CD11", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x6Dc52C267a522977C68b3203c4836758f8D7991b", + "decapacitor": "0xaC91440523989B38669b0CdBf4770EFB2e2436a3", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "5000": { + "FAST": { + "capacitor": "0xC03463EC53B8B2c43410B93CA73C994086b7e825", + "decapacitor": "0x9Ff6f4533be6ba5D54eaaE099b8088F4c8B6B2b0", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x0E1E5b8D8Bb92176294e5366b9ecEed327105054", + "decapacitor": "0x48C5B999c256323a827c753a72156eF8869eC76C", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "8453": { + "FAST": { + "capacitor": "0x435152450bCAB25E53529A30D9f7f33D250FeF76", + "decapacitor": "0x22A3897B820cd3a0AEB3bC0d598c5A69B5e4201b", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x43f40c4F90a51e7aFbF0ee13DddFBc00223f07de", + "decapacitor": "0xcDAAa240f517F0F2B4B8189Efe7e562DEAFB718B", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "9745": { + "FAST": { + "capacitor": "0xc4D40C868c4028706fa6101CE6Fc0a965631fc14", + "decapacitor": "0x86F66497921a924a8Afbb5EaB1B5658f74fc4249", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x4db980E86606F2268Ef64F3b13473BD1f3C3EE54", + "decapacitor": "0xEc38e41BFb2BD328db1cc774E823E7D345AE4E68", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "34443": { + "FAST": { + "capacitor": "0x14b9DAbE9E4CcB09C369b79993D6bE95E541863A", + "decapacitor": "0x15ec0a377Fba050Ec3A7BaA592Fa80290778691B", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x78500437E74587C0898FF02fb7e678c63db105E2", + "decapacitor": "0x95D20fda823111e038C4031430D76f1107A06880", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "42161": { + "FAST": { + "capacitor": "0xBAec688212500E9f93a35cf32496165Cb37B9B87", + "decapacitor": "0xB1fA95e9E77e7b45A24a77c018c9419cB9f993bc", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0xF3537Ca44114769eB5Cf6F407bc3a3BA5660E7D7", + "decapacitor": "0xbaf302E871D11b1466Bec73388eBc3bf77162ff7", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "43114": { + "FAST": { + "capacitor": "0xc109aFE23313981b5fd87DFF7eE49F16e38257cf", + "decapacitor": "0x80387881ae4b2Ce1B535610773E7Ae120c5d0Cd2", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x3343Ca420F7073cB7D43d3b9FBFDDE298e82eCbB", + "decapacitor": "0xbEFae176f1307Ec25c92e210b6169469A052D9dC", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "57073": { + "FAST": { + "capacitor": "0xc0E39fBa6FB3340f728cCbc062E197bA6A4aF962", + "decapacitor": "0x06551B2f9D8029B42e696e6BaAbfb08ebE5069DD", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x1B4db21cdaD6CEa16F1058AeC3b7b83eFD1048bC", + "decapacitor": "0xFA57Fd8428785A21D15fbA25757F22512e488258", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "59144": { + "FAST": { + "capacitor": "0x384799491dFD441108ad2bCD893510F6598e969E", + "decapacitor": "0x4762532eBc0153e73df661f63E72F358757b69c4", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x5F4209BA9C1297cCA50a743663C41fB1785d2A0e", + "decapacitor": "0xE9f63B38597E1dD68c819c2203660418858A3bcd", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "80094": { + "FAST": { + "capacitor": "0x241D164FcE4E6FeFE27060b2f862229774A918D0", + "decapacitor": "0xf56cBdE757545C3829e6615059c14Be5Db8B7302", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0xD51F5207F32791A9502a12f29e9695c50B97847a", + "decapacitor": "0xA815c8F551532328c93022b2455Bee4C18804fF4", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "81457": { + "FAST": { + "capacitor": "0x6FB6236c170ed1B61E4A94924Cc7c7A459D42733", + "decapacitor": "0x4ad7732696d1B075473e01E408F123a2fbD3c2BC", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x30B62a9Fc71De82A1F73cf604d7eC6a2d58aA391", + "decapacitor": "0x497a788d884d923C9EF815Dc4536BC4998D0f0dC", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "98866": { + "FAST": { + "capacitor": "0x2F0366A3510200B5df4B0383635914ba71174525", + "decapacitor": "0xC46c71B0D8E2B44cb6EDe0F0C7B2B8D0cF8B17db", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0xccFed2B91d5c5FaE98C8389ac4A2C732E6C7A940", + "decapacitor": "0x4f3505a07D6504A57d4fC0dA9C792c245f6AfdeE", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "534352": { + "FAST": { + "capacitor": "0x591c1A16021A911468A77157112297dFcccA9793", + "decapacitor": "0x2F81c23436D5f4e7aFeD441B70b859939a3F4d57", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x4CC910f88580E45C52a9fDc80eD6Bc8509aE9056", + "decapacitor": "0xf319CCFF6926Db102Ed5D629e11e41ECf8b159Ca", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "747474": { + "FAST": { + "capacitor": "0x12d3Ea5dB847E2d08c59873523BE4A0Df4f1D036", + "decapacitor": "0x46d63dDA5B8A7074935f0CFD0311A3544Bf65C64", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0xBce7232a37e7d9cA9482556C73FdB77B2BD962e3", + "decapacitor": "0xF5C28ab1424F380810939121928b634E057258d4", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + }, + "5064014": { + "FAST": { + "capacitor": "0xb4161317B8A76fAca3B21431e9329948Cab95C3D", + "decapacitor": "0x17d801C491Cc3F6B1b5340b7d277Da75C07F4993", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + }, + "OPTIMISTIC": { + "capacitor": "0x677c2841b46CB5B6EfC521D9423F3976Eaae19Aa", + "decapacitor": "0x8E5471FdC203027309AA9fEFc03f4151FD9ed033", + "switchboard": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82" + } + } + } + }, + "5000": { + "SignatureVerifier": "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", + "Hasher": "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", + "CapacitorFactory": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", + "Socket": "0x565810cbfa3Cf1390963E5aFa2fB953795686339", + "ExecutionManager": "0xc317144DE60E6bC9455363bB09852C00bd14CD61", + "TransmitManager": "0xbDf50eAe568ECef74796ed6022a0d453e8432410", + "FastSwitchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d", + "OptimisticSwitchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65", + "SocketBatcher": "0xf200705d32fD1ED4A840610B756F12570c0ddE39", + "Counter": "0x1141efbA7aDed9eECAa27C785d9bd50C51E54c88", + "startBlock": 47547470, + "integrations": { + "1": { + "FAST": { + "capacitor": "0xB1ecD6D2d1f52D5Abed57431508733d51BB4Cd6B", + "decapacitor": "0x67e8D09fE657332e312e0d649500c09E8A8c3A2C", + "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + }, + "OPTIMISTIC": { + "capacitor": "0x924b840ea9Cb97Aa103B6B37b5815676a0fA6076", + "decapacitor": "0x4648bA0745A1333eEF1e6790815c2e8d327C0686", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + } + }, + "10": { + "FAST": { + "capacitor": "0x8590b1DDb6a4A06145bF008e8e708A81f9fb53e6", + "decapacitor": "0x8DFD1D3b6EAF93dDf11AeC821a060e1bc4974CDf", + "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + }, + "OPTIMISTIC": { + "capacitor": "0xA44a50cdb7b9B117f793395dC17bC52847F607f9", + "decapacitor": "0xb1ED25951868138A0bd0eb48ea8b9969B9406D9D", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + } + }, + "56": { + "FAST": { + "capacitor": "0xa9D32248962b8675438d488bbb28974081Fd4779", + "decapacitor": "0x298a5bef4052B15E32d66D27Bfe7Fd3677f1aEf1", + "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + }, + "OPTIMISTIC": { + "capacitor": "0x633a828F7EbB3c30bd0fcD80E127d23e45b9CABb", + "decapacitor": "0x1CD4bc16F197FBe5AF493066cdea8095A1Fc46D1", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + } + }, + "100": { + "FAST": { + "capacitor": "0x8f13cFB9F90703318F03B90e1D53891e51Ba4cbE", + "decapacitor": "0x8016673CB8A69886935533331183E5040f503C5D", + "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + }, + "OPTIMISTIC": { + "capacitor": "0xD565E419f066fF70685a57160a673D614E2f885e", + "decapacitor": "0x85296450abCDb2D50DBfd6Dcb198ABC2A738497E", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + } + }, + "130": { + "FAST": { + "capacitor": "0x61A55cf63Bd9510Cc19dFD02414b1130c58B6000", + "decapacitor": "0x090089855191BF5b54B111B021093612bBC03F18", + "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" }, "OPTIMISTIC": { "capacitor": "0xA6864c3C17e7187a46Bf0e2a8D44F6880FE2Fb2f", @@ -7483,6 +8178,18 @@ "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" } }, + "4326": { + "FAST": { + "capacitor": "0x246eF1A5FdeA658ce15EE5bd98Eb7C18e69526E3", + "decapacitor": "0x948fDAAD2B850064F6433De7450F86E138D831BB", + "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + }, + "OPTIMISTIC": { + "capacitor": "0xcd2078358D979fD766Fbdf0C53B22825267847B9", + "decapacitor": "0xeb12bc673dBC66CF35327319d9E3aFBadc2E7b6D", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + } + }, "8333": { "FAST": { "capacitor": "0x92aeEDB8b4E3E51026788E5F6b4C9774F5898D9D", @@ -7650,6 +8357,18 @@ "decapacitor": "0x593c23C8816f0deE385DB391E7678e9d6a31C928", "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" } + }, + "5064014": { + "FAST": { + "capacitor": "0xBE8C1713419730D198005d55B2A9E40aAB670e79", + "decapacitor": "0x3eE0d8A8Ec0742D0f2fFbF5042d77B0c4e7C3414", + "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + }, + "OPTIMISTIC": { + "capacitor": "0xaf9E064f63819b6DddeBAdc5c7F643E9A8b75948", + "decapacitor": "0x4990E9D9b4e56c42C65cf36212E0701fE87b0a10", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + } } }, "SocketSimulator": "0xb07B3CfB1F0AaB839cbf84D2FB9442DebDDbDd2a", @@ -7875,1211 +8594,912 @@ "SocketSafeProxy": "0x00d8046365e0E3B9F6506903a39e17e6ecA8d18A", "MultiSigWrapper": "0xAe96e8Bd18D1652154306B55b56c20aE545C054b" }, - "8333": { - "SafeL2": "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", - "SafeProxyFactory": "0x1F6bc87f3309B5D31Eb0BdaBE3ED7d3110d3B9c3", - "SocketSafeProxy": "0x73fd754e8a2E6b01A8cAF851c9ee3e3298405005", - "MultiSigWrapper": "0xbe7241e9D11EC2D1Ac86CE217c4A37b7aD1701cE", - "SignatureVerifier": "0x1CAdCd88fC148D3966eDe75D029937C886f66009", - "Hasher": "0x9B8c323468AEC7A7Cb041CeD48F92559bFF33705", - "CapacitorFactory": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b", - "Socket": "0x0CC93650bF4D98237628DACf87f94E443956D8dF", - "ExecutionManagerDF": "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", - "TransmitManager": "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", - "FastSwitchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", - "OptimisticSwitchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8", - "SocketBatcher": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E", - "Counter": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472", - "SocketSimulator": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", - "SimulatorUtils": "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", - "SwitchboardSimulator": "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", - "CapacitorSimulator": "0x8222e1a96Af24b9E48586ec0757552f6F639392d", - "startBlock": 16801499, + "8453": { + "SignatureVerifier": "0xA7f7e4fE8E4cdDCD9969Bd3fbcFF67000CD7DE47", + "Hasher": "0xAC313d7491910516E06FBfC2A0b5BB49bb072D91", + "CapacitorFactory": "0xDC23842d47b80D88A549777eB1F33C2F47f253D0", + "Socket": "0x12E6e58864cE4402cF2B4B8a8E9c75eAD7280156", + "ExecutionManager": "0x6086c6451217241D8e42e134733A542095E13c47", + "TransmitManager": "0xb8c32878c69F4cC4705D0Bd99bca082C4eEFd76D", + "FastSwitchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8", + "OptimisticSwitchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34", + "SocketBatcher": "0x43F3dD32d23B551ECBbB7c390368b960d168D063", + "startBlock": 9266919, "integrations": { "1": { "FAST": { - "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", - "decapacitor": "0xaA8d34d307AE231e333FAc71232d5b22313eE017", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x769539bE1b533841acA8436078ada53d6E64035f", + "decapacitor": "0x413248783F1B66703a0248d455EE790436FAdcA9", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xCbf0A410f971ECea2D823d376a5150B56F7C5E5d", - "decapacitor": "0xAF63DD7f5CDf5527daa5e8F8334F96a0482Cb84f", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x34543E63E38EEc5C9818D9234d08A4EEFF18bD2D", + "decapacitor": "0x7aCF234A02676E59Df1A7A35069bbcab686D127C", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, "10": { "FAST": { - "capacitor": "0x601F26a7BB371077a6c5cc1E4EB2C1e5cE54427d", - "decapacitor": "0xeE6c260cDbB088FE9a9B89b9aa24b8914Bb38412", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xCcdc860cB233dB57Af21665dE1A46911d41dB717", + "decapacitor": "0x9570F603ab0424adCa0Cb56e79363DDf90054733", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xeb5781A9ae105ED9d12F0D57A140ab7F2a53c553", - "decapacitor": "0x0d6B5d3B56DE7f2E7Fe0fF535A965EAB04C5284C", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x06c8f503684459B4f8b7F0875cfed44879Be1Bbc", + "decapacitor": "0xd3FB87591Cbf521907D554CdD09d6c51d30aBf44", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, "56": { "FAST": { - "capacitor": "0x174a2dE9Ef92Ede17325815A22a1c0f4566DDc39", - "decapacitor": "0xCBec8c4c7B1B6d0620b22275F38FbB7626078C01", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x781770faf0F065d61e21013702a5E8Aa7c6B8538", + "decapacitor": "0x31Ee32e7AEB216CF7075263f649C42EEee921FF7", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xc042FE2FC3bBe545F50aa0181C150d105fD501A8", - "decapacitor": "0x7A4DAB41460148E8AF3ccB1D1859540225015B94", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xD706CfacDc505f08C5B1515193920975026bfD0C", + "decapacitor": "0xc13F75e6c18dB7cB3cfc101784260a3f5CeBDe14", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, "100": { "FAST": { - "capacitor": "0x6d0a43b0e75ea6c71a3a252d0ABcB6C462085F44", - "decapacitor": "0x6F29A0643DE827068E930Eea4D32eb68Ba037334", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xC102662CCA94f05138DD06acde5A2b8a94dF83b2", + "decapacitor": "0x3f9e360b941fc19576Fa5a9022AE007E3807E616", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x7137b32176d2f2ab82b60bAfE5e6facF242e1d37", - "decapacitor": "0x6aEFBAD0dcD7F7d1417F09a574cD1d99C52F4fF4", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x73065a524592473cd02316b1F66B3cB97190c5d1", + "decapacitor": "0xA4DE8C4F55870a45E8d52CDfe516E509dC035bB8", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, "130": { "FAST": { - "capacitor": "0x1d73757456B92902E4EbC0aD9bA6ABB217C34d66", - "decapacitor": "0x44E7DfF81B45aAb0c717bF58d24557Cf323E444b", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xBf8A52a0a7578E8070359611F22410c515f296B1", + "decapacitor": "0x835fcc4373D8FA24e6Ed2B6A390Bf759c5eb9B57", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x0bBcDFeb2a0cF44dFfe5015Cf4634C0A69eD629F", - "decapacitor": "0xB6331aA372D8Fd4a95BC081Ee0c6191f57118851", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xCE1c8F79AeE8E46a7a824b475DD6D1CADe77a214", + "decapacitor": "0xb06A4768d68e78c18043439cdE6F44AF6409F449", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, "137": { "FAST": { - "capacitor": "0x4A5B309781c58B7EC43e18F5b39d62DC5034849b", - "decapacitor": "0x25BBC82e742E75B30BD1A846d38e48392A358216", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x8470258083De192083c4EcCea4BfE80455C7f6c5", + "decapacitor": "0xB270eCf507c618CCc72cC1b4F99e3970168aCE93", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xAEA8f6A9747B4a959164a1A5D4807fF20a74B111", - "decapacitor": "0x546fEc1bB676637A3620e77A984B186673724EB6", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xBC8C72C33B9d4523a4381B3B1a5D9292ad98951E", + "decapacitor": "0xF6CD575DdfDc0c13136A0A2DEAd87FCA1cFe9CA8", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, "143": { "FAST": { - "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", - "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x415f295467A255a03A933844B70444ED1bb980B4", + "decapacitor": "0x50C59a31D7573F355B48d535364C97bB3B16eeD4", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", - "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x5fD6B81dE8aeb76084f239d2959F6f5E022aF90d", + "decapacitor": "0x1843feC422152980f547B10C51be64BB02BeaCAF", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, "146": { "FAST": { - "capacitor": "0x3B7eC86684502091C7400f6977845fD1bA39b0aA", - "decapacitor": "0xBce897B1711Fe50a325D0776E24326D8d2Ec684E", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xBCBEC262540031BBcf0c7b11006D4588fFd8f0e7", + "decapacitor": "0x8A9C0087a4F53748cDfce2a86ccb924E11E148D8", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x9f8851bf0618d4504aB47DBC0Ae30942bcbF2c00", - "decapacitor": "0x2372a4AB177B4f77564194f3e81E1948d4B2FA2f", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x7ED2270cEBedce31104A1F52117A31eF84f6D041", + "decapacitor": "0x8A004e80bF3ca5C8Cf145bFE8f07E56Ec8E11a3c", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "480": { + "169": { "FAST": { - "capacitor": "0x1959d29e1a271f901625452a15ae7BaCDbFf8C9e", - "decapacitor": "0xF54B80Abfe41D9EED7E985E4e784182d499C19B6", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x57DE7DaFd70f30DeB314b8353AF901596E1f0745", + "decapacitor": "0x807a69D0E560Fa8E6d35999941Afb8FC6d823Cc1", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xDEFC12e2750d308Cc740c14Ce9a0b581a42Cc06d", - "decapacitor": "0xD5115C371dC679Bc42384F1d4fD98fa0e46A8309", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x0998E8B2442b23fbd3773b10166a652a9223260e", + "decapacitor": "0x1a9A6EdBF532511a1fDeB16BC10612837b151459", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "999": { + "204": { "FAST": { - "capacitor": "0x5aa161e95A466340d5c8759b1A5102108Ede8153", - "decapacitor": "0xC86D0A59EB130de1E3f0a7a08Ee4993a433CA72E", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x4387D59D1b34409B5fEcB4E7646f472198022C13", + "decapacitor": "0x4eC54d2e41d776Ece1021207cc4Db5AC640a767D", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xfAA175B66ED19F8B7dfa01e3990CD8122C664477", - "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x5a8721Cc2B3B67C833Cf13D788D7628D533E1fc6", + "decapacitor": "0x688A10d36C4e0c49E4edBF6A446875Dab4827c02", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "1101": { + "324": { "FAST": { - "capacitor": "0xE6c7C1343fE0fAF82B0f8552eb2eC0904A212d08", - "decapacitor": "0xE64389122C100a750910907bC284Fca1CE28b696", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xEF67930330007BdA43C6667B6Ac4a9958d298c82", + "decapacitor": "0xF26AdD9ba6C062f39f49BC1d2F0a57F9B6373F71", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xE1814a211c1799dA575aaE5F923ab5C5668AD937", - "decapacitor": "0x73f15Be3EF5fa5cbC3a24ABc42b0E0d370E239E0", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x48e153de5F1274d110a8E4515750AE3008D304F3", + "decapacitor": "0x62118979aAa2c7D6b41493E2190C3AA493E681bC", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "1329": { + "404": { "FAST": { - "capacitor": "0xBfFDb040a1Ae4a317f5733D98f8E6bDF629f9200", - "decapacitor": "0xbf71851B6De96E614A1ff0Fb8d3d28fdc9fe0f27", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xd3a9250646CDC35C850Ef8865dB5663CC358b168", + "decapacitor": "0xc2C21EEC5Bf711f494ec6F0e449372e2d97f6251", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x67dc2f9bc1AB20B2D6f684ED73F031c11f5860f9", - "decapacitor": "0x2AF0D774b661E2a262442e4270e777D37e87d762", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xf3Dac1610295407Ef0FC70d34b627674eB221e8B", + "decapacitor": "0xc71B1Fdba532446309187d51D32F05DB4a9B0777", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "1868": { + "480": { "FAST": { - "capacitor": "0x197fAcB10090B503E58f32a983BB7a76d2156d09", - "decapacitor": "0x9F4225B10849543946daa9d85ADB403b78DFE38e", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x86e973bc7aBD0217020Fa625EFBe2Db075A47007", + "decapacitor": "0x59869823A3Db70D6c5C8de57589702aa7bf11989", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x6c39fB4b3884dfAE8a1A2f3082ABCB30F9242471", - "decapacitor": "0x75BBf0bDC8C2e69fa40FaEF1703994f81fecd8F4", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x2b1DC8BE9B00FFC1a906eeb5f6490281A21Ce5FF", + "decapacitor": "0xf172f4018eBa0774fB6b04C257F7dF28428D195c", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "1923": { + "957": { "FAST": { - "capacitor": "0xeAFAead3dB42e1d2fF04f642eC6A0839CDF4C34f", - "decapacitor": "0x155D90a2e1fB7Fb282eAe6fF2DeC46F5fadD35E0", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x41C46a62c6F774F2Ffd53F08C3C8707f11B0e098", + "decapacitor": "0xE73D88a9004f23532aEd53455F7895A2D63a616d", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x3Be9e471f8147374ad9176BD857Af0Fc308b4FFF", - "decapacitor": "0x31704c770f814978a16f5A77abA6DD0549aC617E", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x2e61336C59340919d331C862f8226C24A7D805d5", + "decapacitor": "0xc7e13D19Fb350161CEC734DF695A747cEfd68E73", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "5000": { + "999": { "FAST": { - "capacitor": "0x5fE86Da2b8680c0341fB8b97449C573258359CF7", - "decapacitor": "0xae77D7eA82a7D2deBfa603DfEA22A3973a505e18", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x1D1da70CCFF7BaAA162c4E491dE00cac4447BDD0", + "decapacitor": "0xCCa5371914B6796b7eB6e3Cbd8C3d455C8f66633", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x6AfFff93C9B7BA03492c0cdc3067Fe52F00139de", - "decapacitor": "0xE1Ea5091D39F4F21C9a79e4ef29F7E74Da637Ad1", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xcE8a3A2632409C90cB54c64271E6D975740a185e", + "decapacitor": "0x93087D8c069A9929D3E29ab649db3241B3c4503e", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "8453": { + "1024": { "FAST": { - "capacitor": "0xf9B3084AEdD848aCc7Ff1efB7b98a04E059CA2f7", - "decapacitor": "0x4cb2c95C9d5daA1548CD7123D90fe6f2c1808162", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x217c387cf50Eb2CCCe9f6F1eb474a0678EC65142", + "decapacitor": "0xD5300C7Fa86Cc2d27838636eAF27301fE0e8bA8d", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x979463f21b2aFF5B615722785D7201b3890b9F3f", - "decapacitor": "0x19710c0B9166F71b246526541eAe25117b6Ae264", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x4d461daB6D6AB35Ce326EbCFef47Db5A33DB963B", + "decapacitor": "0x2cF2a744093c514E2488D2c3C7DEf303D3B10186", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "9745": { + "1101": { "FAST": { - "capacitor": "0x98df574c1ED3802b4Ee9C1B0d9BF35fC79df0d65", - "decapacitor": "0x2F8AebBeB7Dc474498A431233bD35eD9A360507f", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x434980fF616B66a96Ebce21b3a6218D1DEEB371C", + "decapacitor": "0xEad0e6BA53a3034244cbD06C09040ebE23157C08", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xC4c4022d7Bd5401C0C182A791Fc090f6a5B0F19E", - "decapacitor": "0xb2e4DC9Bf4e8299BcfC3BadeF33fcB6AAC4086bc", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xF115f1b2fACdFACcDd1F2DBd234e01CcaeEbF529", + "decapacitor": "0x5837Ca010dD98f4C0afb993d6EAa65045c0C6cea", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "34443": { + "1329": { "FAST": { - "capacitor": "0x7CAfa251d16b68dF44511915C50855226A071044", - "decapacitor": "0xddf72Bfca9Fb79ded93B819fE515D4f6ea367596", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x540069dd012BEf2Db9517D914C8a397e76d4c1e7", + "decapacitor": "0xe77548eE11963139fAEBD9f1056F84236d454220", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x8fE14d7Ff9472742090cc91B3E653768e3C89303", - "decapacitor": "0x54589d534958C2186E41028ed23f460965576148", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xCDeDB9E94885BB529E02ECF61975486cCF87d41F", + "decapacitor": "0x74f395cCEaa2974F544387eec7ab0aC3481c1dd2", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "42161": { + "1868": { "FAST": { - "capacitor": "0xd95726ec4ECa6D7988EAf9921b89BF96aeD2F1A4", - "decapacitor": "0x6F894b994bCC333e055Cd0D2205e5a4eA7A41dB6", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xA11a34E9Ef860B93AD66c45ED6db57602aF94fc6", + "decapacitor": "0xEe82670b797Fcd056977187ED70D2fE6a8c3230C", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xF7C9891855F5eFaDc13eAe5280216a5aa893C719", - "decapacitor": "0xefcb1Ea01C4d5aA7FdeE866e1A724990ae0Ad624", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xA4240F570eD5e883C2a94328e6719390d00b4EB0", + "decapacitor": "0xf33dE17dfA8Bbe64F4fEb63Dc2Ab36cde3cd1967", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "43114": { + "1923": { "FAST": { - "capacitor": "0x948C2161348d2167342aF93FDe323D93De6DA162", - "decapacitor": "0x376D69B875d8e9e72e90f3582c64417968b5C4A7", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x68CF72c8996E6Cfc56B7014A2147B1cb752863fB", + "decapacitor": "0xc3e2e3C81776024AE9e0A0f5D353864E0a7A0104", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xBeD62207c9108D3f19d467e17D80891613d4cc20", - "decapacitor": "0xa38D25185Aa33c6A71adbEdc8C94A2AF97041432", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xAE9d881536e4F5c38938860C0aE76995643b1a80", + "decapacitor": "0x7A27bd25e79C2D907A90Ef2A39866d873c765f37", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "57073": { + "2999": { "FAST": { - "capacitor": "0xD19b9C9e80dD65BD7eB9600Bd194f14eE10de750", - "decapacitor": "0x38e2F19a25f135dAaFB4636613a686Ec3702BD54", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xabCa240De0eA9a02028Fd7eE2585c94BeCF229aE", + "decapacitor": "0x16a381AB5be35Cc9F8bD5507dA121B4B2Dc5923C", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xc51a66F8AE8e5e845e34063C68C21D79f5e21C88", - "decapacitor": "0x2E87cdb436F832E90409fe317B587b536D169d64", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xb537a7d6EF431229282cc9aB85EB1c7dA22E8DC2", + "decapacitor": "0x51C039162e9569fa487E1486D0a66Fe858857b34", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "59144": { + "4326": { "FAST": { - "capacitor": "0x6a42B6f626252385857a7de2a439aCE07F5438c4", - "decapacitor": "0xEe8a739e7850c3ea73bC91ba311B228Ec02567dF", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x5294ca4F52a366156f4adC277620706f6B876598", + "decapacitor": "0xA3FA62BB1F5d09587e3da21F991c181FD8C740f4", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x49b054e5F3cA37Cd1535f2611a5F8fF6086CE593", - "decapacitor": "0x8Dc7bffB70D61F693aF3bBCc45b2DA546efB4509", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x6dB76982930769f8ae07d7455F0bddF50263848d", + "decapacitor": "0x40de5fD088b2b0b95233EE0f222a75007A45f52F", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "80094": { + "5000": { "FAST": { - "capacitor": "0x7bA204d1e2bC0A09089FD3B158912b32C944F99c", - "decapacitor": "0x3Ed82677994b2A5140192F4401FaE03da9bBfE5F", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x4DDE7e35Baf49438859761542FaE5a0cF9720e0C", + "decapacitor": "0x01Ec2e6e9b405D95f40Fe6FeDB8158a08aefeab0", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xAe74F5C2C155c8D576794011d4D3e953ED27315c", - "decapacitor": "0x7C0b3940A14Dd8849C576c5e7aa613509001818D", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x21E8965674996bEe74DB8B3c618a2f4821cE6c84", + "decapacitor": "0xF44a29dEcEf5b59CD54Caf3A93878ea85387FA48", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "81457": { + "7887": { "FAST": { - "capacitor": "0xbeE93bE6ab2244Bdb82862C29949516cB4CC7Bc0", - "decapacitor": "0x37F5Ee57d3b74c8e5Fda258e2A7142C8f3b78A88", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x297723D9cAC7F7a2C75c04bc30Be6614fC1ac5d1", + "decapacitor": "0xc923faf035AFB59Fe988b8E28fB9B7c753E3c758", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xb39F6890b95FE263392b71E6B3285a046507CA8A", - "decapacitor": "0x48F95E10F71a8aA7F43F094b7CB5515bC026aC49", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x6F1f64102243D5F179F412FB432BED03Abe19722", + "decapacitor": "0x3C53618A3FFB7216F41D94d5Ea466Ec63c7993ff", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "98866": { + "8008": { "FAST": { - "capacitor": "0xC891AD2d60636e7c24E89b41eF98a2ecb58A672C", - "decapacitor": "0xfD2E08484B0A74E9343feC745D7045A6a270aAD2", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x7307F9970b049606c6d1cC6Fa4dBe829E06eEba0", + "decapacitor": "0xEBDD84931EFf4D572ceFFa5ca24ab57eE13ef987", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x8B86E174243bcCef59b8762e80d152202ecaEe57", - "decapacitor": "0xbb076dA3Bf24aBE880e18BB4B96CAB27eF69bF3f", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0x61a924e4F8C706c71139A8986e6289210AaFD07d", + "decapacitor": "0x4d85A957fc70bC8134e507313B42cf370aDF1364", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "534352": { + "8333": { "FAST": { - "capacitor": "0x4B751b3D691653a3131dd3b71238116C66Dc9b9b", - "decapacitor": "0x92b2D6781BF1Ab65a64EE8Ec1d043a3777f2bFB7", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0xD592D58A227D6ed2D1DC1f12a0c762B10d4450DF", + "decapacitor": "0x4a3994CbF437Ce65B08EBe9834A3CC2fd35B035f", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xde809627100191f5032358fE0B4Fa845Bac48803", - "decapacitor": "0xfAA39f051a7B0a8eeaD7eF17483eA320AD5aCA24", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xf21609c7F91ca98A28cD2567DE1d2F6B6c68344c", + "decapacitor": "0x3C9bd391c67a849Fdc977418ec9F1140606D7390", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "747474": { + "9745": { "FAST": { - "capacitor": "0x84aCA8345264138022AdC32f1888918277397673", - "decapacitor": "0x08a87F2508A7FF157a3ce9946C16a91230001df7", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + "capacitor": "0x56518B850b72e80C918A3461Cdf3cDD9093080c4", + "decapacitor": "0xa72dc6F040E55CFb75d585D3Bb12B6eB0c8f9986", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xa53031113acD6647A1604CA69C6ce875cc44270f", - "decapacitor": "0x24B1AAba68c55B6C7E98EdC6dce61fADB920bCeb", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + "capacitor": "0xf4568377fEE19749Ba487d35f9194bbfbF12751B", + "decapacitor": "0xed0F0498bE99474D2a239Dbb3D45803a872c5B88", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } - } - } - }, - "8453": { - "SignatureVerifier": "0xA7f7e4fE8E4cdDCD9969Bd3fbcFF67000CD7DE47", - "Hasher": "0xAC313d7491910516E06FBfC2A0b5BB49bb072D91", - "CapacitorFactory": "0xDC23842d47b80D88A549777eB1F33C2F47f253D0", - "Socket": "0x12E6e58864cE4402cF2B4B8a8E9c75eAD7280156", - "ExecutionManager": "0x6086c6451217241D8e42e134733A542095E13c47", - "TransmitManager": "0xb8c32878c69F4cC4705D0Bd99bca082C4eEFd76D", - "FastSwitchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8", - "OptimisticSwitchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34", - "SocketBatcher": "0x43F3dD32d23B551ECBbB7c390368b960d168D063", - "startBlock": 9266919, - "integrations": { - "1": { + }, + "34443": { "FAST": { - "capacitor": "0x769539bE1b533841acA8436078ada53d6E64035f", - "decapacitor": "0x413248783F1B66703a0248d455EE790436FAdcA9", + "capacitor": "0x279824278c1C78662A4BF9fb25EeA954BBF74d97", + "decapacitor": "0x0603c547e428b2aA4BdBcfD540d205D8Db8B5dc9", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x34543E63E38EEc5C9818D9234d08A4EEFF18bD2D", - "decapacitor": "0x7aCF234A02676E59Df1A7A35069bbcab686D127C", + "capacitor": "0xd93BF81B8B54860E94e5b26E786F428c0f78A434", + "decapacitor": "0xfF94F698B1EC0966bCd5F90487Fbd5D9410B31e1", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "10": { + "42161": { "FAST": { - "capacitor": "0xCcdc860cB233dB57Af21665dE1A46911d41dB717", - "decapacitor": "0x9570F603ab0424adCa0Cb56e79363DDf90054733", + "capacitor": "0x1a50D1e4f3bf1F9D1E2752B0D1cE0Cd2F99aDb3b", + "decapacitor": "0x5F030Ed56CA8742dB95d599caAc8dEbBE70B2a07", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x06c8f503684459B4f8b7F0875cfed44879Be1Bbc", - "decapacitor": "0xd3FB87591Cbf521907D554CdD09d6c51d30aBf44", + "capacitor": "0x6e7dAd288966Afa716AfCa2356dc699b3bF621a1", + "decapacitor": "0x24B9be73D1fC7131C00B5f1eDa39722c62C49588", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "56": { + "43114": { "FAST": { - "capacitor": "0x781770faf0F065d61e21013702a5E8Aa7c6B8538", - "decapacitor": "0x31Ee32e7AEB216CF7075263f649C42EEee921FF7", + "capacitor": "0x05452E6DAda0e7745AbCb22157Ff7eff149E9fe1", + "decapacitor": "0xAb6E972B19057708fCf289b663d8D06AD7afd3b7", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xD706CfacDc505f08C5B1515193920975026bfD0C", - "decapacitor": "0xc13F75e6c18dB7cB3cfc101784260a3f5CeBDe14", + "capacitor": "0xf7d4FbF642bEEd498D75209809d22eC62590B751", + "decapacitor": "0x6De3c837e96F2E6e5775C5b41Cb0B034725c83Cd", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "100": { + "57073": { "FAST": { - "capacitor": "0xC102662CCA94f05138DD06acde5A2b8a94dF83b2", - "decapacitor": "0x3f9e360b941fc19576Fa5a9022AE007E3807E616", + "capacitor": "0xA836e16174fBC575C98726B6212589aF0226c4d2", + "decapacitor": "0x633acbED4dA21A5ba8C0b8a433d7c35904076D05", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x73065a524592473cd02316b1F66B3cB97190c5d1", - "decapacitor": "0xA4DE8C4F55870a45E8d52CDfe516E509dC035bB8", + "capacitor": "0xE5C07637BeFE67DfeB821A4D872C32937D56D197", + "decapacitor": "0xa9b8c94b5EB2e8Cfa04164b3bD1a4ABc5C31470F", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "130": { + "59144": { "FAST": { - "capacitor": "0xBf8A52a0a7578E8070359611F22410c515f296B1", - "decapacitor": "0x835fcc4373D8FA24e6Ed2B6A390Bf759c5eb9B57", + "capacitor": "0x24C3c9F85562e450cE0C70528484d7bBE1090688", + "decapacitor": "0x877E2D38ecf05514D62EDDB67f20Da4Ddf3838fe", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xCE1c8F79AeE8E46a7a824b475DD6D1CADe77a214", - "decapacitor": "0xb06A4768d68e78c18043439cdE6F44AF6409F449", + "capacitor": "0xC457207054acaA1dc956EA92F8180769C823444C", + "decapacitor": "0x6AcC0aA5Fc856ccA7479406497c886a881ADf998", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "137": { + "63157": { "FAST": { - "capacitor": "0x8470258083De192083c4EcCea4BfE80455C7f6c5", - "decapacitor": "0xB270eCf507c618CCc72cC1b4F99e3970168aCE93", + "capacitor": "0x5d05De6CB37167d344a53A312a05E7DC40BBB1Ae", + "decapacitor": "0xB10405BA300d668abe191b35b0E82d64a87e333A", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xBC8C72C33B9d4523a4381B3B1a5D9292ad98951E", - "decapacitor": "0xF6CD575DdfDc0c13136A0A2DEAd87FCA1cFe9CA8", + "capacitor": "0xB866fC26F7d1bcD5f97D1F7B8fE2E876E1846B85", + "decapacitor": "0x56C7EDB86523f837Fd4A2049051BaBEf186F3873", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "143": { + "80094": { "FAST": { - "capacitor": "0x415f295467A255a03A933844B70444ED1bb980B4", - "decapacitor": "0x50C59a31D7573F355B48d535364C97bB3B16eeD4", + "capacitor": "0xa65f338cDA78604D0f080C2c6AeEB1e6cC564E63", + "decapacitor": "0xfbbDD2384a39824Df437F1B04C7871F6e4B2C931", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x5fD6B81dE8aeb76084f239d2959F6f5E022aF90d", - "decapacitor": "0x1843feC422152980f547B10C51be64BB02BeaCAF", + "capacitor": "0xc89E2fcfe208c5a9C7d6720E7c55B54eBf3183c4", + "decapacitor": "0xaAd73b7Afac286128451c26BcFf983b7Fe9902D5", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "146": { + "81457": { "FAST": { - "capacitor": "0xBCBEC262540031BBcf0c7b11006D4588fFd8f0e7", - "decapacitor": "0x8A9C0087a4F53748cDfce2a86ccb924E11E148D8", + "capacitor": "0xaAe7643D0C9AAD0a3A2Ac8932cf7c0d260600B79", + "decapacitor": "0xB792AeD8F981B738dE443d8201B024684876a8C9", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x7ED2270cEBedce31104A1F52117A31eF84f6D041", - "decapacitor": "0x8A004e80bF3ca5C8Cf145bFE8f07E56Ec8E11a3c", + "capacitor": "0xC42Fbf373519DA257F2c9193c20CC9CC598Bed5E", + "decapacitor": "0xB8a4bC5C2081ECE114335A6e741f8b182f6e83b2", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "169": { + "98866": { "FAST": { - "capacitor": "0x57DE7DaFd70f30DeB314b8353AF901596E1f0745", - "decapacitor": "0x807a69D0E560Fa8E6d35999941Afb8FC6d823Cc1", + "capacitor": "0xD1556Bf70415F4371b43bE80Af93241af2D53311", + "decapacitor": "0xDE7D7588Cabd29d18a6FD8Eb07E5A649e6367109", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x0998E8B2442b23fbd3773b10166a652a9223260e", - "decapacitor": "0x1a9A6EdBF532511a1fDeB16BC10612837b151459", + "capacitor": "0xe59fa293915b25D0071f31393b8FE09C93aF8c4d", + "decapacitor": "0x05902ad62DA119ad05267Fe5D3330fc08c5A32E9", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "204": { + "534352": { "FAST": { - "capacitor": "0x4387D59D1b34409B5fEcB4E7646f472198022C13", - "decapacitor": "0x4eC54d2e41d776Ece1021207cc4Db5AC640a767D", + "capacitor": "0x815573587F9547FdCbeC50c3df5ec5B03D5f26ec", + "decapacitor": "0x8f76d5902c855BC38d2C2B2223FD08d9Bd6b2cF8", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x5a8721Cc2B3B67C833Cf13D788D7628D533E1fc6", - "decapacitor": "0x688A10d36C4e0c49E4edBF6A446875Dab4827c02", + "capacitor": "0xBd7D15d52aBDD9E8fb2775D26bCBd9982Ec3420B", + "decapacitor": "0xAFB9D21D18f69273a634c789c44461684fe617e8", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "324": { + "543210": { "FAST": { - "capacitor": "0xEF67930330007BdA43C6667B6Ac4a9958d298c82", - "decapacitor": "0xF26AdD9ba6C062f39f49BC1d2F0a57F9B6373F71", + "capacitor": "0x12c709309b27D5CDAB14574015FcFDABBAF17e07", + "decapacitor": "0xda56D43C54F110B278958932aAf09180E31a57A7", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x48e153de5F1274d110a8E4515750AE3008D304F3", - "decapacitor": "0x62118979aAa2c7D6b41493E2190C3AA493E681bC", + "capacitor": "0x73aCd14F087494a5C611166c07A125F35D2E1cf7", + "decapacitor": "0x3C76529A71b80E9029E2D3A0F9cC2a90F5018766", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "404": { + "747474": { "FAST": { - "capacitor": "0xd3a9250646CDC35C850Ef8865dB5663CC358b168", - "decapacitor": "0xc2C21EEC5Bf711f494ec6F0e449372e2d97f6251", + "capacitor": "0xa0308FA16018F3F5E84f74e431332e0297c717aB", + "decapacitor": "0x5273874Ea3cEa859f96b42cB4694e518fa91FCd5", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xf3Dac1610295407Ef0FC70d34b627674eB221e8B", - "decapacitor": "0xc71B1Fdba532446309187d51D32F05DB4a9B0777", + "capacitor": "0xc194E3C5F5C0B9499B2d23c12EE458086b21F279", + "decapacitor": "0x581505b45bAC2B5B6F7CE82e681E4E34121f3021", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "480": { + "777777": { "FAST": { - "capacitor": "0x86e973bc7aBD0217020Fa625EFBe2Db075A47007", - "decapacitor": "0x59869823A3Db70D6c5C8de57589702aa7bf11989", + "capacitor": "0x1B233fAc2f876dF6e998456eAb084f5782E1ffDC", + "decapacitor": "0xf59e2604776B09d6dB1FBB577c78C907D572aC45", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x2b1DC8BE9B00FFC1a906eeb5f6490281A21Ce5FF", - "decapacitor": "0xf172f4018eBa0774fB6b04C257F7dF28428D195c", + "capacitor": "0xA922122e52f7fFBc297a6A784405AEC11905C18C", + "decapacitor": "0xDd347e9c5Fc06bfb2db60e4797A53F86330f5487", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "957": { + "5064014": { "FAST": { - "capacitor": "0x41C46a62c6F774F2Ffd53F08C3C8707f11B0e098", - "decapacitor": "0xE73D88a9004f23532aEd53455F7895A2D63a616d", + "capacitor": "0x09420b46Ed877b296F46C3e671b1c3644500f0F1", + "decapacitor": "0xd87dCeE8aE9E794929d911c9A330b24c57007fA4", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0x2e61336C59340919d331C862f8226C24A7D805d5", - "decapacitor": "0xc7e13D19Fb350161CEC734DF695A747cEfd68E73", + "capacitor": "0x437e0351e6FD400c466E6eE3802F7F7781Ad8214", + "decapacitor": "0x62a08683B7f6A1A2F1f68870305FE94Ec6b49952", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, - "999": { + "1324967486": { "FAST": { - "capacitor": "0x1D1da70CCFF7BaAA162c4E491dE00cac4447BDD0", - "decapacitor": "0xCCa5371914B6796b7eB6e3Cbd8C3d455C8f66633", + "capacitor": "0x457eF7905fE7130606Bf652Df71780D461AA6CbB", + "decapacitor": "0x2541866a00aee94e77a46390E4daCaDf513d1481", "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" }, "OPTIMISTIC": { - "capacitor": "0xcE8a3A2632409C90cB54c64271E6D975740a185e", - "decapacitor": "0x93087D8c069A9929D3E29ab649db3241B3c4503e", + "capacitor": "0xB79Bd8BDF75823A5f858854f236Ac0f2359a3660", + "decapacitor": "0x93bC320B2eB4CF55Ceb7dfF6AD24f188D44020b3", "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } - }, - "1024": { + } + }, + "Counter": "0x4dC25D9d3ee57018998A50e912F40f6384947Ff5", + "SocketSimulator": "0xB8Ec1142422f4c726b1fAF99054a6F616aFB2Bd3", + "SimulatorUtils": "0x7eAE8a3F4186e3B5ABdD712093Bcd62115Eb7de2", + "SwitchboardSimulator": "0x57cA482C7dc749B2A26747Ed2915560c2401262F", + "CapacitorSimulator": "0xD9ef4524926F1Dd79C2C78Ef69084d24E60CDE59", + "ExecutionManagerDF": "0x31B111B2197971fC982B1A507024Cc0d0E83273C", + "SafeL2": "0xCe6A81cc7357584aa2760e1F24c73D1F29e64D60", + "SafeProxyFactory": "0x3304c48872C4b3B9b0CaC1aEcaB2aB8e8c8Aa9d1", + "SocketSafeProxy": "0x6E22E2F99d8965C0cFeB3dA41997a417CbfD7F1B", + "MultiSigWrapper": "0x38D1Ff7afc4C32bEe9d507652E4e5d639FF83AB9" + }, + "9745": { + "SafeL2": "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", + "SafeProxyFactory": "0x1F6bc87f3309B5D31Eb0BdaBE3ED7d3110d3B9c3", + "SocketSafeProxy": "0xE9470eAb959A1bd8db7bc0e83E4a8682CD1A4Ac6", + "MultiSigWrapper": "0xbe7241e9D11EC2D1Ac86CE217c4A37b7aD1701cE", + "SignatureVerifier": "0x1CAdCd88fC148D3966eDe75D029937C886f66009", + "Hasher": "0x9B8c323468AEC7A7Cb041CeD48F92559bFF33705", + "CapacitorFactory": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b", + "Socket": "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "ExecutionManagerDF": "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", + "TransmitManager": "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", + "FastSwitchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + "OptimisticSwitchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8", + "SocketBatcher": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E", + "Counter": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472", + "SocketSimulator": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + "SimulatorUtils": "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", + "SwitchboardSimulator": "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", + "CapacitorSimulator": "0x8222e1a96Af24b9E48586ec0757552f6F639392d", + "startBlock": 1735959, + "integrations": { + "1": { "FAST": { - "capacitor": "0x217c387cf50Eb2CCCe9f6F1eb474a0678EC65142", - "decapacitor": "0xD5300C7Fa86Cc2d27838636eAF27301fE0e8bA8d", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0xf9B3084AEdD848aCc7Ff1efB7b98a04E059CA2f7", + "decapacitor": "0x4cb2c95C9d5daA1548CD7123D90fe6f2c1808162", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x4d461daB6D6AB35Ce326EbCFef47Db5A33DB963B", - "decapacitor": "0x2cF2a744093c514E2488D2c3C7DEf303D3B10186", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x979463f21b2aFF5B615722785D7201b3890b9F3f", + "decapacitor": "0x19710c0B9166F71b246526541eAe25117b6Ae264", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "1101": { + "10": { "FAST": { - "capacitor": "0x434980fF616B66a96Ebce21b3a6218D1DEEB371C", - "decapacitor": "0xEad0e6BA53a3034244cbD06C09040ebE23157C08", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x1d73757456B92902E4EbC0aD9bA6ABB217C34d66", + "decapacitor": "0x44E7DfF81B45aAb0c717bF58d24557Cf323E444b", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xF115f1b2fACdFACcDd1F2DBd234e01CcaeEbF529", - "decapacitor": "0x5837Ca010dD98f4C0afb993d6EAa65045c0C6cea", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x0bBcDFeb2a0cF44dFfe5015Cf4634C0A69eD629F", + "decapacitor": "0xB6331aA372D8Fd4a95BC081Ee0c6191f57118851", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "1329": { + "56": { "FAST": { - "capacitor": "0x540069dd012BEf2Db9517D914C8a397e76d4c1e7", - "decapacitor": "0xe77548eE11963139fAEBD9f1056F84236d454220", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x7CAfa251d16b68dF44511915C50855226A071044", + "decapacitor": "0xddf72Bfca9Fb79ded93B819fE515D4f6ea367596", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xCDeDB9E94885BB529E02ECF61975486cCF87d41F", - "decapacitor": "0x74f395cCEaa2974F544387eec7ab0aC3481c1dd2", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x8fE14d7Ff9472742090cc91B3E653768e3C89303", + "decapacitor": "0x54589d534958C2186E41028ed23f460965576148", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "1868": { + "100": { "FAST": { - "capacitor": "0xA11a34E9Ef860B93AD66c45ED6db57602aF94fc6", - "decapacitor": "0xEe82670b797Fcd056977187ED70D2fE6a8c3230C", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x4B751b3D691653a3131dd3b71238116C66Dc9b9b", + "decapacitor": "0x92b2D6781BF1Ab65a64EE8Ec1d043a3777f2bFB7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xA4240F570eD5e883C2a94328e6719390d00b4EB0", - "decapacitor": "0xf33dE17dfA8Bbe64F4fEb63Dc2Ab36cde3cd1967", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xde809627100191f5032358fE0B4Fa845Bac48803", + "decapacitor": "0xfAA39f051a7B0a8eeaD7eF17483eA320AD5aCA24", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "1923": { + "130": { "FAST": { - "capacitor": "0x68CF72c8996E6Cfc56B7014A2147B1cb752863fB", - "decapacitor": "0xc3e2e3C81776024AE9e0A0f5D353864E0a7A0104", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x197fAcB10090B503E58f32a983BB7a76d2156d09", + "decapacitor": "0x9F4225B10849543946daa9d85ADB403b78DFE38e", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xAE9d881536e4F5c38938860C0aE76995643b1a80", - "decapacitor": "0x7A27bd25e79C2D907A90Ef2A39866d873c765f37", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x6c39fB4b3884dfAE8a1A2f3082ABCB30F9242471", + "decapacitor": "0x75BBf0bDC8C2e69fa40FaEF1703994f81fecd8F4", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "2999": { + "137": { "FAST": { - "capacitor": "0xabCa240De0eA9a02028Fd7eE2585c94BeCF229aE", - "decapacitor": "0x16a381AB5be35Cc9F8bD5507dA121B4B2Dc5923C", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0xbeE93bE6ab2244Bdb82862C29949516cB4CC7Bc0", + "decapacitor": "0x37F5Ee57d3b74c8e5Fda258e2A7142C8f3b78A88", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xb537a7d6EF431229282cc9aB85EB1c7dA22E8DC2", - "decapacitor": "0x51C039162e9569fa487E1486D0a66Fe858857b34", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xb39F6890b95FE263392b71E6B3285a046507CA8A", + "decapacitor": "0x48F95E10F71a8aA7F43F094b7CB5515bC026aC49", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "5000": { + "143": { "FAST": { - "capacitor": "0x4DDE7e35Baf49438859761542FaE5a0cF9720e0C", - "decapacitor": "0x01Ec2e6e9b405D95f40Fe6FeDB8158a08aefeab0", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x21E8965674996bEe74DB8B3c618a2f4821cE6c84", - "decapacitor": "0xF44a29dEcEf5b59CD54Caf3A93878ea85387FA48", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "7887": { + "146": { "FAST": { - "capacitor": "0x297723D9cAC7F7a2C75c04bc30Be6614fC1ac5d1", - "decapacitor": "0xc923faf035AFB59Fe988b8E28fB9B7c753E3c758", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", + "decapacitor": "0xaA8d34d307AE231e333FAc71232d5b22313eE017", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x6F1f64102243D5F179F412FB432BED03Abe19722", - "decapacitor": "0x3C53618A3FFB7216F41D94d5Ea466Ec63c7993ff", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xCbf0A410f971ECea2D823d376a5150B56F7C5E5d", + "decapacitor": "0xAF63DD7f5CDf5527daa5e8F8334F96a0482Cb84f", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "8008": { + "480": { "FAST": { - "capacitor": "0x7307F9970b049606c6d1cC6Fa4dBe829E06eEba0", - "decapacitor": "0xEBDD84931EFf4D572ceFFa5ca24ab57eE13ef987", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x601F26a7BB371077a6c5cc1E4EB2C1e5cE54427d", + "decapacitor": "0xeE6c260cDbB088FE9a9B89b9aa24b8914Bb38412", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x61a924e4F8C706c71139A8986e6289210AaFD07d", - "decapacitor": "0x4d85A957fc70bC8134e507313B42cf370aDF1364", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xeb5781A9ae105ED9d12F0D57A140ab7F2a53c553", + "decapacitor": "0x0d6B5d3B56DE7f2E7Fe0fF535A965EAB04C5284C", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "8333": { + "999": { "FAST": { - "capacitor": "0xD592D58A227D6ed2D1DC1f12a0c762B10d4450DF", - "decapacitor": "0x4a3994CbF437Ce65B08EBe9834A3CC2fd35B035f", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x174a2dE9Ef92Ede17325815A22a1c0f4566DDc39", + "decapacitor": "0xCBec8c4c7B1B6d0620b22275F38FbB7626078C01", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xf21609c7F91ca98A28cD2567DE1d2F6B6c68344c", - "decapacitor": "0x3C9bd391c67a849Fdc977418ec9F1140606D7390", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xc042FE2FC3bBe545F50aa0181C150d105fD501A8", + "decapacitor": "0x7A4DAB41460148E8AF3ccB1D1859540225015B94", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "9745": { + "1101": { "FAST": { - "capacitor": "0x56518B850b72e80C918A3461Cdf3cDD9093080c4", - "decapacitor": "0xa72dc6F040E55CFb75d585D3Bb12B6eB0c8f9986", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x6d0a43b0e75ea6c71a3a252d0ABcB6C462085F44", + "decapacitor": "0x6F29A0643DE827068E930Eea4D32eb68Ba037334", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xf4568377fEE19749Ba487d35f9194bbfbF12751B", - "decapacitor": "0xed0F0498bE99474D2a239Dbb3D45803a872c5B88", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x7137b32176d2f2ab82b60bAfE5e6facF242e1d37", + "decapacitor": "0x6aEFBAD0dcD7F7d1417F09a574cD1d99C52F4fF4", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "34443": { + "1329": { "FAST": { - "capacitor": "0x279824278c1C78662A4BF9fb25EeA954BBF74d97", - "decapacitor": "0x0603c547e428b2aA4BdBcfD540d205D8Db8B5dc9", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x4A5B309781c58B7EC43e18F5b39d62DC5034849b", + "decapacitor": "0x25BBC82e742E75B30BD1A846d38e48392A358216", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xd93BF81B8B54860E94e5b26E786F428c0f78A434", - "decapacitor": "0xfF94F698B1EC0966bCd5F90487Fbd5D9410B31e1", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xAEA8f6A9747B4a959164a1A5D4807fF20a74B111", + "decapacitor": "0x546fEc1bB676637A3620e77A984B186673724EB6", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "42161": { + "1868": { "FAST": { - "capacitor": "0x1a50D1e4f3bf1F9D1E2752B0D1cE0Cd2F99aDb3b", - "decapacitor": "0x5F030Ed56CA8742dB95d599caAc8dEbBE70B2a07", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x3B7eC86684502091C7400f6977845fD1bA39b0aA", + "decapacitor": "0xBce897B1711Fe50a325D0776E24326D8d2Ec684E", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x6e7dAd288966Afa716AfCa2356dc699b3bF621a1", - "decapacitor": "0x24B9be73D1fC7131C00B5f1eDa39722c62C49588", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x9f8851bf0618d4504aB47DBC0Ae30942bcbF2c00", + "decapacitor": "0x2372a4AB177B4f77564194f3e81E1948d4B2FA2f", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "43114": { + "1923": { "FAST": { - "capacitor": "0x05452E6DAda0e7745AbCb22157Ff7eff149E9fe1", - "decapacitor": "0xAb6E972B19057708fCf289b663d8D06AD7afd3b7", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0xE6c7C1343fE0fAF82B0f8552eb2eC0904A212d08", + "decapacitor": "0xE64389122C100a750910907bC284Fca1CE28b696", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xf7d4FbF642bEEd498D75209809d22eC62590B751", - "decapacitor": "0x6De3c837e96F2E6e5775C5b41Cb0B034725c83Cd", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xE1814a211c1799dA575aaE5F923ab5C5668AD937", + "decapacitor": "0x73f15Be3EF5fa5cbC3a24ABc42b0E0d370E239E0", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "57073": { + "4326": { "FAST": { - "capacitor": "0xA836e16174fBC575C98726B6212589aF0226c4d2", - "decapacitor": "0x633acbED4dA21A5ba8C0b8a433d7c35904076D05", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" - }, - "OPTIMISTIC": { - "capacitor": "0xE5C07637BeFE67DfeB821A4D872C32937D56D197", - "decapacitor": "0xa9b8c94b5EB2e8Cfa04164b3bD1a4ABc5C31470F", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" - } - }, - "59144": { - "FAST": { - "capacitor": "0x24C3c9F85562e450cE0C70528484d7bBE1090688", - "decapacitor": "0x877E2D38ecf05514D62EDDB67f20Da4Ddf3838fe", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" - }, - "OPTIMISTIC": { - "capacitor": "0xC457207054acaA1dc956EA92F8180769C823444C", - "decapacitor": "0x6AcC0aA5Fc856ccA7479406497c886a881ADf998", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" - } - }, - "63157": { - "FAST": { - "capacitor": "0x5d05De6CB37167d344a53A312a05E7DC40BBB1Ae", - "decapacitor": "0xB10405BA300d668abe191b35b0E82d64a87e333A", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" - }, - "OPTIMISTIC": { - "capacitor": "0xB866fC26F7d1bcD5f97D1F7B8fE2E876E1846B85", - "decapacitor": "0x56C7EDB86523f837Fd4A2049051BaBEf186F3873", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" - } - }, - "80094": { - "FAST": { - "capacitor": "0xa65f338cDA78604D0f080C2c6AeEB1e6cC564E63", - "decapacitor": "0xfbbDD2384a39824Df437F1B04C7871F6e4B2C931", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0xcE6a97c8A36362d86239F31fe5B1A07eCfD5EFa9", + "decapacitor": "0x8858388BdD9899a9C938E7154ddc5a9c4C802B90", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xc89E2fcfe208c5a9C7d6720E7c55B54eBf3183c4", - "decapacitor": "0xaAd73b7Afac286128451c26BcFf983b7Fe9902D5", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xAD91E817224BAB044FC4DF88B9df13D68961EB63", + "decapacitor": "0x6F981646d70980609756CA0Cd72044a269202781", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "81457": { + "5000": { "FAST": { - "capacitor": "0xaAe7643D0C9AAD0a3A2Ac8932cf7c0d260600B79", - "decapacitor": "0xB792AeD8F981B738dE443d8201B024684876a8C9", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x5fE86Da2b8680c0341fB8b97449C573258359CF7", + "decapacitor": "0xae77D7eA82a7D2deBfa603DfEA22A3973a505e18", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xC42Fbf373519DA257F2c9193c20CC9CC598Bed5E", - "decapacitor": "0xB8a4bC5C2081ECE114335A6e741f8b182f6e83b2", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x6AfFff93C9B7BA03492c0cdc3067Fe52F00139de", + "decapacitor": "0xE1Ea5091D39F4F21C9a79e4ef29F7E74Da637Ad1", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "98866": { + "8333": { "FAST": { - "capacitor": "0xD1556Bf70415F4371b43bE80Af93241af2D53311", - "decapacitor": "0xDE7D7588Cabd29d18a6FD8Eb07E5A649e6367109", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0xd95726ec4ECa6D7988EAf9921b89BF96aeD2F1A4", + "decapacitor": "0x6F894b994bCC333e055Cd0D2205e5a4eA7A41dB6", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xe59fa293915b25D0071f31393b8FE09C93aF8c4d", - "decapacitor": "0x05902ad62DA119ad05267Fe5D3330fc08c5A32E9", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xF7C9891855F5eFaDc13eAe5280216a5aa893C719", + "decapacitor": "0xefcb1Ea01C4d5aA7FdeE866e1A724990ae0Ad624", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "534352": { + "8453": { "FAST": { - "capacitor": "0x815573587F9547FdCbeC50c3df5ec5B03D5f26ec", - "decapacitor": "0x8f76d5902c855BC38d2C2B2223FD08d9Bd6b2cF8", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x948C2161348d2167342aF93FDe323D93De6DA162", + "decapacitor": "0x376D69B875d8e9e72e90f3582c64417968b5C4A7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xBd7D15d52aBDD9E8fb2775D26bCBd9982Ec3420B", - "decapacitor": "0xAFB9D21D18f69273a634c789c44461684fe617e8", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xBeD62207c9108D3f19d467e17D80891613d4cc20", + "decapacitor": "0xa38D25185Aa33c6A71adbEdc8C94A2AF97041432", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "543210": { + "9745": { "FAST": { - "capacitor": "0x12c709309b27D5CDAB14574015FcFDABBAF17e07", - "decapacitor": "0xda56D43C54F110B278958932aAf09180E31a57A7", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", + "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x73aCd14F087494a5C611166c07A125F35D2E1cf7", - "decapacitor": "0x3C76529A71b80E9029E2D3A0F9cC2a90F5018766", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", + "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "747474": { + "34443": { "FAST": { - "capacitor": "0xa0308FA16018F3F5E84f74e431332e0297c717aB", - "decapacitor": "0x5273874Ea3cEa859f96b42cB4694e518fa91FCd5", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0xD19b9C9e80dD65BD7eB9600Bd194f14eE10de750", + "decapacitor": "0x38e2F19a25f135dAaFB4636613a686Ec3702BD54", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xc194E3C5F5C0B9499B2d23c12EE458086b21F279", - "decapacitor": "0x581505b45bAC2B5B6F7CE82e681E4E34121f3021", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0xc51a66F8AE8e5e845e34063C68C21D79f5e21C88", + "decapacitor": "0x2E87cdb436F832E90409fe317B587b536D169d64", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "777777": { + "42161": { "FAST": { - "capacitor": "0x1B233fAc2f876dF6e998456eAb084f5782E1ffDC", - "decapacitor": "0xf59e2604776B09d6dB1FBB577c78C907D572aC45", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + "capacitor": "0x6a42B6f626252385857a7de2a439aCE07F5438c4", + "decapacitor": "0xEe8a739e7850c3ea73bC91ba311B228Ec02567dF", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xA922122e52f7fFBc297a6A784405AEC11905C18C", - "decapacitor": "0xDd347e9c5Fc06bfb2db60e4797A53F86330f5487", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + "capacitor": "0x49b054e5F3cA37Cd1535f2611a5F8fF6086CE593", + "decapacitor": "0x8Dc7bffB70D61F693aF3bBCc45b2DA546efB4509", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "1324967486": { - "FAST": { - "capacitor": "0x457eF7905fE7130606Bf652Df71780D461AA6CbB", - "decapacitor": "0x2541866a00aee94e77a46390E4daCaDf513d1481", - "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" - }, - "OPTIMISTIC": { - "capacitor": "0xB79Bd8BDF75823A5f858854f236Ac0f2359a3660", - "decapacitor": "0x93bC320B2eB4CF55Ceb7dfF6AD24f188D44020b3", - "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" - } - } - }, - "Counter": "0x4dC25D9d3ee57018998A50e912F40f6384947Ff5", - "SocketSimulator": "0xB8Ec1142422f4c726b1fAF99054a6F616aFB2Bd3", - "SimulatorUtils": "0x7eAE8a3F4186e3B5ABdD712093Bcd62115Eb7de2", - "SwitchboardSimulator": "0x57cA482C7dc749B2A26747Ed2915560c2401262F", - "CapacitorSimulator": "0xD9ef4524926F1Dd79C2C78Ef69084d24E60CDE59", - "ExecutionManagerDF": "0x31B111B2197971fC982B1A507024Cc0d0E83273C", - "SafeL2": "0xCe6A81cc7357584aa2760e1F24c73D1F29e64D60", - "SafeProxyFactory": "0x3304c48872C4b3B9b0CaC1aEcaB2aB8e8c8Aa9d1", - "SocketSafeProxy": "0x6E22E2F99d8965C0cFeB3dA41997a417CbfD7F1B", - "MultiSigWrapper": "0x38D1Ff7afc4C32bEe9d507652E4e5d639FF83AB9" - }, - "9745": { - "SafeL2": "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", - "SafeProxyFactory": "0x1F6bc87f3309B5D31Eb0BdaBE3ED7d3110d3B9c3", - "SocketSafeProxy": "0xE9470eAb959A1bd8db7bc0e83E4a8682CD1A4Ac6", - "MultiSigWrapper": "0xbe7241e9D11EC2D1Ac86CE217c4A37b7aD1701cE", - "SignatureVerifier": "0x1CAdCd88fC148D3966eDe75D029937C886f66009", - "Hasher": "0x9B8c323468AEC7A7Cb041CeD48F92559bFF33705", - "CapacitorFactory": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b", - "Socket": "0x0CC93650bF4D98237628DACf87f94E443956D8dF", - "ExecutionManagerDF": "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", - "TransmitManager": "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", - "FastSwitchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", - "OptimisticSwitchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8", - "SocketBatcher": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E", - "Counter": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472", - "SocketSimulator": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", - "SimulatorUtils": "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", - "SwitchboardSimulator": "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", - "CapacitorSimulator": "0x8222e1a96Af24b9E48586ec0757552f6F639392d", - "startBlock": 1735959, - "integrations": { - "1": { + "43114": { "FAST": { - "capacitor": "0xf9B3084AEdD848aCc7Ff1efB7b98a04E059CA2f7", - "decapacitor": "0x4cb2c95C9d5daA1548CD7123D90fe6f2c1808162", + "capacitor": "0x7bA204d1e2bC0A09089FD3B158912b32C944F99c", + "decapacitor": "0x3Ed82677994b2A5140192F4401FaE03da9bBfE5F", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x979463f21b2aFF5B615722785D7201b3890b9F3f", - "decapacitor": "0x19710c0B9166F71b246526541eAe25117b6Ae264", + "capacitor": "0xAe74F5C2C155c8D576794011d4D3e953ED27315c", + "decapacitor": "0x7C0b3940A14Dd8849C576c5e7aa613509001818D", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "10": { + "57073": { "FAST": { - "capacitor": "0x1d73757456B92902E4EbC0aD9bA6ABB217C34d66", - "decapacitor": "0x44E7DfF81B45aAb0c717bF58d24557Cf323E444b", + "capacitor": "0xeAFAead3dB42e1d2fF04f642eC6A0839CDF4C34f", + "decapacitor": "0x155D90a2e1fB7Fb282eAe6fF2DeC46F5fadD35E0", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x0bBcDFeb2a0cF44dFfe5015Cf4634C0A69eD629F", - "decapacitor": "0xB6331aA372D8Fd4a95BC081Ee0c6191f57118851", + "capacitor": "0x3Be9e471f8147374ad9176BD857Af0Fc308b4FFF", + "decapacitor": "0x31704c770f814978a16f5A77abA6DD0549aC617E", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "56": { + "59144": { "FAST": { - "capacitor": "0x7CAfa251d16b68dF44511915C50855226A071044", - "decapacitor": "0xddf72Bfca9Fb79ded93B819fE515D4f6ea367596", + "capacitor": "0x1959d29e1a271f901625452a15ae7BaCDbFf8C9e", + "decapacitor": "0xF54B80Abfe41D9EED7E985E4e784182d499C19B6", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x8fE14d7Ff9472742090cc91B3E653768e3C89303", - "decapacitor": "0x54589d534958C2186E41028ed23f460965576148", + "capacitor": "0xDEFC12e2750d308Cc740c14Ce9a0b581a42Cc06d", + "decapacitor": "0xD5115C371dC679Bc42384F1d4fD98fa0e46A8309", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "100": { + "80094": { "FAST": { - "capacitor": "0x4B751b3D691653a3131dd3b71238116C66Dc9b9b", - "decapacitor": "0x92b2D6781BF1Ab65a64EE8Ec1d043a3777f2bFB7", + "capacitor": "0xC891AD2d60636e7c24E89b41eF98a2ecb58A672C", + "decapacitor": "0xfD2E08484B0A74E9343feC745D7045A6a270aAD2", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xde809627100191f5032358fE0B4Fa845Bac48803", - "decapacitor": "0xfAA39f051a7B0a8eeaD7eF17483eA320AD5aCA24", + "capacitor": "0x8B86E174243bcCef59b8762e80d152202ecaEe57", + "decapacitor": "0xbb076dA3Bf24aBE880e18BB4B96CAB27eF69bF3f", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "130": { + "81457": { "FAST": { - "capacitor": "0x197fAcB10090B503E58f32a983BB7a76d2156d09", - "decapacitor": "0x9F4225B10849543946daa9d85ADB403b78DFE38e", + "capacitor": "0x84aCA8345264138022AdC32f1888918277397673", + "decapacitor": "0x08a87F2508A7FF157a3ce9946C16a91230001df7", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x6c39fB4b3884dfAE8a1A2f3082ABCB30F9242471", - "decapacitor": "0x75BBf0bDC8C2e69fa40FaEF1703994f81fecd8F4", + "capacitor": "0xa53031113acD6647A1604CA69C6ce875cc44270f", + "decapacitor": "0x24B1AAba68c55B6C7E98EdC6dce61fADB920bCeb", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "137": { + "98866": { "FAST": { - "capacitor": "0xbeE93bE6ab2244Bdb82862C29949516cB4CC7Bc0", - "decapacitor": "0x37F5Ee57d3b74c8e5Fda258e2A7142C8f3b78A88", + "capacitor": "0x5aa161e95A466340d5c8759b1A5102108Ede8153", + "decapacitor": "0xC86D0A59EB130de1E3f0a7a08Ee4993a433CA72E", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xb39F6890b95FE263392b71E6B3285a046507CA8A", - "decapacitor": "0x48F95E10F71a8aA7F43F094b7CB5515bC026aC49", + "capacitor": "0xfAA175B66ED19F8B7dfa01e3990CD8122C664477", + "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "143": { + "534352": { "FAST": { - "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", - "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "capacitor": "0xBfFDb040a1Ae4a317f5733D98f8E6bDF629f9200", + "decapacitor": "0xbf71851B6De96E614A1ff0Fb8d3d28fdc9fe0f27", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", - "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "capacitor": "0x67dc2f9bc1AB20B2D6f684ED73F031c11f5860f9", + "decapacitor": "0x2AF0D774b661E2a262442e4270e777D37e87d762", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "146": { + "747474": { "FAST": { - "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", - "decapacitor": "0xaA8d34d307AE231e333FAc71232d5b22313eE017", + "capacitor": "0x98df574c1ED3802b4Ee9C1B0d9BF35fC79df0d65", + "decapacitor": "0x2F8AebBeB7Dc474498A431233bD35eD9A360507f", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xCbf0A410f971ECea2D823d376a5150B56F7C5E5d", - "decapacitor": "0xAF63DD7f5CDf5527daa5e8F8334F96a0482Cb84f", + "capacitor": "0xC4c4022d7Bd5401C0C182A791Fc090f6a5B0F19E", + "decapacitor": "0xb2e4DC9Bf4e8299BcfC3BadeF33fcB6AAC4086bc", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "480": { + "5064014": { "FAST": { - "capacitor": "0x601F26a7BB371077a6c5cc1E4EB2C1e5cE54427d", - "decapacitor": "0xeE6c260cDbB088FE9a9B89b9aa24b8914Bb38412", + "capacitor": "0x554763ad0429eFf30432D78D4be7D652fDd06CcE", + "decapacitor": "0x7371768c221038e8b63A9DAd67D97CadFe8B827A", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xeb5781A9ae105ED9d12F0D57A140ab7F2a53c553", - "decapacitor": "0x0d6B5d3B56DE7f2E7Fe0fF535A965EAB04C5284C", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "999": { - "FAST": { - "capacitor": "0x174a2dE9Ef92Ede17325815A22a1c0f4566DDc39", - "decapacitor": "0xCBec8c4c7B1B6d0620b22275F38FbB7626078C01", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xc042FE2FC3bBe545F50aa0181C150d105fD501A8", - "decapacitor": "0x7A4DAB41460148E8AF3ccB1D1859540225015B94", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "1101": { - "FAST": { - "capacitor": "0x6d0a43b0e75ea6c71a3a252d0ABcB6C462085F44", - "decapacitor": "0x6F29A0643DE827068E930Eea4D32eb68Ba037334", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x7137b32176d2f2ab82b60bAfE5e6facF242e1d37", - "decapacitor": "0x6aEFBAD0dcD7F7d1417F09a574cD1d99C52F4fF4", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "1329": { - "FAST": { - "capacitor": "0x4A5B309781c58B7EC43e18F5b39d62DC5034849b", - "decapacitor": "0x25BBC82e742E75B30BD1A846d38e48392A358216", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xAEA8f6A9747B4a959164a1A5D4807fF20a74B111", - "decapacitor": "0x546fEc1bB676637A3620e77A984B186673724EB6", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "1868": { - "FAST": { - "capacitor": "0x3B7eC86684502091C7400f6977845fD1bA39b0aA", - "decapacitor": "0xBce897B1711Fe50a325D0776E24326D8d2Ec684E", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x9f8851bf0618d4504aB47DBC0Ae30942bcbF2c00", - "decapacitor": "0x2372a4AB177B4f77564194f3e81E1948d4B2FA2f", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "1923": { - "FAST": { - "capacitor": "0xE6c7C1343fE0fAF82B0f8552eb2eC0904A212d08", - "decapacitor": "0xE64389122C100a750910907bC284Fca1CE28b696", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xE1814a211c1799dA575aaE5F923ab5C5668AD937", - "decapacitor": "0x73f15Be3EF5fa5cbC3a24ABc42b0E0d370E239E0", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "5000": { - "FAST": { - "capacitor": "0x5fE86Da2b8680c0341fB8b97449C573258359CF7", - "decapacitor": "0xae77D7eA82a7D2deBfa603DfEA22A3973a505e18", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x6AfFff93C9B7BA03492c0cdc3067Fe52F00139de", - "decapacitor": "0xE1Ea5091D39F4F21C9a79e4ef29F7E74Da637Ad1", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "8333": { - "FAST": { - "capacitor": "0xd95726ec4ECa6D7988EAf9921b89BF96aeD2F1A4", - "decapacitor": "0x6F894b994bCC333e055Cd0D2205e5a4eA7A41dB6", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xF7C9891855F5eFaDc13eAe5280216a5aa893C719", - "decapacitor": "0xefcb1Ea01C4d5aA7FdeE866e1A724990ae0Ad624", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "8453": { - "FAST": { - "capacitor": "0x948C2161348d2167342aF93FDe323D93De6DA162", - "decapacitor": "0x376D69B875d8e9e72e90f3582c64417968b5C4A7", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xBeD62207c9108D3f19d467e17D80891613d4cc20", - "decapacitor": "0xa38D25185Aa33c6A71adbEdc8C94A2AF97041432", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "9745": { - "FAST": { - "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", - "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", - "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "34443": { - "FAST": { - "capacitor": "0xD19b9C9e80dD65BD7eB9600Bd194f14eE10de750", - "decapacitor": "0x38e2F19a25f135dAaFB4636613a686Ec3702BD54", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xc51a66F8AE8e5e845e34063C68C21D79f5e21C88", - "decapacitor": "0x2E87cdb436F832E90409fe317B587b536D169d64", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "42161": { - "FAST": { - "capacitor": "0x6a42B6f626252385857a7de2a439aCE07F5438c4", - "decapacitor": "0xEe8a739e7850c3ea73bC91ba311B228Ec02567dF", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x49b054e5F3cA37Cd1535f2611a5F8fF6086CE593", - "decapacitor": "0x8Dc7bffB70D61F693aF3bBCc45b2DA546efB4509", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "43114": { - "FAST": { - "capacitor": "0x7bA204d1e2bC0A09089FD3B158912b32C944F99c", - "decapacitor": "0x3Ed82677994b2A5140192F4401FaE03da9bBfE5F", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xAe74F5C2C155c8D576794011d4D3e953ED27315c", - "decapacitor": "0x7C0b3940A14Dd8849C576c5e7aa613509001818D", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "57073": { - "FAST": { - "capacitor": "0xeAFAead3dB42e1d2fF04f642eC6A0839CDF4C34f", - "decapacitor": "0x155D90a2e1fB7Fb282eAe6fF2DeC46F5fadD35E0", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x3Be9e471f8147374ad9176BD857Af0Fc308b4FFF", - "decapacitor": "0x31704c770f814978a16f5A77abA6DD0549aC617E", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "59144": { - "FAST": { - "capacitor": "0x1959d29e1a271f901625452a15ae7BaCDbFf8C9e", - "decapacitor": "0xF54B80Abfe41D9EED7E985E4e784182d499C19B6", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xDEFC12e2750d308Cc740c14Ce9a0b581a42Cc06d", - "decapacitor": "0xD5115C371dC679Bc42384F1d4fD98fa0e46A8309", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "80094": { - "FAST": { - "capacitor": "0xC891AD2d60636e7c24E89b41eF98a2ecb58A672C", - "decapacitor": "0xfD2E08484B0A74E9343feC745D7045A6a270aAD2", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x8B86E174243bcCef59b8762e80d152202ecaEe57", - "decapacitor": "0xbb076dA3Bf24aBE880e18BB4B96CAB27eF69bF3f", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "81457": { - "FAST": { - "capacitor": "0x84aCA8345264138022AdC32f1888918277397673", - "decapacitor": "0x08a87F2508A7FF157a3ce9946C16a91230001df7", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xa53031113acD6647A1604CA69C6ce875cc44270f", - "decapacitor": "0x24B1AAba68c55B6C7E98EdC6dce61fADB920bCeb", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "98866": { - "FAST": { - "capacitor": "0x5aa161e95A466340d5c8759b1A5102108Ede8153", - "decapacitor": "0xC86D0A59EB130de1E3f0a7a08Ee4993a433CA72E", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xfAA175B66ED19F8B7dfa01e3990CD8122C664477", - "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "534352": { - "FAST": { - "capacitor": "0xBfFDb040a1Ae4a317f5733D98f8E6bDF629f9200", - "decapacitor": "0xbf71851B6De96E614A1ff0Fb8d3d28fdc9fe0f27", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x67dc2f9bc1AB20B2D6f684ED73F031c11f5860f9", - "decapacitor": "0x2AF0D774b661E2a262442e4270e777D37e87d762", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "747474": { - "FAST": { - "capacitor": "0x98df574c1ED3802b4Ee9C1B0d9BF35fC79df0d65", - "decapacitor": "0x2F8AebBeB7Dc474498A431233bD35eD9A360507f", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xC4c4022d7Bd5401C0C182A791Fc090f6a5B0F19E", - "decapacitor": "0xb2e4DC9Bf4e8299BcfC3BadeF33fcB6AAC4086bc", + "capacitor": "0x645c100843a33C4A32621d2d3e2023D2BdAA2C5f", + "decapacitor": "0x943E0383883C720C74d6e0977144Cf13EE2154dD", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } } @@ -9361,6 +9781,18 @@ "switchboard": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e" } }, + "4326": { + "FAST": { + "capacitor": "0xA7E73091a416d9Dc1aCe3d1AABFf3Efec0e19E0e", + "decapacitor": "0xc6F31B979276bd380F4E71A6db752459C4c6Cc9f", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + }, + "OPTIMISTIC": { + "capacitor": "0xd2E306f67213Fbd067c362Ef14588EA759D0B6fa", + "decapacitor": "0xeF048C0D8931E1337e771011CDAc73a07F5F40De", + "switchboard": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e" + } + }, "5000": { "FAST": { "capacitor": "0x978D35286CE1AaBf44FDD053ADB1165F10DD6b0c", @@ -9528,6 +9960,18 @@ "decapacitor": "0xa224f07b3ec2aD98BEB5a6A81FC242BD9B400028", "switchboard": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e" } + }, + "5064014": { + "FAST": { + "capacitor": "0xFfB99F8CE3c485cb193e4d16e51c20f80c30Ea44", + "decapacitor": "0xC8ABB233059F67D8e25f8dc98Dfc207210189abf", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + }, + "OPTIMISTIC": { + "capacitor": "0x90f5a0639fA8e1D7765208a339cfB7c5d2510778", + "decapacitor": "0xC837243ae07Ee70726416352F947355EBA7Ab055", + "switchboard": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e" + } } }, "SocketSimulator": "0x2C75A88aF2d873FE4267eA3B4F0C7B8eee7F7e3A", @@ -9805,6 +10249,18 @@ "switchboard": "0xd5e829827F665c42326EAF68Da3360bd59b42f2f" } }, + "4326": { + "FAST": { + "capacitor": "0xb9953BB0116B47847058C2F7f59526D2E15C96b7", + "decapacitor": "0xC2e812CE63896926EE153407a5CCD1894dB643E9", + "switchboard": "0xd5e829827F665c42326EAF68Da3360bd59b42f2f" + }, + "OPTIMISTIC": { + "capacitor": "0x05CF4e870287bEC3Fa48213Ba6E87dBc565FD718", + "decapacitor": "0xcCBef76234fa4aDb24e959Ad1eECe94CAcD54a70", + "switchboard": "0x1812ff6bd726934f18159164e2927B34949B16a8" + } + }, "5000": { "FAST": { "capacitor": "0x4dE8697a8Be925C6a7e120fA95e4a2Df7966D6d3", @@ -10045,15 +10501,27 @@ "switchboard": "0x1812ff6bd726934f18159164e2927B34949B16a8" } }, - "1324967486": { + "5064014": { "FAST": { - "capacitor": "0xf6AFBa39422bD85D83D71b8056B04Be3C6752E78", - "decapacitor": "0xe3ebABb4B208A26c530c9f7e9022094820b24A8d", + "capacitor": "0x725793129754759a3258e89A21118E448B4a5C9d", + "decapacitor": "0x2fab1eF94e93036c2496872bC20ED30Ec30EE132", "switchboard": "0xd5e829827F665c42326EAF68Da3360bd59b42f2f" }, "OPTIMISTIC": { - "capacitor": "0x054c6b66B5EC153f1b714B6de0653ed112358dc4", - "decapacitor": "0x1d527a286331086009ff8f0C462D3E2cF8e66A78", + "capacitor": "0x2b9aCCDc2d9Ed603137e5216A94F2609ed4ffEF8", + "decapacitor": "0xC9604f29925e051344edF511fd52735464A17ECc", + "switchboard": "0x1812ff6bd726934f18159164e2927B34949B16a8" + } + }, + "1324967486": { + "FAST": { + "capacitor": "0xf6AFBa39422bD85D83D71b8056B04Be3C6752E78", + "decapacitor": "0xe3ebABb4B208A26c530c9f7e9022094820b24A8d", + "switchboard": "0xd5e829827F665c42326EAF68Da3360bd59b42f2f" + }, + "OPTIMISTIC": { + "capacitor": "0x054c6b66B5EC153f1b714B6de0653ed112358dc4", + "decapacitor": "0x1d527a286331086009ff8f0C462D3E2cF8e66A78", "switchboard": "0x1812ff6bd726934f18159164e2927B34949B16a8" } } @@ -10270,6 +10738,18 @@ "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" } }, + "4326": { + "FAST": { + "capacitor": "0x50F37C05B7CB770bD36a3463255Eb3b31d7D5971", + "decapacitor": "0x68b541709212f7eA2AB693A3C72bEf97FfdA2a08", + "switchboard": "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21" + }, + "OPTIMISTIC": { + "capacitor": "0x288d89fD7Bb274Aae5dC5D1ad90309702F02Fe3A", + "decapacitor": "0x36eB60B56cBCeDA2A8DFe0B0495D851B74015AcD", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + } + }, "5000": { "FAST": { "capacitor": "0x536d9A127a137858ec729c52b70A768b551559b8", @@ -10437,6 +10917,18 @@ "decapacitor": "0x6a1024855d5572e9654Deb54e95a1e5a95635130", "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" } + }, + "5064014": { + "FAST": { + "capacitor": "0xA7E37735078ddd858A069E22c579513F5eEdEc83", + "decapacitor": "0xf9bbf9F3Bf30fF02B9b63695ACCe37AAC4E7F059", + "switchboard": "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21" + }, + "OPTIMISTIC": { + "capacitor": "0x2aE23ffC25f30cAAFf11678623f3F3D4610E3CDb", + "decapacitor": "0x97201B5681935F45Fa6E63C79F13127454D4bCB2", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + } } }, "SafeL2": "0xCD83F432491c3Ed08B34F74Df7341EEb060dB34e", @@ -10744,6 +11236,18 @@ "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } }, + "4326": { + "FAST": { + "capacitor": "0xD9596ede5a0f8E25dDee8566440391E4E7644701", + "decapacitor": "0x105aFeb4225Ffe7791f4920a23dcAd4c05100856", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0xb0E95F897Db1737e560AFF512D1598925b6E61C3", + "decapacitor": "0x01ee7e3d895212E3d8114f7487c64E122c764203", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } + }, "5000": { "FAST": { "capacitor": "0xF6f648CF8164Dd7Ec04C0dba8fc91e7b66A154C0", @@ -10911,6 +11415,18 @@ "decapacitor": "0x7F7Cafd5A13E8242D3E76e8795C6b5C35FcCc092", "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } + }, + "5064014": { + "FAST": { + "capacitor": "0x48903bEDc1344B728182c27d04612A1b432BaCA2", + "decapacitor": "0x3Ba9ab394F323825B30f8C3bDc1a74353811FA99", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0x55bc65eeD2A9044A5467e54B04D2F71e84e12f67", + "decapacitor": "0xc4DFED08A6d0De77de096C1571e168F203542f8E", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } } }, "SafeL2": "0x928D2F08A579fEB13fe26c13d5F18fCff077743F", @@ -11139,6 +11655,18 @@ "switchboard": "0x332901149A390D334498008449089f05fa273C3B" } }, + "4326": { + "FAST": { + "capacitor": "0x5BE4963C69C3E6827783151AB7452Ff79a16573f", + "decapacitor": "0x6DED85D26688a756a7F6E868B7EcA94C5c078D25", + "switchboard": "0x497D0FA570c128830a3aA3C06582a94af2330A18" + }, + "OPTIMISTIC": { + "capacitor": "0x3B90BEF1c784982Cb1D175cBFF8bC16834e6b752", + "decapacitor": "0x052a22A5F46f061D86D2f5B25eeD9F6090FeD32a", + "switchboard": "0x332901149A390D334498008449089f05fa273C3B" + } + }, "5000": { "FAST": { "capacitor": "0x6b033a9c871e379D128cc94CB1b7ca56aB19D1F3", @@ -11306,6 +11834,18 @@ "decapacitor": "0x7e4C7c7F54b950dA5A315aba147223A794B57089", "switchboard": "0x332901149A390D334498008449089f05fa273C3B" } + }, + "5064014": { + "FAST": { + "capacitor": "0x5f05c505B26A2A8a6e6611668841AD23C946B98B", + "decapacitor": "0x145D57629F6bb964EB0790B31A8c1Ca37bed5D7C", + "switchboard": "0x497D0FA570c128830a3aA3C06582a94af2330A18" + }, + "OPTIMISTIC": { + "capacitor": "0x118F0D6fD815B2F1082c4AD92cD496a80Bb46Ac5", + "decapacitor": "0xcb548f33c2Bcd32C6AF5f27c8741A47b3e195528", + "switchboard": "0x332901149A390D334498008449089f05fa273C3B" + } } }, "SafeL2": "0x43F3dD32d23B551ECBbB7c390368b960d168D063", @@ -11708,6 +12248,18 @@ "switchboard": "0x032dd149Cb081FAd716334D9F0bd81fa3F002F11" } }, + "4326": { + "FAST": { + "capacitor": "0x5d1c95cCf338dB279587673EC122c56F5577D89D", + "decapacitor": "0x18338cBf2a112e6a3F62E2403158E2531a4f4eaA", + "switchboard": "0x043bcF7aaE818a6E9f509d9D7304e5c7D039FE5d" + }, + "OPTIMISTIC": { + "capacitor": "0x719922aA4a259E25694141e7aDcf3F6A16E9C99C", + "decapacitor": "0xe9C57CF81b61473D30cB0CA68225235603cd2E0a", + "switchboard": "0x032dd149Cb081FAd716334D9F0bd81fa3F002F11" + } + }, "5000": { "FAST": { "capacitor": "0x84Cc8680f5d44dC95eD72A9cA8982249499a9bc7", @@ -11875,6 +12427,18 @@ "decapacitor": "0x1EF2F4381cBEe1684086665137ea6AA8f3A7762B", "switchboard": "0x032dd149Cb081FAd716334D9F0bd81fa3F002F11" } + }, + "5064014": { + "FAST": { + "capacitor": "0x4f87eeBB64ec9A2faaaD00D0b86169F02e003Ac7", + "decapacitor": "0x8492ac6b26D9daee3dEaC1AFCbfa5E8bF499AFa1", + "switchboard": "0x043bcF7aaE818a6E9f509d9D7304e5c7D039FE5d" + }, + "OPTIMISTIC": { + "capacitor": "0x93044C2109960c2393a01D7B837Ad53969428B97", + "decapacitor": "0x61d4045B272eB7A689F708a916AC9CF7B6939Cfd", + "switchboard": "0x032dd149Cb081FAd716334D9F0bd81fa3F002F11" + } } } }, @@ -12083,6 +12647,18 @@ "switchboard": "0x09217a4A727418A7A9fc60aE07E31c2Dfd13Bf2f" } }, + "4326": { + "FAST": { + "capacitor": "0xEdfE6E25ccbe37CaDd99aFFEF774a1dAC87eD041", + "decapacitor": "0x2E529A07A033b833443a4D7790CCE07273948622", + "switchboard": "0xdcABb6d7E88396498FFF4CD987F60e354BF2a44b" + }, + "OPTIMISTIC": { + "capacitor": "0x423d7Bc90Ee40F169cA8B502D4fd507A0f20da9a", + "decapacitor": "0x3628489495e00851E5087147dFF2bCf0D233671f", + "switchboard": "0x09217a4A727418A7A9fc60aE07E31c2Dfd13Bf2f" + } + }, "5000": { "FAST": { "capacitor": "0x8f26954AE821762cdbCa625c88eFb107c21F7C56", @@ -12274,6 +12850,18 @@ "decapacitor": "0x420F88f9dA9cF6B82e5cdDDbcAEE861a3BeEF802", "switchboard": "0x09217a4A727418A7A9fc60aE07E31c2Dfd13Bf2f" } + }, + "5064014": { + "FAST": { + "capacitor": "0x237edd07381B16Dca92FAA249EE0019F89db0589", + "decapacitor": "0x4a700E7F4c3A1bC2cf4b4a0612d29606690B048A", + "switchboard": "0xdcABb6d7E88396498FFF4CD987F60e354BF2a44b" + }, + "OPTIMISTIC": { + "capacitor": "0x2DA2e2506595617eEb70E9BdCB0783c1536F54Cf", + "decapacitor": "0x2a6e7119Bb97554DAbFffa8321787D374EaBC011", + "switchboard": "0x09217a4A727418A7A9fc60aE07E31c2Dfd13Bf2f" + } } }, "SocketSimulator": "0xC41A7A24CC415326195415ecF1AFfbAdFD808F70", @@ -12475,6 +13063,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "4326": { + "FAST": { + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "5000": { "FAST": { "capacitor": "0x4A5B309781c58B7EC43e18F5b39d62DC5034849b", @@ -12630,6 +13230,18 @@ "decapacitor": "0x24B1AAba68c55B6C7E98EdC6dce61fADB920bCeb", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } + }, + "5064014": { + "FAST": { + "capacitor": "0xcE6a97c8A36362d86239F31fe5B1A07eCfD5EFa9", + "decapacitor": "0x8858388BdD9899a9C938E7154ddc5a9c4C802B90", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xAD91E817224BAB044FC4DF88B9df13D68961EB63", + "decapacitor": "0x6F981646d70980609756CA0Cd72044a269202781", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } } } }, @@ -13175,6 +13787,18 @@ "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" } }, + "4326": { + "FAST": { + "capacitor": "0xBbfAD50615E074023C4f13989D4c15f899DF27De", + "decapacitor": "0xa00e677bC9d220B427301E60b95F7A97728277F3", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + }, + "OPTIMISTIC": { + "capacitor": "0xE5F8874B290DA83F2db402E263db8b8D3a0376bB", + "decapacitor": "0xfD79aE2e8FA79D57f622AC85a1C16BFF878545B7", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + } + }, "5000": { "FAST": { "capacitor": "0x36a7C8DA2eD0cfF24E16eBB95C0a23F71763D694", @@ -13330,224 +13954,396 @@ "decapacitor": "0xA9028774e3DD6BDd09A8b37ff3146CCCBE4aE091", "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" } + }, + "5064014": { + "FAST": { + "capacitor": "0x75354027f8bF7eA2d4847FFc61b34d7C4A8B23b4", + "decapacitor": "0xb3e8aeD43cA1a46aFFE32D8A8C6Cb9DD48B8f193", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + }, + "OPTIMISTIC": { + "capacitor": "0x0274d5aC2587630B07ADe635411B9013E4046648", + "decapacitor": "0x2339455ad3744544Be6c3f8a4da8cE6eD03167A5", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + } } } }, - "543210": { - "SignatureVerifier": "0x860957EB07d5a850313Cfb62b5B77a87E223a3E0", - "Hasher": "0xF0fe5c03cA31e7A0debD450F9A340D032F0691F3", - "CapacitorFactory": "0x31c2c28fc9d07249e8A6Eae1e8F4326d29C86b7c", - "Socket": "0x9Da30E227791B10423915FFB6486dA283Be631dC", - "ExecutionManagerDF": "0x716e900EB0725aE6f2f78a649F3355D6e2dC6C14", - "TransmitManager": "0x3F18bCa7921Ea0904E54F1aC8C7ce627Fe0cf0f8", - "FastSwitchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51", - "OptimisticSwitchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8", - "SocketBatcher": "0xFbFaB3Bdfe098750Ad0aa18125C3EC12217Ca28a", - "Counter": "0x1fee92D0Ead2Fd6675F904E642DcC64D3052CbF2", - "SocketSimulator": "0xB256EC3685cBD68A9AF69fC947dB17fdF8400B2D", - "SimulatorUtils": "0x44ab5E29E5342242204E94d93C0379F8e72fE733", - "SwitchboardSimulator": "0xDb3c47f98285C6A61C31371499aC902230aAf6F9", - "CapacitorSimulator": "0x402096cDE37d032C998f1ce861Abb8e64D809302", - "startBlock": 515163, + "747474": { + "SafeL2": "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", + "SafeProxyFactory": "0x1F6bc87f3309B5D31Eb0BdaBE3ED7d3110d3B9c3", + "SocketSafeProxy": "0x51e5876ca2EaCE2039a3AEcCA900d508933bDFa0", + "MultiSigWrapper": "0xbe7241e9D11EC2D1Ac86CE217c4A37b7aD1701cE", + "SignatureVerifier": "0x1CAdCd88fC148D3966eDe75D029937C886f66009", + "Hasher": "0x9B8c323468AEC7A7Cb041CeD48F92559bFF33705", + "CapacitorFactory": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b", + "Socket": "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "ExecutionManagerDF": "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", + "TransmitManager": "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", + "FastSwitchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + "OptimisticSwitchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8", + "SocketBatcher": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E", + "Counter": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472", + "SocketSimulator": "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + "SimulatorUtils": "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", + "SwitchboardSimulator": "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", + "CapacitorSimulator": "0x8222e1a96Af24b9E48586ec0757552f6F639392d", + "startBlock": 2477169, "integrations": { "1": { "FAST": { - "capacitor": "0x4E3F73B5F09d7E4B3Afed52593B1Ff922becBA9E", - "decapacitor": "0x1Bb93A88Df3a5846d583Ab7Da063BA718bEe6e34", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0xf9B3084AEdD848aCc7Ff1efB7b98a04E059CA2f7", + "decapacitor": "0x4cb2c95C9d5daA1548CD7123D90fe6f2c1808162", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xEDD7DE9d2F751872952338e3DfF7562c71440aE7", - "decapacitor": "0x16fa5995cbAE4F115f0a8eb15Ffcf70dcEbC6797", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0x979463f21b2aFF5B615722785D7201b3890b9F3f", + "decapacitor": "0x19710c0B9166F71b246526541eAe25117b6Ae264", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, "10": { "FAST": { - "capacitor": "0xD05E116C2fe6544af1D2f3Ddf17AFFa80F29649F", - "decapacitor": "0x266ce6561B71A136d18bA83cCBDd8b2bDB203041", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x1d73757456B92902E4EbC0aD9bA6ABB217C34d66", + "decapacitor": "0x44E7DfF81B45aAb0c717bF58d24557Cf323E444b", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x4108375003748689C4578dDf11A8B4A034ca0a26", - "decapacitor": "0x715e9F9D4ea4d26Ce9197E9639B97ed18E5D3663", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0x0bBcDFeb2a0cF44dFfe5015Cf4634C0A69eD629F", + "decapacitor": "0xB6331aA372D8Fd4a95BC081Ee0c6191f57118851", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, "56": { "FAST": { - "capacitor": "0xeEdf7CA459aF68e2c4B1984d6ef51D572680b7Eb", - "decapacitor": "0x7DaFd4533e475F2C72Fd817A9418948987F8ecCE", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x7CAfa251d16b68dF44511915C50855226A071044", + "decapacitor": "0xddf72Bfca9Fb79ded93B819fE515D4f6ea367596", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x7A90Ae9C70BaaE6d47968237C463b312f1a38Dd5", - "decapacitor": "0x659C0211FcCCEac181CCfa739cB622C9702FE24A", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0x8fE14d7Ff9472742090cc91B3E653768e3C89303", + "decapacitor": "0x54589d534958C2186E41028ed23f460965576148", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, "100": { "FAST": { - "capacitor": "0x39fb87702E35305e0f0Aa9D84aD6A032389e1338", - "decapacitor": "0x826dD1Ac65f96f43C67DdC419C9Bbb93B1E13F2a", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x4B751b3D691653a3131dd3b71238116C66Dc9b9b", + "decapacitor": "0x92b2D6781BF1Ab65a64EE8Ec1d043a3777f2bFB7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xB65fd7A13a39cad7f85c140303A07bcA3AEeA5e1", - "decapacitor": "0xB6840E36A30a41cdDC44284b3e618d0B78b794AF", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xde809627100191f5032358fE0B4Fa845Bac48803", + "decapacitor": "0xfAA39f051a7B0a8eeaD7eF17483eA320AD5aCA24", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "130": { + "FAST": { + "capacitor": "0x197fAcB10090B503E58f32a983BB7a76d2156d09", + "decapacitor": "0x9F4225B10849543946daa9d85ADB403b78DFE38e", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x6c39fB4b3884dfAE8a1A2f3082ABCB30F9242471", + "decapacitor": "0x75BBf0bDC8C2e69fa40FaEF1703994f81fecd8F4", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, "137": { "FAST": { - "capacitor": "0xC8339075197b92b6e70a23c507e45049B3BB77AD", - "decapacitor": "0x7c3E70286f071d865D979E42665941aD9115e195", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0xbeE93bE6ab2244Bdb82862C29949516cB4CC7Bc0", + "decapacitor": "0x37F5Ee57d3b74c8e5Fda258e2A7142C8f3b78A88", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x59021214f763510741075Bd905b4D306927c59DE", - "decapacitor": "0x0fAadBF1F1d1d4A240518454B2164BD7ea7a77Bc", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xb39F6890b95FE263392b71E6B3285a046507CA8A", + "decapacitor": "0x48F95E10F71a8aA7F43F094b7CB5515bC026aC49", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "143": { + "FAST": { + "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", + "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", + "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, "146": { "FAST": { - "capacitor": "0x193EDe0650f87db7A8731ef27da60C6224b34324", - "decapacitor": "0x112E46d5aCe781ea08DB2bE5D639AEc993221c4C", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", + "decapacitor": "0xaA8d34d307AE231e333FAc71232d5b22313eE017", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x48b612Df6dcFF067b728C049224f59418F2D8D85", - "decapacitor": "0x4C7c911444AcB50cD2e58e4946a76541357AA959", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xCbf0A410f971ECea2D823d376a5150B56F7C5E5d", + "decapacitor": "0xAF63DD7f5CDf5527daa5e8F8334F96a0482Cb84f", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "324": { + "480": { "FAST": { - "capacitor": "0x9E1869788DD817587474aaEF009e9DA958e7FfC4", - "decapacitor": "0x9deECC5403DED9939ee2932aCBe279D01404d78C", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0xC891AD2d60636e7c24E89b41eF98a2ecb58A672C", + "decapacitor": "0xfD2E08484B0A74E9343feC745D7045A6a270aAD2", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xA0F305A8979a8b1D2973261c551d301a1e4A49AB", - "decapacitor": "0x7B5f3f346fAd21Bf7cD10c070107406e16F9252b", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0x8B86E174243bcCef59b8762e80d152202ecaEe57", + "decapacitor": "0xbb076dA3Bf24aBE880e18BB4B96CAB27eF69bF3f", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "999": { + "FAST": { + "capacitor": "0x5aa161e95A466340d5c8759b1A5102108Ede8153", + "decapacitor": "0xC86D0A59EB130de1E3f0a7a08Ee4993a433CA72E", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xfAA175B66ED19F8B7dfa01e3990CD8122C664477", + "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, "1101": { "FAST": { - "capacitor": "0xeE1054786728e573D32b52b43a99Fd1c6A2823b2", - "decapacitor": "0x9463Cf0F89cA65C1Fe42f67257463a223830F13c", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x601F26a7BB371077a6c5cc1E4EB2C1e5cE54427d", + "decapacitor": "0xeE6c260cDbB088FE9a9B89b9aa24b8914Bb38412", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xAd099B571C39c90dEb0ff5E219A92d24fF3d15F8", - "decapacitor": "0xf673eAF328a495629df811eE1087A97e9F34a8a8", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xeb5781A9ae105ED9d12F0D57A140ab7F2a53c553", + "decapacitor": "0x0d6B5d3B56DE7f2E7Fe0fF535A965EAB04C5284C", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "1329": { + "FAST": { + "capacitor": "0xBfFDb040a1Ae4a317f5733D98f8E6bDF629f9200", + "decapacitor": "0xbf71851B6De96E614A1ff0Fb8d3d28fdc9fe0f27", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x67dc2f9bc1AB20B2D6f684ED73F031c11f5860f9", + "decapacitor": "0x2AF0D774b661E2a262442e4270e777D37e87d762", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "1868": { + "FAST": { + "capacitor": "0x174a2dE9Ef92Ede17325815A22a1c0f4566DDc39", + "decapacitor": "0xCBec8c4c7B1B6d0620b22275F38FbB7626078C01", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xc042FE2FC3bBe545F50aa0181C150d105fD501A8", + "decapacitor": "0x7A4DAB41460148E8AF3ccB1D1859540225015B94", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "1923": { + "FAST": { + "capacitor": "0x6d0a43b0e75ea6c71a3a252d0ABcB6C462085F44", + "decapacitor": "0x6F29A0643DE827068E930Eea4D32eb68Ba037334", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x7137b32176d2f2ab82b60bAfE5e6facF242e1d37", + "decapacitor": "0x6aEFBAD0dcD7F7d1417F09a574cD1d99C52F4fF4", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "4326": { + "FAST": { + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "5000": { + "FAST": { + "capacitor": "0x4A5B309781c58B7EC43e18F5b39d62DC5034849b", + "decapacitor": "0x25BBC82e742E75B30BD1A846d38e48392A358216", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xAEA8f6A9747B4a959164a1A5D4807fF20a74B111", + "decapacitor": "0x546fEc1bB676637A3620e77A984B186673724EB6", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "8333": { + "FAST": { + "capacitor": "0x3B7eC86684502091C7400f6977845fD1bA39b0aA", + "decapacitor": "0xBce897B1711Fe50a325D0776E24326D8d2Ec684E", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x9f8851bf0618d4504aB47DBC0Ae30942bcbF2c00", + "decapacitor": "0x2372a4AB177B4f77564194f3e81E1948d4B2FA2f", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "8453": { + "FAST": { + "capacitor": "0xE6c7C1343fE0fAF82B0f8552eb2eC0904A212d08", + "decapacitor": "0xE64389122C100a750910907bC284Fca1CE28b696", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xE1814a211c1799dA575aaE5F923ab5C5668AD937", + "decapacitor": "0x73f15Be3EF5fa5cbC3a24ABc42b0E0d370E239E0", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "9745": { + "FAST": { + "capacitor": "0x98df574c1ED3802b4Ee9C1B0d9BF35fC79df0d65", + "decapacitor": "0x2F8AebBeB7Dc474498A431233bD35eD9A360507f", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xC4c4022d7Bd5401C0C182A791Fc090f6a5B0F19E", + "decapacitor": "0xb2e4DC9Bf4e8299BcfC3BadeF33fcB6AAC4086bc", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "34443": { + "FAST": { + "capacitor": "0x5fE86Da2b8680c0341fB8b97449C573258359CF7", + "decapacitor": "0xae77D7eA82a7D2deBfa603DfEA22A3973a505e18", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x6AfFff93C9B7BA03492c0cdc3067Fe52F00139de", + "decapacitor": "0xE1Ea5091D39F4F21C9a79e4ef29F7E74Da637Ad1", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "42161": { + "FAST": { + "capacitor": "0xd95726ec4ECa6D7988EAf9921b89BF96aeD2F1A4", + "decapacitor": "0x6F894b994bCC333e055Cd0D2205e5a4eA7A41dB6", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xF7C9891855F5eFaDc13eAe5280216a5aa893C719", + "decapacitor": "0xefcb1Ea01C4d5aA7FdeE866e1A724990ae0Ad624", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "5000": { + "43114": { "FAST": { - "capacitor": "0xC022bC126B521a9C634874Eed3C090BdB422ee3E", - "decapacitor": "0x3f1892C0e078FCb1a58C76b35FC1f7677FFf3F8d", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x948C2161348d2167342aF93FDe323D93De6DA162", + "decapacitor": "0x376D69B875d8e9e72e90f3582c64417968b5C4A7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xBd3f4a73eaC0C81455fb9cDA8B9CCA14C6B2eca5", - "decapacitor": "0x162142eDfAa8B5f25d898c2fe7075C0eCaE690e3", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xBeD62207c9108D3f19d467e17D80891613d4cc20", + "decapacitor": "0xa38D25185Aa33c6A71adbEdc8C94A2AF97041432", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "8453": { + "57073": { "FAST": { - "capacitor": "0xa7d1a0a75C342f106A7ef70F70a1009321E61ede", - "decapacitor": "0x90d9f3cf1966F8c9FCB4cBDAAaA8465Cd7242017", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0xD19b9C9e80dD65BD7eB9600Bd194f14eE10de750", + "decapacitor": "0x38e2F19a25f135dAaFB4636613a686Ec3702BD54", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x54Eee9720CbF0f2b5bf713ECFFe3B508fAB1cB51", - "decapacitor": "0xe2dE81A06753cd4Ea970BB9883505EF7ac219Fda", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xc51a66F8AE8e5e845e34063C68C21D79f5e21C88", + "decapacitor": "0x2E87cdb436F832E90409fe317B587b536D169d64", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "34443": { + "59144": { "FAST": { - "capacitor": "0x0b301ac7824123D82B6ABD2debf7463CE58B9e84", - "decapacitor": "0x1fCf190f351ed5A0E33677cf338293149A036D0a", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x6a42B6f626252385857a7de2a439aCE07F5438c4", + "decapacitor": "0xEe8a739e7850c3ea73bC91ba311B228Ec02567dF", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x0a16003A46C3e0B8225B70D7850F88EC6eEE1AD0", - "decapacitor": "0xB5261aF0E304Eab10aB53a03618D2ee7b0B29D9E", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0x49b054e5F3cA37Cd1535f2611a5F8fF6086CE593", + "decapacitor": "0x8Dc7bffB70D61F693aF3bBCc45b2DA546efB4509", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "42161": { + "80094": { "FAST": { - "capacitor": "0xC93Fc6fb6c6EC510f4c1E1581DCDeF28bEB041f6", - "decapacitor": "0x11237C273531BeEf75dBf9F3Fc427B43f5325dED", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x7bA204d1e2bC0A09089FD3B158912b32C944F99c", + "decapacitor": "0x3Ed82677994b2A5140192F4401FaE03da9bBfE5F", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xE383033614de7871B0C1E451C31fcb10c198fb95", - "decapacitor": "0xaE0F4971cE48a4955eBb49c4647ED84546205D04", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xAe74F5C2C155c8D576794011d4D3e953ED27315c", + "decapacitor": "0x7C0b3940A14Dd8849C576c5e7aa613509001818D", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "43114": { + "81457": { "FAST": { - "capacitor": "0x5C2961686159C3c89697da4601cedE1954C1DC1a", - "decapacitor": "0xcAfd5712df892f518382A8f50ba89beeDe7Ea3f3", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0xeAFAead3dB42e1d2fF04f642eC6A0839CDF4C34f", + "decapacitor": "0x155D90a2e1fB7Fb282eAe6fF2DeC46F5fadD35E0", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xB2843567b849a04a066644C429bD54C19B370177", - "decapacitor": "0x0D3037703A3Ad4B6e01a81d7B66A93B53d34595b", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0x3Be9e471f8147374ad9176BD857Af0Fc308b4FFF", + "decapacitor": "0x31704c770f814978a16f5A77abA6DD0549aC617E", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "57073": { + "98866": { "FAST": { - "capacitor": "0xdc498C7751e2B8180EeF9AfD8fc2580aB62EcB7a", - "decapacitor": "0xBAd0675B8Cd83c671f1f8B76Aa3E3fe6A5903915", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x84aCA8345264138022AdC32f1888918277397673", + "decapacitor": "0x08a87F2508A7FF157a3ce9946C16a91230001df7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x76cFd989427684828197c782ab262Dc079551105", - "decapacitor": "0xA750243744D9dd43EF2af994aC708C4E633750A7", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xa53031113acD6647A1604CA69C6ce875cc44270f", + "decapacitor": "0x24B1AAba68c55B6C7E98EdC6dce61fADB920bCeb", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "59144": { + "534352": { "FAST": { - "capacitor": "0xf9D513Ff5C8B6bC4300aa903A89dA58F3648aB4c", - "decapacitor": "0x9613a95bD28D0D8412C68c2c3BEBc7E3D48Cf5ed", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0x1959d29e1a271f901625452a15ae7BaCDbFf8C9e", + "decapacitor": "0xF54B80Abfe41D9EED7E985E4e784182d499C19B6", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xC79CA0Bd4E1b65d631e8Dc03DFa7B94c75211452", - "decapacitor": "0xe8983790830D1D9e8D4EE3Bc72b005d42C0bdce0", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xDEFC12e2750d308Cc740c14Ce9a0b581a42Cc06d", + "decapacitor": "0xD5115C371dC679Bc42384F1d4fD98fa0e46A8309", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "81457": { + "5064014": { "FAST": { - "capacitor": "0x243681644f7c4A6298Ab7cfD0f484FeC9f45b038", - "decapacitor": "0x8C8b5649fAA555869A99183FE6e65848A2A10d26", - "switchboard": "0x3153a8451E1Bb2d606e9df11EE082CFF99F88b51" + "capacitor": "0xcE6a97c8A36362d86239F31fe5B1A07eCfD5EFa9", + "decapacitor": "0x8858388BdD9899a9C938E7154ddc5a9c4C802B90", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x6e3F6299266a5cfC61A7A626005494966694f6D2", - "decapacitor": "0xcaC8A3D75B158F6f8933AEB4a8eB5c15f9cB56b5", - "switchboard": "0x8b1AC14d81Bdd82ceb58591549C4c1161de138F8" + "capacitor": "0xAD91E817224BAB044FC4DF88B9df13D68961EB63", + "decapacitor": "0x6F981646d70980609756CA0Cd72044a269202781", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } } } }, - "747474": { + "5064014": { "SafeL2": "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", "SafeProxyFactory": "0x1F6bc87f3309B5D31Eb0BdaBE3ED7d3110d3B9c3", - "SocketSafeProxy": "0x51e5876ca2EaCE2039a3AEcCA900d508933bDFa0", + "SocketSafeProxy": "0xcF9Cc7e577cFeB9e28ec5cc8dF330A95fFD1f357", "MultiSigWrapper": "0xbe7241e9D11EC2D1Ac86CE217c4A37b7aD1701cE", "SignatureVerifier": "0x1CAdCd88fC148D3966eDe75D029937C886f66009", "Hasher": "0x9B8c323468AEC7A7Cb041CeD48F92559bFF33705", @@ -13563,7 +14359,7 @@ "SimulatorUtils": "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", "SwitchboardSimulator": "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", "CapacitorSimulator": "0x8222e1a96Af24b9E48586ec0757552f6F639392d", - "startBlock": 2477169, + "startBlock": 3553778, "integrations": { "1": { "FAST": { @@ -13638,18 +14434,6 @@ } }, "143": { - "FAST": { - "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", - "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", - "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "146": { "FAST": { "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", "decapacitor": "0xaA8d34d307AE231e333FAc71232d5b22313eE017", @@ -13661,31 +14445,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "480": { - "FAST": { - "capacitor": "0xC891AD2d60636e7c24E89b41eF98a2ecb58A672C", - "decapacitor": "0xfD2E08484B0A74E9343feC745D7045A6a270aAD2", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x8B86E174243bcCef59b8762e80d152202ecaEe57", - "decapacitor": "0xbb076dA3Bf24aBE880e18BB4B96CAB27eF69bF3f", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "999": { - "FAST": { - "capacitor": "0x5aa161e95A466340d5c8759b1A5102108Ede8153", - "decapacitor": "0xC86D0A59EB130de1E3f0a7a08Ee4993a433CA72E", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xfAA175B66ED19F8B7dfa01e3990CD8122C664477", - "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "1101": { + "146": { "FAST": { "capacitor": "0x601F26a7BB371077a6c5cc1E4EB2C1e5cE54427d", "decapacitor": "0xeE6c260cDbB088FE9a9B89b9aa24b8914Bb38412", @@ -13697,19 +14457,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "1329": { - "FAST": { - "capacitor": "0xBfFDb040a1Ae4a317f5733D98f8E6bDF629f9200", - "decapacitor": "0xbf71851B6De96E614A1ff0Fb8d3d28fdc9fe0f27", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0x67dc2f9bc1AB20B2D6f684ED73F031c11f5860f9", - "decapacitor": "0x2AF0D774b661E2a262442e4270e777D37e87d762", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "1868": { + "480": { "FAST": { "capacitor": "0x174a2dE9Ef92Ede17325815A22a1c0f4566DDc39", "decapacitor": "0xCBec8c4c7B1B6d0620b22275F38FbB7626078C01", @@ -13721,7 +14469,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "1923": { + "999": { "FAST": { "capacitor": "0x6d0a43b0e75ea6c71a3a252d0ABcB6C462085F44", "decapacitor": "0x6F29A0643DE827068E930Eea4D32eb68Ba037334", @@ -13733,7 +14481,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "5000": { + "1101": { "FAST": { "capacitor": "0x4A5B309781c58B7EC43e18F5b39d62DC5034849b", "decapacitor": "0x25BBC82e742E75B30BD1A846d38e48392A358216", @@ -13745,7 +14493,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "8333": { + "1329": { "FAST": { "capacitor": "0x3B7eC86684502091C7400f6977845fD1bA39b0aA", "decapacitor": "0xBce897B1711Fe50a325D0776E24326D8d2Ec684E", @@ -13757,7 +14505,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "8453": { + "1868": { "FAST": { "capacitor": "0xE6c7C1343fE0fAF82B0f8552eb2eC0904A212d08", "decapacitor": "0xE64389122C100a750910907bC284Fca1CE28b696", @@ -13769,19 +14517,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "9745": { - "FAST": { - "capacitor": "0x98df574c1ED3802b4Ee9C1B0d9BF35fC79df0d65", - "decapacitor": "0x2F8AebBeB7Dc474498A431233bD35eD9A360507f", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xC4c4022d7Bd5401C0C182A791Fc090f6a5B0F19E", - "decapacitor": "0xb2e4DC9Bf4e8299BcfC3BadeF33fcB6AAC4086bc", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "34443": { + "1923": { "FAST": { "capacitor": "0x5fE86Da2b8680c0341fB8b97449C573258359CF7", "decapacitor": "0xae77D7eA82a7D2deBfa603DfEA22A3973a505e18", @@ -13793,7 +14529,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "42161": { + "4326": { "FAST": { "capacitor": "0xd95726ec4ECa6D7988EAf9921b89BF96aeD2F1A4", "decapacitor": "0x6F894b994bCC333e055Cd0D2205e5a4eA7A41dB6", @@ -13805,7 +14541,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "43114": { + "5000": { "FAST": { "capacitor": "0x948C2161348d2167342aF93FDe323D93De6DA162", "decapacitor": "0x376D69B875d8e9e72e90f3582c64417968b5C4A7", @@ -13817,7 +14553,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "57073": { + "8453": { "FAST": { "capacitor": "0xD19b9C9e80dD65BD7eB9600Bd194f14eE10de750", "decapacitor": "0x38e2F19a25f135dAaFB4636613a686Ec3702BD54", @@ -13829,7 +14565,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "59144": { + "9745": { "FAST": { "capacitor": "0x6a42B6f626252385857a7de2a439aCE07F5438c4", "decapacitor": "0xEe8a739e7850c3ea73bC91ba311B228Ec02567dF", @@ -13841,7 +14577,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "80094": { + "34443": { "FAST": { "capacitor": "0x7bA204d1e2bC0A09089FD3B158912b32C944F99c", "decapacitor": "0x3Ed82677994b2A5140192F4401FaE03da9bBfE5F", @@ -13853,7 +14589,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "81457": { + "42161": { "FAST": { "capacitor": "0xeAFAead3dB42e1d2fF04f642eC6A0839CDF4C34f", "decapacitor": "0x155D90a2e1fB7Fb282eAe6fF2DeC46F5fadD35E0", @@ -13865,19 +14601,7 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "98866": { - "FAST": { - "capacitor": "0x84aCA8345264138022AdC32f1888918277397673", - "decapacitor": "0x08a87F2508A7FF157a3ce9946C16a91230001df7", - "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" - }, - "OPTIMISTIC": { - "capacitor": "0xa53031113acD6647A1604CA69C6ce875cc44270f", - "decapacitor": "0x24B1AAba68c55B6C7E98EdC6dce61fADB920bCeb", - "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" - } - }, - "534352": { + "43114": { "FAST": { "capacitor": "0x1959d29e1a271f901625452a15ae7BaCDbFf8C9e", "decapacitor": "0xF54B80Abfe41D9EED7E985E4e784182d499C19B6", @@ -13888,116 +14612,92 @@ "decapacitor": "0xD5115C371dC679Bc42384F1d4fD98fa0e46A8309", "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } - } - } - }, - "777777": { - "SignatureVerifier": "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - "Hasher": "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - "CapacitorFactory": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - "Socket": "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - "ExecutionManager": "0xc317144DE60E6bC9455363bB09852C00bd14CD61", - "TransmitManager": "0xbDf50eAe568ECef74796ed6022a0d453e8432410", - "FastSwitchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d", - "OptimisticSwitchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65", - "SocketBatcher": "0xf8b6bb15890aeB2005db0B0B06734b594041c7D5", - "Counter": "0x0Ed83129F9c021D9c040305462f609E997cFe8d9", - "startBlock": 8347, - "integrations": { - "1": { + }, + "57073": { "FAST": { - "capacitor": "0xB1ecD6D2d1f52D5Abed57431508733d51BB4Cd6B", - "decapacitor": "0x67e8D09fE657332e312e0d649500c09E8A8c3A2C", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0xC891AD2d60636e7c24E89b41eF98a2ecb58A672C", + "decapacitor": "0xfD2E08484B0A74E9343feC745D7045A6a270aAD2", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x924b840ea9Cb97Aa103B6B37b5815676a0fA6076", - "decapacitor": "0x4648bA0745A1333eEF1e6790815c2e8d327C0686", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0x8B86E174243bcCef59b8762e80d152202ecaEe57", + "decapacitor": "0xbb076dA3Bf24aBE880e18BB4B96CAB27eF69bF3f", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "10": { + "59144": { "FAST": { - "capacitor": "0x8f13cFB9F90703318F03B90e1D53891e51Ba4cbE", - "decapacitor": "0x8016673CB8A69886935533331183E5040f503C5D", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" - }, - "OPTIMISTIC": { - "capacitor": "0x8DE90E501780eF595231162c5B9d90C782B2E16d", - "decapacitor": "0x2A4F9E51B2380903df4B5905003d6F8967021cdA", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0x84aCA8345264138022AdC32f1888918277397673", + "decapacitor": "0x08a87F2508A7FF157a3ce9946C16a91230001df7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xa53031113acD6647A1604CA69C6ce875cc44270f", + "decapacitor": "0x24B1AAba68c55B6C7E98EdC6dce61fADB920bCeb", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "56": { + "80094": { "FAST": { - "capacitor": "0x33284bd6eaddB0558a2E3C77Be076bD359c72828", - "decapacitor": "0x4eA1FA330240d0fb19cBE66b6A6eecE2D32D73f9", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0x5aa161e95A466340d5c8759b1A5102108Ede8153", + "decapacitor": "0xC86D0A59EB130de1E3f0a7a08Ee4993a433CA72E", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x633a828F7EbB3c30bd0fcD80E127d23e45b9CABb", - "decapacitor": "0x1CD4bc16F197FBe5AF493066cdea8095A1Fc46D1", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0xfAA175B66ED19F8B7dfa01e3990CD8122C664477", + "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "196": { + "81457": { "FAST": { - "capacitor": "0xD565E419f066fF70685a57160a673D614E2f885e", - "decapacitor": "0x85296450abCDb2D50DBfd6Dcb198ABC2A738497E", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0xBfFDb040a1Ae4a317f5733D98f8E6bDF629f9200", + "decapacitor": "0xbf71851B6De96E614A1ff0Fb8d3d28fdc9fe0f27", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x0cefaEe9453F939b43eD88EF659a54bE4c147106", - "decapacitor": "0x56DB02335CA50C4eDf074D4f819c37310f6F2cFA", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0x67dc2f9bc1AB20B2D6f684ED73F031c11f5860f9", + "decapacitor": "0x2AF0D774b661E2a262442e4270e777D37e87d762", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "8453": { + "98866": { "FAST": { - "capacitor": "0x8590b1DDb6a4A06145bF008e8e708A81f9fb53e6", - "decapacitor": "0x8DFD1D3b6EAF93dDf11AeC821a060e1bc4974CDf", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0x98df574c1ED3802b4Ee9C1B0d9BF35fC79df0d65", + "decapacitor": "0x2F8AebBeB7Dc474498A431233bD35eD9A360507f", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xA44a50cdb7b9B117f793395dC17bC52847F607f9", - "decapacitor": "0xb1ED25951868138A0bd0eb48ea8b9969B9406D9D", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0xC4c4022d7Bd5401C0C182A791Fc090f6a5B0F19E", + "decapacitor": "0xb2e4DC9Bf4e8299BcfC3BadeF33fcB6AAC4086bc", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "42161": { + "534352": { "FAST": { - "capacitor": "0x40AAe25992B0a734bEE0AB70bdd55D856aB498a2", - "decapacitor": "0xD999FAf610e1a18837965554AFd5aDf80a841CaC", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", + "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xA1A57BEdfCF75492Ee7CE8aB4D1B3E1A3837EF30", - "decapacitor": "0x8757Fd4c8CEEFB59ed4F69d841ca6Fa0C2744f0D", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", + "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "81457": { + "747474": { "FAST": { - "capacitor": "0xAe6b45e525e2cC18B1B613AA9BDa5E5C289B1b5a", - "decapacitor": "0xD864ba930F302F49EfA9142da6b9247A1e2b3cC4", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xa9D32248962b8675438d488bbb28974081Fd4779", - "decapacitor": "0x298a5bef4052B15E32d66D27Bfe7Fd3677f1aEf1", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } } - }, - "SocketSimulator": "0x78A93cf174642978015E245Df98Cf34B2977b197", - "SimulatorUtils": "0xC41A7A24CC415326195415ecF1AFfbAdFD808F70", - "SwitchboardSimulator": "0x36E06128dBFA24B2980CD4c8d4c63A93bFC2327B", - "CapacitorSimulator": "0x06eD6DeCed1A93b7F5e4B27de7Ceb814A9f696db", - "ExecutionManagerDF": "0x9e196dff347e2bB4116C4e409AA025d427eB8fC6", - "SafeL2": "0xB9a9268fB56286f6Cb8144751B08aCA991DB0cD0", - "SafeProxyFactory": "0x68b393f237478249e4fD37F78aff4862e9BffAb5", - "SocketSafeProxy": "0x3258A0AdFacBa80b53Ed79f4D2921cF2586d5063", - "MultiSigWrapper": "0x5a0e01ED2be962a16cF56DFb6C3F252adED4483c" + } }, "11155111": { "SignatureVerifier": "0x10d9DA6AE85eff6D582A91829f78bde2a3EC2dCC", @@ -14507,109 +15207,6 @@ "SafeProxyFactory": "0xDE418B9F4aCecC5b87B6f27BfFBaE8932473883e", "SocketSafeProxy": "0x40b29f0a58D92f4E3700C5302dE0f5a181321FA2" }, - "12227331": { - "SignatureVerifier": "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - "Hasher": "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - "CapacitorFactory": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - "Socket": "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - "ExecutionManager": "0xc317144DE60E6bC9455363bB09852C00bd14CD61", - "TransmitManager": "0xbDf50eAe568ECef74796ed6022a0d453e8432410", - "FastSwitchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d", - "OptimisticSwitchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65", - "SocketBatcher": "0xDC23842d47b80D88A549777eB1F33C2F47f253D0", - "Counter": "0x12E6e58864cE4402cF2B4B8a8E9c75eAD7280156", - "SocketSimulator": "0x6086c6451217241D8e42e134733A542095E13c47", - "SimulatorUtils": "0xb8c32878c69F4cC4705D0Bd99bca082C4eEFd76D", - "SwitchboardSimulator": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8", - "CapacitorSimulator": "0xefad130716e69Dd2C50518FC5F16e3d6B60D915E", - "startBlock": 656724, - "integrations": { - "11155111": { - "FAST": { - "capacitor": "0xB1ecD6D2d1f52D5Abed57431508733d51BB4Cd6B", - "decapacitor": "0x67e8D09fE657332e312e0d649500c09E8A8c3A2C", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" - }, - "OPTIMISTIC": { - "capacitor": "0x40AAe25992B0a734bEE0AB70bdd55D856aB498a2", - "decapacitor": "0xD999FAf610e1a18837965554AFd5aDf80a841CaC", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" - } - } - }, - "ExecutionManagerDF": "0xAC313d7491910516E06FBfC2A0b5BB49bb072D91" - }, - "12227332": { - "SignatureVerifier": "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - "Hasher": "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - "CapacitorFactory": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - "Socket": "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - "ExecutionManager": "0xc317144DE60E6bC9455363bB09852C00bd14CD61", - "TransmitManager": "0xbDf50eAe568ECef74796ed6022a0d453e8432410", - "FastSwitchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d", - "OptimisticSwitchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65", - "SocketBatcher": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e", - "Counter": "0xA7649aa944b7Dce781859C18913c2Dc8A97f03e4", - "SocketSimulator": "0x852C5DE08b9beB014caD171C16B12a8D7456ea3f", - "SimulatorUtils": "0x040993fbF458b95871Cd2D73Ee2E09F4AF6d56bB", - "SwitchboardSimulator": "0xBE51D38547992293c89CC589105784ab60b004A9", - "CapacitorSimulator": "0x22d71d05cB5747C7Aa60c96B82e0c1fA51306ba4", - "startBlock": 171800, - "integrations": { - "11155111": { - "FAST": { - "capacitor": "0xB1ecD6D2d1f52D5Abed57431508733d51BB4Cd6B", - "decapacitor": "0x67e8D09fE657332e312e0d649500c09E8A8c3A2C", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" - }, - "OPTIMISTIC": { - "capacitor": "0x40AAe25992B0a734bEE0AB70bdd55D856aB498a2", - "decapacitor": "0xD999FAf610e1a18837965554AFd5aDf80a841CaC", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" - } - } - }, - "ExecutionManagerDF": "0xAC313d7491910516E06FBfC2A0b5BB49bb072D91" - }, - "28122024": { - "SignatureVerifier": "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - "Hasher": "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - "CapacitorFactory": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - "Socket": "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - "ExecutionManager": "0xc317144DE60E6bC9455363bB09852C00bd14CD61", - "TransmitManager": "0xbDf50eAe568ECef74796ed6022a0d453e8432410", - "FastSwitchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d", - "OptimisticSwitchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65", - "SocketBatcher": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e", - "Counter": "0xd286595d2e3D879596FAB51f83A702D10a6db27b", - "startBlock": 568413, - "integrations": { - "421614": { - "FAST": { - "capacitor": "0xB1ecD6D2d1f52D5Abed57431508733d51BB4Cd6B", - "decapacitor": "0x67e8D09fE657332e312e0d649500c09E8A8c3A2C", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" - }, - "OPTIMISTIC": { - "capacitor": "0x8590b1DDb6a4A06145bF008e8e708A81f9fb53e6", - "decapacitor": "0x8DFD1D3b6EAF93dDf11AeC821a060e1bc4974CDf", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" - } - }, - "11155420": { - "FAST": { - "capacitor": "0x40AAe25992B0a734bEE0AB70bdd55D856aB498a2", - "decapacitor": "0xD999FAf610e1a18837965554AFd5aDf80a841CaC", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" - }, - "OPTIMISTIC": { - "capacitor": "0x8746E279A2Bb21e12e17d0121fb1Bbc57234c0b2", - "decapacitor": "0x37A00337dae8F2A02B4513ae0a5267EAaEB55621", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" - } - } - } - }, "89346162": { "SignatureVerifier": "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", "Hasher": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", @@ -14761,166 +15358,5 @@ "SafeProxyFactory": "0xC7952F73f1f4FF7F65b35d35CBCf2a8255da7438", "SocketSafeProxy": "0x5E20c0060078c3336D055230CCdda10A16784B4a", "MultiSigWrapper": "0x1BE2023b6E5C07c1205FB8e3E54E68262BF50E62" - }, - "1399904803": { - "SignatureVerifier": "0x03D51955216a7E6F301e0613515fA86A6f3d59A9", - "Hasher": "0x3D8F5700E0Bb2f5Ab3320c674E2B7046F85d0e1A", - "CapacitorFactory": "0x166953654e3b38C53A7e79B3813104AfABE63582", - "Socket": "0xf70180727AcdcE9Dd93A9cfb9b85aCF15aF3275A", - "ExecutionManager": "0x6fc8c27bAC62399478C974134D9e88EA71Ba162C", - "TransmitManager": "0x0777Ab388f065FC3CdB96008C701751827Ee171B", - "FastSwitchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE", - "OptimisticSwitchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9", - "Counter": "0x91C27Cad374246314E756f8Aa2f62F433d6F102C", - "integrations": { - "5": { - "FAST": { - "capacitor": "0x45C816e1631367D0aa1C9A6C1bd28A2CC1Ed990A", - "decapacitor": "0x95E72AE2cA45e20978C5FB76527B0A43E3199AF1", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0x55B531B1d09d655F1BE9E5C51D9038716FE47088", - "decapacitor": "0x01C383c1d40500CcbDfC824AE397a181ab21b226", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - }, - "420": { - "FAST": { - "capacitor": "0x893e93aC6FD092b79ac14e6af36fa58D2560cA8a", - "decapacitor": "0x7Ddc539a4A3157cd98D8ea988eD5cF407F6bdfe3", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0x7a5cFa0498dA8f3d051BD09DB16EC31542fBb7AC", - "decapacitor": "0x1806fA66239b5ccE5a23Db7c2299D8a92978b4b6", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - }, - "647": { - "FAST": { - "capacitor": "0x2355c3EbECC449097b6c3B35F1CE7e30C6AeF76d", - "decapacitor": "0x331faA1af2550b17eBB116aB832e4e840a9955e0", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0x4c3978EdE5A7C399fCc734Fe6Be6421c4003247F", - "decapacitor": "0x6d8CAe6b0917e507c828D04426911Eb5db594256", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - }, - "901": { - "FAST": { - "capacitor": "0xD501B6Fdb653235BEd2D3827CADda02D0243ff32", - "decapacitor": "0xe23AAB2d235e8e2F98B878529590c7d1DA8D299a", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0x6872ec6975cf0dB046cf9cdf99bB386259a610f0", - "decapacitor": "0x79b33D53B9341889Bb49410f692B62869f46cec3", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - }, - "421613": { - "FAST": { - "capacitor": "0xB00A9c1Cd506250C3eF313E2Db380afF5dF2eC61", - "decapacitor": "0xfF11a8D722fD620d29764F8d32F254A7D5aE5FAF", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0xABFb893B00f0b3587E7fafE4dc43B8e62a0b3D4F", - "decapacitor": "0x3a331c92be8F193A0255c26780E2f541385157f1", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - }, - "421614": { - "FAST": { - "capacitor": "0xdE716c3ACE656F682E215Cd2807695159DC8B657", - "decapacitor": "0x68E417487d4438009a6c33F30d5426784e4A52dA", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0xE348f13cb43A8e00C54e701262aaCc2e1882a4C0", - "decapacitor": "0x17A67adE00E4cC4fCDf473270F4451566C0B9D62", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - }, - "11155111": { - "FAST": { - "capacitor": "0xB2D233393123a22B0f01b7A06819746153F814bC", - "decapacitor": "0xa071872dfc981aD41cC9e79DF79B3dcf9CF01ee7", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0xDAD8E1F7432973846e58BED9ea51dE3167d3EC23", - "decapacitor": "0xf512B8c4292Df1e6D246aEf07D478d3Cd22F08dC", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - }, - "11155112": { - "FAST": { - "capacitor": "0x79B6aDF3bafB9B9293a4a4Bc9d1A6e03D5F1e5B0", - "decapacitor": "0x41EA91007E979391df7ec13240030a5a9271EfF8", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0xC3109d278e3b1f8a518A7d726D1Fd7021049C85c", - "decapacitor": "0x082c937E962502ecD881d22A5786Ed1Cefe15053", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - }, - "11155420": { - "FAST": { - "capacitor": "0x72c9Daf172b4112e1a0552a7d5a182967B06Faed", - "decapacitor": "0x5E819Ca2a974c356190609A59290C7Dd8baBcb15", - "switchboard": "0x2735d5B15066049a709e680b2D400155aA5A91BE" - }, - "OPTIMISTIC": { - "capacitor": "0x2B5dE5A78c03CC3e0f7a5550E6444fF118AAd5c0", - "decapacitor": "0x85B2C0844Ee6e337E7B18C03cd25C5eC7f6d9813", - "switchboard": "0x59AcE34e5c47aEe3ec8feF2A89DcF14Ac98538C9" - } - } - }, - "SocketBatcher": "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf" - }, - "2863311531": { - "SignatureVerifier": "0x6D290609b3F5F02D52F28d97C75a443ED8564cBf", - "Hasher": "0x2b42AFFD4b7C14d9B7C2579229495c052672Ccd3", - "CapacitorFactory": "0x8537307810fC40F4073A12a38554D4Ff78EfFf41", - "Socket": "0x565810cbfa3Cf1390963E5aFa2fB953795686339", - "ExecutionManager": "0xc317144DE60E6bC9455363bB09852C00bd14CD61", - "TransmitManager": "0xbDf50eAe568ECef74796ed6022a0d453e8432410", - "FastSwitchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d", - "OptimisticSwitchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65", - "SocketBatcher": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e", - "Counter": "0xd286595d2e3D879596FAB51f83A702D10a6db27b", - "startBlock": 6631541, - "integrations": { - "421614": { - "FAST": { - "capacitor": "0xB1ecD6D2d1f52D5Abed57431508733d51BB4Cd6B", - "decapacitor": "0x67e8D09fE657332e312e0d649500c09E8A8c3A2C", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" - }, - "OPTIMISTIC": { - "capacitor": "0x8590b1DDb6a4A06145bF008e8e708A81f9fb53e6", - "decapacitor": "0x8DFD1D3b6EAF93dDf11AeC821a060e1bc4974CDf", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" - } - }, - "11155420": { - "FAST": { - "capacitor": "0x40AAe25992B0a734bEE0AB70bdd55D856aB498a2", - "decapacitor": "0xD999FAf610e1a18837965554AFd5aDf80a841CaC", - "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" - }, - "OPTIMISTIC": { - "capacitor": "0x8746E279A2Bb21e12e17d0121fb1Bbc57234c0b2", - "decapacitor": "0x37A00337dae8F2A02B4513ae0a5267EAaEB55621", - "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" - } - } - } } } diff --git a/deployments/prod_verification.json b/deployments/prod_verification.json index 3ee48dd7..625a5165 100644 --- a/deployments/prod_verification.json +++ b/deployments/prod_verification.json @@ -3553,6 +3553,152 @@ ["0x5fD7D0d6b91CC4787Bcb86ca47e0Bd4ea0346d34"] ] ], + "4326": [ + [ + "0x10eC45De78BDfE26Cefb953F604E18BF70904FBa", + "SwitchboardSimulator", + "contracts/mocks/fee-updater/SwitchboardSimulator.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0xB152AC07a21966981fef9341DA3146f8e08e22bC", + 4326, + 1000, + "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + ] + ], + [ + "0x134633394c8Cef32a671B6Fed5e99b4B6466f4e4", + "SimulatorUtils", + "contracts/mocks/fee-updater/SimulatorUtils.sol", + [ + "0xB152AC07a21966981fef9341DA3146f8e08e22bC", + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 4326 + ] + ], + [ + "0xB152AC07a21966981fef9341DA3146f8e08e22bC", + "SocketSimulator", + "contracts/mocks/fee-updater/SocketSimulator.sol", + [ + 4326, + 4326, + "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "IMLI" + ] + ], + [ + "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", + "Counter", + "contracts/examples/Counter.sol", + ["0x525a6489a1df5fF1ae077fAf628E43b7F52298eF"] + ], + [ + "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", + "SocketBatcher", + "contracts/socket/SocketBatcher.sol", + ["0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836"] + ], + [ + "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + "OptimisticSwitchboard", + "contracts/switchboard/default-switchboards/OptimisticSwitchboard.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + 4326, + 7200, + "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + ] + ], + [ + "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472", + "FastSwitchboard", + "contracts/switchboard/default-switchboards/FastSwitchboard.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + 4326, + 7200, + "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + ] + ], + [ + "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E", + "TransmitManager", + "contracts/TransmitManager.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 4326, + "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + ] + ], + [ + "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8", + "ExecutionManagerDF", + "contracts/ExecutionManagerDF.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 4326, + "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + ] + ], + [ + "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + "Socket", + "contracts/socket/Socket.sol", + [ + 4326, + "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", + "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "IMLI" + ] + ], + [ + "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", + "CapacitorFactory", + "contracts/CapacitorFactory.sol", + ["0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", 10] + ], + [ + "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", + "Hasher", + "contracts/utils/Hasher.sol", + ["0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836"] + ], + [ + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "SignatureVerifier", + "contracts/utils/SignatureVerifier.sol", + ["0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836"] + ], + [ + "0xb4Ef469c9d8317851270346070dA0ecE24616E6b", + "MultiSigWrapper", + "contracts/utils/multisig/MultiSigWrapper.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0xd6b078f06d4e26eCc6405457d01F50656a1657c0" + ] + ], + [ + "0x1CAdCd88fC148D3966eDe75D029937C886f66009", + "SafeProxyFactory", + "contracts/utils/multisig/proxies/SafeProxyFactory.sol", + [] + ], + [ + "0xbe7241e9D11EC2D1Ac86CE217c4A37b7aD1701cE", + "SafeL2", + "contracts/utils/multisig/SafeL2.sol", + [] + ] + ], "5000": [ [ "0x4dC25D9d3ee57018998A50e912F40f6384947Ff5", @@ -8369,6 +8515,152 @@ ["0x5fD7D0d6b91CC4787Bcb86ca47e0Bd4ea0346d34"] ] ], + "5064014": [ + [ + "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", + "SwitchboardSimulator", + "contracts/mocks/fee-updater/SwitchboardSimulator.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + 5064014, + 1000, + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", + "SimulatorUtils", + "contracts/mocks/fee-updater/SimulatorUtils.sol", + [ + "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + "0x1CAdCd88fC148D3966eDe75D029937C886f66009", + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 5064014 + ] + ], + [ + "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + "SocketSimulator", + "contracts/mocks/fee-updater/SocketSimulator.sol", + [ + 5064014, + 5064014, + "0x9B8c323468AEC7A7Cb041CeD48F92559bFF33705", + "0x1CAdCd88fC148D3966eDe75D029937C886f66009", + "IMLI" + ] + ], + [ + "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472", + "Counter", + "contracts/examples/Counter.sol", + ["0x0CC93650bF4D98237628DACf87f94E443956D8dF"] + ], + [ + "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E", + "SocketBatcher", + "contracts/socket/SocketBatcher.sol", + ["0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836"] + ], + [ + "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8", + "OptimisticSwitchboard", + "contracts/switchboard/default-switchboards/OptimisticSwitchboard.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + 5064014, + 7200, + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + "FastSwitchboard", + "contracts/switchboard/default-switchboards/FastSwitchboard.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + 5064014, + 7200, + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", + "TransmitManager", + "contracts/TransmitManager.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 5064014, + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", + "ExecutionManagerDF", + "contracts/ExecutionManagerDF.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 5064014, + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "Socket", + "contracts/socket/Socket.sol", + [ + 5064014, + "0x9B8c323468AEC7A7Cb041CeD48F92559bFF33705", + "0xb4Ef469c9d8317851270346070dA0ecE24616E6b", + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "IMLI" + ] + ], + [ + "0xb4Ef469c9d8317851270346070dA0ecE24616E6b", + "CapacitorFactory", + "contracts/CapacitorFactory.sol", + ["0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", 10] + ], + [ + "0x9B8c323468AEC7A7Cb041CeD48F92559bFF33705", + "Hasher", + "contracts/utils/Hasher.sol", + ["0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836"] + ], + [ + "0x1CAdCd88fC148D3966eDe75D029937C886f66009", + "SignatureVerifier", + "contracts/utils/SignatureVerifier.sol", + ["0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836"] + ], + [ + "0xbe7241e9D11EC2D1Ac86CE217c4A37b7aD1701cE", + "MultiSigWrapper", + "contracts/utils/multisig/MultiSigWrapper.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0xcF9Cc7e577cFeB9e28ec5cc8dF330A95fFD1f357" + ] + ], + [ + "0x1F6bc87f3309B5D31Eb0BdaBE3ED7d3110d3B9c3", + "SafeProxyFactory", + "contracts/utils/multisig/proxies/SafeProxyFactory.sol", + [] + ], + [ + "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", + "SafeL2", + "contracts/utils/multisig/SafeL2.sol", + [] + ] + ], "11155111": [ [ "0xD3F39174Ee7937381e19d682FfEa40968266FA3E", diff --git a/docs/CHAIN_SPECIFIC_FEES.md b/docs/CHAIN_SPECIFIC_FEES.md new file mode 100644 index 00000000..18ee6e56 --- /dev/null +++ b/docs/CHAIN_SPECIFIC_FEES.md @@ -0,0 +1,234 @@ +# Chain-Specific Fee Collection + +This document explains how to collect extra fees for specific chain paths (e.g., to/from Reya) using existing Socket DL contract parameters without any code changes. + +## Overview + +Socket DL allows collecting additional fees for specific chains by adjusting existing fee parameters. This is useful for: + +- Charging premium fees for specific destination chains +- Collecting protocol fees for messages from specific source chains +- Implementing tiered pricing based on chain pairs + +## Recommended Parameter: `transmissionFees` (with single-message packets) + +If packets always contain exactly one message (`maxPacketLength = 1`), then transmission fees become per-message. That makes `transmissionFees` the cleanest mechanism for a flat surcharge with separate accounting. + +### Why `transmissionFees` is Best (when `maxPacketLength = 1`) + +| Criteria | overhead | verificationOverheadFees | transmissionFees | +| -------------------- | ------------------ | ------------------------ | ----------------------------------- | +| Per-message | ✅ Yes | ✅ Yes | ✅ Yes (with `maxPacketLength = 1`) | +| Per-destination | ✅ Yes | ✅ Yes | ✅ Yes | +| Easy to update | ⚠️ Struct | ⚠️ Two params | ✅ Single value | +| Separate accounting | ❌ Mixed with exec | ❌ Mixed with exec | ✅ Separate bucket | +| Batch update support | ✅ SocketBatcher | ❌ No batcher | ❌ No batcher | + +### How `transmissionFees` Works + +**Storage** ([ExecutionManagerDF.sol:166](../contracts/ExecutionManagerDF.sol#L166)): + +```solidity +mapping(address => mapping(uint32 => uint128)) public transmissionMinFees; +``` + +**Fee Calculation** ([ExecutionManagerDF.sol:350-358](../contracts/ExecutionManagerDF.sol#L350-L358)): + +```solidity +transmissionFees = + transmissionMinFees[transmitManager_][siblingChainSlug_] / maxPacketLength_; +``` + +With `maxPacketLength = 1`, `transmissionFees` equals the per-message surcharge. + +--- + +## Implementation Guide + +### Scenario: Charge $2 Extra for Messages TO and FROM Reya + +#### 1. Messages TO Reya (Inbound to Reya) + +On **each source chain's** `TransmitManager`, increase `transmissionFees` for Reya's chainSlug: + +```solidity +// Example: On Ethereum's TransmitManager +TransmitManager.setTransmissionFees( + nonce, + REYA_CHAIN_SLUG, // 1324967486 + currentTransmissionFees + surchargeInSourceNativeToken, + signature +); +``` + +**Off-chain calculation**: `surcharge = $2 / sourceChainNativeTokenPriceUSD` + +Example: If ETH = $2500, surcharge = 0.0008 ETH = 800000000000000 wei + +#### 2. Messages FROM Reya (Outbound from Reya) + +On **Reya's** `TransmitManager`, increase `transmissionFees` for ALL destination chains: + +```solidity +// On Reya's TransmitManager +TransmitManager.setTransmissionFees( + nonce, + DESTINATION_CHAIN_SLUG, // e.g., Ethereum = 1 + currentTransmissionFees + surchargeInReyaNativeToken, + signature +); +``` + +This must be done for each destination chain that Reya can send to. + +--- + +## Fee Flow Visualization + +``` +┌─────────────────────────────────────────────────────────────────┐ +│ TO DESTINATION CHAIN (surcharge) │ +├─────────────────────────────────────────────────────────────────┤ +│ │ +│ Source Chain A ──┐ │ +│ Source Chain B ──┼──► transmissionFees[DEST_SLUG] += $X ─► Dest│ +│ Source Chain C ──┘ (set on each source chain) │ +│ │ +└─────────────────────────────────────────────────────────────────┘ + +┌─────────────────────────────────────────────────────────────────┐ +│ FROM SOURCE CHAIN (surcharge) │ +├─────────────────────────────────────────────────────────────────┤ +│ │ +│ transmissionFees[DEST_A] += $X ──► Dest A │ +│ Source ─► transmissionFees[DEST_B] += $X ──► Dest B │ +│ transmissionFees[DEST_C] += $X ──► Dest C │ +│ (set on source chain's TransmitManager) │ +│ │ +└─────────────────────────────────────────────────────────────────┘ +``` + +--- + +## Batch Updates + +There is no batch setter for `transmissionFees`. Updates must be sent per destination chain. + +--- + +## Setter Function Details + +### TransmitManager.setTransmissionFees() + +**Location**: [contracts/TransmitManager.sol:94-126](../contracts/TransmitManager.sol#L94-L126) + +```solidity +function setTransmissionFees( + uint256 nonce_, + uint32 siblingChainSlug_, + uint128 transmissionFees_, + bytes calldata signature_ +) external +``` + +**Parameters**: + +- `nonce_`: Incrementing nonce for the fee updater (replay protection) +- `siblingChainSlug_`: Destination chain identifier +- `transmissionFees_`: Fee per packet (equals per-message when `maxPacketLength = 1`) +- `signature_`: Signature from `FEES_UPDATER_ROLE` holder + +**Signature Digest**: + +```solidity +keccak256(abi.encode( + FEES_UPDATE_SIG_IDENTIFIER, + address(this), // TransmitManager address + chainSlug, // Source chain slug + siblingChainSlug_, // Destination chain slug + nonce_, + transmissionFees_ +)) +``` + +--- + +## Where Surcharge Fees Go + +The surcharge added via `transmissionFees` becomes part of **transmission fees**: + +| Aspect | Details | +| ---------- | -------------------------------------------------------------------- | +| Storage | `totalExecutionAndTransmissionFees[chainSlug].totalTransmissionFees` | +| Withdrawal | `withdrawTransmissionFees(chainSlug, amount)` | +| Access | Requires `WITHDRAW_ROLE` | +| Recipient | Managed by `TransmitManager.withdrawFees()` | + +**Note**: Surcharge is combined with base transmission fees, but remains in a separate bucket from execution fees. + +--- + +## Off-Chain Service Requirements + +To maintain USD-denominated surcharges, the off-chain service needs to: + +1. **Track token prices**: Native token price in USD for each chain +2. **Calculate surcharge**: `surchargeWei = $USD_AMOUNT / nativeTokenPriceUSD * 1e18` +3. **Sign updates**: Generate signature using `FEES_UPDATER_ROLE` private key +4. **Submit transactions**: Call `setTransmissionFees()` per destination chain +5. **Update frequency**: When token price moves >X% (e.g., 5%) + +### Example Calculation + +```javascript +const USD_SURCHARGE = 2; // $2 +const ethPriceUSD = 2500; +const surchargeWei = BigInt((USD_SURCHARGE / ethPriceUSD) * 1e18); +// surchargeWei = 800000000000000n (0.0008 ETH) +``` + +--- + +## Alternative: Use verificationOverheadFees + +If you want surcharge fees to go to the **switchboard** instead of executors: + +```solidity +FastSwitchboard.setFees( + nonce, + DESTINATION_CHAIN_SLUG, + switchboardFees, // unchanged + verificationOverheadFees + surchargeAmount, // add surcharge here + signature +); +``` + +**Difference**: + +- `transmissionFees` → goes to transmission fees bucket → withdrawn by transmit manager +- `verificationOverheadFees` → goes to switchboard fees bucket → withdrawn by switchboard + +--- + +## Limitations + +1. **No batch setter**: Must update each destination chain separately +2. **Multi-chain updates**: TO a chain requires updates on all source chains +3. **Price volatility**: USD value fluctuates with native token price +4. **All destinations**: FROM a chain applies surcharge to all destinations equally + +--- + +## Summary + +| Use Case | Where to Set | Parameter | Function | +| ------------------------- | ----------------- | ------------------------------------- | ----------------------- | +| Charge extra TO Chain X | All source chains | `transmissionFees` for X's slug | `setTransmissionFees()` | +| Charge extra FROM Chain Y | Chain Y | `transmissionFees` for all dest slugs | `setTransmissionFees()` | +| Batch update | Any chain | N/A | N/A | + +**Key Files**: + +- [contracts/ExecutionManagerDF.sol](../contracts/ExecutionManagerDF.sol) - Fee storage +- [contracts/TransmitManager.sol](../contracts/TransmitManager.sol) - Transmission fee setters +- [contracts/interfaces/ITransmitManager.sol](../contracts/interfaces/ITransmitManager.sol) - Interface definitions diff --git a/docs/FEE_COLLECTION.md b/docs/FEE_COLLECTION.md new file mode 100644 index 00000000..4b19ed0f --- /dev/null +++ b/docs/FEE_COLLECTION.md @@ -0,0 +1,604 @@ +# Socket DL Fee Collection Mechanism + +This document explains how fees are collected, stored, and distributed across the Socket Data Layer protocol. + +## Overview + +When a user sends a cross-chain message via `Socket.outbound()`, they pay fees in the source chain's native token. These fees are split between three parties: + +1. **Executor** - Executes the message on the destination chain +2. **Transmitter** - Relays packet roots between chains +3. **Switchboard** - Verifies/attests packets (e.g., watchers in FastSwitchboard) + +All fees are collected and held in the **ExecutionManagerDF** contract, which acts as the central fee escrow. + +## Fee Flow Diagram + +``` +User calls Socket.outbound() with msg.value + │ + ▼ + SocketSrc._validateAndSendFees() + │ + ├── Gets switchboardFees from Switchboard.getMinFees() + │ + ▼ + ExecutionManagerDF.payAndCheckFees{value: msg.value}() + │ + ├── Calculates minimum execution fees + ├── Calculates transmission fees + ├── Validates msg.value >= total minimum fees + │ + ├── Stores executionFee in totalExecutionAndTransmissionFees[chainSlug].totalExecutionFees + ├── Stores transmissionFees in totalExecutionAndTransmissionFees[chainSlug].totalTransmissionFees + └── Stores switchboardFees in totalSwitchboardFees[switchboard][chainSlug] +``` + +## Fee Components + +### 1. Execution Fees + +Paid to executors for executing messages on the destination chain. + +**Calculation** ([ExecutionManagerDF.sol:342-361](contracts/ExecutionManagerDF.sol#L342-L361)): + +``` +executionFee = gasLimit * perGasCost + payloadSize * perByteCost + overhead +``` + +The `ExecutionFeesParam` struct contains: + +- `perGasCost` (uint80): Cost per unit of gas +- `perByteCost` (uint80): Cost per byte of payload (for rollup data costs) +- `overhead` (uint80): Fixed overhead cost + +**Additional**: If the message includes native token value transfer (`executionParams_` has non-zero paramType), additional fees are calculated using `relativeNativeTokenPrice` to convert destination token value to source chain terms. + +### 2. Transmission Fees + +Paid to transmitters for relaying packet roots. + +**Storage**: Set by `TransmitManager.setTransmissionFees()` which calls `ExecutionManager.setTransmissionMinFees()`. + +**Key Detail**: Transmission fees are **per packet**, so they are divided by `maxPacketLength` to get per-message cost: + +```solidity +transmissionFees = transmissionMinFees[transmitManager_][siblingChainSlug_] / maxPacketLength_; +``` + +### 3. Switchboard Fees + +Paid to switchboards for verification/attestation services. + +**Two components** ([SwitchboardBase.sol:53-56](contracts/switchboard/default-switchboards/SwitchboardBase.sol#L53-L56)): + +```solidity +struct Fees { + uint128 switchboardFees; // Paid to Switchboard per packet + uint128 verificationOverheadFees; // Paid to executor per message +} +``` + +**FastSwitchboard special handling** ([FastSwitchboard.sol:171-178](contracts/switchboard/default-switchboards/FastSwitchboard.sol#L171-L178)): + +- `switchboardFees` input is multiplied by `totalWatchers` before storage +- When watchers are added/removed, fees are proportionally adjusted + +## Fee Collection (Source Chain) + +### Entry Point: `SocketSrc.outbound()` + +1. User calls `outbound()` with `msg.value` containing total fees +2. `_validateAndSendFees()` is called which: + - Fetches `switchboardFees` and `verificationOverheadFees` from the switchboard + - Calls `ExecutionManagerDF.payAndCheckFees()` forwarding full `msg.value` + +### ExecutionManagerDF.payAndCheckFees() + +[ExecutionManagerDF.sol:216-273](contracts/ExecutionManagerDF.sol#L216-L273) + +```solidity +function payAndCheckFees(...) external payable returns (uint128 executionFee, uint128 transmissionFees) { + // 1. Calculate transmission fees (per-message portion) + transmissionFees = transmissionMinFees[transmitManager_][siblingChainSlug_] / maxPacketLength_; + + // 2. Calculate minimum execution fees + uint128 minMsgExecutionFees = _getMinFees(minMsgGasLimit_, payloadSize_, executionParams_, siblingChainSlug_); + uint128 minExecutionFees = minMsgExecutionFees + verificationOverheadFees_; + + // 3. Validate sufficient fees provided + if (msgValue < transmissionFees + switchboardFees_ + minExecutionFees) revert InsufficientFees(); + + // 4. Any extra fee beyond minimum goes to executor + executionFee = msgValue - transmissionFees - switchboardFees_; + + // 5. Store fees in respective buckets + totalExecutionAndTransmissionFees[siblingChainSlug_].totalExecutionFees += executionFee; + totalExecutionAndTransmissionFees[siblingChainSlug_].totalTransmissionFees += transmissionFees; + totalSwitchboardFees[switchboard_][siblingChainSlug_] += switchboardFees_; +} +``` + +**Important**: Any fees above the minimum are added to `executionFee`, incentivizing faster execution. + +## Fee Withdrawal + +All fees are held in ExecutionManagerDF until withdrawn. + +### Execution Fees Withdrawal + +[ExecutionManagerDF.sol:577-593](contracts/ExecutionManagerDF.sol#L577-L593) + +```solidity +function withdrawExecutionFees(uint32 siblingChainSlug_, uint128 amount_, address withdrawTo_) + external onlyRole(WITHDRAW_ROLE) +``` + +- Requires `WITHDRAW_ROLE` +- Transfers ETH directly to `withdrawTo_` address + +### Transmission Fees Withdrawal + +[ExecutionManagerDF.sol:623-638](contracts/ExecutionManagerDF.sol#L623-L638) + +```solidity +function withdrawTransmissionFees(uint32 siblingChainSlug_, uint128 amount_) external +``` + +- Callable by anyone (pulls to TransmitManager) +- Gets TransmitManager address from Socket +- Calls `TransmitManager.receiveFees()` which only accepts from ExecutionManager +- TransmitManager holds fees until `withdrawFees()` is called by `WITHDRAW_ROLE` + +### Switchboard Fees Withdrawal + +[ExecutionManagerDF.sol:600-614](contracts/ExecutionManagerDF.sol#L600-L614) + +```solidity +function withdrawSwitchboardFees(uint32 siblingChainSlug_, address switchboard_, uint128 amount_) external +``` + +- Callable by anyone (pulls to specified switchboard) +- Calls `Switchboard.receiveFees()` which only accepts from ExecutionManager +- Switchboard holds fees until `withdrawFees()` is called by `WITHDRAW_ROLE` + +## Fee Parameter Updates (Setter Functions) + +All fee parameters are updated via signed messages from addresses with `FEES_UPDATER_ROLE`. Each setter uses signature-based authentication with nonce tracking to prevent replay attacks. + +### 1. Execution Fees + +**Contract**: `ExecutionManagerDF` +**Function**: [setExecutionFees](contracts/ExecutionManagerDF.sol#L412-L441) + +```solidity +function setExecutionFees( + uint256 nonce_, + uint32 siblingChainSlug_, + ExecutionFeesParam calldata executionFees_, + bytes calldata signature_ +) external +``` + +**Parameters**: + +- `nonce_`: Incrementing nonce for the fee updater (prevents replay) +- `siblingChainSlug_`: Destination chain identifier +- `executionFees_`: Struct containing `{perGasCost, perByteCost, overhead}` +- `signature_`: Signature from `FEES_UPDATER_ROLE` holder + +**Signature Digest**: + +```solidity +keccak256(abi.encode( + FEES_UPDATE_SIG_IDENTIFIER, + address(this), // ExecutionManagerDF address + chainSlug, // Source chain slug + siblingChainSlug_, // Destination chain slug + nonce_, + executionFees_ +)) +``` + +**Storage Updated**: `executionFees[siblingChainSlug_] = executionFees_` + +--- + +### 2. Transmission Fees + +**Contract**: `TransmitManager` +**Function**: [setTransmissionFees](contracts/TransmitManager.sol#L94-L126) + +```solidity +function setTransmissionFees( + uint256 nonce_, + uint32 dstChainSlug_, + uint128 transmissionFees_, + bytes calldata signature_ +) external +``` + +**Parameters**: + +- `nonce_`: Incrementing nonce for the fee updater +- `dstChainSlug_`: Destination chain identifier +- `transmissionFees_`: Fee per packet (not per message) +- `signature_`: Signature from `FEES_UPDATER_ROLE` holder + +**Signature Digest**: + +```solidity +keccak256(abi.encode( + FEES_UPDATE_SIG_IDENTIFIER, + address(this), // TransmitManager address + chainSlug, // Source chain slug + dstChainSlug_, + nonce_, + transmissionFees_ +)) +``` + +**Internal Call**: After validation, calls `ExecutionManager.setTransmissionMinFees(dstChainSlug_, transmissionFees_)` + +**Storage Updated**: `transmissionMinFees[msg.sender][remoteChainSlug_] = fees_` (in ExecutionManagerDF) + +--- + +### 3. Switchboard Fees + +**Contract**: `FastSwitchboard` (or other switchboard implementations) +**Function**: [setFees](contracts/switchboard/default-switchboards/FastSwitchboard.sol#L143-L182) + +```solidity +function setFees( + uint256 nonce_, + uint32 dstChainSlug_, + uint128 switchboardFees_, + uint128 verificationOverheadFees_, + bytes calldata signature_ +) external +``` + +**Parameters**: + +- `nonce_`: Incrementing nonce for the fee updater +- `dstChainSlug_`: Destination chain identifier +- `switchboardFees_`: Fee per watcher (multiplied by `totalWatchers` before storage) +- `verificationOverheadFees_`: Additional fee paid to executor per message +- `signature_`: Signature from `FEES_UPDATER_ROLE` holder + +**Signature Digest**: + +```solidity +keccak256(abi.encode( + FEES_UPDATE_SIG_IDENTIFIER, + address(this), // Switchboard address + chainSlug, // Source chain slug + dstChainSlug_, + nonce_, + switchboardFees_, + verificationOverheadFees_ +)) +``` + +**Storage Updated**: + +```solidity +fees[dstChainSlug_] = Fees({ + switchboardFees: switchboardFees_ * totalWatchers[dstChainSlug_], + verificationOverheadFees: verificationOverheadFees_ +}) +``` + +**Note**: For FastSwitchboard, `switchboardFees_` input is per-watcher and gets multiplied by `totalWatchers[dstChainSlug_]` before storage. + +--- + +### 4. Relative Native Token Price + +**Contract**: `ExecutionManagerDF` +**Function**: [setRelativeNativeTokenPrice](contracts/ExecutionManagerDF.sol#L451-L483) + +```solidity +function setRelativeNativeTokenPrice( + uint256 nonce_, + uint32 siblingChainSlug_, + uint256 relativeNativeTokenPrice_, + bytes calldata signature_ +) external +``` + +**Parameters**: + +- `nonce_`: Incrementing nonce for the fee updater +- `siblingChainSlug_`: Destination chain identifier +- `relativeNativeTokenPrice_`: Price ratio = `(destTokenPriceUSD * 1e18) / srcTokenPriceUSD` +- `signature_`: Signature from `FEES_UPDATER_ROLE` holder + +**Signature Digest**: + +```solidity +keccak256(abi.encode( + RELATIVE_NATIVE_TOKEN_PRICE_UPDATE_SIG_IDENTIFIER, + address(this), + chainSlug, + siblingChainSlug_, + nonce_, + relativeNativeTokenPrice_ +)) +``` + +**Storage Updated**: `relativeNativeTokenPrice[siblingChainSlug_] = relativeNativeTokenPrice_` + +**Usage**: Used when `executionParams_` contains a non-zero msg value to convert destination chain value to source chain terms. + +--- + +### 5. Msg Value Min Threshold + +**Contract**: `ExecutionManagerDF` +**Function**: [setMsgValueMinThreshold](contracts/ExecutionManagerDF.sol#L492-L520) + +```solidity +function setMsgValueMinThreshold( + uint256 nonce_, + uint32 siblingChainSlug_, + uint256 msgValueMinThreshold_, + bytes calldata signature_ +) external +``` + +**Parameters**: + +- `nonce_`: Incrementing nonce for the fee updater +- `siblingChainSlug_`: Destination chain identifier +- `msgValueMinThreshold_`: Minimum native value that can be sent with a message +- `signature_`: Signature from `FEES_UPDATER_ROLE` holder + +**Signature Digest**: + +```solidity +keccak256(abi.encode( + MSG_VALUE_MIN_THRESHOLD_SIG_IDENTIFIER, + address(this), + chainSlug, + siblingChainSlug_, + nonce_, + msgValueMinThreshold_ +)) +``` + +**Storage Updated**: `msgValueMinThreshold[siblingChainSlug_] = msgValueMinThreshold_` + +--- + +### 6. Msg Value Max Threshold + +**Contract**: `ExecutionManagerDF` +**Function**: [setMsgValueMaxThreshold](contracts/ExecutionManagerDF.sol#L529-L557) + +```solidity +function setMsgValueMaxThreshold( + uint256 nonce_, + uint32 siblingChainSlug_, + uint256 msgValueMaxThreshold_, + bytes calldata signature_ +) external +``` + +**Parameters**: + +- `nonce_`: Incrementing nonce for the fee updater +- `siblingChainSlug_`: Destination chain identifier +- `msgValueMaxThreshold_`: Maximum native value that can be sent with a message +- `signature_`: Signature from `FEES_UPDATER_ROLE` holder + +**Signature Digest**: + +```solidity +keccak256(abi.encode( + MSG_VALUE_MAX_THRESHOLD_SIG_IDENTIFIER, + address(this), + chainSlug, + siblingChainSlug_, + nonce_, + msgValueMaxThreshold_ +)) +``` + +**Storage Updated**: `msgValueMaxThreshold[siblingChainSlug_] = msgValueMaxThreshold_` + +--- + +### Setter Functions Summary Table + +| Fee Component | Contract | Function | Sig Identifier | Storage Key | +| -------------------- | ------------------ | ------------------------------- | --------------------------------------------------- | ------------------------------------- | +| Execution Fees | ExecutionManagerDF | `setExecutionFees()` | `FEES_UPDATE_SIG_IDENTIFIER` | `executionFees[chainSlug]` | +| Transmission Fees | TransmitManager | `setTransmissionFees()` | `FEES_UPDATE_SIG_IDENTIFIER` | `transmissionMinFees[tm][chainSlug]` | +| Switchboard Fees | FastSwitchboard | `setFees()` | `FEES_UPDATE_SIG_IDENTIFIER` | `fees[chainSlug]` | +| Relative Token Price | ExecutionManagerDF | `setRelativeNativeTokenPrice()` | `RELATIVE_NATIVE_TOKEN_PRICE_UPDATE_SIG_IDENTIFIER` | `relativeNativeTokenPrice[chainSlug]` | +| Min Value Threshold | ExecutionManagerDF | `setMsgValueMinThreshold()` | `MSG_VALUE_MIN_THRESHOLD_SIG_IDENTIFIER` | `msgValueMinThreshold[chainSlug]` | +| Max Value Threshold | ExecutionManagerDF | `setMsgValueMaxThreshold()` | `MSG_VALUE_MAX_THRESHOLD_SIG_IDENTIFIER` | `msgValueMaxThreshold[chainSlug]` | + +### Nonce Management + +Each fee updater address has its own nonce tracked in `nextNonce[feesUpdater]`. The nonce must match exactly for the transaction to succeed: + +```solidity +if (nonce_ != nextNonce[feesUpdater]++) revert InvalidNonce(); +``` + +This prevents: + +- Replay attacks (same signature can't be used twice) +- Out-of-order execution (signatures must be submitted in sequence) + +## Fee Dependencies: Path vs Destination + +Understanding which fees depend on the full path (source → destination) versus just the destination chain is critical for fee configuration and optimization. + +### Dependency Summary Table + +| Fee Component | Dependency | Key(s) | Variability Factors | +| --------------------- | -------------------- | ---------------------------------------------------- | ----------------------------------------- | +| Execution Fees | **Destination only** | `executionFees[dstChainSlug]` | Gas prices, L2 data costs, chain overhead | +| Transmission Fees | **Path-dependent** | `transmissionMinFees[transmitManager][dstChainSlug]` | Transmitter costs for specific route | +| Switchboard Fees | **Path-dependent** | `fees[dstChainSlug]` (per switchboard instance) | Number of watchers, verification method | +| Verification Overhead | **Path-dependent** | `fees[dstChainSlug].verificationOverheadFees` | Switchboard-specific executor overhead | +| Relative Token Price | **Destination only** | `relativeNativeTokenPrice[dstChainSlug]` | Token price fluctuations | +| Msg Value Thresholds | **Destination only** | `msgValueMin/MaxThreshold[dstChainSlug]` | Risk parameters, liquidity | + +### Detailed Analysis + +#### 1. Execution Fees - Destination Only + +``` +Location: ExecutionManagerDF on SOURCE chain +Key: executionFees[destinationChainSlug] +``` + +**Why destination-only**: Execution fees represent the cost to execute on the destination chain. The source chain doesn't affect execution costs. + +**Variability Factors**: + +- `perGasCost`: Destination chain gas price (fluctuates with network congestion) +- `perByteCost`: L2 calldata costs (relevant for rollups like Arbitrum, Optimism) +- `overhead`: Fixed costs specific to destination chain (e.g., L1 data posting for rollups) + +**Update Frequency**: Should be updated frequently via off-chain cron to track gas prices. + +#### 2. Transmission Fees - Path Dependent + +``` +Location: ExecutionManagerDF on SOURCE chain +Key: transmissionMinFees[transmitManager][destinationChainSlug] +``` + +**Why path-dependent**: Different transmitters may operate different routes with varying costs. The mapping includes `transmitManager` address, allowing different fee structures per transmitter. + +**Variability Factors**: + +- Transmitter infrastructure costs for the specific route +- Gas costs on both source (sealing) and destination (proposing) chains +- Competition between transmitters + +**Note**: In practice, most deployments use a single TransmitManager, so this effectively becomes destination-dependent. + +#### 3. Switchboard Fees - Path Dependent (per Switchboard Instance) + +``` +Location: Switchboard contract on SOURCE chain +Key: fees[destinationChainSlug] +``` + +**Why path-dependent**: Each switchboard is a separate contract instance. A plug chooses which switchboard to use, and different switchboards have different fee structures. + +**Variability Factors for FastSwitchboard**: + +- **Number of watchers** (`totalWatchers[dstChainSlug]`): More watchers = higher fees + ```solidity + // Fee is per-watcher, multiplied by total watchers + switchboardFees = switchboardFees_ * totalWatchers[dstChainSlug_] + ``` +- Watcher operational costs +- Attestation infrastructure + +**Variability Factors for OptimisticSwitchboard**: + +- Timeout duration (longer timeout = lower fees, slower finality) +- Dispute resolution costs + +**Variability Factors for Native Switchboards** (Arbitrum, Optimism, Polygon): + +- Native bridge fees +- L1↔L2 messaging costs + +#### 4. Verification Overhead Fees - Path Dependent + +``` +Location: Switchboard contract on SOURCE chain +Key: fees[destinationChainSlug].verificationOverheadFees +``` + +**Why path-dependent**: This is an additional fee paid to executors for verification work, set by each switchboard independently. + +**Variability Factors**: + +- Proof verification gas costs on destination +- Switchboard-specific verification complexity + +#### 5. Relative Native Token Price - Destination Only + +``` +Location: ExecutionManagerDF on SOURCE chain +Key: relativeNativeTokenPrice[destinationChainSlug] +``` + +**Formula**: `(destNativeTokenPriceUSD * 1e18) / srcNativeTokenPriceUSD` + +**Why destination-only**: Converts value from source chain terms to destination chain terms. Only the destination chain's native token matters. + +**Variability Factors**: + +- Token price fluctuations (ETH, MATIC, BNB, etc.) +- Market volatility + +**Update Frequency**: Should be updated very frequently (every few minutes) during high volatility. + +#### 6. Msg Value Thresholds - Destination Only + +``` +Location: ExecutionManagerDF on SOURCE chain +Keys: msgValueMinThreshold[dstChainSlug], msgValueMaxThreshold[dstChainSlug] +``` + +**Why destination-only**: These are risk parameters for value transfers to the destination chain. + +**Variability Factors**: + +- Liquidity availability on destination +- Risk tolerance for the route +- Bridge capacity limits + +### Path Selection Impact on Fees + +When a plug connects to Socket, it specifies: + +1. **Inbound Switchboard**: Affects fees for receiving messages +2. **Outbound Switchboard**: Affects fees for sending messages +3. **Capacitor Type**: Affects `maxPacketLength` which divides transmission and switchboard fees + +``` +Per-message cost = (transmissionFees + switchboardFees) / maxPacketLength + executionFees + verificationOverheadFees +``` + +**Implication**: Higher `maxPacketLength` (batching more messages) reduces per-message transmission and switchboard costs, but increases latency. + +### Fee Configuration by Chain Type + +| Chain Type | perGasCost | perByteCost | overhead | Notes | +| --------------------- | ---------- | ----------- | -------- | --------------------- | +| L1 (Ethereum) | High | Low | Low | Gas-dominated | +| Optimistic Rollup | Medium | High | High | L1 data posting costs | +| ZK Rollup | Medium | Medium | High | Proof costs | +| Alt-L1 (BSC, Polygon) | Low | Low | Low | Cheap execution | + +## Storage Mappings Summary + +| Contract | Mapping | Purpose | +| ------------------ | ------------------------------------------------- | ------------------------------------------------------------ | +| ExecutionManagerDF | `totalExecutionAndTransmissionFees[chainSlug]` | Stores execution + transmission fees per chain | +| ExecutionManagerDF | `totalSwitchboardFees[switchboard][chainSlug]` | Stores switchboard fees per switchboard per chain | +| ExecutionManagerDF | `transmissionMinFees[transmitManager][chainSlug]` | Minimum transmission fee config | +| ExecutionManagerDF | `executionFees[chainSlug]` | Execution fee parameters (perGasCost, perByteCost, overhead) | +| ExecutionManagerDF | `relativeNativeTokenPrice[chainSlug]` | Price ratio for cross-chain value transfers | +| SwitchboardBase | `fees[dstChainSlug]` | Switchboard fee config per destination | + +## Security Considerations + +1. **Role-based access**: Withdrawal functions require specific roles (`WITHDRAW_ROLE`) +2. **Signature verification**: Fee updates require valid signatures from `FEES_UPDATER_ROLE` holders +3. **Nonce tracking**: Prevents replay attacks on fee update signatures +4. **Overflow protection**: Fees are capped at `uint128.max` +5. **Payload limits**: Max payload size of 5000 bytes prevents excessive fee calculation diff --git a/docs/S3_SURCHARGE_CONFIG.md b/docs/S3_SURCHARGE_CONFIG.md new file mode 100644 index 00000000..43fb45d4 --- /dev/null +++ b/docs/S3_SURCHARGE_CONFIG.md @@ -0,0 +1,305 @@ +# S3 Configuration for Chain-Specific Surcharges + +This document explains how to configure chain-specific USD surcharges in S3 to enable additional fees for transmission between specific chains. + +## Overview + +The fees-updater service reads a surcharge configuration from S3 at startup. This configuration allows you to add USD-denominated surcharges to transmission fees for specific chains. The surcharges are automatically converted to native token amounts based on real-time token prices. + +## S3 Configuration Location + +The configuration is stored in AWS Secrets Manager and loaded via S3: + +- **Path**: `/backend/{stage}/dl/fees-updater` +- **Stage**: `dev`, `prod`, or `surge` + +## Configuration Format + +Add a `chainSurchargeUsdBySlug` field to your S3 configuration JSON: + +```json +{ + "chainSurchargeUsdBySlug": { + "1324967486": 2, + "1": 1.5, + "42161": 1, + "10": 0.5 + } +} +``` + +### Field Specification + +- **Field name**: `chainSurchargeUsdBySlug` +- **Type**: Object/dictionary +- **Keys**: Chain slug as string (e.g., `"1"` for Ethereum, `"1324967486"` for Reya) +- **Values**: USD surcharge amount as number (float or integer) + +### Important Notes + +1. **Keys must be strings**: JSON keys are always strings, but they represent numeric chain slugs +2. **Values are in USD**: Not micro-USD, not wei - just regular USD amounts (e.g., `2` = $2.00) +3. **Optional field**: If omitted, no surcharges are applied +4. **Optional chains**: Chains not in the map have zero surcharge + +## Chain Slug Reference + +Common chain slugs: + +| Chain | Slug (as string) | +| ---------------- | ---------------- | +| Ethereum Mainnet | `"1"` | +| Arbitrum One | `"42161"` | +| Optimism | `"10"` | +| Polygon | `"137"` | +| Base | `"8453"` | +| BSC | `"56"` | +| Reya | `"1324967486"` | + +> **Tip**: Find all supported chain slugs in the `@socket.tech/dl-core` package or your existing S3 config under the `chains` field. + +## How Surcharges are Applied + +### Additive Logic + +For each transmission from source chain to destination chain: + +``` +Total Surcharge (USD) = surcharge[sourceChainSlug] + surcharge[destinationChainSlug] +``` + +### Examples + +#### Example 1: TO Reya surcharge only + +```json +{ + "chainSurchargeUsdBySlug": { + "1324967486": 2 + } +} +``` + +- **Ethereum → Reya**: $2 surcharge (from Reya's entry) +- **Arbitrum → Reya**: $2 surcharge (from Reya's entry) +- **Reya → Ethereum**: $2 surcharge (from Reya's entry) +- **Ethereum → Arbitrum**: $0 surcharge (neither chain in config) + +#### Example 2: FROM and TO surcharges + +```json +{ + "chainSurchargeUsdBySlug": { + "1324967486": 2, + "1": 1.5 + } +} +``` + +- **Ethereum → Reya**: $3.50 surcharge ($1.50 from Ethereum + $2 from Reya) +- **Reya → Ethereum**: $3.50 surcharge ($2 from Reya + $1.50 from Ethereum) +- **Ethereum → Arbitrum**: $1.50 surcharge ($1.50 from Ethereum) +- **Arbitrum → Reya**: $2 surcharge ($2 from Reya) +- **Arbitrum → Optimism**: $0 surcharge (neither chain in config) + +#### Example 3: Multiple chain surcharges + +```json +{ + "chainSurchargeUsdBySlug": { + "1324967486": 2, + "1": 1.5, + "42161": 1, + "10": 0.5 + } +} +``` + +- **Ethereum → Reya**: $3.50 ($1.50 + $2) +- **Arbitrum → Optimism**: $1.50 ($1 + $0.50) +- **Reya → Arbitrum**: $3 ($2 + $1) + +## USD to Native Token Conversion + +The service automatically converts USD surcharges to native token amounts: + +1. **Token prices**: Fetched from CoinGecko and stored in `usdPriceMap` (micro-USD integers) +2. **Conversion formula**: + ``` + surchargeWei = (totalSurchargeUSD * 1e6) * 1e18 / srcNativeTokenPriceMicroUSD + ``` +3. **Updates**: Surcharges are recalculated on every fee update cycle using current prices + +### Conversion Example + +If ETH = $2,500 and you configure a $2 surcharge: + +``` +surchargeWei = (2 * 1,000,000) * 1e18 / 2,500,000,000 + = 2,000,000 * 1e18 / 2,500,000,000 + = 800,000,000,000,000 wei + = 0.0008 ETH +``` + +## Deployment Steps + +### 1. Update S3 Configuration + +Add the `chainSurchargeUsdBySlug` field to your S3 config: + +```bash +# Example for dev stage +aws secretsmanager update-secret \ + --secret-id /backend/dev/dl/fees-updater \ + --secret-string '{ + "chainSurchargeUsdBySlug": { + "1324967486": 2, + "1": 1.5 + }, + ... (other existing config fields) + }' +``` + +### 2. Deploy or Restart Service + +The configuration is loaded at service initialization: + +```bash +# Deploy to reload config +yarn deploy:dev + +# OR restart existing deployment +# (if using serverless offline or similar) +``` + +### 3. Verify Configuration + +Check logs for successful config load: + +``` +[INFO] Loaded chain surcharge config: 2 chains with surcharges +``` + +### 4. Monitor Surcharge Application + +Look for surcharge logs in transmission fee updates: + +``` +[INFO] transmitFees-surcharge: Ethereum-Reya + surcharge native: 800000000000000 +``` + +## Testing Configuration + +### Local Testing + +1. Update your local S3 config file +2. Start serverless offline: + ```bash + yarn start:dev + ``` +3. Invoke the transmit fees updater: + ```bash + npx sls invoke local -s dev -f transmitFeesUpdater + ``` +4. Check logs for surcharge application + +### API Verification + +Query the calculated fees API to verify surcharges are included: + +```bash +curl https://your-api-endpoint/current-fees +``` + +The `transmitFees` values should reflect the added surcharge. + +## Troubleshooting + +### Surcharges Not Applied + +**Problem**: Logs show zero surcharge when expected + +**Possible causes**: + +1. Chain slug mismatch (verify exact chain slug in S3 config) +2. Token price missing in `usdPriceMap` +3. Configuration not reloaded (restart service) + +**Solution**: Check logs for: + +``` +[INFO] Loaded chain surcharge config: X chains with surcharges +``` + +### Incorrect Surcharge Amount + +**Problem**: Applied surcharge doesn't match expected USD value + +**Possible causes**: + +1. Token price changed between config and execution +2. Wrong token price in `usdPriceMap` + +**Solution**: + +- Surcharges are recalculated each cycle based on current prices +- Verify token price: check CoinGecko API response in logs + +### Configuration Syntax Error + +**Problem**: Service fails to start after config update + +**Possible causes**: + +1. Invalid JSON syntax +2. Non-numeric chain slugs +3. Non-numeric surcharge values + +**Solution**: + +- Validate JSON syntax before updating S3 +- Ensure chain slugs are string representations of numbers +- Ensure surcharge values are numbers, not strings + +## Example Complete Configuration + +```json +{ + "chainSurchargeUsdBySlug": { + "1324967486": 2, + "1": 1.5 + }, + "addresses": { + "TransmitManager": "0x...", + "ExecutionManager": "0x..." + }, + "chains": { + "1": { + "rpc": "https://...", + "nativeToken": "ETH" + }, + "1324967486": { + "rpc": "https://...", + "nativeToken": "REYA" + } + }, + "DELTA_THRESHOLD": 30, + "FEE_BUMP_PERCENTAGE": 10 +} +``` + +## Related Documentation + +- [CHAIN_SPECIFIC_FEES.md](./CHAIN_SPECIFIC_FEES.md) - Technical implementation details +- [README.md](../README.md) - General project documentation +- S3 config schema (to be created) + +## Support + +If you encounter issues: + +1. Check service logs for error messages +2. Verify S3 configuration syntax +3. Ensure chain slugs match exactly +4. Confirm token prices are available in `usdPriceMap` diff --git a/scripts/admin/decode-execute-calldata.ts b/scripts/admin/decode-execute-calldata.ts new file mode 100644 index 00000000..43ee98a1 --- /dev/null +++ b/scripts/admin/decode-execute-calldata.ts @@ -0,0 +1,219 @@ +import { ethers } from "ethers"; +import SocketArtifact from "../../out/Socket.sol/Socket.json"; + +const calldata1 = + "0x275c41c9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000a4b129ebc834d24af22b9466a4150425354998c3e800000000000000cbe600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041a20c9a07a47f49b70e42f8aad9c3990f6393f4d068bb825ee6e59dc7eff95cff6e38a2a151d7f55df20af5339c8d5e7b7aadbddee6fbbb760f8ea957de8c72771b000000000000000000000000000000000000000000000000000000000000000000a4b126e5ce884875ea3776a57f0b225b1ea8d2e9beeb00000000000608cb000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000400000000000000000000000008cb4c89cc297e07c7a309af8b16cc2f5f62a3b1300000000000000000000000000000000000000000000000000000000062ebe4d"; + +const calldata2 = + "0x275c41c9000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000001800000a4b129ebc834d24af22b9466a4150425354998c3e800000000000000cbe600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030d4000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000418bcb00358fcd84308ba164116edb8d4e38edee4a72ebada016feb4188baedbb23e411b394c91fccf6dce30b21a5ecdb12d747df590d9ccd804803210373c23071c000000000000000000000000000000000000000000000000000000000000000000a4b126e5ce884875ea3776a57f0b225b1ea8d2e9beeb00000000000608cb0000000000000000000000000000000000000000000000000000007cedc515b500000000000000000000000000000000000000000000000000000000000186a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000400000000000000000000000008cb4c89cc297e07c7a309af8b16cc2f5f62a3b1300000000000000000000000000000000000000000000000000000000062ebe4d"; + +const socketInterface = new ethers.utils.Interface(SocketArtifact.abi); + +console.log("=== CALLDATA 1 ===\n"); +try { + const decoded1 = socketInterface.decodeFunctionData("execute", calldata1); + console.log("ExecutionDetails:"); + console.log(" packetId:", decoded1.executionDetails_.packetId); + console.log( + " proposalCount:", + decoded1.executionDetails_.proposalCount.toString() + ); + console.log( + " executionGasLimit:", + decoded1.executionDetails_.executionGasLimit.toString() + ); + console.log( + " decapacitorProof:", + decoded1.executionDetails_.decapacitorProof + ); + console.log(" signature:", decoded1.executionDetails_.signature); + console.log("\nMessageDetails:"); + console.log(" msgId:", decoded1.messageDetails_.msgId); + console.log( + " executionFee:", + decoded1.messageDetails_.executionFee.toString() + ); + console.log( + " minMsgGasLimit:", + decoded1.messageDetails_.minMsgGasLimit.toString() + ); + console.log(" executionParams:", decoded1.messageDetails_.executionParams); + console.log(" payload:", decoded1.messageDetails_.payload); +} catch (e: any) { + console.error("Error decoding:", e.message); +} + +console.log("\n=== CALLDATA 2 ===\n"); +try { + const decoded2 = socketInterface.decodeFunctionData("execute", calldata2); + console.log("ExecutionDetails:"); + console.log(" packetId:", decoded2.executionDetails_.packetId); + console.log( + " proposalCount:", + decoded2.executionDetails_.proposalCount.toString() + ); + console.log( + " executionGasLimit:", + decoded2.executionDetails_.executionGasLimit.toString() + ); + console.log( + " decapacitorProof:", + decoded2.executionDetails_.decapacitorProof + ); + console.log(" signature:", decoded2.executionDetails_.signature); + console.log("\nMessageDetails:"); + console.log(" msgId:", decoded2.messageDetails_.msgId); + console.log( + " executionFee:", + decoded2.messageDetails_.executionFee.toString() + ); + console.log( + " minMsgGasLimit:", + decoded2.messageDetails_.minMsgGasLimit.toString() + ); + console.log(" executionParams:", decoded2.messageDetails_.executionParams); + console.log(" payload:", decoded2.messageDetails_.payload); +} catch (e: any) { + console.error("Error decoding:", e.message); +} + +console.log("\n=== DIFFERENCES ===\n"); +try { + const decoded1 = socketInterface.decodeFunctionData("execute", calldata1); + const decoded2 = socketInterface.decodeFunctionData("execute", calldata2); + + // Compare ExecutionDetails + if ( + decoded1.executionDetails_.packetId !== decoded2.executionDetails_.packetId + ) { + console.log("❌ packetId differs"); + console.log(" Calldata 1:", decoded1.executionDetails_.packetId); + console.log(" Calldata 2:", decoded2.executionDetails_.packetId); + } else { + console.log("✓ packetId matches"); + } + + if ( + !decoded1.executionDetails_.proposalCount.eq( + decoded2.executionDetails_.proposalCount + ) + ) { + console.log("❌ proposalCount differs"); + console.log( + " Calldata 1:", + decoded1.executionDetails_.proposalCount.toString() + ); + console.log( + " Calldata 2:", + decoded2.executionDetails_.proposalCount.toString() + ); + } else { + console.log("✓ proposalCount matches"); + } + + if ( + !decoded1.executionDetails_.executionGasLimit.eq( + decoded2.executionDetails_.executionGasLimit + ) + ) { + console.log("❌ executionGasLimit differs"); + console.log( + " Calldata 1:", + decoded1.executionDetails_.executionGasLimit.toString() + ); + console.log( + " Calldata 2:", + decoded2.executionDetails_.executionGasLimit.toString() + ); + } else { + console.log("✓ executionGasLimit matches"); + } + + if ( + decoded1.executionDetails_.decapacitorProof !== + decoded2.executionDetails_.decapacitorProof + ) { + console.log("❌ decapacitorProof differs"); + console.log(" Calldata 1:", decoded1.executionDetails_.decapacitorProof); + console.log(" Calldata 2:", decoded2.executionDetails_.decapacitorProof); + } else { + console.log("✓ decapacitorProof matches"); + } + + if ( + decoded1.executionDetails_.signature !== + decoded2.executionDetails_.signature + ) { + console.log("❌ signature differs"); + console.log(" Calldata 1:", decoded1.executionDetails_.signature); + console.log(" Calldata 2:", decoded2.executionDetails_.signature); + } else { + console.log("✓ signature matches"); + } + + // Compare MessageDetails + if (decoded1.messageDetails_.msgId !== decoded2.messageDetails_.msgId) { + console.log("❌ msgId differs"); + console.log(" Calldata 1:", decoded1.messageDetails_.msgId); + console.log(" Calldata 2:", decoded2.messageDetails_.msgId); + } else { + console.log("✓ msgId matches"); + } + + if ( + !decoded1.messageDetails_.executionFee.eq( + decoded2.messageDetails_.executionFee + ) + ) { + console.log("❌ executionFee differs"); + console.log( + " Calldata 1:", + decoded1.messageDetails_.executionFee.toString() + ); + console.log( + " Calldata 2:", + decoded2.messageDetails_.executionFee.toString() + ); + } else { + console.log("✓ executionFee matches"); + } + + if ( + !decoded1.messageDetails_.minMsgGasLimit.eq( + decoded2.messageDetails_.minMsgGasLimit + ) + ) { + console.log("❌ minMsgGasLimit differs"); + console.log( + " Calldata 1:", + decoded1.messageDetails_.minMsgGasLimit.toString() + ); + console.log( + " Calldata 2:", + decoded2.messageDetails_.minMsgGasLimit.toString() + ); + } else { + console.log("✓ minMsgGasLimit matches"); + } + + if ( + decoded1.messageDetails_.executionParams !== + decoded2.messageDetails_.executionParams + ) { + console.log("❌ executionParams differs"); + console.log(" Calldata 1:", decoded1.messageDetails_.executionParams); + console.log(" Calldata 2:", decoded2.messageDetails_.executionParams); + } else { + console.log("✓ executionParams matches"); + } + + if (decoded1.messageDetails_.payload !== decoded2.messageDetails_.payload) { + console.log("❌ payload differs"); + console.log(" Calldata 1:", decoded1.messageDetails_.payload); + console.log(" Calldata 2:", decoded2.messageDetails_.payload); + } else { + console.log("✓ payload matches"); + } +} catch (e: any) { + console.error("Error comparing:", e.message); +} diff --git a/scripts/admin/get-gas-info.ts b/scripts/admin/get-gas-info.ts new file mode 100644 index 00000000..956641e3 --- /dev/null +++ b/scripts/admin/get-gas-info.ts @@ -0,0 +1,165 @@ +import { createReadStream } from "fs"; +import { parse } from "csv-parse"; +import { ethers } from "ethers"; + +/** + * Script to fetch gas limit and gas used for transactions from txs.csv + * + * Usage: ts-node scripts/admin/get-gas-info.ts + */ + +interface TxData { + transactionHash: string; + chainId: string; + chain: string; +} + +interface GasInfo { + transactionHash: string; + chainId: string; + chain: string; + gasLimit: string; + gasUsed: string; + gasEfficiency: string; // percentage of gas used vs limit +} + +// Configure RPC providers for each chain +const getRpcUrl = (chainId: string): string => { + const rpcUrls: Record = { + "9745": process.env.PLASMA_RPC || "https://rpc.plasma.to/", // Plasma + // Add more chains as needed + }; + + return rpcUrls[chainId] || ""; +}; + +const getProvider = ( + chainId: string +): ethers.providers.JsonRpcProvider | null => { + const rpcUrl = getRpcUrl(chainId); + if (!rpcUrl) { + console.warn(`No RPC URL configured for chainId ${chainId}`); + return null; + } + return new ethers.providers.JsonRpcProvider(rpcUrl); +}; + +const fetchGasInfo = async ( + txHash: string, + chainId: string +): Promise<{ gasLimit: bigint; gasUsed: bigint } | null> => { + const provider = getProvider(chainId); + if (!provider) { + return null; + } + + try { + const receipt = await provider.getTransactionReceipt(txHash); + if (!receipt) { + console.warn(`Transaction receipt not found for ${txHash}`); + return null; + } + + const tx = await provider.getTransaction(txHash); + if (!tx) { + console.warn(`Transaction not found for ${txHash}`); + return null; + } + + return { + gasLimit: BigInt(tx.gasLimit.toNumber()), + gasUsed: BigInt(receipt.gasUsed.toNumber()), + }; + } catch (error) { + console.error(`Error fetching gas info for ${txHash}:`, error); + return null; + } +}; + +const main = async () => { + const txs: TxData[] = []; + const gasInfos: GasInfo[] = []; + + // Read CSV file + const parser = createReadStream("txs.csv").pipe( + parse({ + columns: true, + skip_empty_lines: true, + }) + ); + + for await (const record of parser) { + txs.push({ + transactionHash: record["Transaction Hash"], + chainId: record["ChainId"], + chain: record["Chain"], + }); + } + + console.log(`Found ${txs.length} transactions in CSV\n`); + + // Fetch gas info for each transaction + for (let i = 0; i < txs.length; i++) { + const tx = txs[i]; + console.log( + `Processing ${i + 1}/${txs.length}: ${tx.transactionHash} on ${tx.chain}` + ); + + const gasInfo = await fetchGasInfo(tx.transactionHash, tx.chainId); + + if (gasInfo) { + const efficiency = ( + (Number(gasInfo.gasUsed) / Number(gasInfo.gasLimit)) * + 100 + ).toFixed(2); + + gasInfos.push({ + transactionHash: tx.transactionHash, + chainId: tx.chainId, + chain: tx.chain, + gasLimit: gasInfo.gasLimit.toString(), + gasUsed: gasInfo.gasUsed.toString(), + gasEfficiency: efficiency, + }); + + console.log(` Gas Limit: ${gasInfo.gasLimit.toString()}`); + console.log(` Gas Used: ${gasInfo.gasUsed.toString()}`); + console.log(` Efficiency: ${efficiency}%\n`); + } else { + console.log(` Failed to fetch gas info\n`); + } + } + + // Print summary + console.log("\n=== Summary ==="); + console.log(`Total transactions: ${txs.length}`); + console.log(`Successfully fetched: ${gasInfos.length}`); + console.log(`Failed: ${txs.length - gasInfos.length}`); + + if (gasInfos.length > 0) { + const avgEfficiency = + gasInfos.reduce((sum, info) => sum + parseFloat(info.gasEfficiency), 0) / + gasInfos.length; + console.log(`Average gas efficiency: ${avgEfficiency.toFixed(2)}%`); + + const totalGasUsed = gasInfos.reduce( + (sum, info) => sum + BigInt(info.gasUsed), + BigInt(0) + ); + const totalGasLimit = gasInfos.reduce( + (sum, info) => sum + BigInt(info.gasLimit), + BigInt(0) + ); + console.log(`Total gas used: ${totalGasUsed.toString()}`); + console.log(`Total gas limit: ${totalGasLimit.toString()}`); + } + + console.log("\nScript completed."); +}; + +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/admin/get-outbound-txs.ts b/scripts/admin/get-outbound-txs.ts index b5426808..3febc662 100644 --- a/scripts/admin/get-outbound-txs.ts +++ b/scripts/admin/get-outbound-txs.ts @@ -112,7 +112,11 @@ export const main = async () => { const CHUNK_SIZE = 5000; const messageAddedEvents = []; - for (let currentBlock = fromBlock; currentBlock <= toBlock; currentBlock += CHUNK_SIZE) { + for ( + let currentBlock = fromBlock; + currentBlock <= toBlock; + currentBlock += CHUNK_SIZE + ) { const chunkEnd = Math.min(currentBlock + CHUNK_SIZE - 1, toBlock); console.log(`Querying chunk: ${currentBlock} to ${chunkEnd}`); diff --git a/scripts/admin/get-seal-events.ts b/scripts/admin/get-seal-events.ts index 4307cbab..0ea3609a 100644 --- a/scripts/admin/get-seal-events.ts +++ b/scripts/admin/get-seal-events.ts @@ -112,7 +112,11 @@ export const main = async () => { const CHUNK_SIZE = 5000; const sealedEvents = []; - for (let currentBlock = fromBlock; currentBlock <= toBlock; currentBlock += CHUNK_SIZE) { + for ( + let currentBlock = fromBlock; + currentBlock <= toBlock; + currentBlock += CHUNK_SIZE + ) { const chunkEnd = Math.min(currentBlock + CHUNK_SIZE - 1, toBlock); console.log(`Querying chunk: ${currentBlock} to ${chunkEnd}`); diff --git a/scripts/admin/rescueFunds.ts b/scripts/admin/rescueFunds.ts index 437d353c..696ed014 100644 --- a/scripts/admin/rescueFunds.ts +++ b/scripts/admin/rescueFunds.ts @@ -18,6 +18,7 @@ import { import { formatEther } from "ethers/lib/utils"; import { getSocketSigner } from "../deploy/utils/socket-signer"; import { deploymentMode } from "../rpcConfig/rpcConfig"; +import { batcherSupportedChainSlugs } from "../rpcConfig/constants/batcherSupportedChainSlug"; /** * Usable flags @@ -68,6 +69,10 @@ const maxRescueAmount = ethers.utils.parseEther( process.env.npm_config_amount || "0" ); +const safeChains = (process.env.SAFE_CHAINS || "") + .split(",") + .map((c) => parseInt(c) as ChainSlug); + const ETH_ADDRESS = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"; const rescueFundsABI = [ { @@ -139,14 +144,17 @@ export const main = async () => { // parallelize chains await Promise.all( activeChainSlugs - .filter((c) => filterChains.includes(c)) + .filter( + (c) => + filterChains.includes(c) && + batcherSupportedChainSlugs.includes(parseInt(c)) + ) .map(async (chainSlug) => { let chainAddresses: ChainSocketAddresses = addresses[chainSlug]; if (!chainAddresses) { console.log("addresses not found for ", chainSlug, chainAddresses); return; } - const providerInstance = getProviderFromChainSlug( parseInt(chainSlug) as ChainSlug ); @@ -154,7 +162,10 @@ export const main = async () => { const signer = await getSocketSigner( parseInt(chainSlug), chainAddresses, - chainAddresses["SocketSafeProxy"] ? true : false, + chainAddresses["SocketSafeProxy"] && + safeChains.includes(parseInt(chainSlug)) + ? true + : false, true ); diff --git a/scripts/admin/send-attest.ts b/scripts/admin/send-attest.ts index d7a32f3b..cc5809e0 100644 --- a/scripts/admin/send-attest.ts +++ b/scripts/admin/send-attest.ts @@ -91,7 +91,9 @@ export const main = async () => { const sourceChain = sourceChainSlug; const destinationChain = destinationChainSlug; - console.log(`\nProcessing attest for path: ${sourceChain} -> ${destinationChain}\n`); + console.log( + `\nProcessing attest for path: ${sourceChain} -> ${destinationChain}\n` + ); // Get addresses from prod_addresses.json const destinationAddresses = addresses[destinationChain]; @@ -139,7 +141,13 @@ export const main = async () => { const messageHash = keccak256( defaultAbiCoder.encode( ["address", "uint32", "bytes32", "uint256", "bytes32"], - [switchboardAddress, parseInt(destinationChain), packetId, proposalCount, root] + [ + switchboardAddress, + parseInt(destinationChain), + packetId, + proposalCount, + root, + ] ) ); @@ -147,11 +155,15 @@ export const main = async () => { // Sign with KMS console.log("\nSigning with AWS KMS..."); - const signature = await kmsSigner.signMessage(ethers.utils.arrayify(messageHash)); + const signature = await kmsSigner.signMessage( + ethers.utils.arrayify(messageHash) + ); console.log("Signature:", signature); // Prepare transaction data - const switchboardInterface = new ethers.utils.Interface(FastSwitchboardArtifact.abi); + const switchboardInterface = new ethers.utils.Interface( + FastSwitchboardArtifact.abi + ); const calldata = switchboardInterface.encodeFunctionData("attest", [ packetId, proposalCount, @@ -193,7 +205,9 @@ export const main = async () => { console.log("Gas used:", receipt.gasUsed.toString()); } else { console.log("To send the attest transaction, add --sendtx flag"); - console.log("You can use the transaction details above to manually send, simulate, or audit the transaction."); + console.log( + "You can use the transaction details above to manually send, simulate, or audit the transaction." + ); } console.log("\nScript completed."); diff --git a/scripts/admin/send-execute.ts b/scripts/admin/send-execute.ts index a6c912e5..8c16c613 100644 --- a/scripts/admin/send-execute.ts +++ b/scripts/admin/send-execute.ts @@ -5,7 +5,7 @@ import { getAllAddresses, getOverrides, } from "../../src"; -import { mode, overrides } from "../deploy/config/config"; +import { mode } from "../deploy/config/config"; import SocketArtifact from "../../out/Socket.sol/Socket.json"; import { getProviderFromChainSlug } from "../constants"; import { ethers, Wallet } from "ethers"; @@ -16,22 +16,32 @@ dotenvConfig(); /** * Usage * - * --destination Specify the destination chain slug where execute will be called. + * --sourcetxhash Specify the source transaction hash containing the MessageOutbound event. * This flag is required. - * Eg. npx --destination=10 --kmskeyid=abc-123 ts-node scripts/admin/send-execute.ts + * Eg. npx --sourcetxhash=0x123... --kmskeyid=abc-123 ts-node scripts/admin/send-execute.ts * * --kmskeyid Specify the AWS KMS key ID for executor signature. * This flag is required. * + * --packetid Specify the packet ID for execution (optional, defaults to 0x00...00). + * Eg. npx --sourcetxhash=0x123... --kmskeyid=abc-123 --packetid=0xabc... ts-node scripts/admin/send-execute.ts + * + * --proposalcount Specify the proposal count (optional, defaults to 0). + * Eg. npx --sourcetxhash=0x123... --kmskeyid=abc-123 --proposalcount=1 ts-node scripts/admin/send-execute.ts + * + * --gaslimit Specify the execution gas limit (optional, defaults to 500000). + * Eg. npx --sourcetxhash=0x123... --kmskeyid=abc-123 --gaslimit=200000 ts-node scripts/admin/send-execute.ts + * * --sendtx Send execute tx along with signature generation. * Default is only generate and display signature. - * Eg. npx --destination=10 --kmskeyid=abc-123 --sendtx ts-node scripts/admin/send-execute.ts + * Eg. npx --sourcetxhash=0x123... --kmskeyid=abc-123 --sendtx ts-node scripts/admin/send-execute.ts */ // Configuration object with execution and message details const EXECUTION_CONFIG = { executionDetails: { - packetId: "0x0000a4b129ebc834d24af22b9466a4150425354998c3e800000000000000cbe6", // Replace with actual packet ID + packetId: + "0x0000a4b129ebc834d24af22b9466a4150425354998c3e800000000000000cbe6", // Replace with actual packet ID proposalCount: "0", // Replace with actual proposal count executionGasLimit: "200000", // Replace with actual gas limit decapacitorProof: "0x", // Replace with actual proof @@ -40,8 +50,10 @@ const EXECUTION_CONFIG = { msgId: "0x0000a4b126e5ce884875ea3776a57f0b225b1ea8d2e9beeb00000000000608cb", // Replace with actual message ID executionFee: "0", // Replace with actual execution fee minMsgGasLimit: "100000", // Replace with actual min gas limit - executionParams: "0x0000000000000000000000000000000000000000000000000000000000000000", // Replace with actual execution params - payload: "0x0000000000000000000000008cb4c89cc297e07c7a309af8b16cc2f5f62a3b1300000000000000000000000000000000000000000000000000000000062ebe4d", // Replace with actual payload + executionParams: + "0x0000000000000000000000000000000000000000000000000000000000000000", // Replace with actual execution params + payload: + "0x0000000000000000000000008cb4c89cc297e07c7a309af8b16cc2f5f62a3b1300000000000000000000000000000000000000000000000000000000062ebe4d", // Replace with actual payload }, msgValue: "0", // ETH value to send with transaction (in wei) }; @@ -52,6 +64,12 @@ if (!destinationChainSlug) { process.exit(1); } +const packetId = + process.env.npm_config_packetid || + "0x0000000000000000000000000000000000000000000000000000000000000000"; +const proposalCount = process.env.npm_config_proposalcount || "0"; +const executionGasLimit = process.env.npm_config_gaslimit || "500000"; + const kmsKeyId = process.env.npm_config_kmskeyid; if (!kmsKeyId) { console.error("Error: kmskeyid flag is required"); @@ -68,10 +86,74 @@ if (sendTx && !signerKey) { const addresses: DeploymentAddresses = getAllAddresses(mode); +// MessageOutbound event ABI +const MESSAGE_OUTBOUND_ABI = [ + "event MessageOutbound(uint32 indexed localChainSlug, address localPlug, address dstPlug, uint32 indexed dstChainSlug, bytes32 indexed msgId, uint256 minMsgGasLimit, bytes32 executionParams, bytes32 transmissionParams, bytes payload, tuple(uint256 feePoolChain, uint256 feePoolToken, uint256 maxFees) fees)", +]; + export const main = async () => { - const destinationChain = parseInt(destinationChainSlug) as ChainSlug; + console.log( + `\nFetching MessageOutbound event from source transaction: ${sourceTxHash}\n` + ); + + console.log( + `\nProcessing execute transaction for chain: ${destinationChain}\n` + ); + + console.log("Searching for transaction across chains..."); + for (const [chainSlug, chainAddresses] of Object.entries(addresses)) { + try { + const chain = parseInt(chainSlug) as ChainSlug; + const provider = getProviderFromChainSlug(chain); + const receipt = await provider.getTransactionReceipt(sourceTxHash); + + if (receipt && receipt.blockNumber) { + sourceChain = chain; + sourceProvider = provider; + txReceipt = receipt; + console.log(`Found transaction on chain: ${sourceChain}`); + break; + } + } catch (error) { + // Continue searching + } + } + + if (!sourceChain || !sourceProvider || !txReceipt) { + console.error("Error: Could not find transaction on any configured chain"); + process.exit(1); + } + + // Parse logs to find MessageOutbound event + const socketInterface = new ethers.utils.Interface([ + ...SocketArtifact.abi, + ...MESSAGE_OUTBOUND_ABI, + ]); + const messageOutboundTopic = socketInterface.getEventTopic("MessageOutbound"); + + const messageOutboundLog = txReceipt.logs.find( + (log) => log.topics[0] === messageOutboundTopic + ); + + if (!messageOutboundLog) { + console.error("Error: MessageOutbound event not found in transaction"); + process.exit(1); + } - console.log(`\nProcessing execute transaction for chain: ${destinationChain}\n`); + const parsedEvent = socketInterface.parseLog(messageOutboundLog); + console.log("\nParsed MessageOutbound Event:"); + console.log(` Local Chain Slug: ${parsedEvent.args.localChainSlug}`); + console.log(` Local Plug: ${parsedEvent.args.localPlug}`); + console.log(` Destination Plug: ${parsedEvent.args.dstPlug}`); + console.log(` Destination Chain Slug: ${parsedEvent.args.dstChainSlug}`); + console.log(` Message ID: ${parsedEvent.args.msgId}`); + console.log( + ` Min Message Gas Limit: ${parsedEvent.args.minMsgGasLimit.toString()}` + ); + console.log(` Execution Params: ${parsedEvent.args.executionParams}`); + console.log(` Payload: ${parsedEvent.args.payload}\n`); + + const destinationChain = parsedEvent.args.dstChainSlug as ChainSlug; // Get addresses from prod_addresses.json const destinationAddresses = addresses[destinationChain]; @@ -84,27 +166,37 @@ export const main = async () => { const socketAddress = destinationAddresses.Socket; - console.log("Addresses:"); + console.log("Destination Addresses:"); console.log(` Socket: ${socketAddress}\n`); console.log("Execution Configuration:"); console.log(" ExecutionDetails:"); console.log(` Packet ID: ${EXECUTION_CONFIG.executionDetails.packetId}`); - console.log(` Proposal Count: ${EXECUTION_CONFIG.executionDetails.proposalCount}`); - console.log(` Execution Gas Limit: ${EXECUTION_CONFIG.executionDetails.executionGasLimit}`); - console.log(` Decapacitor Proof: ${EXECUTION_CONFIG.executionDetails.decapacitorProof}`); + console.log( + ` Proposal Count: ${EXECUTION_CONFIG.executionDetails.proposalCount}` + ); + console.log( + ` Execution Gas Limit: ${EXECUTION_CONFIG.executionDetails.executionGasLimit}` + ); + console.log( + ` Decapacitor Proof: ${EXECUTION_CONFIG.executionDetails.decapacitorProof}` + ); console.log(" MessageDetails:"); console.log(` Message ID: ${EXECUTION_CONFIG.messageDetails.msgId}`); - console.log(` Execution Fee: ${EXECUTION_CONFIG.messageDetails.executionFee}`); - console.log(` Min Message Gas Limit: ${EXECUTION_CONFIG.messageDetails.minMsgGasLimit}`); - console.log(` Execution Params: ${EXECUTION_CONFIG.messageDetails.executionParams}`); + console.log( + ` Execution Fee: ${EXECUTION_CONFIG.messageDetails.executionFee}` + ); + console.log( + ` Min Message Gas Limit: ${EXECUTION_CONFIG.messageDetails.minMsgGasLimit}` + ); + console.log( + ` Execution Params: ${EXECUTION_CONFIG.messageDetails.executionParams}` + ); console.log(` Payload: ${EXECUTION_CONFIG.messageDetails.payload}`); console.log(` Message Value: ${EXECUTION_CONFIG.msgValue}\n`); // Get provider - const provider = getProviderFromChainSlug( - destinationChain - ); + const provider = getProviderFromChainSlug(destinationChain); // Get Socket contract to access hasher const socketContract = new ethers.Contract( @@ -119,38 +211,53 @@ export const main = async () => { // Get hasher contract const hasherAbi = [ - "function packMessage(uint32 srcChainSlug_, address srcPlug_, uint32 dstChainSlug_, address dstPlug_, tuple(bytes32 msgId, uint256 executionFee, uint256 minMsgGasLimit, bytes32 executionParams, bytes payload) messageDetails_) external pure returns (bytes32)" + "function packMessage(uint32 srcChainSlug_, address srcPlug_, uint32 dstChainSlug_, address dstPlug_, tuple(bytes32 msgId, uint256 executionFee, uint256 minMsgGasLimit, bytes32 executionParams, bytes payload) messageDetails_) external pure returns (bytes32)", ]; - const hasherContract = new ethers.Contract(hasherAddress, hasherAbi, provider); + const hasherContract = new ethers.Contract( + hasherAddress, + hasherAbi, + provider + ); // Extract chain slug and plug from msgId // msgId format: chainSlug (32 bits) | plug (160 bits) | messageCount (64 bits) const msgIdBigInt = BigInt(EXECUTION_CONFIG.messageDetails.msgId); - const srcChainSlug = Number((msgIdBigInt >> BigInt(224)) & BigInt(0xFFFFFFFF)); - const dstPlug = "0x" + ((msgIdBigInt >> BigInt(64)) & ((BigInt(1) << BigInt(160)) - BigInt(1))).toString(16).padStart(40, "0"); - - console.log(`\nExtracted from msgId:`); - console.log(` Source Chain Slug: ${srcChainSlug}`); - console.log(` Destination Plug: ${dstPlug}`); + const srcChainSlug = Number( + (msgIdBigInt >> BigInt(224)) & BigInt(0xffffffff) + ); + const dstPlug = + "0x" + + ((msgIdBigInt >> BigInt(64)) & ((BigInt(1) << BigInt(160)) - BigInt(1))) + .toString(16) + .padStart(40, "0"); - // Get plug config to find siblingPlug + // Get plug config to find siblingPlug (for verification) const plugConfig = await socketContract.getPlugConfig(dstPlug, srcChainSlug); const siblingPlug = plugConfig.siblingPlug; - console.log(` Sibling Plug: ${siblingPlug}\n`); + console.log(`Verification - Sibling Plug: ${siblingPlug}\n`); + + // Prepare message details + const messageDetails = { + msgId: parsedEvent.args.msgId, + executionFee: "0", // Execution fee is 0 for manual execution + minMsgGasLimit: parsedEvent.args.minMsgGasLimit.toString(), + executionParams: parsedEvent.args.executionParams, + payload: parsedEvent.args.payload, + }; // Pack message for signature const packedMessage = await hasherContract.packMessage( srcChainSlug, - siblingPlug, + srcPlug, destinationChain, dstPlug, [ - EXECUTION_CONFIG.messageDetails.msgId, - EXECUTION_CONFIG.messageDetails.executionFee, - EXECUTION_CONFIG.messageDetails.minMsgGasLimit, - EXECUTION_CONFIG.messageDetails.executionParams, - EXECUTION_CONFIG.messageDetails.payload, + messageDetails.msgId, + messageDetails.executionFee, + messageDetails.minMsgGasLimit, + messageDetails.executionParams, + messageDetails.payload, ] ); @@ -164,29 +271,30 @@ export const main = async () => { // Sign with KMS console.log("\nSigning packed message with AWS KMS..."); - const signature = await kmsSigner.signMessage(ethers.utils.arrayify(packedMessage)); + const signature = await kmsSigner.signMessage( + ethers.utils.arrayify(packedMessage) + ); console.log("Signature:", signature); // Prepare transaction structs const executionDetails = { - packetId: EXECUTION_CONFIG.executionDetails.packetId, - proposalCount: EXECUTION_CONFIG.executionDetails.proposalCount, - executionGasLimit: EXECUTION_CONFIG.executionDetails.executionGasLimit, - decapacitorProof: EXECUTION_CONFIG.executionDetails.decapacitorProof, + packetId: packetId, + proposalCount: proposalCount, + executionGasLimit: executionGasLimit, + decapacitorProof: "0x", signature: signature, }; - const messageDetails = { - msgId: EXECUTION_CONFIG.messageDetails.msgId, - executionFee: EXECUTION_CONFIG.messageDetails.executionFee, - minMsgGasLimit: EXECUTION_CONFIG.messageDetails.minMsgGasLimit, - executionParams: EXECUTION_CONFIG.messageDetails.executionParams, - payload: EXECUTION_CONFIG.messageDetails.payload, - }; + console.log("\n=== Execution Details ==="); + console.log(`Packet ID: ${executionDetails.packetId}`); + console.log(`Proposal Count: ${executionDetails.proposalCount}`); + console.log(`Execution Gas Limit: ${executionDetails.executionGasLimit}`); + console.log(`Decapacitor Proof: ${executionDetails.decapacitorProof}`); + console.log("===========================\n"); // Prepare transaction data - const socketInterface = new ethers.utils.Interface(SocketArtifact.abi); - const calldata = socketInterface.encodeFunctionData("execute", [ + const txSocketInterface = new ethers.utils.Interface(SocketArtifact.abi); + const calldata = txSocketInterface.encodeFunctionData("execute", [ executionDetails, messageDetails, ]); @@ -194,7 +302,7 @@ export const main = async () => { console.log("\n=== Transaction Details ==="); console.log(`Chain ID: ${(await provider.getNetwork()).chainId}`); console.log(`Target: ${socketAddress}`); - console.log(`Value: ${EXECUTION_CONFIG.msgValue}`); + console.log(`Value: 0`); console.log(`Calldata: ${calldata}`); console.log("===========================\n"); @@ -212,7 +320,7 @@ export const main = async () => { executionDetails, messageDetails, { - value: EXECUTION_CONFIG.msgValue, + value: 0, ...(await getOverrides(destinationChain, provider)), } ); @@ -223,7 +331,9 @@ export const main = async () => { console.log("Gas used:", receipt.gasUsed.toString()); } else { console.log("To send the execute transaction, add --sendtx flag"); - console.log("You can use the transaction details above to manually send, simulate, or audit the transaction."); + console.log( + "You can use the transaction details above to manually send, simulate, or audit the transaction." + ); } console.log("\nScript completed."); diff --git a/scripts/constants/overrides.ts b/scripts/constants/overrides.ts index 46d2c73d..56200a12 100644 --- a/scripts/constants/overrides.ts +++ b/scripts/constants/overrides.ts @@ -1,5 +1,5 @@ import { ChainSlug } from "../../src/enums/chainSlug"; -import { providers } from "ethers"; +import { BigNumberish, providers } from "ethers"; const defaultType = 0; const DEFAULT_GAS_PRICE_MULTIPLIER = 1.05; @@ -102,7 +102,7 @@ export const chainOverrides: { gasPrice: 212_000_000_000, }, [ChainSlug.GNOSIS]: { - gasLimit: 15_000_000, + gasLimit: 6_000_000, }, [ChainSlug.LINEA]: { gasLimit: 10_000_000, @@ -127,7 +127,11 @@ export const chainOverrides: { type: 2, }, [ChainSlug.MONAD]: { - gasLimit: 3_00_000, + gasLimit: 5_000_000, + }, + [ChainSlug.MEGAETH]: { + // gasLimit: 5_000_000, + // gasPrice: 2_000_000, }, }; @@ -152,13 +156,19 @@ export const chainOverrides: { export const getOverrides = async ( chainSlug: ChainSlug, provider: providers.StaticJsonRpcProvider -) => { +): Promise<{ + type?: number | undefined; + gasLimit?: BigNumberish | undefined; + gasPrice?: string | undefined; + maxFeePerGas?: string | undefined; + maxPriorityFeePerGas?: string | undefined; +}> => { const overrides = chainOverrides[chainSlug] || {}; const { gasLimit, type = defaultType } = overrides; if (type === 2) { // EIP-1559 transaction - let maxFeePerGas = overrides.gasPrice; + let maxFeePerGas = overrides.gasPrice?.toString(); if (!maxFeePerGas) { const feeData = await provider.getFeeData(); const baseGasPrice = @@ -168,18 +178,20 @@ export const getOverrides = async ( maxFeePerGas = baseGasPrice .mul(Math.round(multiplier * 100000)) .div(100000) - .toNumber(); + .toString(); } // Get base fee to calculate maxPriorityFeePerGas const block = await provider.getBlock("latest"); const baseFee = block.baseFeePerGas?.toNumber() || 0; - const maxPriorityFeePerGas = Math.max(maxFeePerGas - baseFee, 0); -console.log(chainSlug, gasLimit, maxFeePerGas, maxPriorityFeePerGas, type); + const maxPriorityFeePerGas = Math.max( + Number(maxFeePerGas) - baseFee, + 0 + ).toString(); return { gasLimit, maxFeePerGas, maxPriorityFeePerGas, type }; } else { // Legacy transaction (type 0 or 1) - let gasPrice = overrides.gasPrice; + let gasPrice = overrides.gasPrice?.toString(); if (!gasPrice) { const baseGasPrice = await provider.getGasPrice(); const multiplier = @@ -187,7 +199,7 @@ console.log(chainSlug, gasLimit, maxFeePerGas, maxPriorityFeePerGas, type); gasPrice = baseGasPrice .mul(Math.round(multiplier * 100000)) .div(100000) - .toNumber(); + .toString(); } return { gasLimit, gasPrice, type }; diff --git a/scripts/deploy/config/config.ts b/scripts/deploy/config/config.ts index c7abd0b5..122cb3ec 100644 --- a/scripts/deploy/config/config.ts +++ b/scripts/deploy/config/config.ts @@ -135,7 +135,7 @@ export const overrides = async ( ): Promise<{ type?: number | undefined; gasLimit?: BigNumberish | undefined; - gasPrice?: BigNumberish | undefined; + gasPrice?: string | undefined; }> => { if (chainConfig[chain]?.overrides) { return chainConfig[chain].overrides; diff --git a/scripts/deploy/helpers/send-msg/utils.ts b/scripts/deploy/helpers/send-msg/utils.ts index 34dd5331..364cdfd7 100644 --- a/scripts/deploy/helpers/send-msg/utils.ts +++ b/scripts/deploy/helpers/send-msg/utils.ts @@ -3,7 +3,7 @@ import { ethers } from "ethers"; import Counter from "../../../../out/Counter.sol/Counter.json"; import Socket from "../../../../out/Socket.sol/Socket.json"; import { ChainSlug } from "../../../../src"; -import { getAPIBaseURL, getAddresses, relayTx } from "../../utils"; +import { getAPIBaseURL, getAddresses, getStatus, relayTx } from "../../utils"; dotenvConfig(); import { formatEther } from "ethers/lib/utils"; @@ -129,15 +129,21 @@ export const sendCounterBridgeMsg = async ( let response = await relayTx({ to, data, - value, - gasLimit, - gasPrice, + value: value?.toString(), + gasLimit: gasLimit?.toString(), + gasPrice: gasPrice?.toString(), type, chainSlug, }); - console.log( - `Track message here: ${getAPIBaseURL( - mode - )}/messages-from-tx?srcChainSlug=${chainSlug}&srcTxHash=${response?.hash}` - ); + + console.log(`Tx Id: ${response?.txId}`); + const txHash = await getStatus(response?.txId); + + if (txHash) { + console.log( + `Track message here: ${getAPIBaseURL( + mode + )}/messages-from-tx?srcChainSlug=${chainSlug}&srcTxHash=${txHash}` + ); + } }; diff --git a/scripts/deploy/scripts/configureSocket.ts b/scripts/deploy/scripts/configureSocket.ts index b9a981a5..ab9c37af 100644 --- a/scripts/deploy/scripts/configureSocket.ts +++ b/scripts/deploy/scripts/configureSocket.ts @@ -211,16 +211,18 @@ export const configureExecutionManager = async ( // }); if (requests.length === 0) return; - let tx = await socketBatcherContract.setExecutionFeesBatch( emAddress, requests, { ...(await overrides(chain)) } ); - console.log("configured EM for ", chain, tx.hash); + console.log("configured EM for ", chain, tx.txId); await tx.wait(); } catch (error) { - console.log("error while configuring execution manager: ", error); + console.log( + `error while configuring execution manager: ${chain} ${socketSigner.chainId}`, + error + ); } }; diff --git a/scripts/deploy/utils/relayer.ts b/scripts/deploy/utils/relayer.ts index 80a2abf1..b859b89d 100644 --- a/scripts/deploy/utils/relayer.ts +++ b/scripts/deploy/utils/relayer.ts @@ -1,6 +1,6 @@ import { BigNumber, BigNumberish } from "ethers"; import { getRelayAPIKEY, getRelayUrl } from "./utils"; -import { axiosPost } from "@socket.tech/dl-common"; +import { axiosGet, axiosPost } from "@socket.tech/dl-common"; import { mode } from "../config/config"; import { ChainSlugToId } from "../../../src"; @@ -17,7 +17,6 @@ interface RequestObj { export const relayTx = async (params: RequestObj) => { try { let { to, data, chainSlug, gasPrice, value, type, gasLimit } = params; - let url = await getRelayUrl(mode); let config = { headers: { "x-api-key": getRelayAPIKEY(mode), @@ -34,7 +33,26 @@ export const relayTx = async (params: RequestObj) => { sequential: false, source: "LoadTester", }; - let response = await axiosPost(url!, body, config); + let response = await axiosPost( + `${await getRelayUrl(mode)}/relay`, + body, + config + ); + if (response?.success) return response?.data; + else { + console.log("error in relaying tx", response); + return { hash: "" }; + } + } catch (error) { + console.log("uncaught error", error); + } +}; + +export const getStatus = async (txId: string) => { + try { + const response = await axiosGet( + `${await getRelayUrl(mode)}/status?txId=${txId}` + ); if (response?.success) return response?.data; else { console.log("error in relaying tx", response); diff --git a/scripts/deploy/utils/socket-signer.ts b/scripts/deploy/utils/socket-signer.ts index a62d9446..e728c364 100644 --- a/scripts/deploy/utils/socket-signer.ts +++ b/scripts/deploy/utils/socket-signer.ts @@ -34,7 +34,7 @@ export const getSocketSigner = async ( ChainSlugToId[chainSlug], safeAddress, safeWrapperAddress, - await getRelayUrl(mode), + `${await getRelayUrl(mode)}/relay`, getRelayAPIKEY(mode), wallet, useSafe, diff --git a/scripts/get-execution-times.sh b/scripts/get-execution-times.sh new file mode 100755 index 00000000..7502ba71 --- /dev/null +++ b/scripts/get-execution-times.sh @@ -0,0 +1,283 @@ +#!/bin/bash + +# Socket DL Message Execution Time Analyzer +# Usage: ./scripts/get-execution-times.sh ... +# Example: ./scripts/get-execution-times.sh 0x000021053eb5b734ad67de2af9fb43a4bf1d676d50256d050000000000025990 + +set -e + +# Load environment variables from .env file if it exists +if [ -f .env ]; then + set -a + source .env + set +a +fi + +# Configuration +DL_API="https://prod.dlapi.socket.tech/message" + +# Colors for output +RED='\033[0;31m' +GREEN='\033[0;32m' +YELLOW='\033[1;33m' +BLUE='\033[0;34m' +NC='\033[0m' # No Color + +# Function to get timestamp from transaction receipt +get_timestamp() { + local tx_hash=$1 + local rpc_url=$2 + + # Get receipt + local receipt=$(cast receipt "$tx_hash" --rpc-url "$rpc_url" --json 2>/dev/null) + + if [ ! -z "$receipt" ]; then + # Try to get blockTimestamp from logs (Lyra format) + local timestamp_hex=$(echo "$receipt" | jq -r '.logs[0].blockTimestamp // empty' 2>/dev/null) + + # If not found, get from block + if [ -z "$timestamp_hex" ] || [ "$timestamp_hex" = "null" ]; then + local block_num=$(echo "$receipt" | jq -r '.blockNumber' 2>/dev/null) + if [ ! -z "$block_num" ] && [ "$block_num" != "null" ]; then + timestamp_hex=$(cast block "$block_num" --rpc-url "$rpc_url" --json 2>/dev/null | jq -r '.timestamp' 2>/dev/null) + fi + fi + + if [ ! -z "$timestamp_hex" ] && [ "$timestamp_hex" != "null" ]; then + # Convert hex to decimal + local timestamp_dec=$(cast to-dec "$timestamp_hex" 2>/dev/null) + echo "$timestamp_dec" + return 0 + fi + fi + echo "" + return 1 +} + +# Function to get RPC URL for a chain slug +get_rpc_url() { + local chain_slug=$1 + case "$chain_slug" in + "8453") + echo "$BASE_RPC" + ;; + "42161") + echo "$ARBITRUM_RPC" + ;; + "957") + echo "$LYRA_RPC" + ;; + *) + echo "" + ;; + esac +} + +# Function to get chain name from slug +get_chain_name() { + local chain_slug=$1 + case "$chain_slug" in + "8453") + echo "Base" + ;; + "42161") + echo "Arbitrum" + ;; + "957") + echo "Lyra" + ;; + *) + echo "Unknown" + ;; + esac +} + +# Function to process a single message +process_message() { + local message_id=$1 + + echo -e "${BLUE}Processing: ${message_id}${NC}" + + # Fetch message details from DL API + local response=$(curl -s "${DL_API}?messageId=${message_id}") + + # Check if request was successful + local status=$(echo "$response" | jq -r '.status' 2>/dev/null) + if [ "$status" != "SUCCESS" ]; then + echo -e "${RED} ✗ Failed to fetch message details${NC}" + return 1 + fi + + # Extract details + local src_chain_slug=$(echo "$response" | jq -r '.result.from.srcChainSlug') + local dest_chain_slug=$(echo "$response" | jq -r '.result.to.destChainSlug') + local outbound_tx=$(echo "$response" | jq -r '.result.outboundTx') + local inbound_tx=$(echo "$response" | jq -r '.result.inboundTx') + local exec_status=$(echo "$response" | jq -r '.result.status') + + # Get chain names + local src_chain=$(get_chain_name "$src_chain_slug") + local dest_chain=$(get_chain_name "$dest_chain_slug") + + echo -e " Route: ${src_chain} (${src_chain_slug}) → ${dest_chain} (${dest_chain_slug})" + echo -e " Status: ${exec_status}" + + # Check if execution was successful + if [ "$exec_status" != "EXECUTION_SUCCESS" ]; then + echo -e "${YELLOW} ⚠ Message not successfully executed${NC}" + return 0 + fi + + # Get RPC URLs + local src_rpc=$(get_rpc_url "$src_chain_slug") + local dest_rpc=$(get_rpc_url "$dest_chain_slug") + + if [ -z "$src_rpc" ] || [ -z "$dest_rpc" ]; then + echo -e "${RED} ✗ Unsupported chain${NC}" + return 1 + fi + + # Get timestamps + echo -n " Fetching outbound timestamp... " + local outbound_ts=$(get_timestamp "$outbound_tx" "$src_rpc") + if [ -z "$outbound_ts" ]; then + echo -e "${RED}FAILED${NC}" + return 1 + fi + echo -e "${GREEN}${outbound_ts}${NC}" + + echo -n " Fetching inbound timestamp... " + local inbound_ts=$(get_timestamp "$inbound_tx" "$dest_rpc") + if [ -z "$inbound_ts" ]; then + echo -e "${RED}FAILED${NC}" + return 1 + fi + echo -e "${GREEN}${inbound_ts}${NC}" + + # Calculate execution time + local exec_time=$((inbound_ts - outbound_ts)) + + # Format dates + local outbound_date=$(date -u -d "@$outbound_ts" "+%Y-%m-%d %H:%M:%S UTC" 2>/dev/null || date -u -r "$outbound_ts" "+%Y-%m-%d %H:%M:%S UTC" 2>/dev/null) + local inbound_date=$(date -u -d "@$inbound_ts" "+%Y-%m-%d %H:%M:%S UTC" 2>/dev/null || date -u -r "$inbound_ts" "+%Y-%m-%d %H:%M:%S UTC" 2>/dev/null) + + # Print result + echo -e " ${GREEN}✓ Execution Time: ${exec_time} seconds${NC}" + echo "" + + # Store for summary (using global array) + EXEC_TIMES+=("$exec_time") + RESULTS+=("${src_chain}→${dest_chain}|${exec_time}s|${message_id:0:20}...${message_id: -10}") +} + +# Main script +main() { + if [ $# -eq 0 ]; then + echo "Usage: $0 [messageId2] [messageId3] ..." + echo "" + echo "Example:" + echo " $0 0x000021053eb5b734ad67de2af9fb43a4bf1d676d50256d050000000000025990" + echo "" + exit 1 + fi + + # Check dependencies + if ! command -v cast &> /dev/null; then + echo -e "${RED}Error: 'cast' command not found. Please install foundry.${NC}" + exit 1 + fi + + if ! command -v jq &> /dev/null; then + echo -e "${RED}Error: 'jq' command not found. Please install jq.${NC}" + exit 1 + fi + + if ! command -v curl &> /dev/null; then + echo -e "${RED}Error: 'curl' command not found. Please install curl.${NC}" + exit 1 + fi + + # Check RPC environment variables + if [ -z "$LYRA_RPC" ]; then + echo -e "${RED}Error: LYRA_RPC environment variable is not set.${NC}" + exit 1 + fi + + if [ -z "$ARBITRUM_RPC" ]; then + echo -e "${RED}Error: ARBITRUM_RPC environment variable is not set.${NC}" + exit 1 + fi + + if [ -z "$BASE_RPC" ]; then + echo -e "${RED}Error: BASE_RPC environment variable is not set.${NC}" + exit 1 + fi + + echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}" + echo -e "${BLUE} Socket DL Message Execution Time Analyzer${NC}" + echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}" + echo "" + + # Initialize arrays for results + declare -a EXEC_TIMES + declare -a RESULTS + + # Process each message ID + local success_count=0 + local fail_count=0 + + for message_id in "$@"; do + if process_message "$message_id"; then + ((success_count++)) + else + ((fail_count++)) + fi + done + + # Print summary + echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}" + echo -e "${BLUE} Summary${NC}" + echo -e "${BLUE}═══════════════════════════════════════════════════════${NC}" + echo "" + + echo "Total Messages: $#" + echo -e "Successfully Processed: ${GREEN}${success_count}${NC}" + if [ $fail_count -gt 0 ]; then + echo -e "Failed: ${RED}${fail_count}${NC}" + fi + echo "" + + if [ ${#EXEC_TIMES[@]} -gt 0 ]; then + echo "Execution Times:" + for result in "${RESULTS[@]}"; do + IFS='|' read -r route time msg <<< "$result" + printf " %-20s %10s (%s)\n" "$route" "$time" "$msg" + done + echo "" + + # Calculate statistics + local total=0 + local min=${EXEC_TIMES[0]} + local max=${EXEC_TIMES[0]} + + for time in "${EXEC_TIMES[@]}"; do + total=$((total + time)) + if [ $time -lt $min ]; then + min=$time + fi + if [ $time -gt $max ]; then + max=$time + fi + done + + local avg=$((total / ${#EXEC_TIMES[@]})) + + echo "Statistics:" + echo " Average: ${avg}s" + echo " Min: ${min}s" + echo " Max: ${max}s" + fi +} + +# Run main function with all arguments +main "$@" diff --git a/scripts/native-bridge-helpers/arbitrum/l1Tol2Relay.ts b/scripts/native-bridge-helpers/arbitrum/l1Tol2Relay.ts index 44e67aba..5705f1f6 100644 --- a/scripts/native-bridge-helpers/arbitrum/l1Tol2Relay.ts +++ b/scripts/native-bridge-helpers/arbitrum/l1Tol2Relay.ts @@ -19,16 +19,20 @@ import { L1ToL2MessageStatus, L1TransactionReceipt } from "@arbitrum/sdk"; // get providers for source and destination // replace following variables to initiate the txn -const l1Chain = HardhatChainName.GOERLI; -const l2Chain = HardhatChainName.ARBITRUM_GOERLI; +const l1Chain = HardhatChainName.SEPOLIA; +const l2Chain = HardhatChainName.ARBITRUM_SEPOLIA; const packetId = "0x00000005feb89935220606f3c3670ae510a74ab5750e810c0000000000000000"; const root = "0xc8111d45052c1df62037b92c1fab7c23bda80a0854b81432aee514aaf5f6c440"; const walletPrivateKey = process.env.SOCKET_SIGNER_KEY!; -const l1Provider = new providers.JsonRpcProvider(getJsonRpcUrl(l1Chain)); -const l2Provider = new providers.JsonRpcProvider(getJsonRpcUrl(l2Chain)); +const l1Provider = new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[l1Chain]) +); +const l2Provider = new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[l2Chain]) +); const l1Wallet = new Wallet(walletPrivateKey, l1Provider); const l2Wallet = new Wallet(walletPrivateKey, l2Provider); diff --git a/scripts/native-bridge-helpers/arbitrum/l2tol1Relay.ts b/scripts/native-bridge-helpers/arbitrum/l2tol1Relay.ts index aaa60a2b..e6fb5f6d 100644 --- a/scripts/native-bridge-helpers/arbitrum/l2tol1Relay.ts +++ b/scripts/native-bridge-helpers/arbitrum/l2tol1Relay.ts @@ -11,16 +11,20 @@ import { } from "../../../src"; // https://goerli.arbiscan.io/txsExit to check message status -const l1Chain = HardhatChainName.GOERLI; -const l2Chain = HardhatChainName.ARBITRUM_GOERLI; +const l1Chain = HardhatChainName.SEPOLIA; +const l2Chain = HardhatChainName.ARBITRUM_SEPOLIA; const sealTxHash = - "0x0113020a1e3b9f814a78791b9719bf583bb0f25075cde1e754af99f1dcf137a7"; + "0x4e8f4b180b2fbb5d06d637294776fda71025568bdb0cc31e2a430795e6481d54"; import { mode } from "../../deploy/config/config"; const walletPrivateKey = process.env.SOCKET_SIGNER_KEY!; -const l1Provider = new providers.JsonRpcProvider(getJsonRpcUrl(l1Chain)); -const l2Provider = new providers.JsonRpcProvider(getJsonRpcUrl(l2Chain)); +const l1Provider = new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[l1Chain]) +); +const l2Provider = new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[l2Chain]) +); const l1Wallet = new Wallet(walletPrivateKey, l1Provider); diff --git a/scripts/native-bridge-helpers/optimism/l1Tol2Relay.ts b/scripts/native-bridge-helpers/optimism/l1Tol2Relay.ts index 8dc236c6..478ff182 100644 --- a/scripts/native-bridge-helpers/optimism/l1Tol2Relay.ts +++ b/scripts/native-bridge-helpers/optimism/l1Tol2Relay.ts @@ -21,7 +21,9 @@ const ATTEST_GAS_LIMIT = 800000; const outboundTxHash = ""; const walletPrivateKey = process.env.SOCKET_SIGNER_KEY!; -const l1Provider = new providers.JsonRpcProvider(getJsonRpcUrl(localChain)); +const l1Provider = new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[localChain]) +); const l1Wallet = new Wallet(walletPrivateKey, l1Provider); export const main = async () => { @@ -45,7 +47,11 @@ export const main = async () => { // get socket contracts for both chains // counter l1, counter l2, seal, execute - const contracts = contractNames("", localChain, remoteChain); + const contracts = contractNames( + "", + hardhatChainNameToSlug[localChain], + hardhatChainNameToSlug[remoteChain] + ); const l1Capacitor: Contract = ( await getInstance( diff --git a/scripts/native-bridge-helpers/optimism/l2tol1Relay.ts b/scripts/native-bridge-helpers/optimism/l2tol1Relay.ts index dd348703..b4e52fa0 100644 --- a/scripts/native-bridge-helpers/optimism/l2tol1Relay.ts +++ b/scripts/native-bridge-helpers/optimism/l2tol1Relay.ts @@ -1,14 +1,20 @@ import { providers, Wallet } from "ethers"; import { CrossChainMessenger, MessageStatus } from "@eth-optimism/sdk"; import { getJsonRpcUrl } from "../../constants"; -import { HardhatChainName, ChainId } from "../../../src"; +import { + HardhatChainName, + ChainId, + hardhatChainNameToSlug, +} from "../../../src"; // get providers for source and destination const l1ChainId = ChainId.SEPOLIA; const l2ChainId = ChainId.OPTIMISM_SEPOLIA; const walletPrivateKey = process.env.SOCKET_SIGNER_KEY!; -const l1Provider = new providers.JsonRpcProvider(getJsonRpcUrl(l1ChainId)); +const l1Provider = new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[l1ChainId]) +); const l1Wallet = new Wallet(walletPrivateKey, l1Provider); const sealTxHash = ""; @@ -18,7 +24,9 @@ export const main = async () => { l1ChainId, l2ChainId, l1SignerOrProvider: l1Wallet, - l2SignerOrProvider: new providers.JsonRpcProvider(getJsonRpcUrl(l2ChainId)), + l2SignerOrProvider: new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[l2ChainId]) + ), }); const status = await crossChainMessenger.getMessageStatus(sealTxHash); diff --git a/scripts/native-bridge-helpers/optimism/op-stack-native-withdrawals.ts b/scripts/native-bridge-helpers/optimism/op-stack-native-withdrawals.ts index e177afb6..50e5136d 100644 --- a/scripts/native-bridge-helpers/optimism/op-stack-native-withdrawals.ts +++ b/scripts/native-bridge-helpers/optimism/op-stack-native-withdrawals.ts @@ -3,7 +3,7 @@ import { config as dotenvConfig } from "dotenv"; import { constants, providers, Wallet } from "ethers"; import { CrossChainMessenger, MessageStatus } from "@eth-optimism/sdk"; import { getJsonRpcUrl } from "../../constants"; -import { ChainId } from "../../../src"; +import { ChainId, hardhatChainNameToSlug } from "../../../src"; import { resolve } from "path"; import axios from "axios"; @@ -20,8 +20,12 @@ const initTxHash = "0x373611163c75ca063aae79fc7a8ef4a9d8e66603cc92997cbbcd2a18cbbcde37"; const walletPrivateKey = process.env.SOCKET_SIGNER_KEY!; -const l1Provider = new providers.JsonRpcProvider(getJsonRpcUrl(l1Chain)); -const l2Provider = new providers.JsonRpcProvider(getJsonRpcUrl(l2Chain)); +const l1Provider = new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[l1Chain]) +); +const l2Provider = new providers.JsonRpcProvider( + getJsonRpcUrl(hardhatChainNameToSlug[l2Chain]) +); const l1Wallet = new Wallet(walletPrivateKey, l1Provider); diff --git a/scripts/native-bridge-helpers/polygon/l2tol1Relay.ts b/scripts/native-bridge-helpers/polygon/l2tol1Relay.ts index 54c2a79b..851f3043 100644 --- a/scripts/native-bridge-helpers/polygon/l2tol1Relay.ts +++ b/scripts/native-bridge-helpers/polygon/l2tol1Relay.ts @@ -89,13 +89,14 @@ const remoteChain = HardhatChainName.MAINNET; const l2Provider = new providers.JsonRpcProvider(getJsonRpcUrl(localChain)); const l1Provider = new providers.JsonRpcProvider(getJsonRpcUrl(remoteChain)); + const l1Signer = new SocketRelaySigner( l1Provider, - process.env.RELAYER_URL_DEV! + `${process.env.RELAYER_URL_DEV!}/relay` ); const l2Signer = new SocketRelaySigner( l2Provider, - process.env.RELAYER_URL_DEV! + `${process.env.RELAYER_URL_DEV!}/relay` ); export const main = async () => { diff --git a/scripts/rpcConfig/constants/batcherSupportedChainSlug.ts b/scripts/rpcConfig/constants/batcherSupportedChainSlug.ts index b84fb287..ca217acb 100644 --- a/scripts/rpcConfig/constants/batcherSupportedChainSlug.ts +++ b/scripts/rpcConfig/constants/batcherSupportedChainSlug.ts @@ -22,19 +22,19 @@ export const batcherSupportedChainSlugs = [ ChainSlug.MODE, ChainSlug.REYA_CRONOS, // ChainSlug.SYNDR_SEPOLIA_L3, - ChainSlug.POLYNOMIAL_TESTNET, + // ChainSlug.POLYNOMIAL_TESTNET, // ChainSlug.BOB, // ChainSlug.KINTO, // ChainSlug.KINTO_DEVNET, // ChainSlug.SIPHER_FUNKI_TESTNET, - ChainSlug.WINR, + // ChainSlug.WINR, ChainSlug.BLAST, // ChainSlug.BSC_TESTNET, - ChainSlug.POLYNOMIAL, + // ChainSlug.POLYNOMIAL, // ChainSlug.SYNDR, // ChainSlug.NEOX_TESTNET, // ChainSlug.NEOX_T4_TESTNET, - ChainSlug.NEOX, + // ChainSlug.NEOX, ChainSlug.GNOSIS, ChainSlug.LINEA, ChainSlug.ZKEVM, @@ -46,14 +46,14 @@ export const batcherSupportedChainSlugs = [ // ChainSlug.OPBNB, // ChainSlug.GEIST, // ChainSlug.ZERO_SEPOLIA, - ChainSlug.ZERO, + // ChainSlug.ZERO, ChainSlug.ZKSYNC, // ChainSlug.ARENA_Z, ChainSlug.INK, ChainSlug.SONIC, // ChainSlug.BASE_SEPOLIA, ChainSlug.BERA, - ChainSlug.B3, + // ChainSlug.B3, ChainSlug.UNICHAIN, // ChainSlug.MONAD_TESTNET, ChainSlug.SCROLL, @@ -66,4 +66,6 @@ export const batcherSupportedChainSlugs = [ ChainSlug.SEI, ChainSlug.PLASMA, ChainSlug.MONAD, + ChainSlug.MEGAETH, + ChainSlug.ETHEREAL, ]; diff --git a/scripts/rpcConfig/constants/explorers.ts b/scripts/rpcConfig/constants/explorers.ts index 1b88539b..3e52f1e3 100644 --- a/scripts/rpcConfig/constants/explorers.ts +++ b/scripts/rpcConfig/constants/explorers.ts @@ -45,4 +45,6 @@ export const explorers = { [ChainSlug.SEI]: "https://seitrace.com/", [ChainSlug.PLASMA]: "https://plasmascan.to/", [ChainSlug.MONAD]: "https://mainnet-beta.monvision.io/", + [ChainSlug.MEGAETH]: "https://megaeth.blockscout.com/", + [ChainSlug.ETHEREAL]: "https://explorer.ethereal.trade", }; diff --git a/scripts/rpcConfig/constants/finality.ts b/scripts/rpcConfig/constants/finality.ts index 8257b742..fcbe82fd 100644 --- a/scripts/rpcConfig/constants/finality.ts +++ b/scripts/rpcConfig/constants/finality.ts @@ -51,4 +51,9 @@ export const finalityOverrides: { [FinalityBucket.medium]: 100, [FinalityBucket.high]: 1024, }, + [ChainSlug.ZKEVM]: { + [FinalityBucket.low]: 1, + [FinalityBucket.medium]: 10, + [FinalityBucket.high]: 100, + }, }; diff --git a/scripts/rpcConfig/constants/icons.ts b/scripts/rpcConfig/constants/icons.ts index fd117bab..540f2bf3 100644 --- a/scripts/rpcConfig/constants/icons.ts +++ b/scripts/rpcConfig/constants/icons.ts @@ -43,4 +43,6 @@ export const icons = { [ChainSlug.SEI]: "", [ChainSlug.PLASMA]: "", [ChainSlug.MONAD]: "", + [ChainSlug.MEGAETH]: "", + [ChainSlug.ETHEREAL]: "", }; diff --git a/scripts/rpcConfig/constants/rpc.ts b/scripts/rpcConfig/constants/rpc.ts index 6ef026ef..9aa9dfa5 100644 --- a/scripts/rpcConfig/constants/rpc.ts +++ b/scripts/rpcConfig/constants/rpc.ts @@ -78,4 +78,6 @@ export const rpcs = { [ChainSlug.SEI]: checkEnvValue("SEI_RPC"), [ChainSlug.PLASMA]: checkEnvValue("PLASMA_RPC"), [ChainSlug.MONAD]: checkEnvValue("MONAD_RPC"), + [ChainSlug.MEGAETH]: checkEnvValue("MEGAETH_RPC"), + [ChainSlug.ETHEREAL]: checkEnvValue("ETHEREAL_RPC"), }; diff --git a/scripts/rpcConfig/constants/version.ts b/scripts/rpcConfig/constants/version.ts index e6d31d3f..24419d26 100644 --- a/scripts/rpcConfig/constants/version.ts +++ b/scripts/rpcConfig/constants/version.ts @@ -1,6 +1,6 @@ import { DeploymentMode } from "../../../src"; export const version = { - [DeploymentMode.DEV]: "1.0.5", - [DeploymentMode.PROD]: "1.0.113", + [DeploymentMode.DEV]: "1.0.6", + [DeploymentMode.PROD]: "1.0.131", }; diff --git a/scripts/rpcConfig/rpcConfig.ts b/scripts/rpcConfig/rpcConfig.ts index 0e5c1441..fe59807d 100644 --- a/scripts/rpcConfig/rpcConfig.ts +++ b/scripts/rpcConfig/rpcConfig.ts @@ -69,6 +69,75 @@ const getOldEMVersionChainSlugs = (): ChainSlug[] => { return chains; }; +/** + * Parses chain surcharge configuration from environment variable + * Format: "chainSlug:usdAmount,chainSlug:usdAmount,..." + * Example: "1324967486:2,1:1.5,42161:1" + * + * @returns Object mapping chain slug (as string) to USD surcharge amount + */ +const parseChainSurchargeFromEnv = (): { [chainSlug: string]: number } => { + const envVar = process.env.CHAIN_SURCHARGE_USD; + + // If not set, return empty object + if (!envVar || envVar.trim() === "") { + return {}; + } + + const surchargeMap: { [chainSlug: string]: number } = {}; + + try { + // Split by comma to get individual chain:amount pairs + const pairs = envVar + .split(",") + .map((p) => p.trim()) + .filter((p) => p.length > 0); + + for (const pair of pairs) { + const [chainSlugStr, amountStr] = pair.split(":").map((s) => s.trim()); + + // Validate format + if (!chainSlugStr || !amountStr) { + console.warn( + `Invalid chain surcharge pair: "${pair}". Expected format: "chainSlug:amount"` + ); + continue; + } + + // Validate chain slug is a valid number + const chainSlug = parseInt(chainSlugStr); + if (isNaN(chainSlug) || chainSlug <= 0) { + console.warn( + `Invalid chain slug: "${chainSlugStr}". Must be a positive integer.` + ); + continue; + } + + // Validate amount is a valid positive number + const amount = parseFloat(amountStr); + if (isNaN(amount) || amount < 0) { + console.warn( + `Invalid surcharge amount: "${amountStr}". Must be a non-negative number.` + ); + continue; + } + + // Store with chain slug as string (JSON key requirement) + surchargeMap[chainSlugStr] = amount; + } + + console.log( + `Parsed chain surcharge config: ${ + Object.keys(surchargeMap).length + } chains with surcharges` + ); + return surchargeMap; + } catch (error) { + console.error(`Error parsing CHAIN_SURCHARGE_USD: ${error}`); + return {}; + } +}; + const getChainType = (chainSlug: ChainSlug) => { if (opStackL2Chain.includes(chainSlug)) { return ChainType.opStackL2Chain; @@ -136,6 +205,7 @@ export const generateDevConfig = async (txData: TxData): Promise => { chainSlugToId: ChainSlugToId, oldEMVersionChainSlugs: getOldEMVersionChainSlugs(), disabledDFFeeChains, + chainSurchargeUsdBySlug: parseChainSurchargeFromEnv(), }; }; @@ -163,5 +233,6 @@ export const generateProdConfig = async (txData: TxData): Promise => { chainSlugToId: ChainSlugToId, oldEMVersionChainSlugs: getOldEMVersionChainSlugs(), disabledDFFeeChains, + chainSurchargeUsdBySlug: parseChainSurchargeFromEnv(), }; }; diff --git a/scripts/rpcConfig/uploadS3Config.ts b/scripts/rpcConfig/uploadS3Config.ts index 09318b11..34d10e92 100644 --- a/scripts/rpcConfig/uploadS3Config.ts +++ b/scripts/rpcConfig/uploadS3Config.ts @@ -1,4 +1,5 @@ import { PutObjectCommand, S3Client } from "@aws-sdk/client-s3"; +import { NodeHttpHandler } from "@smithy/node-http-handler"; import * as fs from "fs"; import { DeploymentMode, TxData } from "../../src"; import dotenv from "dotenv"; @@ -9,6 +10,11 @@ dotenv.config(); const deploymentMode = process.env.DEPLOYMENT_MODE as DeploymentMode; const s3Client = new S3Client({ region: "us-east-1", + maxAttempts: 5, + requestHandler: new NodeHttpHandler({ + requestTimeout: 60000, + socketTimeout: 60000, + }), }); // File path for the JSON file diff --git a/src/enums/arbL3Chains.ts b/src/enums/arbL3Chains.ts index a400f5da..e1da03bf 100644 --- a/src/enums/arbL3Chains.ts +++ b/src/enums/arbL3Chains.ts @@ -6,4 +6,5 @@ export const arbL3Chains = [ ChainSlug.KINTO_DEVNET, ChainSlug.WINR, ChainSlug.SYNDR, + ChainSlug.ETHEREAL, ]; diff --git a/src/enums/chainId.ts b/src/enums/chainId.ts index 9483bcd4..10c937d7 100644 --- a/src/enums/chainId.ts +++ b/src/enums/chainId.ts @@ -74,4 +74,6 @@ export enum ChainId { SEI = 1329, PLASMA = 9745, MONAD = 143, + MEGAETH = 4326, + ETHEREAL = 5064014, } diff --git a/src/enums/chainSlug.ts b/src/enums/chainSlug.ts index 7a4df7f4..94f96a2a 100644 --- a/src/enums/chainSlug.ts +++ b/src/enums/chainSlug.ts @@ -76,4 +76,6 @@ export enum ChainSlug { SEI = ChainId.SEI, PLASMA = ChainId.PLASMA, MONAD = ChainId.MONAD, + MEGAETH = ChainId.MEGAETH, + ETHEREAL = ChainId.ETHEREAL, } diff --git a/src/enums/chainSlugToHardhatChainName.ts b/src/enums/chainSlugToHardhatChainName.ts index 551c519b..0ef65ad0 100644 --- a/src/enums/chainSlugToHardhatChainName.ts +++ b/src/enums/chainSlugToHardhatChainName.ts @@ -77,4 +77,6 @@ export const chainSlugToHardhatChainName = { [ChainSlug.SEI]: HardhatChainName.SEI, [ChainSlug.PLASMA]: HardhatChainName.PLASMA, [ChainSlug.MONAD]: HardhatChainName.MONAD, + [ChainSlug.MEGAETH]: HardhatChainName.MEGAETH, + [ChainSlug.ETHEREAL]: HardhatChainName.ETHEREAL, }; diff --git a/src/enums/chainSlugToId.ts b/src/enums/chainSlugToId.ts index 60b29ecd..49977400 100644 --- a/src/enums/chainSlugToId.ts +++ b/src/enums/chainSlugToId.ts @@ -77,4 +77,6 @@ export const ChainSlugToId = { [ChainSlug.SEI]: ChainId.SEI, [ChainSlug.PLASMA]: ChainId.PLASMA, [ChainSlug.MONAD]: ChainId.MONAD, + [ChainSlug.MEGAETH]: ChainId.MEGAETH, + [ChainSlug.ETHEREAL]: ChainId.ETHEREAL, }; diff --git a/src/enums/chainSlugToKey.ts b/src/enums/chainSlugToKey.ts index 5e9c94c7..8fdfd488 100644 --- a/src/enums/chainSlugToKey.ts +++ b/src/enums/chainSlugToKey.ts @@ -77,4 +77,6 @@ export const ChainSlugToKey = { [ChainSlug.SEI]: HardhatChainName.SEI, [ChainSlug.PLASMA]: HardhatChainName.PLASMA, [ChainSlug.MONAD]: HardhatChainName.MONAD, + [ChainSlug.MEGAETH]: HardhatChainName.MEGAETH, + [ChainSlug.ETHEREAL]: HardhatChainName.ETHEREAL, }; diff --git a/src/enums/currency.ts b/src/enums/currency.ts index 9ed2199e..a62dc74f 100644 --- a/src/enums/currency.ts +++ b/src/enums/currency.ts @@ -27,4 +27,5 @@ export const Currency = { [ChainSlug.SEI]: NativeTokens["sei-network"], [ChainSlug.PLASMA]: NativeTokens["plasma"], [ChainSlug.MONAD]: NativeTokens["monad"], + [ChainSlug.ETHEREAL]: NativeTokens["ethena-usde"], }; diff --git a/src/enums/hardhatChainName.ts b/src/enums/hardhatChainName.ts index 932bdd7b..a2313ac0 100644 --- a/src/enums/hardhatChainName.ts +++ b/src/enums/hardhatChainName.ts @@ -74,4 +74,6 @@ export enum HardhatChainName { SEI = "sei", PLASMA = "plasma", MONAD = "monad", + MEGAETH = "megaeth", + ETHEREAL = "ethereal", } diff --git a/src/enums/hardhatChainNameToSlug.ts b/src/enums/hardhatChainNameToSlug.ts index 5c79612c..cc21bfa7 100644 --- a/src/enums/hardhatChainNameToSlug.ts +++ b/src/enums/hardhatChainNameToSlug.ts @@ -77,4 +77,6 @@ export const hardhatChainNameToSlug = { [HardhatChainName.SEI]: ChainSlug.SEI, [HardhatChainName.PLASMA]: ChainSlug.PLASMA, [HardhatChainName.MONAD]: ChainSlug.MONAD, + [HardhatChainName.MEGAETH]: ChainSlug.MEGAETH, + [HardhatChainName.ETHEREAL]: ChainSlug.ETHEREAL, }; diff --git a/src/enums/mainnetIds.ts b/src/enums/mainnetIds.ts index 704f64d7..6910032b 100644 --- a/src/enums/mainnetIds.ts +++ b/src/enums/mainnetIds.ts @@ -47,4 +47,6 @@ export const MainnetIds: ChainSlug[] = [ ChainSlug.SEI, ChainSlug.PLASMA, ChainSlug.MONAD, + ChainSlug.MEGAETH, + ChainSlug.ETHEREAL, ]; diff --git a/src/enums/native-tokens.ts b/src/enums/native-tokens.ts index ef5cd7f9..c1e52e29 100644 --- a/src/enums/native-tokens.ts +++ b/src/enums/native-tokens.ts @@ -21,4 +21,6 @@ export enum NativeTokens { "sei-network" = "sei-network", "dogwifcoin" = "dogwifcoin", "wormhole" = "wormhole", + "plasma" = "plasma", + "ethena-usde" = "ethena-usde", } diff --git a/src/enums/opStackChains.ts b/src/enums/opStackChains.ts index 4178f338..c3099c5a 100644 --- a/src/enums/opStackChains.ts +++ b/src/enums/opStackChains.ts @@ -29,4 +29,5 @@ export const opStackL2Chain = [ ChainSlug.SWELLCHAIN, ChainSlug.WORLD_CHAIN, ChainSlug.KATANA, + ChainSlug.MEGAETH, ]; diff --git a/src/socket-types.ts b/src/socket-types.ts index b0f2936c..3b5a5f7a 100644 --- a/src/socket-types.ts +++ b/src/socket-types.ts @@ -286,4 +286,5 @@ export type S3Config = { feeUpdaterSupportedChainSlugs: ChainSlug[]; oldEMVersionChainSlugs: ChainSlug[]; disabledDFFeeChains: ChainSlug[]; + chainSurchargeUsdBySlug: { [chainSlug: string]: number }; };