From 47eafc86a24529ae40e90f857b421b86daad35a5 Mon Sep 17 00:00:00 2001 From: arthcp Date: Tue, 21 Oct 2025 18:11:41 +0530 Subject: [PATCH 1/4] feat: execute scripts --- scripts/admin/get-outbound-txs.ts | 147 ++++++++++++++++++ scripts/admin/get-seal-events.ts | 149 +++++++++++++++++++ scripts/admin/send-attest.ts | 207 ++++++++++++++++++++++++++ scripts/admin/send-execute.ts | 237 ++++++++++++++++++++++++++++++ 4 files changed, 740 insertions(+) create mode 100644 scripts/admin/get-outbound-txs.ts create mode 100644 scripts/admin/get-seal-events.ts create mode 100644 scripts/admin/send-attest.ts create mode 100644 scripts/admin/send-execute.ts diff --git a/scripts/admin/get-outbound-txs.ts b/scripts/admin/get-outbound-txs.ts new file mode 100644 index 00000000..b5426808 --- /dev/null +++ b/scripts/admin/get-outbound-txs.ts @@ -0,0 +1,147 @@ +import { config as dotenvConfig } from "dotenv"; +import { + ChainSlug, + DeploymentAddresses, + IntegrationTypes, + getAllAddresses, +} from "../../src"; +import { mode } from "../deploy/config/config"; +import SingleCapacitorArtifact from "../../out/SingleCapacitor.sol/SingleCapacitor.json"; +import { getProviderFromChainSlug } from "../constants"; +import { ethers } from "ethers"; + +dotenvConfig(); + +/** + * Usage + * + * --source Specify the source chain slug. + * This flag is required. + * Eg. npx --source=1 --destination=10 --startblock=12345 --endblock=12456 ts-node scripts/admin/get-outbound-txs.ts + * + * --destination Specify the destination chain slug. + * This flag is required. + * + * --startblock Specify the start block number. + * This flag is required. + * + * --endblock Specify the end block number. + * This flag is required. + */ + +const sourceChainSlug = process.env.npm_config_source; +if (!sourceChainSlug) { + console.error("Error: source flag is required"); + process.exit(1); +} + +const destinationChainSlug = process.env.npm_config_destination; +if (!destinationChainSlug) { + console.error("Error: destination flag is required"); + process.exit(1); +} + +const startBlock = process.env.npm_config_startblock; +if (!startBlock) { + console.error("Error: startblock flag is required"); + process.exit(1); +} + +const endBlock = process.env.npm_config_endblock; +if (!endBlock) { + console.error("Error: endblock flag is required"); + process.exit(1); +} + +const addresses: DeploymentAddresses = getAllAddresses(mode); + +export const main = async () => { + const sourceChain = sourceChainSlug; + const destinationChain = destinationChainSlug; + + console.log(`\nProcessing path: ${sourceChain} -> ${destinationChain}\n`); + + // Get addresses from prod_addresses.json + const sourceAddresses = addresses[sourceChain]; + if (!sourceAddresses) { + console.error(`Error: No addresses found for source chain ${sourceChain}`); + process.exit(1); + } + + const integration = sourceAddresses.integrations?.[destinationChain]; + if (!integration) { + console.error( + `Error: No integration found for ${sourceChain} -> ${destinationChain}` + ); + process.exit(1); + } + + // Get FAST integration addresses (switchboard, socket, capacitor) + const fastIntegration = integration[IntegrationTypes.fast]; + if (!fastIntegration) { + console.error( + `Error: No FAST integration found for ${sourceChain} -> ${destinationChain}` + ); + process.exit(1); + } + + const switchboardAddress = fastIntegration.switchboard; + const capacitorAddress = fastIntegration.capacitor; + const socketAddress = sourceAddresses.Socket; + + console.log("Addresses:"); + console.log(` Switchboard: ${switchboardAddress}`); + console.log(` Socket: ${socketAddress}`); + console.log(` Capacitor: ${capacitorAddress}\n`); + + // Get provider and query events + const provider = getProviderFromChainSlug(parseInt(sourceChain) as ChainSlug); + + const capacitorContract = new ethers.Contract( + capacitorAddress, + SingleCapacitorArtifact.abi, + provider + ); + + const fromBlock = parseInt(startBlock); + const toBlock = parseInt(endBlock); + + console.log(`Querying events from block ${fromBlock} to ${toBlock}\n`); + + // Query MessageAdded events in chunks of 5000 blocks + const CHUNK_SIZE = 5000; + const messageAddedEvents = []; + + 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}`); + + const events = await capacitorContract.queryFilter( + capacitorContract.filters.MessageAdded(), + currentBlock, + chunkEnd + ); + + messageAddedEvents.push(...events); + } + + console.log(`Found ${messageAddedEvents.length} outbound transactions:\n`); + + for (const event of messageAddedEvents) { + console.log(`Block: ${event.blockNumber}`); + console.log(` Transaction Hash: ${event.transactionHash}`); + console.log(` Packed Message: ${event.args?.packedMessage}`); + console.log(` Packet Count: ${event.args?.packetCount?.toString()}`); + console.log(` Root Hash: ${event.args?.newRootHash}`); + console.log(""); + } + + console.log("Script completed."); +}; + +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/admin/get-seal-events.ts b/scripts/admin/get-seal-events.ts new file mode 100644 index 00000000..4307cbab --- /dev/null +++ b/scripts/admin/get-seal-events.ts @@ -0,0 +1,149 @@ +import { config as dotenvConfig } from "dotenv"; +import { + ChainSlug, + DeploymentAddresses, + IntegrationTypes, + getAllAddresses, +} from "../../src"; +import { mode } from "../deploy/config/config"; +import SocketArtifact from "../../out/Socket.sol/Socket.json"; +import { getProviderFromChainSlug } from "../constants"; +import { ethers } from "ethers"; + +dotenvConfig(); + +/** + * Usage + * + * --source Specify the source chain slug. + * This flag is required. + * Eg. npx --source=1 --destination=10 --startblock=12345 --endblock=12456 ts-node scripts/admin/get-seal-events.ts + * + * --destination Specify the destination chain slug. + * This flag is required. + * + * --startblock Specify the start block number. + * This flag is required. + * + * --endblock Specify the end block number. + * This flag is required. + */ + +const sourceChainSlug = process.env.npm_config_source; +if (!sourceChainSlug) { + console.error("Error: source flag is required"); + process.exit(1); +} + +const destinationChainSlug = process.env.npm_config_destination; +if (!destinationChainSlug) { + console.error("Error: destination flag is required"); + process.exit(1); +} + +const startBlock = process.env.npm_config_startblock; +if (!startBlock) { + console.error("Error: startblock flag is required"); + process.exit(1); +} + +const endBlock = process.env.npm_config_endblock; +if (!endBlock) { + console.error("Error: endblock flag is required"); + process.exit(1); +} + +const addresses: DeploymentAddresses = getAllAddresses(mode); + +export const main = async () => { + const sourceChain = sourceChainSlug; + const destinationChain = destinationChainSlug; + + console.log(`\nProcessing path: ${sourceChain} -> ${destinationChain}\n`); + + // Get addresses from prod_addresses.json + const sourceAddresses = addresses[sourceChain]; + if (!sourceAddresses) { + console.error(`Error: No addresses found for source chain ${sourceChain}`); + process.exit(1); + } + + const integration = sourceAddresses.integrations?.[destinationChain]; + if (!integration) { + console.error( + `Error: No integration found for ${sourceChain} -> ${destinationChain}` + ); + process.exit(1); + } + + // Get FAST integration addresses (switchboard, socket, capacitor) + const fastIntegration = integration[IntegrationTypes.fast]; + if (!fastIntegration) { + console.error( + `Error: No FAST integration found for ${sourceChain} -> ${destinationChain}` + ); + process.exit(1); + } + + const switchboardAddress = fastIntegration.switchboard; + const capacitorAddress = fastIntegration.capacitor; + const socketAddress = sourceAddresses.Socket; + + console.log("Addresses:"); + console.log(` Switchboard: ${switchboardAddress}`); + console.log(` Socket: ${socketAddress}`); + console.log(` Capacitor: ${capacitorAddress}\n`); + + // Get provider and query events + const provider = getProviderFromChainSlug(parseInt(sourceChain) as ChainSlug); + + const socketContract = new ethers.Contract( + socketAddress, + SocketArtifact.abi, + provider + ); + + const fromBlock = parseInt(startBlock); + const toBlock = parseInt(endBlock); + + console.log(`Querying events from block ${fromBlock} to ${toBlock}\n`); + + // Query Sealed events in chunks of 5000 blocks + const CHUNK_SIZE = 5000; + const sealedEvents = []; + + 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}`); + + const events = await socketContract.queryFilter( + socketContract.filters.Sealed(), + currentBlock, + chunkEnd + ); + + sealedEvents.push(...events); + } + + console.log(`\nFound ${sealedEvents.length} sealed events:\n`); + + for (const event of sealedEvents) { + console.log(`Block: ${event.blockNumber}`); + console.log(` Transaction Hash: ${event.transactionHash}`); + console.log(` Transmitter: ${event.args?.transmitter}`); + console.log(` Packet ID: ${event.args?.packetId}`); + console.log(` Batch Size: ${event.args?.batchSize?.toString()}`); + console.log(` Root: ${event.args?.root}`); + console.log(` Signature: ${event.args?.signature}`); + console.log(""); + } + + console.log("Script completed."); +}; + +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/admin/send-attest.ts b/scripts/admin/send-attest.ts new file mode 100644 index 00000000..d7a32f3b --- /dev/null +++ b/scripts/admin/send-attest.ts @@ -0,0 +1,207 @@ +import { config as dotenvConfig } from "dotenv"; +import { + ChainSlug, + DeploymentAddresses, + IntegrationTypes, + getAllAddresses, +} from "../../src"; +import { mode, overrides } from "../deploy/config/config"; +import FastSwitchboardArtifact from "../../out/FastSwitchboard.sol/FastSwitchboard.json"; +import { getProviderFromChainSlug } from "../constants"; +import { ethers, Wallet } from "ethers"; +import { defaultAbiCoder, keccak256 } from "ethers/lib/utils"; +import { getAwsKmsSigner } from "@socket.tech/dl-common"; + +dotenvConfig(); + +/** + * Usage + * + * --source Specify the source chain slug. + * This flag is required. + * Eg. npx --source=1 --destination=10 --packetid=0x... --proposalcount=1 --root=0x... --kmskeyid=abc-123 ts-node scripts/admin/send-attest.ts + * + * --destination Specify the destination chain slug. + * This flag is required. + * + * --packetid Specify the packet ID. + * This flag is required. + * + * --proposalcount Specify the proposal count. + * This flag is required. + * + * --root Specify the root hash. + * This flag is required. + * + * --kmskeyid Specify the AWS KMS key ID. + * This flag is required. + * + * --sendtx Send attest tx along with signature generation. + * Default is only generate and display signature. + * Eg. npx --source=1 --destination=10 --packetid=0x... --proposalcount=1 --root=0x... --kmskeyid=abc-123 --sendtx ts-node scripts/admin/send-attest.ts + */ + +const sourceChainSlug = process.env.npm_config_source; +if (!sourceChainSlug) { + console.error("Error: source flag is required"); + process.exit(1); +} + +const destinationChainSlug = process.env.npm_config_destination; +if (!destinationChainSlug) { + console.error("Error: destination flag is required"); + process.exit(1); +} + +const packetId = process.env.npm_config_packetid; +if (!packetId) { + console.error("Error: packetid flag is required"); + process.exit(1); +} + +const proposalCount = process.env.npm_config_proposalcount; +if (!proposalCount) { + console.error("Error: proposalcount flag is required"); + process.exit(1); +} + +const root = process.env.npm_config_root; +if (!root) { + console.error("Error: root flag is required"); + process.exit(1); +} + +const kmsKeyId = process.env.npm_config_kmskeyid; +if (!kmsKeyId) { + console.error("Error: kmskeyid flag is required"); + process.exit(1); +} + +const sendTx = process.env.npm_config_sendtx === "true"; + +const signerKey = process.env.SOCKET_SIGNER_KEY; +if (sendTx && !signerKey) { + console.error("Error: SOCKET_SIGNER_KEY is required when sending tx"); + process.exit(1); +} + +const addresses: DeploymentAddresses = getAllAddresses(mode); + +export const main = async () => { + const sourceChain = sourceChainSlug; + const destinationChain = destinationChainSlug; + + console.log(`\nProcessing attest for path: ${sourceChain} -> ${destinationChain}\n`); + + // Get addresses from prod_addresses.json + const destinationAddresses = addresses[destinationChain]; + if (!destinationAddresses) { + console.error( + `Error: No addresses found for destination chain ${destinationChain}` + ); + process.exit(1); + } + + const integration = destinationAddresses.integrations?.[sourceChain]; + if (!integration) { + console.error( + `Error: No integration found for ${destinationChain} -> ${sourceChain}` + ); + process.exit(1); + } + + // Get FAST integration switchboard + const fastIntegration = integration[IntegrationTypes.fast]; + if (!fastIntegration) { + console.error( + `Error: No FAST integration found for ${destinationChain} -> ${sourceChain}` + ); + process.exit(1); + } + + const switchboardAddress = fastIntegration.switchboard; + + console.log("Addresses:"); + console.log(` Switchboard: ${switchboardAddress}\n`); + + // Get provider + const provider = getProviderFromChainSlug( + parseInt(destinationChain) as ChainSlug + ); + + // Get AWS KMS signer + console.log("Getting AWS KMS signer..."); + const kmsSigner = (await getAwsKmsSigner(kmsKeyId)).connect(provider); + const kmsAddress = await kmsSigner.getAddress(); + console.log(`KMS Address: ${kmsAddress}\n`); + + // Prepare message hash for signing + const messageHash = keccak256( + defaultAbiCoder.encode( + ["address", "uint32", "bytes32", "uint256", "bytes32"], + [switchboardAddress, parseInt(destinationChain), packetId, proposalCount, root] + ) + ); + + console.log("Message hash:", messageHash); + + // Sign with KMS + console.log("\nSigning with AWS KMS..."); + 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 calldata = switchboardInterface.encodeFunctionData("attest", [ + packetId, + proposalCount, + root, + signature, + ]); + + console.log("\n=== Transaction Details ==="); + console.log(`Chain ID: ${(await provider.getNetwork()).chainId}`); + console.log(`Target: ${switchboardAddress}`); + console.log(`Value: 0`); + console.log(`Calldata: ${calldata}`); + console.log("===========================\n"); + + if (sendTx) { + console.log("Sending attest transaction..."); + + const wallet = new Wallet(signerKey!, provider); + + const switchboardContract = new ethers.Contract( + switchboardAddress, + FastSwitchboardArtifact.abi, + wallet + ); + + const tx = await switchboardContract.attest( + packetId, + proposalCount, + root, + signature, + { + ...(await overrides(parseInt(destinationChain))), + } + ); + + console.log("Transaction hash:", tx.hash); + const receipt = await tx.wait(); + console.log("Transaction confirmed in block:", receipt.blockNumber); + 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("\nScript completed."); +}; + +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); diff --git a/scripts/admin/send-execute.ts b/scripts/admin/send-execute.ts new file mode 100644 index 00000000..a6c912e5 --- /dev/null +++ b/scripts/admin/send-execute.ts @@ -0,0 +1,237 @@ +import { config as dotenvConfig } from "dotenv"; +import { + ChainSlug, + DeploymentAddresses, + getAllAddresses, + getOverrides, +} from "../../src"; +import { mode, overrides } from "../deploy/config/config"; +import SocketArtifact from "../../out/Socket.sol/Socket.json"; +import { getProviderFromChainSlug } from "../constants"; +import { ethers, Wallet } from "ethers"; +import { getAwsKmsSigner } from "@socket.tech/dl-common"; + +dotenvConfig(); + +/** + * Usage + * + * --destination Specify the destination chain slug where execute will be called. + * This flag is required. + * Eg. npx --destination=10 --kmskeyid=abc-123 ts-node scripts/admin/send-execute.ts + * + * --kmskeyid Specify the AWS KMS key ID for executor signature. + * This flag is required. + * + * --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 + */ + +// Configuration object with execution and message details +const EXECUTION_CONFIG = { + executionDetails: { + 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 + }, + messageDetails: { + 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 + }, + msgValue: "0", // ETH value to send with transaction (in wei) +}; + +const destinationChainSlug = process.env.npm_config_destination; +if (!destinationChainSlug) { + console.error("Error: destination flag is required"); + process.exit(1); +} + +const kmsKeyId = process.env.npm_config_kmskeyid; +if (!kmsKeyId) { + console.error("Error: kmskeyid flag is required"); + process.exit(1); +} + +const sendTx = process.env.npm_config_sendtx === "true"; + +const signerKey = process.env.SOCKET_SIGNER_KEY; +if (sendTx && !signerKey) { + console.error("Error: SOCKET_SIGNER_KEY is required when sending tx"); + process.exit(1); +} + +const addresses: DeploymentAddresses = getAllAddresses(mode); + +export const main = async () => { + const destinationChain = parseInt(destinationChainSlug) as ChainSlug; + + console.log(`\nProcessing execute transaction for chain: ${destinationChain}\n`); + + // Get addresses from prod_addresses.json + const destinationAddresses = addresses[destinationChain]; + if (!destinationAddresses) { + console.error( + `Error: No addresses found for destination chain ${destinationChain}` + ); + process.exit(1); + } + + const socketAddress = destinationAddresses.Socket; + + console.log("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(" 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(` Payload: ${EXECUTION_CONFIG.messageDetails.payload}`); + console.log(` Message Value: ${EXECUTION_CONFIG.msgValue}\n`); + + // Get provider + const provider = getProviderFromChainSlug( + destinationChain + ); + + // Get Socket contract to access hasher + const socketContract = new ethers.Contract( + socketAddress, + SocketArtifact.abi, + provider + ); + + // Get hasher address + const hasherAddress = await socketContract.hasher__(); + console.log(`Hasher address: ${hasherAddress}`); + + // 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)" + ]; + 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}`); + + // Get plug config to find siblingPlug + const plugConfig = await socketContract.getPlugConfig(dstPlug, srcChainSlug); + const siblingPlug = plugConfig.siblingPlug; + + console.log(` Sibling Plug: ${siblingPlug}\n`); + + // Pack message for signature + const packedMessage = await hasherContract.packMessage( + srcChainSlug, + siblingPlug, + destinationChain, + dstPlug, + [ + EXECUTION_CONFIG.messageDetails.msgId, + EXECUTION_CONFIG.messageDetails.executionFee, + EXECUTION_CONFIG.messageDetails.minMsgGasLimit, + EXECUTION_CONFIG.messageDetails.executionParams, + EXECUTION_CONFIG.messageDetails.payload, + ] + ); + + console.log("Packed message:", packedMessage); + + // Get AWS KMS signer + console.log("\nGetting AWS KMS signer..."); + const kmsSigner = (await getAwsKmsSigner(kmsKeyId)).connect(provider); + const kmsAddress = await kmsSigner.getAddress(); + console.log(`KMS Address (Executor): ${kmsAddress}`); + + // Sign with KMS + console.log("\nSigning packed message with AWS KMS..."); + 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, + 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, + }; + + // Prepare transaction data + const socketInterface = new ethers.utils.Interface(SocketArtifact.abi); + const calldata = socketInterface.encodeFunctionData("execute", [ + executionDetails, + messageDetails, + ]); + + 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(`Calldata: ${calldata}`); + console.log("===========================\n"); + + if (sendTx) { + console.log("Sending execute transaction..."); + + const wallet = new Wallet(signerKey!, provider); + const socketContractWithSigner = new ethers.Contract( + socketAddress, + SocketArtifact.abi, + wallet + ); + + const tx = await socketContractWithSigner.execute( + executionDetails, + messageDetails, + { + value: EXECUTION_CONFIG.msgValue, + ...(await getOverrides(destinationChain, provider)), + } + ); + + console.log("Transaction hash:", tx.hash); + const receipt = await tx.wait(); + console.log("Transaction confirmed in block:", receipt.blockNumber); + 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("\nScript completed."); +}; + +main() + .then(() => process.exit(0)) + .catch((error: Error) => { + console.error(error); + process.exit(1); + }); From 45f739522d8022e6729a361424447ca737bda969 Mon Sep 17 00:00:00 2001 From: arthcp Date: Sun, 16 Nov 2025 20:43:02 -0300 Subject: [PATCH 2/4] feat: add monad --- .env.example | 2 + deployments/prod_addresses.json | 765 ++++++++++++++++-- deployments/prod_verification.json | 146 ++++ scripts/constants/overrides.ts | 61 +- scripts/deploy/scripts/registerSwitchboard.ts | 4 +- .../constants/batcherSupportedChainSlug.ts | 1 + scripts/rpcConfig/constants/explorers.ts | 1 + scripts/rpcConfig/constants/icons.ts | 1 + scripts/rpcConfig/constants/rpc.ts | 1 + scripts/rpcConfig/constants/version.ts | 2 +- src/enums/chainId.ts | 1 + src/enums/chainSlug.ts | 1 + src/enums/chainSlugToHardhatChainName.ts | 1 + src/enums/chainSlugToId.ts | 1 + src/enums/chainSlugToKey.ts | 1 + src/enums/currency.ts | 3 +- src/enums/ethLikeChains.ts | 1 + src/enums/hardhatChainName.ts | 1 + src/enums/hardhatChainNameToSlug.ts | 1 + src/enums/mainnetIds.ts | 1 + src/enums/native-tokens.ts | 1 + 21 files changed, 928 insertions(+), 69 deletions(-) diff --git a/.env.example b/.env.example index b8ffb2bf..3655143c 100644 --- a/.env.example +++ b/.env.example @@ -139,3 +139,5 @@ HYPEREVM_RPC=' ' SEI_RPC=' ' PLASMA_RPC=' ' + +MONAD_RPC=' ' diff --git a/deployments/prod_addresses.json b/deployments/prod_addresses.json index ab297b31..310c7bda 100644 --- a/deployments/prod_addresses.json +++ b/deployments/prod_addresses.json @@ -79,6 +79,18 @@ "switchboard": "0xEaa15Fd42D68b8334a3BB1E9bF8cA85BaBE83790" } }, + "143": { + "FAST": { + "capacitor": "0x8b2ce60FC3d64542A28AAD3DDa9aef57A3b1bACe", + "decapacitor": "0xDf0065792B83398e5Ac39395E9Bb26C099b7156C", + "switchboard": "0xD5a83a40F262E2247e6566171f9ADc76b745F5cD" + }, + "OPTIMISTIC": { + "capacitor": "0xc08445a13B25Ce65F16f4cCdF11E0b9b61fb0B40", + "decapacitor": "0x7939dF6870ddaB313e96852C677b59243a2f99eD", + "switchboard": "0xEaa15Fd42D68b8334a3BB1E9bF8cA85BaBE83790" + } + }, "146": { "FAST": { "capacitor": "0x07D8e9E2838D93E4e615573DFc91eDD1724DC68E", @@ -728,6 +740,18 @@ "switchboard": "0x09A6e77912a6bcFc3abfDfb841A85380Bb2A8B97" } }, + "143": { + "FAST": { + "capacitor": "0x3f3Ba46f0cc17C99E27566fd1F277AD6Dc8f1f92", + "decapacitor": "0xcE57206653D389acCbee4213FbabAffBD516bFb5", + "switchboard": "0x09A6e77912a6bcFc3abfDfb841A85380Bb2A8B97" + }, + "OPTIMISTIC": { + "capacitor": "0x94B5753Bd12f45792E46a0d73f78a77ecC642fc9", + "decapacitor": "0x6970d42EA00DF8618a97D420cBD48FBa39Ed4c3b", + "switchboard": "0xb113d72896d4874111AF00c9499b5a64e9f1e3f4" + } + }, "146": { "FAST": { "capacitor": "0xDA07843bBbe4D602978b49fe405C5519FBAa8632", @@ -1244,6 +1268,18 @@ "switchboard": "0xCedce2e52aa6551bC407f640D8Bd9179b528347C" } }, + "143": { + "FAST": { + "capacitor": "0x30963e516289635166A7127179E8f503a6CA1739", + "decapacitor": "0x21e155eA1Bc0ECD4B439bF329bf4A0975d94519b", + "switchboard": "0xCedce2e52aa6551bC407f640D8Bd9179b528347C" + }, + "OPTIMISTIC": { + "capacitor": "0xDD47BeCd34b7FB257f4cEe74Eb1B31Ff3D264b94", + "decapacitor": "0xe53CfdBA4292C9854d0F065beAda4da2B8acFeca", + "switchboard": "0x5490aBcD9949833FB68e4d222ee68dc225881c25" + } + }, "146": { "FAST": { "capacitor": "0x7E5d1939FA70d221a3a218265Af3AA3D7914497D", @@ -1724,6 +1760,18 @@ "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } }, + "143": { + "FAST": { + "capacitor": "0xD9596ede5a0f8E25dDee8566440391E4E7644701", + "decapacitor": "0x105aFeb4225Ffe7791f4920a23dcAd4c05100856", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0xb0E95F897Db1737e560AFF512D1598925b6E61C3", + "decapacitor": "0x01ee7e3d895212E3d8114f7487c64E122c764203", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } + }, "146": { "FAST": { "capacitor": "0xf955965c803F65b1AdE2A99630Fd36dec3582CF3", @@ -2111,6 +2159,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "143": { + "FAST": { + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "146": { "FAST": { "capacitor": "0x8fE14d7Ff9472742090cc91B3E653768e3C89303", @@ -2450,6 +2510,18 @@ "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" } }, + "143": { + "FAST": { + "capacitor": "0x39381673b69fc3ba6E1FE9DA718C317C6DDb80f6", + "decapacitor": "0xb17d25ba31383bCE5217733C38415dA5DfBfd32D", + "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + }, + "OPTIMISTIC": { + "capacitor": "0x6bd84D31245840F75CBE119032050baa48c2bBd3", + "decapacitor": "0xa4303640C31F54811139b219eaaF55032fEAB20F", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + }, "146": { "FAST": { "capacitor": "0xB5d93C63d2278330c711F5eE9D12a19e06054E86", @@ -2769,86 +2841,433 @@ "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" }, "OPTIMISTIC": { - "capacitor": "0x0607B9B995b47f531fC747990383dbD83866c028", - "decapacitor": "0xd52Ec1A09f5E4A911C6AC5C9c38846aEdaaAE5D5", - "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + "capacitor": "0x0607B9B995b47f531fC747990383dbD83866c028", + "decapacitor": "0xd52Ec1A09f5E4A911C6AC5C9c38846aEdaaAE5D5", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + }, + "98866": { + "FAST": { + "capacitor": "0x1eB10897b5A0295C69A8800A0BB7b32dF356ea00", + "decapacitor": "0xACcfeB9f8F6bD4D4C76F91E716aaE1E789C5664D", + "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + }, + "OPTIMISTIC": { + "capacitor": "0x355063C090644669e61ed08715da1f254474b7b9", + "decapacitor": "0xA9427DA6ef240fb5DA40F4BB0d90Ab6639AAfb23", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + }, + "534352": { + "FAST": { + "capacitor": "0xED6876890D3990eA72373AF0Aca97c81eCb6Ebf9", + "decapacitor": "0xc237b6e9952f42d03d8C96C0B03c027C8859CC7a", + "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + }, + "OPTIMISTIC": { + "capacitor": "0xD20Bb634b8e31Ec8AB518Acccdc3373B145868b4", + "decapacitor": "0x0940A5C05ae26388BfCDF9d071a448765fE0db4c", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + }, + "543210": { + "FAST": { + "capacitor": "0x6E7eBB9F0cf625deF7013B783e64070AA4bB253d", + "decapacitor": "0x1Ae43A0ad3f4e038da149544b38E6C95f8FAb918", + "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + }, + "OPTIMISTIC": { + "capacitor": "0xE6008026F698901b01850314377440a541B96592", + "decapacitor": "0x9C899dF696D7578c45Be5215c3aaD5A4239F1bCb", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + }, + "747474": { + "FAST": { + "capacitor": "0x99D3AF460cd1512505c584E28A2F0434ef4cAB96", + "decapacitor": "0x3A46d9017c6a2ac16eF3809900664587E71e0f26", + "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + }, + "OPTIMISTIC": { + "capacitor": "0xeDfbC36699F9a3591f5c2d9C8Fc51C64bE5bE74F", + "decapacitor": "0x5938f6c643Ec0f56421E83970dFe1F50b0C98137", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + }, + "1324967486": { + "FAST": { + "capacitor": "0x93DD5613D77b3eaD19cE6a9F19f488F262C9EdBB", + "decapacitor": "0xF3ccB44A118713b284dF6b1400f6605c6C9E22F2", + "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + }, + "OPTIMISTIC": { + "capacitor": "0xbFFF068E963ad531c681767C7C6B34C05E9eDeA3", + "decapacitor": "0xD85AE666809D3892137F70B7330e337D4d31c2D5", + "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + } + } + }, + "OptimisticSwitchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372", + "FastSwitchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445", + "SocketBatcher": "0x52B143D34eE40E744358E3735b8fCA7785F182ED", + "startBlock": 54457209, + "Counter": "0x4c2BAB5A7Df134519368ab78364ea220db1bdA26", + "SocketSimulator": "0xC7f534aA1443B947b7B9A09B497B49FFA1B30dA9", + "SimulatorUtils": "0x10C700641F48DA53434439BF2dA21A4C27091221", + "SwitchboardSimulator": "0x3b103Ada40478B169095063fC4bABa667f20BA45", + "CapacitorSimulator": "0x76fA03B93Ac9b48a66C38C6075C200b750E21923", + "ExecutionManagerDF": "0x5a0e01ED2be962a16cF56DFb6C3F252adED4483c", + "SafeL2": "0xe49027b6e47dcFd9B059F7Ba13bd62e21E4e262A", + "SafeProxyFactory": "0x2d8d2905C252dF23cb62AEcaB3B317BF68Cf1137", + "SocketSafeProxy": "0x533250a06a5A7CB6Ac067Cf9c052c1CDb494A701", + "MultiSigWrapper": "0x0B0220c1a41F9f0eb0064278808354f3C4e9858e" + }, + "143": { + "SafeL2": "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", + "SafeProxyFactory": "0x1F6bc87f3309B5D31Eb0BdaBE3ED7d3110d3B9c3", + "SocketSafeProxy": "0xA49f876C8F49414859cC9b0c4fEF794F0795Ccb4", + "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": 34699429, + "integrations": { + "1": { + "FAST": { + "capacitor": "0xf9B3084AEdD848aCc7Ff1efB7b98a04E059CA2f7", + "decapacitor": "0x4cb2c95C9d5daA1548CD7123D90fe6f2c1808162", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x979463f21b2aFF5B615722785D7201b3890b9F3f", + "decapacitor": "0x19710c0B9166F71b246526541eAe25117b6Ae264", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "10": { + "FAST": { + "capacitor": "0x1d73757456B92902E4EbC0aD9bA6ABB217C34d66", + "decapacitor": "0x44E7DfF81B45aAb0c717bF58d24557Cf323E444b", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x0bBcDFeb2a0cF44dFfe5015Cf4634C0A69eD629F", + "decapacitor": "0xB6331aA372D8Fd4a95BC081Ee0c6191f57118851", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "56": { + "FAST": { + "capacitor": "0x7CAfa251d16b68dF44511915C50855226A071044", + "decapacitor": "0xddf72Bfca9Fb79ded93B819fE515D4f6ea367596", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x8fE14d7Ff9472742090cc91B3E653768e3C89303", + "decapacitor": "0x54589d534958C2186E41028ed23f460965576148", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "100": { + "FAST": { + "capacitor": "0x4B751b3D691653a3131dd3b71238116C66Dc9b9b", + "decapacitor": "0x92b2D6781BF1Ab65a64EE8Ec1d043a3777f2bFB7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xde809627100191f5032358fE0B4Fa845Bac48803", + "decapacitor": "0xfAA39f051a7B0a8eeaD7eF17483eA320AD5aCA24", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "130": { + "FAST": { + "capacitor": "0x197fAcB10090B503E58f32a983BB7a76d2156d09", + "decapacitor": "0x9F4225B10849543946daa9d85ADB403b78DFE38e", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x6c39fB4b3884dfAE8a1A2f3082ABCB30F9242471", + "decapacitor": "0x75BBf0bDC8C2e69fa40FaEF1703994f81fecd8F4", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "137": { + "FAST": { + "capacitor": "0xbeE93bE6ab2244Bdb82862C29949516cB4CC7Bc0", + "decapacitor": "0x37F5Ee57d3b74c8e5Fda258e2A7142C8f3b78A88", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xb39F6890b95FE263392b71E6B3285a046507CA8A", + "decapacitor": "0x48F95E10F71a8aA7F43F094b7CB5515bC026aC49", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "146": { + "FAST": { + "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", + "decapacitor": "0xaA8d34d307AE231e333FAc71232d5b22313eE017", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xCbf0A410f971ECea2D823d376a5150B56F7C5E5d", + "decapacitor": "0xAF63DD7f5CDf5527daa5e8F8334F96a0482Cb84f", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "480": { + "FAST": { + "capacitor": "0x601F26a7BB371077a6c5cc1E4EB2C1e5cE54427d", + "decapacitor": "0xeE6c260cDbB088FE9a9B89b9aa24b8914Bb38412", + "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": "0xD19b9C9e80dD65BD7eB9600Bd194f14eE10de750", + "decapacitor": "0x38e2F19a25f135dAaFB4636613a686Ec3702BD54", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xc51a66F8AE8e5e845e34063C68C21D79f5e21C88", + "decapacitor": "0x2E87cdb436F832E90409fe317B587b536D169d64", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "34443": { + "FAST": { + "capacitor": "0x6a42B6f626252385857a7de2a439aCE07F5438c4", + "decapacitor": "0xEe8a739e7850c3ea73bC91ba311B228Ec02567dF", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x49b054e5F3cA37Cd1535f2611a5F8fF6086CE593", + "decapacitor": "0x8Dc7bffB70D61F693aF3bBCc45b2DA546efB4509", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "42161": { + "FAST": { + "capacitor": "0x7bA204d1e2bC0A09089FD3B158912b32C944F99c", + "decapacitor": "0x3Ed82677994b2A5140192F4401FaE03da9bBfE5F", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xAe74F5C2C155c8D576794011d4D3e953ED27315c", + "decapacitor": "0x7C0b3940A14Dd8849C576c5e7aa613509001818D", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "43114": { + "FAST": { + "capacitor": "0xeAFAead3dB42e1d2fF04f642eC6A0839CDF4C34f", + "decapacitor": "0x155D90a2e1fB7Fb282eAe6fF2DeC46F5fadD35E0", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x3Be9e471f8147374ad9176BD857Af0Fc308b4FFF", + "decapacitor": "0x31704c770f814978a16f5A77abA6DD0549aC617E", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "57073": { + "FAST": { + "capacitor": "0x1959d29e1a271f901625452a15ae7BaCDbFf8C9e", + "decapacitor": "0xF54B80Abfe41D9EED7E985E4e784182d499C19B6", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xDEFC12e2750d308Cc740c14Ce9a0b581a42Cc06d", + "decapacitor": "0xD5115C371dC679Bc42384F1d4fD98fa0e46A8309", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, + "59144": { + "FAST": { + "capacitor": "0xC891AD2d60636e7c24E89b41eF98a2ecb58A672C", + "decapacitor": "0xfD2E08484B0A74E9343feC745D7045A6a270aAD2", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x8B86E174243bcCef59b8762e80d152202ecaEe57", + "decapacitor": "0xbb076dA3Bf24aBE880e18BB4B96CAB27eF69bF3f", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "98866": { + "80094": { "FAST": { - "capacitor": "0x1eB10897b5A0295C69A8800A0BB7b32dF356ea00", - "decapacitor": "0xACcfeB9f8F6bD4D4C76F91E716aaE1E789C5664D", - "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + "capacitor": "0x84aCA8345264138022AdC32f1888918277397673", + "decapacitor": "0x08a87F2508A7FF157a3ce9946C16a91230001df7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0x355063C090644669e61ed08715da1f254474b7b9", - "decapacitor": "0xA9427DA6ef240fb5DA40F4BB0d90Ab6639AAfb23", - "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + "capacitor": "0xa53031113acD6647A1604CA69C6ce875cc44270f", + "decapacitor": "0x24B1AAba68c55B6C7E98EdC6dce61fADB920bCeb", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "534352": { + "81457": { "FAST": { - "capacitor": "0xED6876890D3990eA72373AF0Aca97c81eCb6Ebf9", - "decapacitor": "0xc237b6e9952f42d03d8C96C0B03c027C8859CC7a", - "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + "capacitor": "0x5aa161e95A466340d5c8759b1A5102108Ede8153", + "decapacitor": "0xC86D0A59EB130de1E3f0a7a08Ee4993a433CA72E", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xD20Bb634b8e31Ec8AB518Acccdc3373B145868b4", - "decapacitor": "0x0940A5C05ae26388BfCDF9d071a448765fE0db4c", - "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + "capacitor": "0xfAA175B66ED19F8B7dfa01e3990CD8122C664477", + "decapacitor": "0xc4d08712916c2019ae821f169E9751D2A9985F37", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "543210": { + "98866": { "FAST": { - "capacitor": "0x6E7eBB9F0cf625deF7013B783e64070AA4bB253d", - "decapacitor": "0x1Ae43A0ad3f4e038da149544b38E6C95f8FAb918", - "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + "capacitor": "0xBfFDb040a1Ae4a317f5733D98f8E6bDF629f9200", + "decapacitor": "0xbf71851B6De96E614A1ff0Fb8d3d28fdc9fe0f27", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xE6008026F698901b01850314377440a541B96592", - "decapacitor": "0x9C899dF696D7578c45Be5215c3aaD5A4239F1bCb", - "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + "capacitor": "0x67dc2f9bc1AB20B2D6f684ED73F031c11f5860f9", + "decapacitor": "0x2AF0D774b661E2a262442e4270e777D37e87d762", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "747474": { + "534352": { "FAST": { - "capacitor": "0x99D3AF460cd1512505c584E28A2F0434ef4cAB96", - "decapacitor": "0x3A46d9017c6a2ac16eF3809900664587E71e0f26", - "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + "capacitor": "0x98df574c1ED3802b4Ee9C1B0d9BF35fC79df0d65", + "decapacitor": "0x2F8AebBeB7Dc474498A431233bD35eD9A360507f", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xeDfbC36699F9a3591f5c2d9C8Fc51C64bE5bE74F", - "decapacitor": "0x5938f6c643Ec0f56421E83970dFe1F50b0C98137", - "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + "capacitor": "0xC4c4022d7Bd5401C0C182A791Fc090f6a5B0F19E", + "decapacitor": "0xb2e4DC9Bf4e8299BcfC3BadeF33fcB6AAC4086bc", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, - "1324967486": { + "747474": { "FAST": { - "capacitor": "0x93DD5613D77b3eaD19cE6a9F19f488F262C9EdBB", - "decapacitor": "0xF3ccB44A118713b284dF6b1400f6605c6C9E22F2", - "switchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445" + "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", + "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" }, "OPTIMISTIC": { - "capacitor": "0xbFFF068E963ad531c681767C7C6B34C05E9eDeA3", - "decapacitor": "0xD85AE666809D3892137F70B7330e337D4d31c2D5", - "switchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372" + "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", + "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } } - }, - "OptimisticSwitchboard": "0xeF7C79DF9c9AA6BC5d1d4ae308907e9B6a6B4372", - "FastSwitchboard": "0x33918BBF9f5269d90b8c0AbF1Fd1134C827bA445", - "SocketBatcher": "0x52B143D34eE40E744358E3735b8fCA7785F182ED", - "startBlock": 54457209, - "Counter": "0x4c2BAB5A7Df134519368ab78364ea220db1bdA26", - "SocketSimulator": "0xC7f534aA1443B947b7B9A09B497B49FFA1B30dA9", - "SimulatorUtils": "0x10C700641F48DA53434439BF2dA21A4C27091221", - "SwitchboardSimulator": "0x3b103Ada40478B169095063fC4bABa667f20BA45", - "CapacitorSimulator": "0x76fA03B93Ac9b48a66C38C6075C200b750E21923", - "ExecutionManagerDF": "0x5a0e01ED2be962a16cF56DFb6C3F252adED4483c", - "SafeL2": "0xe49027b6e47dcFd9B059F7Ba13bd62e21E4e262A", - "SafeProxyFactory": "0x2d8d2905C252dF23cb62AEcaB3B317BF68Cf1137", - "SocketSafeProxy": "0x533250a06a5A7CB6Ac067Cf9c052c1CDb494A701", - "MultiSigWrapper": "0x0B0220c1a41F9f0eb0064278808354f3C4e9858e" + } }, "146": { "SignatureVerifier": "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", @@ -2939,6 +3358,18 @@ "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } }, + "143": { + "FAST": { + "capacitor": "0x954d59A26d05480B986369AFda7761e13181653a", + "decapacitor": "0xeCa941e43c037d561Ed4Cb95c2164a9Bb566027c", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0x5Df41754Fd0C2Ab6Bc68d35611791Af9Dd97753F", + "decapacitor": "0x2bed3e2D4B70398241373Ac9fD98c1CD6b281843", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } + }, "324": { "FAST": { "capacitor": "0xCF029dbbFCeBf82C981B3Ffe78CCB38bbC57a6FC", @@ -4096,6 +4527,18 @@ "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" } }, + "143": { + "FAST": { + "capacitor": "0xEed7c44CAf0d368DF243FC78F3801A783B792550", + "decapacitor": "0xa82df5b21eCd8ef91f936d385c67DC96943760cA", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + }, + "OPTIMISTIC": { + "capacitor": "0x413C993f3B69F08E6141bCa331BaB7D98Cd0f27a", + "decapacitor": "0x5Cc97F92ab90524521704e48695D781fD2401A68", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + } + }, "146": { "FAST": { "capacitor": "0x5E8BF8FDc04f08c34669F51FC26a7f65E5F9903a", @@ -4927,6 +5370,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "143": { + "FAST": { + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "146": { "FAST": { "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", @@ -5337,6 +5792,18 @@ "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } }, + "143": { + "FAST": { + "capacitor": "0xD9596ede5a0f8E25dDee8566440391E4E7644701", + "decapacitor": "0x105aFeb4225Ffe7791f4920a23dcAd4c05100856", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0xb0E95F897Db1737e560AFF512D1598925b6E61C3", + "decapacitor": "0x01ee7e3d895212E3d8114f7487c64E122c764203", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } + }, "146": { "FAST": { "capacitor": "0xf955965c803F65b1AdE2A99630Fd36dec3582CF3", @@ -5724,6 +6191,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "143": { + "FAST": { + "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", + "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", + "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "146": { "FAST": { "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", @@ -6059,6 +6538,18 @@ "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" } }, + "143": { + "FAST": { + "capacitor": "0xEed7c44CAf0d368DF243FC78F3801A783B792550", + "decapacitor": "0xa82df5b21eCd8ef91f936d385c67DC96943760cA", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + }, + "OPTIMISTIC": { + "capacitor": "0x413C993f3B69F08E6141bCa331BaB7D98Cd0f27a", + "decapacitor": "0x5Cc97F92ab90524521704e48695D781fD2401A68", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + } + }, "146": { "FAST": { "capacitor": "0xA512d8a54772d30F4eD75AAd77B4AD30E7c97f97", @@ -6394,6 +6885,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "143": { + "FAST": { + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "146": { "FAST": { "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", @@ -6848,6 +7351,18 @@ "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" } }, + "143": { + "FAST": { + "capacitor": "0xC86EaE5E38A9811228Bc83071ef0DB15472D2Df6", + "decapacitor": "0xc6761A301030C4B98CC0CCEeF264709cC79aDcD9", + "switchboard": "0x8f9EaEe5c5df888aBA3c1Ab19689a0660d042c6d" + }, + "OPTIMISTIC": { + "capacitor": "0x484597dA2AA53aa372F2Fe038360c917E554Cf22", + "decapacitor": "0x6F526c186764f912F354733FCc1702C50D1ABeF6", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + } + }, "146": { "FAST": { "capacitor": "0x581a3529Eb3Ac98748704ae744060193829bd0B4", @@ -7453,6 +7968,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "143": { + "FAST": { + "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", + "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", + "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "146": { "FAST": { "capacitor": "0x3B7eC86684502091C7400f6977845fD1bA39b0aA", @@ -7779,6 +8306,18 @@ "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" } }, + "143": { + "FAST": { + "capacitor": "0x415f295467A255a03A933844B70444ED1bb980B4", + "decapacitor": "0x50C59a31D7573F355B48d535364C97bB3B16eeD4", + "switchboard": "0x957301825Dc21d4A92919C9E72dC9E6C6a29e7f8" + }, + "OPTIMISTIC": { + "capacitor": "0x5fD6B81dE8aeb76084f239d2959F6f5E022aF90d", + "decapacitor": "0x1843feC422152980f547B10C51be64BB02BeaCAF", + "switchboard": "0x15A55294B7278260DdfFC659Fb39a401871EeE34" + } + }, "146": { "FAST": { "capacitor": "0xBCBEC262540031BBcf0c7b11006D4588fFd8f0e7", @@ -8678,6 +9217,18 @@ "switchboard": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e" } }, + "143": { + "FAST": { + "capacitor": "0xe54021B2EEA439c9c17C34f9853e69B66c7a8a72", + "decapacitor": "0x456FdC3864b8D3766E73A45122B42A9f1b07acc2", + "switchboard": "0x57D1Aeafb6a2b7Bd4954e47a556622161A8c0A65" + }, + "OPTIMISTIC": { + "capacitor": "0x09d26474a2C8d8973bEeC1a5a6BcB5aA78FBE014", + "decapacitor": "0xc622792D69715216919fbDf76e02A281008055Cb", + "switchboard": "0xaa3d9fA3aB930aE635b001d00C612aa5b14d750e" + } + }, "146": { "FAST": { "capacitor": "0xa782720972b92EeACa1a2fE53f71CF17c2E5be5b", @@ -9062,6 +9613,18 @@ "switchboard": "0xd5e829827F665c42326EAF68Da3360bd59b42f2f" } }, + "143": { + "FAST": { + "capacitor": "0x1B04eC6ae1e883D41d26e48A223a8Ee9dAbEaf5d", + "decapacitor": "0xcc5F974d883a7302888a623431c9c0877F51Dc41", + "switchboard": "0xd5e829827F665c42326EAF68Da3360bd59b42f2f" + }, + "OPTIMISTIC": { + "capacitor": "0xF205D5596a92c9b82AE060ca499724321A264FEB", + "decapacitor": "0xB761E9F79A94937A1Ee9f2Ab198Bbd3C983c8492", + "switchboard": "0x1812ff6bd726934f18159164e2927B34949B16a8" + } + }, "146": { "FAST": { "capacitor": "0x161E7067c83F9febbA00F2378A0aaA49B0670f15", @@ -9587,6 +10150,18 @@ "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" } }, + "143": { + "FAST": { + "capacitor": "0xDF6D13b6c21e962e4fDc5cD534125822fC634dda", + "decapacitor": "0x43E9a92A0E41DE4Aad56aE0c3e00B45e5c3331Ac", + "switchboard": "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21" + }, + "OPTIMISTIC": { + "capacitor": "0xdA74dF2dc2E7184011c0f66315640725368C339b", + "decapacitor": "0x53731F0793724C55b7082D1F5868F72162799011", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + } + }, "146": { "FAST": { "capacitor": "0xC98BB57B33B213BBc1C22F0141717DDe76Cd7a04", @@ -10037,6 +10612,18 @@ "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" } }, + "143": { + "FAST": { + "capacitor": "0xf0D73e55fBf3370738058B6074EB6938769a2486", + "decapacitor": "0x97B9c8C138f61745f8Ab8DB0dF3D3e733f28D25B", + "switchboard": "0xb4Ef469c9d8317851270346070dA0ecE24616E6b" + }, + "OPTIMISTIC": { + "capacitor": "0x71C64D73DF1914AFa73A315d9F0604a5FA73C30F", + "decapacitor": "0xFF0FF0876363d8745A9734C4920067f73f563A4b", + "switchboard": "0x0CC93650bF4D98237628DACf87f94E443956D8dF" + } + }, "146": { "FAST": { "capacitor": "0x29017d72206Eb0Be053C565E20b54857289AEF68", @@ -10408,6 +10995,18 @@ "switchboard": "0x332901149A390D334498008449089f05fa273C3B" } }, + "143": { + "FAST": { + "capacitor": "0xc99Be06b23BcaC1637d6944E0A01AfCdA7B76DA2", + "decapacitor": "0xda099109b3386A3f43D0fE81774F3aB9428a292D", + "switchboard": "0x497D0FA570c128830a3aA3C06582a94af2330A18" + }, + "OPTIMISTIC": { + "capacitor": "0xaf5D3e99Eb1E471e2fCAe27f6131A6a5735484A5", + "decapacitor": "0xc0Db4c7f2E6710b8010304E860880256500ffFaa", + "switchboard": "0x332901149A390D334498008449089f05fa273C3B" + } + }, "146": { "FAST": { "capacitor": "0xa316d8f8755E3102AF78d04CFCAa8F45Cf077C6C", @@ -10989,6 +11588,18 @@ "switchboard": "0x032dd149Cb081FAd716334D9F0bd81fa3F002F11" } }, + "143": { + "FAST": { + "capacitor": "0xA83AE47453042B54f39fddb7D7D5f58574B239e0", + "decapacitor": "0x048B6c6F66A1Db1522abbe6b8e308434AFB21064", + "switchboard": "0x043bcF7aaE818a6E9f509d9D7304e5c7D039FE5d" + }, + "OPTIMISTIC": { + "capacitor": "0x13e686Db2e4E542c734337F4161f4e6575d3716D", + "decapacitor": "0x69B585a00C41361D3dcF1f58049800b1c1335376", + "switchboard": "0x032dd149Cb081FAd716334D9F0bd81fa3F002F11" + } + }, "146": { "FAST": { "capacitor": "0x86a2E4464ef2407786119B33D999f0D1b85E2fef", @@ -11340,6 +11951,18 @@ "switchboard": "0x09217a4A727418A7A9fc60aE07E31c2Dfd13Bf2f" } }, + "143": { + "FAST": { + "capacitor": "0x6B30535C44bF78dC2819BFD963473877a7dcD012", + "decapacitor": "0x257227e7287bF7491d4291c499CB9d998bAcAd72", + "switchboard": "0xdcABb6d7E88396498FFF4CD987F60e354BF2a44b" + }, + "OPTIMISTIC": { + "capacitor": "0x7F7775Fd592Aa4E2fC8D939D13fB79978eB15992", + "decapacitor": "0xFECA58ae03205973Beaa267C4128087AA353b9cD", + "switchboard": "0x09217a4A727418A7A9fc60aE07E31c2Dfd13Bf2f" + } + }, "146": { "FAST": { "capacitor": "0xcDA2aDCe490742C3cE81a184021712A218c69f34", @@ -11744,6 +12367,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "143": { + "FAST": { + "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", + "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", + "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "146": { "FAST": { "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", @@ -12432,6 +13067,18 @@ "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" } }, + "143": { + "FAST": { + "capacitor": "0x4CbBd68bfdc517466283d6b461Cc16fb1441BA63", + "decapacitor": "0x5Bc3603072515bAE031cce7E296c1B296f5680a2", + "switchboard": "0xd9E3a8Ba9Be55919C5C0De6694e3103F5a35820E" + }, + "OPTIMISTIC": { + "capacitor": "0xA09B078D042281DE32be8D5f8c440E7639E815Bf", + "decapacitor": "0x6629Bc4cF93Ff100FC86B7709361050d5eDA7Ec6", + "switchboard": "0xb4Db1838d0B97BD58C7663b3E487eEbC9a996472" + } + }, "146": { "FAST": { "capacitor": "0xc0663bB4f977fbcC7D9EeEfb578146AD125bcC41", @@ -12978,6 +13625,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "143": { + "FAST": { + "capacitor": "0x24017fF9003CD75d78b75cAe0002B60d80478666", + "decapacitor": "0x7e1D45c14e9A460000330f4E049BFB4103D99fc1", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0xF72a81d05511f6BBD5DaFc01088547342F61CEd6", + "decapacitor": "0xb08044Ed4707Bf080c78bFB19fc98d67c7AC87Ef", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "146": { "FAST": { "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", diff --git a/deployments/prod_verification.json b/deployments/prod_verification.json index 7afdfec7..3ee48dd7 100644 --- a/deployments/prod_verification.json +++ b/deployments/prod_verification.json @@ -972,6 +972,152 @@ ["0x5fD7D0d6b91CC4787Bcb86ca47e0Bd4ea0346d34", 10] ] ], + "143": [ + [ + "0xcd620187f4846ba5a42ab41270aC550467dc9FbB", + "SwitchboardSimulator", + "contracts/mocks/fee-updater/SwitchboardSimulator.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + 143, + 1000, + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0x09A03E0d298AA13a07A9a3e36a606d4F6a4b8bB7", + "SimulatorUtils", + "contracts/mocks/fee-updater/SimulatorUtils.sol", + [ + "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + "0x1CAdCd88fC148D3966eDe75D029937C886f66009", + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 143 + ] + ], + [ + "0x8c36353db4F3a2DDDeed38405199d13DCF8a1B82", + "SocketSimulator", + "contracts/mocks/fee-updater/SocketSimulator.sol", + [ + 143, + 143, + "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", + 143, + 7200, + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF", + "FastSwitchboard", + "contracts/switchboard/default-switchboards/FastSwitchboard.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + 143, + 7200, + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0x657e72B305Dc1c41e98d9efC2350EC10e3c83E21", + "TransmitManager", + "contracts/TransmitManager.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 143, + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0xb3314456567986e657d4C65Ec9e8cB736B92d11D", + "ExecutionManagerDF", + "contracts/ExecutionManagerDF.sol", + [ + "0xB0BBff6311B7F245761A7846d3Ce7B1b100C1836", + 143, + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "0x1CAdCd88fC148D3966eDe75D029937C886f66009" + ] + ], + [ + "0x0CC93650bF4D98237628DACf87f94E443956D8dF", + "Socket", + "contracts/socket/Socket.sol", + [ + 143, + "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", + "0xA49f876C8F49414859cC9b0c4fEF794F0795Ccb4" + ] + ], + [ + "0x1F6bc87f3309B5D31Eb0BdaBE3ED7d3110d3B9c3", + "SafeProxyFactory", + "contracts/utils/multisig/proxies/SafeProxyFactory.sol", + [] + ], + [ + "0xc8a4D2fd77c155fd52e65Ab07F337aBF84495Ead", + "SafeL2", + "contracts/utils/multisig/SafeL2.sol", + [] + ] + ], "146": [ [ "0xeA964e160dEaed1960E31a20c1fA57D079d4e616", diff --git a/scripts/constants/overrides.ts b/scripts/constants/overrides.ts index b6bfcbef..271c4f2a 100644 --- a/scripts/constants/overrides.ts +++ b/scripts/constants/overrides.ts @@ -28,11 +28,13 @@ export const chainOverrides: { }, [ChainSlug.MAINNET]: { gasLimit: 6_000_000, + type: 2, gasPriceMultiplier: 1.25, }, [ChainSlug.POLYGON_MAINNET]: { gasPriceMultiplier: 2, + type: 2, gasLimit: 3_000_000, }, [ChainSlug.ZKEVM]: { @@ -121,7 +123,11 @@ export const chainOverrides: { }, [ChainSlug.PLASMA]: { gasLimit: 5_000_000, - gasPriceMultiplier: 0.00001, + gasPrice: 100_000_000, + type: 2, + }, + [ChainSlug.MONAD]: { + gasLimit: 3_00_000, }, }; @@ -134,9 +140,14 @@ export const chainOverrides: { * a. Use `gasPriceMultiplier` from chainOverrides if provided * b. If not, use DEFAULT_GAS_PRICE_MULTIPLIER * + * For EIP-1559 transactions (type 2): + * - Uses maxFeePerGas and maxPriorityFeePerGas instead of gasPrice + * - Multiplier applies to maxFeePerGas + * - maxPriorityFeePerGas = maxFeePerGas - baseFee + * * @param chainSlug - The chain identifier * @param provider - The network provider - * @returns An object with gasLimit, gasPrice, and transaction type + * @returns An object with gasLimit, gasPrice/maxFeePerGas/maxPriorityFeePerGas, and transaction type */ export const getOverrides = async ( chainSlug: ChainSlug, @@ -145,16 +156,40 @@ export const getOverrides = async ( const overrides = chainOverrides[chainSlug] || {}; const { gasLimit, type = defaultType } = overrides; - let gasPrice = overrides.gasPrice; - if (!gasPrice) { - const baseGasPrice = await provider.getGasPrice(); - const multiplier = - overrides.gasPriceMultiplier || DEFAULT_GAS_PRICE_MULTIPLIER; - gasPrice = baseGasPrice - .mul(Math.round(multiplier * 100000)) - .div(100000) - .toNumber(); - } + if (type === 2) { + // EIP-1559 transaction + let maxFeePerGas = overrides.gasPrice; + if (!maxFeePerGas) { + const feeData = await provider.getFeeData(); + const baseGasPrice = + feeData.maxFeePerGas || (await provider.getGasPrice()); + const multiplier = + overrides.gasPriceMultiplier || DEFAULT_GAS_PRICE_MULTIPLIER; + maxFeePerGas = baseGasPrice + .mul(Math.round(multiplier * 100000)) + .div(100000) + .toNumber(); + } + + // 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); + return { gasLimit, maxFeePerGas, maxPriorityFeePerGas, type }; + } else { + // Legacy transaction (type 0 or 1) + let gasPrice = overrides.gasPrice; + if (!gasPrice) { + const baseGasPrice = await provider.getGasPrice(); + const multiplier = + overrides.gasPriceMultiplier || DEFAULT_GAS_PRICE_MULTIPLIER; + gasPrice = baseGasPrice + .mul(Math.round(multiplier * 100000)) + .div(100000) + .toNumber(); + } - return { gasLimit, gasPrice, type }; + return { gasLimit, gasPrice, type }; + } }; diff --git a/scripts/deploy/scripts/registerSwitchboard.ts b/scripts/deploy/scripts/registerSwitchboard.ts index b1940959..e1374e2d 100644 --- a/scripts/deploy/scripts/registerSwitchboard.ts +++ b/scripts/deploy/scripts/registerSwitchboard.ts @@ -53,7 +53,9 @@ export default async function registerSwitchboardForSibling( if (isSubmitted) return; const tx = await signer.sendTransaction(transaction); console.log( - `Registering Switchboard remoteChainSlug - ${remoteChainSlug} ${switchBoardAddress}: ${tx.hash}` + `Registering Switchboard on ${await signer.getChainId()} for remoteChainSlug - ${remoteChainSlug} ${switchBoardAddress}: ${ + tx.hash + }` ); await tx.wait(); } diff --git a/scripts/rpcConfig/constants/batcherSupportedChainSlug.ts b/scripts/rpcConfig/constants/batcherSupportedChainSlug.ts index 0fa2dfe6..b84fb287 100644 --- a/scripts/rpcConfig/constants/batcherSupportedChainSlug.ts +++ b/scripts/rpcConfig/constants/batcherSupportedChainSlug.ts @@ -65,4 +65,5 @@ export const batcherSupportedChainSlugs = [ ChainSlug.HYPEREVM, ChainSlug.SEI, ChainSlug.PLASMA, + ChainSlug.MONAD, ]; diff --git a/scripts/rpcConfig/constants/explorers.ts b/scripts/rpcConfig/constants/explorers.ts index 6a72b83e..1b88539b 100644 --- a/scripts/rpcConfig/constants/explorers.ts +++ b/scripts/rpcConfig/constants/explorers.ts @@ -44,4 +44,5 @@ export const explorers = { [ChainSlug.HYPEREVM]: "https://www.hyperscan.com/", [ChainSlug.SEI]: "https://seitrace.com/", [ChainSlug.PLASMA]: "https://plasmascan.to/", + [ChainSlug.MONAD]: "https://mainnet-beta.monvision.io/", }; diff --git a/scripts/rpcConfig/constants/icons.ts b/scripts/rpcConfig/constants/icons.ts index aac34f65..fd117bab 100644 --- a/scripts/rpcConfig/constants/icons.ts +++ b/scripts/rpcConfig/constants/icons.ts @@ -42,4 +42,5 @@ export const icons = { [ChainSlug.HYPEREVM]: "", [ChainSlug.SEI]: "", [ChainSlug.PLASMA]: "", + [ChainSlug.MONAD]: "", }; diff --git a/scripts/rpcConfig/constants/rpc.ts b/scripts/rpcConfig/constants/rpc.ts index f3f4f40e..6ef026ef 100644 --- a/scripts/rpcConfig/constants/rpc.ts +++ b/scripts/rpcConfig/constants/rpc.ts @@ -77,4 +77,5 @@ export const rpcs = { [ChainSlug.HYPEREVM]: checkEnvValue("HYPEREVM_RPC"), [ChainSlug.SEI]: checkEnvValue("SEI_RPC"), [ChainSlug.PLASMA]: checkEnvValue("PLASMA_RPC"), + [ChainSlug.MONAD]: checkEnvValue("MONAD_RPC"), }; diff --git a/scripts/rpcConfig/constants/version.ts b/scripts/rpcConfig/constants/version.ts index 700e6621..70f4337e 100644 --- a/scripts/rpcConfig/constants/version.ts +++ b/scripts/rpcConfig/constants/version.ts @@ -2,5 +2,5 @@ import { DeploymentMode } from "../../../src"; export const version = { [DeploymentMode.DEV]: "1.0.5", - [DeploymentMode.PROD]: "1.0.106", + [DeploymentMode.PROD]: "1.0.110", }; diff --git a/src/enums/chainId.ts b/src/enums/chainId.ts index 4c20a556..9483bcd4 100644 --- a/src/enums/chainId.ts +++ b/src/enums/chainId.ts @@ -73,4 +73,5 @@ export enum ChainId { HYPEREVM = 999, SEI = 1329, PLASMA = 9745, + MONAD = 143, } diff --git a/src/enums/chainSlug.ts b/src/enums/chainSlug.ts index 7c9220e2..7a4df7f4 100644 --- a/src/enums/chainSlug.ts +++ b/src/enums/chainSlug.ts @@ -75,4 +75,5 @@ export enum ChainSlug { HYPEREVM = ChainId.HYPEREVM, SEI = ChainId.SEI, PLASMA = ChainId.PLASMA, + MONAD = ChainId.MONAD, } diff --git a/src/enums/chainSlugToHardhatChainName.ts b/src/enums/chainSlugToHardhatChainName.ts index f2cd0d60..551c519b 100644 --- a/src/enums/chainSlugToHardhatChainName.ts +++ b/src/enums/chainSlugToHardhatChainName.ts @@ -76,4 +76,5 @@ export const chainSlugToHardhatChainName = { [ChainSlug.HYPEREVM]: HardhatChainName.HYPEREVM, [ChainSlug.SEI]: HardhatChainName.SEI, [ChainSlug.PLASMA]: HardhatChainName.PLASMA, + [ChainSlug.MONAD]: HardhatChainName.MONAD, }; diff --git a/src/enums/chainSlugToId.ts b/src/enums/chainSlugToId.ts index ce485a43..60b29ecd 100644 --- a/src/enums/chainSlugToId.ts +++ b/src/enums/chainSlugToId.ts @@ -76,4 +76,5 @@ export const ChainSlugToId = { [ChainSlug.HYPEREVM]: ChainId.HYPEREVM, [ChainSlug.SEI]: ChainId.SEI, [ChainSlug.PLASMA]: ChainId.PLASMA, + [ChainSlug.MONAD]: ChainId.MONAD, }; diff --git a/src/enums/chainSlugToKey.ts b/src/enums/chainSlugToKey.ts index 08385ef8..5e9c94c7 100644 --- a/src/enums/chainSlugToKey.ts +++ b/src/enums/chainSlugToKey.ts @@ -76,4 +76,5 @@ export const ChainSlugToKey = { [ChainSlug.HYPEREVM]: HardhatChainName.HYPEREVM, [ChainSlug.SEI]: HardhatChainName.SEI, [ChainSlug.PLASMA]: HardhatChainName.PLASMA, + [ChainSlug.MONAD]: HardhatChainName.MONAD, }; diff --git a/src/enums/currency.ts b/src/enums/currency.ts index d10b14db..a4405ae4 100644 --- a/src/enums/currency.ts +++ b/src/enums/currency.ts @@ -25,5 +25,6 @@ export const Currency = { [ChainSlug.PLUME]: NativeTokens["plume"], [ChainSlug.HYPEREVM]: NativeTokens["hyperliquid"], [ChainSlug.SEI]: NativeTokens["sei-network"], - [ChainSlug.PLASMA]: NativeTokens["dogwifcoin"], + [ChainSlug.PLASMA]: NativeTokens["plasma"], + [ChainSlug.MONAD]: NativeTokens["wormhole"], }; diff --git a/src/enums/ethLikeChains.ts b/src/enums/ethLikeChains.ts index d4513afc..c2543345 100644 --- a/src/enums/ethLikeChains.ts +++ b/src/enums/ethLikeChains.ts @@ -31,4 +31,5 @@ export const ethLikeChains = [ ChainSlug.HYPEREVM, ChainSlug.SEI, ChainSlug.PLASMA, + ChainSlug.MONAD, ]; diff --git a/src/enums/hardhatChainName.ts b/src/enums/hardhatChainName.ts index fa0ac048..932bdd7b 100644 --- a/src/enums/hardhatChainName.ts +++ b/src/enums/hardhatChainName.ts @@ -73,4 +73,5 @@ export enum HardhatChainName { HYPEREVM = "hyperevm", SEI = "sei", PLASMA = "plasma", + MONAD = "monad", } diff --git a/src/enums/hardhatChainNameToSlug.ts b/src/enums/hardhatChainNameToSlug.ts index 99cbd1c4..5c79612c 100644 --- a/src/enums/hardhatChainNameToSlug.ts +++ b/src/enums/hardhatChainNameToSlug.ts @@ -76,4 +76,5 @@ export const hardhatChainNameToSlug = { [HardhatChainName.HYPEREVM]: ChainSlug.HYPEREVM, [HardhatChainName.SEI]: ChainSlug.SEI, [HardhatChainName.PLASMA]: ChainSlug.PLASMA, + [HardhatChainName.MONAD]: ChainSlug.MONAD, }; diff --git a/src/enums/mainnetIds.ts b/src/enums/mainnetIds.ts index 192d49f7..704f64d7 100644 --- a/src/enums/mainnetIds.ts +++ b/src/enums/mainnetIds.ts @@ -46,4 +46,5 @@ export const MainnetIds: ChainSlug[] = [ ChainSlug.HYPEREVM, ChainSlug.SEI, ChainSlug.PLASMA, + ChainSlug.MONAD, ]; diff --git a/src/enums/native-tokens.ts b/src/enums/native-tokens.ts index 98485f4b..ef5cd7f9 100644 --- a/src/enums/native-tokens.ts +++ b/src/enums/native-tokens.ts @@ -20,4 +20,5 @@ export enum NativeTokens { "hyperliquid" = "hyperliquid", "sei-network" = "sei-network", "dogwifcoin" = "dogwifcoin", + "wormhole" = "wormhole", } From 9ce502e3c2a0588f8d4566099ac3bbc7868b1185 Mon Sep 17 00:00:00 2001 From: arthcp Date: Wed, 19 Nov 2025 16:26:03 -0300 Subject: [PATCH 3/4] feat: plasma monad --- deployments/prod_addresses.json | 12 ++++++++++++ scripts/constants/overrides.ts | 2 +- scripts/rpcConfig/constants/version.ts | 2 +- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/deployments/prod_addresses.json b/deployments/prod_addresses.json index 310c7bda..a1bab9e6 100644 --- a/deployments/prod_addresses.json +++ b/deployments/prod_addresses.json @@ -8819,6 +8819,18 @@ "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" } }, + "143": { + "FAST": { + "capacitor": "0x4123C2Ee60E747f90d89050a2085FBDAF388118a", + "decapacitor": "0x6e1e123D6e6f230cAa79f00fFBC31C479780FDF7", + "switchboard": "0x525a6489a1df5fF1ae077fAf628E43b7F52298eF" + }, + "OPTIMISTIC": { + "capacitor": "0x82e4BEb7D2cDE18626beb713A60867a3910443B6", + "decapacitor": "0x3be49327346C441e0cD83944A623e2B1A2dD5b5F", + "switchboard": "0x3043Ad9C9e01664bc3A68477f0870Df35dC4bFf8" + } + }, "146": { "FAST": { "capacitor": "0xe77960B5872416F0027a98eAbcE9fBaF5734Ad88", diff --git a/scripts/constants/overrides.ts b/scripts/constants/overrides.ts index 271c4f2a..46d2c73d 100644 --- a/scripts/constants/overrides.ts +++ b/scripts/constants/overrides.ts @@ -123,7 +123,7 @@ export const chainOverrides: { }, [ChainSlug.PLASMA]: { gasLimit: 5_000_000, - gasPrice: 100_000_000, + gasPrice: 1_000_000_000, type: 2, }, [ChainSlug.MONAD]: { diff --git a/scripts/rpcConfig/constants/version.ts b/scripts/rpcConfig/constants/version.ts index 70f4337e..aee138f7 100644 --- a/scripts/rpcConfig/constants/version.ts +++ b/scripts/rpcConfig/constants/version.ts @@ -2,5 +2,5 @@ import { DeploymentMode } from "../../../src"; export const version = { [DeploymentMode.DEV]: "1.0.5", - [DeploymentMode.PROD]: "1.0.110", + [DeploymentMode.PROD]: "1.0.112", }; From 7e3704bc4af817a7dfacb3d10570fa744e04894c Mon Sep 17 00:00:00 2001 From: arthcp Date: Mon, 24 Nov 2025 15:41:14 -0300 Subject: [PATCH 4/4] feat: monad coingecko id and verification --- hardhat.config.ts | 10 ++++++++++ scripts/rpcConfig/constants/version.ts | 2 +- src/enums/currency.ts | 2 +- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/hardhat.config.ts b/hardhat.config.ts index 8a4e48fb..2b6df348 100644 --- a/hardhat.config.ts +++ b/hardhat.config.ts @@ -131,6 +131,7 @@ if (isProduction) { [HardhatChainName.PLUME]: getChainConfig(ChainSlug.PLUME), [HardhatChainName.KATANA]: getChainConfig(ChainSlug.KATANA), [HardhatChainName.HYPEREVM]: getChainConfig(ChainSlug.HYPEREVM), + [HardhatChainName.MONAD]: getChainConfig(ChainSlug.MONAD), }; } @@ -194,6 +195,7 @@ const config: HardhatUserConfig = { plume: process.env.PLUME_API_KEY || "none", katana: process.env.KATANA_API_KEY || "none", hyperevm: process.env.HYPEREVM_API_KEY || "none", + monad: process.env.ETHERSCAN_API_KEY || "none", }, customChains: [ { @@ -444,6 +446,14 @@ const config: HardhatUserConfig = { browserURL: "https://www.hyperscan.com/", }, }, + { + network: "monad", + chainId: ChainId.MONAD, + urls: { + apiURL: "https://api.etherscan.io/v2/api?chainid=143", + browserURL: "https://monadscan.com/", + }, + }, ], }, networks: { diff --git a/scripts/rpcConfig/constants/version.ts b/scripts/rpcConfig/constants/version.ts index aee138f7..e6d31d3f 100644 --- a/scripts/rpcConfig/constants/version.ts +++ b/scripts/rpcConfig/constants/version.ts @@ -2,5 +2,5 @@ import { DeploymentMode } from "../../../src"; export const version = { [DeploymentMode.DEV]: "1.0.5", - [DeploymentMode.PROD]: "1.0.112", + [DeploymentMode.PROD]: "1.0.113", }; diff --git a/src/enums/currency.ts b/src/enums/currency.ts index a4405ae4..9ed2199e 100644 --- a/src/enums/currency.ts +++ b/src/enums/currency.ts @@ -26,5 +26,5 @@ export const Currency = { [ChainSlug.HYPEREVM]: NativeTokens["hyperliquid"], [ChainSlug.SEI]: NativeTokens["sei-network"], [ChainSlug.PLASMA]: NativeTokens["plasma"], - [ChainSlug.MONAD]: NativeTokens["wormhole"], + [ChainSlug.MONAD]: NativeTokens["monad"], };