From e927830d725e1ee6aa6e9147e3893df655e6b160 Mon Sep 17 00:00:00 2001 From: Lukasz Zimnoch Date: Fri, 1 Mar 2024 12:43:41 +0100 Subject: [PATCH] Deployment artifacts for Base Sepolia We are testing the implementation by deploying it on Base Sepolia chain. Here are the relevant deployment artifacts. --- cross-chain/base/.openzeppelin/sepolia.json | 233 +++++++ .../base/.openzeppelin/unknown-84532.json | 133 ++++ .../test/BaseL1BitcoinDepositorUpgraded.sol | 15 + .../test/BaseL2BitcoinDepositorUpgraded.sol | 15 + .../base/deploy_helpers/wormhole_chains.ts | 31 + .../baseSepolia/BaseL2BitcoinDepositor.json | 427 +++++++++++++ cross-chain/base/deployments/sepolia/.chainId | 1 + .../sepolia/BaseL1BitcoinDepositor.json | 588 ++++++++++++++++++ .../baseSepolia/BaseWormholeRelayer.json | 3 + cross-chain/base/external/sepolia/Bridge.json | 3 + .../base/external/sepolia/TBTCVault.json | 3 + .../base/external/sepolia/Wormhole.json | 3 + .../external/sepolia/WormholeRelayer.json | 3 + 13 files changed, 1458 insertions(+) create mode 100644 cross-chain/base/.openzeppelin/sepolia.json create mode 100644 cross-chain/base/contracts/test/BaseL1BitcoinDepositorUpgraded.sol create mode 100644 cross-chain/base/contracts/test/BaseL2BitcoinDepositorUpgraded.sol create mode 100644 cross-chain/base/deploy_helpers/wormhole_chains.ts create mode 100644 cross-chain/base/deployments/baseSepolia/BaseL2BitcoinDepositor.json create mode 100644 cross-chain/base/deployments/sepolia/.chainId create mode 100644 cross-chain/base/deployments/sepolia/BaseL1BitcoinDepositor.json create mode 100644 cross-chain/base/external/baseSepolia/BaseWormholeRelayer.json create mode 100644 cross-chain/base/external/sepolia/Bridge.json create mode 100644 cross-chain/base/external/sepolia/TBTCVault.json create mode 100644 cross-chain/base/external/sepolia/Wormhole.json create mode 100644 cross-chain/base/external/sepolia/WormholeRelayer.json diff --git a/cross-chain/base/.openzeppelin/sepolia.json b/cross-chain/base/.openzeppelin/sepolia.json new file mode 100644 index 000000000..1a5db310f --- /dev/null +++ b/cross-chain/base/.openzeppelin/sepolia.json @@ -0,0 +1,233 @@ +{ + "manifestVersion": "3.2", + "admin": { + "address": "0x59dCF5B9f5C5F00C6EdaCD80D88fc1A2F8536787", + "txHash": "0x692393d9edd20bea6eb7179f3c23ac1037c41342597cbb016d16562b3be00255" + }, + "proxies": [ + { + "address": "0xFdF0F1C4dF891732b586A85F062B7e8eBF65c428", + "txHash": "0xd0436e0eb5ff655fe1eac53a24e04d4c1741783d35f28fb24700db4dbc2d64c7", + "kind": "transparent" + } + ], + "impls": { + "d1bd959487df6a914f345d6db574fc494c26bc8818086a7af9b2a0dd9a48e771": { + "address": "0xc3BD9ce767534eE4932A4C6FaD4B911094E41CF0", + "txHash": "0xe2d7aa67f89bf83afa4272a412cf4be9136399128ed92c4ec94cf8689704ab2b", + "layout": { + "solcVersion": "0.8.17", + "storage": [ + { + "label": "bridge", + "offset": 0, + "slot": "0", + "type": "t_contract(IBridge)3078", + "contract": "AbstractTBTCDepositor", + "src": "@keep-network/tbtc-v2/contracts/integrator/AbstractTBTCDepositor.sol:95" + }, + { + "label": "tbtcVault", + "offset": 0, + "slot": "1", + "type": "t_contract(ITBTCVault)3104", + "contract": "AbstractTBTCDepositor", + "src": "@keep-network/tbtc-v2/contracts/integrator/AbstractTBTCDepositor.sol:96" + }, + { + "label": "__gap", + "offset": 0, + "slot": "2", + "type": "t_array(t_uint256)47_storage", + "contract": "AbstractTBTCDepositor", + "src": "@keep-network/tbtc-v2/contracts/integrator/AbstractTBTCDepositor.sol:111" + }, + { + "label": "_initialized", + "offset": 0, + "slot": "49", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "49", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "50", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "100", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "101", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "deposits", + "offset": 0, + "slot": "150", + "type": "t_mapping(t_uint256,t_enum(DepositState)3127)", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:64" + }, + { + "label": "tbtcToken", + "offset": 0, + "slot": "151", + "type": "t_contract(IERC20)4902", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:69" + }, + { + "label": "wormhole", + "offset": 0, + "slot": "152", + "type": "t_contract(IWormhole)3987", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:70" + }, + { + "label": "wormholeRelayer", + "offset": 0, + "slot": "153", + "type": "t_contract(IWormholeRelayer)4047", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:71" + }, + { + "label": "wormholeTokenBridge", + "offset": 0, + "slot": "154", + "type": "t_contract(IWormholeTokenBridge)4132", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:72" + }, + { + "label": "l2WormholeGateway", + "offset": 0, + "slot": "155", + "type": "t_address", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:73" + }, + { + "label": "l2ChainId", + "offset": 20, + "slot": "155", + "type": "t_uint16", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:77" + }, + { + "label": "l2BitcoinDepositor", + "offset": 0, + "slot": "156", + "type": "t_address", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:77" + }, + { + "label": "l2FinalizeDepositGasLimit", + "offset": 0, + "slot": "157", + "type": "t_uint256", + "contract": "L1BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol:77" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)47_storage": { + "label": "uint256[47]", + "numberOfBytes": "1504" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IBridge)3078": { + "label": "contract IBridge", + "numberOfBytes": "20" + }, + "t_contract(IERC20)4902": { + "label": "contract IERC20", + "numberOfBytes": "20" + }, + "t_contract(ITBTCVault)3104": { + "label": "contract ITBTCVault", + "numberOfBytes": "20" + }, + "t_contract(IWormhole)3987": { + "label": "contract IWormhole", + "numberOfBytes": "20" + }, + "t_contract(IWormholeRelayer)4047": { + "label": "contract IWormholeRelayer", + "numberOfBytes": "20" + }, + "t_contract(IWormholeTokenBridge)4132": { + "label": "contract IWormholeTokenBridge", + "numberOfBytes": "20" + }, + "t_enum(DepositState)3127": { + "label": "enum L1BitcoinDepositor.DepositState", + "members": [ + "Unknown", + "Initialized", + "Finalized" + ], + "numberOfBytes": "1" + }, + "t_mapping(t_uint256,t_enum(DepositState)3127)": { + "label": "mapping(uint256 => enum L1BitcoinDepositor.DepositState)", + "numberOfBytes": "32" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } + } + } +} diff --git a/cross-chain/base/.openzeppelin/unknown-84532.json b/cross-chain/base/.openzeppelin/unknown-84532.json index c94e49b5b..ddcd1f325 100644 --- a/cross-chain/base/.openzeppelin/unknown-84532.json +++ b/cross-chain/base/.openzeppelin/unknown-84532.json @@ -14,6 +14,11 @@ "address": "0xc3D46e0266d95215589DE639cC4E93b79f88fc6C", "txHash": "0xc362207cb5c36e09f5eae5bcc206c760e01af0a042fb7a48f6a4b2078eafcd24", "kind": "transparent" + }, + { + "address": "0x73A63e2Be2D911dc7eFAc189Bfdf48FbB6532B5b", + "txHash": "0x1c530f7679fd72c5a372d5dfac619588b8e6b28643f3a89be6a32edecc4b8b39", + "kind": "transparent" } ], "impls": { @@ -453,6 +458,134 @@ } } } + }, + "158e85b6f8306c53687c3df734c1d1b840db0b13301465860bf98e15ff8b1b13": { + "address": "0x1a53759DE2eADf73bd0b05c07a4F1F5B7912dA3d", + "txHash": "0xe1026e1340ff20ac460112ac2de7718f92f87897d00f6ad15cd59530f8179e4a", + "layout": { + "solcVersion": "0.8.17", + "storage": [ + { + "label": "_initialized", + "offset": 0, + "slot": "0", + "type": "t_uint8", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:62", + "retypedFrom": "bool" + }, + { + "label": "_initializing", + "offset": 1, + "slot": "0", + "type": "t_bool", + "contract": "Initializable", + "src": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol:67" + }, + { + "label": "__gap", + "offset": 0, + "slot": "1", + "type": "t_array(t_uint256)50_storage", + "contract": "ContextUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol:36" + }, + { + "label": "_owner", + "offset": 0, + "slot": "51", + "type": "t_address", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:22" + }, + { + "label": "__gap", + "offset": 0, + "slot": "52", + "type": "t_array(t_uint256)49_storage", + "contract": "OwnableUpgradeable", + "src": "@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol:94" + }, + { + "label": "wormholeRelayer", + "offset": 0, + "slot": "101", + "type": "t_contract(IWormholeRelayer)4047", + "contract": "L2BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L2BitcoinDepositor.sol:49" + }, + { + "label": "l2WormholeGateway", + "offset": 0, + "slot": "102", + "type": "t_contract(IL2WormholeGateway)3662", + "contract": "L2BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L2BitcoinDepositor.sol:52" + }, + { + "label": "l1ChainId", + "offset": 20, + "slot": "102", + "type": "t_uint16", + "contract": "L2BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L2BitcoinDepositor.sol:53" + }, + { + "label": "l1BitcoinDepositor", + "offset": 0, + "slot": "103", + "type": "t_address", + "contract": "L2BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L2BitcoinDepositor.sol:54" + }, + { + "label": "l1InitializeDepositGasLimit", + "offset": 0, + "slot": "104", + "type": "t_uint256", + "contract": "L2BitcoinDepositor", + "src": "@keep-network/tbtc-v2/contracts/l2/L2BitcoinDepositor.sol:57" + } + ], + "types": { + "t_address": { + "label": "address", + "numberOfBytes": "20" + }, + "t_array(t_uint256)49_storage": { + "label": "uint256[49]", + "numberOfBytes": "1568" + }, + "t_array(t_uint256)50_storage": { + "label": "uint256[50]", + "numberOfBytes": "1600" + }, + "t_bool": { + "label": "bool", + "numberOfBytes": "1" + }, + "t_contract(IL2WormholeGateway)3662": { + "label": "contract IL2WormholeGateway", + "numberOfBytes": "20" + }, + "t_contract(IWormholeRelayer)4047": { + "label": "contract IWormholeRelayer", + "numberOfBytes": "20" + }, + "t_uint16": { + "label": "uint16", + "numberOfBytes": "2" + }, + "t_uint256": { + "label": "uint256", + "numberOfBytes": "32" + }, + "t_uint8": { + "label": "uint8", + "numberOfBytes": "1" + } + } + } } } } diff --git a/cross-chain/base/contracts/test/BaseL1BitcoinDepositorUpgraded.sol b/cross-chain/base/contracts/test/BaseL1BitcoinDepositorUpgraded.sol new file mode 100644 index 000000000..eeed54f12 --- /dev/null +++ b/cross-chain/base/contracts/test/BaseL1BitcoinDepositorUpgraded.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-3.0-only + +pragma solidity ^0.8.17; + +import "@keep-network/tbtc-v2/contracts/l2/L1BitcoinDepositor.sol"; + +/// @notice L1BitcoinDepositor for Base - upgraded version. +/// @dev This contract is intended solely for testing purposes. +contract BaseL1BitcoinDepositorUpgraded is L1BitcoinDepositor { + string public newVar; + + function initializeV2(string memory _newVar) public { + newVar = _newVar; + } +} \ No newline at end of file diff --git a/cross-chain/base/contracts/test/BaseL2BitcoinDepositorUpgraded.sol b/cross-chain/base/contracts/test/BaseL2BitcoinDepositorUpgraded.sol new file mode 100644 index 000000000..ca5d32a25 --- /dev/null +++ b/cross-chain/base/contracts/test/BaseL2BitcoinDepositorUpgraded.sol @@ -0,0 +1,15 @@ +// SPDX-License-Identifier: GPL-3.0-only + +pragma solidity ^0.8.17; + +import "@keep-network/tbtc-v2/contracts/l2/L2BitcoinDepositor.sol"; + +/// @notice L2BitcoinDepositor for Base - upgraded version. +/// @dev This contract is intended solely for testing purposes. +contract BaseL2BitcoinDepositorUpgraded is L2BitcoinDepositor { + string public newVar; + + function initializeV2(string memory _newVar) public { + newVar = _newVar; + } +} \ No newline at end of file diff --git a/cross-chain/base/deploy_helpers/wormhole_chains.ts b/cross-chain/base/deploy_helpers/wormhole_chains.ts new file mode 100644 index 000000000..6ead540a1 --- /dev/null +++ b/cross-chain/base/deploy_helpers/wormhole_chains.ts @@ -0,0 +1,31 @@ +export type WormholeChains = { + l1ChainId: number + l2ChainId: number +} + +/** + * Returns Wormhole L1 and L2 chain IDs for the given network. + * Source: https://docs.wormhole.com/wormhole/reference/constants#chain-ids + * @param network Network name. + */ +export function getWormholeChains(network: string): WormholeChains { + let l1ChainId: number + let l2ChainId: number + + switch (network) { + case "mainnet": + case "base": + l1ChainId = 2 // L1 Ethereum mainnet + l2ChainId = 30 // L2 Base mainnet + break + case "sepolia": + case "baseSepolia": + l1ChainId = 10002 // L1 Ethereum Sepolia testnet + l2ChainId = 10004 // L2 Base Sepolia testnet + break + default: + throw new Error("Unsupported network") + } + + return { l1ChainId, l2ChainId } +} diff --git a/cross-chain/base/deployments/baseSepolia/BaseL2BitcoinDepositor.json b/cross-chain/base/deployments/baseSepolia/BaseL2BitcoinDepositor.json new file mode 100644 index 000000000..fe2c88640 --- /dev/null +++ b/cross-chain/base/deployments/baseSepolia/BaseL2BitcoinDepositor.json @@ -0,0 +1,427 @@ +{ + "address": "0x73A63e2Be2D911dc7eFAc189Bfdf48FbB6532B5b", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "depositKey", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "l2DepositOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "l2Sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "wormholeMessageSequence", + "type": "uint64" + } + ], + "name": "DepositInitialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "l1InitializeDepositGasLimit", + "type": "uint256" + } + ], + "name": "L1InitializeDepositGasLimitUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l1BitcoinDepositor", + "type": "address" + } + ], + "name": "attachL1BitcoinDepositor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_wormholeRelayer", + "type": "address" + }, + { + "internalType": "address", + "name": "_l2WormholeGateway", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_l1ChainId", + "type": "uint16" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes4", + "name": "version", + "type": "bytes4" + }, + { + "internalType": "bytes", + "name": "inputVector", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "outputVector", + "type": "bytes" + }, + { + "internalType": "bytes4", + "name": "locktime", + "type": "bytes4" + } + ], + "internalType": "struct IBridgeTypes.BitcoinTxInfo", + "name": "fundingTx", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "fundingOutputIndex", + "type": "uint32" + }, + { + "internalType": "bytes8", + "name": "blindingFactor", + "type": "bytes8" + }, + { + "internalType": "bytes20", + "name": "walletPubKeyHash", + "type": "bytes20" + }, + { + "internalType": "bytes20", + "name": "refundPubKeyHash", + "type": "bytes20" + }, + { + "internalType": "bytes4", + "name": "refundLocktime", + "type": "bytes4" + }, + { + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "internalType": "struct IBridgeTypes.DepositRevealInfo", + "name": "reveal", + "type": "tuple" + }, + { + "internalType": "address", + "name": "l2DepositOwner", + "type": "address" + } + ], + "name": "initializeDeposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "l1BitcoinDepositor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "l1ChainId", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "l1InitializeDepositGasLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "l2WormholeGateway", + "outputs": [ + { + "internalType": "contract IL2WormholeGateway", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quoteInitializeDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "cost", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "additionalVaas", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "sourceAddress", + "type": "bytes32" + }, + { + "internalType": "uint16", + "name": "sourceChain", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "receiveWormholeMessages", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_l1InitializeDepositGasLimit", + "type": "uint256" + } + ], + "name": "updateL1InitializeDepositGasLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "wormholeRelayer", + "outputs": [ + { + "internalType": "contract IWormholeRelayer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0x1c530f7679fd72c5a372d5dfac619588b8e6b28643f3a89be6a32edecc4b8b39", + "receipt": { + "to": null, + "from": "0x68ad60CC5e8f3B7cC53beaB321cf0e6036962dBc", + "contractAddress": "0x73A63e2Be2D911dc7eFAc189Bfdf48FbB6532B5b", + "transactionIndex": 4, + "gasUsed": "726908", + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080202000001000000000000002000000000000000000000020000000000000000000800000000800080000000000000000000400000000200000000000000000000000000000000000080000000000000800020000000000000000000000000000400000000000000000000000000000001000000000020000000008000000020040000000000000400000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0x1d393452b60bc66f1c7dc498d2e387f08cc8396a6aa41baee9bcefe75f196d4a", + "transactionHash": "0x1c530f7679fd72c5a372d5dfac619588b8e6b28643f3a89be6a32edecc4b8b39", + "logs": [ + { + "transactionIndex": 4, + "blockNumber": 6731912, + "transactionHash": "0x1c530f7679fd72c5a372d5dfac619588b8e6b28643f3a89be6a32edecc4b8b39", + "address": "0x73A63e2Be2D911dc7eFAc189Bfdf48FbB6532B5b", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000001a53759de2eadf73bd0b05c07a4f1f5b7912da3d" + ], + "data": "0x", + "logIndex": 0, + "blockHash": "0x1d393452b60bc66f1c7dc498d2e387f08cc8396a6aa41baee9bcefe75f196d4a" + }, + { + "transactionIndex": 4, + "blockNumber": 6731912, + "transactionHash": "0x1c530f7679fd72c5a372d5dfac619588b8e6b28643f3a89be6a32edecc4b8b39", + "address": "0x73A63e2Be2D911dc7eFAc189Bfdf48FbB6532B5b", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000068ad60cc5e8f3b7cc53beab321cf0e6036962dbc" + ], + "data": "0x", + "logIndex": 1, + "blockHash": "0x1d393452b60bc66f1c7dc498d2e387f08cc8396a6aa41baee9bcefe75f196d4a" + }, + { + "transactionIndex": 4, + "blockNumber": 6731912, + "transactionHash": "0x1c530f7679fd72c5a372d5dfac619588b8e6b28643f3a89be6a32edecc4b8b39", + "address": "0x73A63e2Be2D911dc7eFAc189Bfdf48FbB6532B5b", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "logIndex": 2, + "blockHash": "0x1d393452b60bc66f1c7dc498d2e387f08cc8396a6aa41baee9bcefe75f196d4a" + }, + { + "transactionIndex": 4, + "blockNumber": 6731912, + "transactionHash": "0x1c530f7679fd72c5a372d5dfac619588b8e6b28643f3a89be6a32edecc4b8b39", + "address": "0x73A63e2Be2D911dc7eFAc189Bfdf48FbB6532B5b", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b2f6c5b73239c39360ee0ea95047565dab13e3c7", + "logIndex": 3, + "blockHash": "0x1d393452b60bc66f1c7dc498d2e387f08cc8396a6aa41baee9bcefe75f196d4a" + } + ], + "blockNumber": 6731912, + "cumulativeGasUsed": "834783", + "status": 1, + "byzantium": true + }, + "numDeployments": 1, + "implementation": "0x1a53759DE2eADf73bd0b05c07a4F1F5B7912dA3d", + "devdoc": "Contract deployed as upgradable proxy" +} \ No newline at end of file diff --git a/cross-chain/base/deployments/sepolia/.chainId b/cross-chain/base/deployments/sepolia/.chainId new file mode 100644 index 000000000..bd8d1cd44 --- /dev/null +++ b/cross-chain/base/deployments/sepolia/.chainId @@ -0,0 +1 @@ +11155111 \ No newline at end of file diff --git a/cross-chain/base/deployments/sepolia/BaseL1BitcoinDepositor.json b/cross-chain/base/deployments/sepolia/BaseL1BitcoinDepositor.json new file mode 100644 index 000000000..198538443 --- /dev/null +++ b/cross-chain/base/deployments/sepolia/BaseL1BitcoinDepositor.json @@ -0,0 +1,588 @@ +{ + "address": "0xFdF0F1C4dF891732b586A85F062B7e8eBF65c428", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "depositKey", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "l2DepositOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "l1Sender", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "initialAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "tbtcAmount", + "type": "uint256" + } + ], + "name": "DepositFinalized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "depositKey", + "type": "uint256" + }, + { + "indexed": true, + "internalType": "address", + "name": "l2DepositOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "l1Sender", + "type": "address" + } + ], + "name": "DepositInitialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint8", + "name": "version", + "type": "uint8" + } + ], + "name": "Initialized", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "l2FinalizeDepositGasLimit", + "type": "uint256" + } + ], + "name": "L2FinalizeDepositGasLimitUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "inputs": [], + "name": "SATOSHI_MULTIPLIER", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_l2BitcoinDepositor", + "type": "address" + } + ], + "name": "attachL2BitcoinDepositor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "bridge", + "outputs": [ + { + "internalType": "contract IBridge", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "deposits", + "outputs": [ + { + "internalType": "enum L1BitcoinDepositor.DepositState", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "depositKey", + "type": "uint256" + } + ], + "name": "finalizeDeposit", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "_tbtcBridge", + "type": "address" + }, + { + "internalType": "address", + "name": "_tbtcVault", + "type": "address" + }, + { + "internalType": "address", + "name": "_wormhole", + "type": "address" + }, + { + "internalType": "address", + "name": "_wormholeRelayer", + "type": "address" + }, + { + "internalType": "address", + "name": "_wormholeTokenBridge", + "type": "address" + }, + { + "internalType": "address", + "name": "_l2WormholeGateway", + "type": "address" + }, + { + "internalType": "uint16", + "name": "_l2ChainId", + "type": "uint16" + } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { + "internalType": "bytes4", + "name": "version", + "type": "bytes4" + }, + { + "internalType": "bytes", + "name": "inputVector", + "type": "bytes" + }, + { + "internalType": "bytes", + "name": "outputVector", + "type": "bytes" + }, + { + "internalType": "bytes4", + "name": "locktime", + "type": "bytes4" + } + ], + "internalType": "struct IBridgeTypes.BitcoinTxInfo", + "name": "fundingTx", + "type": "tuple" + }, + { + "components": [ + { + "internalType": "uint32", + "name": "fundingOutputIndex", + "type": "uint32" + }, + { + "internalType": "bytes8", + "name": "blindingFactor", + "type": "bytes8" + }, + { + "internalType": "bytes20", + "name": "walletPubKeyHash", + "type": "bytes20" + }, + { + "internalType": "bytes20", + "name": "refundPubKeyHash", + "type": "bytes20" + }, + { + "internalType": "bytes4", + "name": "refundLocktime", + "type": "bytes4" + }, + { + "internalType": "address", + "name": "vault", + "type": "address" + } + ], + "internalType": "struct IBridgeTypes.DepositRevealInfo", + "name": "reveal", + "type": "tuple" + }, + { + "internalType": "address", + "name": "l2DepositOwner", + "type": "address" + } + ], + "name": "initializeDeposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "l2BitcoinDepositor", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "l2ChainId", + "outputs": [ + { + "internalType": "uint16", + "name": "", + "type": "uint16" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "l2FinalizeDepositGasLimit", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "l2WormholeGateway", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "quoteFinalizeDeposit", + "outputs": [ + { + "internalType": "uint256", + "name": "cost", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "bytes", + "name": "payload", + "type": "bytes" + }, + { + "internalType": "bytes[]", + "name": "", + "type": "bytes[]" + }, + { + "internalType": "bytes32", + "name": "sourceAddress", + "type": "bytes32" + }, + { + "internalType": "uint16", + "name": "sourceChain", + "type": "uint16" + }, + { + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "receiveWormholeMessages", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "tbtcToken", + "outputs": [ + { + "internalType": "contract IERC20", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "tbtcVault", + "outputs": [ + { + "internalType": "contract ITBTCVault", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "_l2FinalizeDepositGasLimit", + "type": "uint256" + } + ], + "name": "updateL2FinalizeDepositGasLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "wormhole", + "outputs": [ + { + "internalType": "contract IWormhole", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "wormholeRelayer", + "outputs": [ + { + "internalType": "contract IWormholeRelayer", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "wormholeTokenBridge", + "outputs": [ + { + "internalType": "contract IWormholeTokenBridge", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + } + ], + "transactionHash": "0xd0436e0eb5ff655fe1eac53a24e04d4c1741783d35f28fb24700db4dbc2d64c7", + "receipt": { + "to": null, + "from": "0x68ad60CC5e8f3B7cC53beaB321cf0e6036962dBc", + "contractAddress": "0xFdF0F1C4dF891732b586A85F062B7e8eBF65c428", + "transactionIndex": 195, + "gasUsed": "843614", + "logsBloom": "0x00000000000020000000000000000000400004000000000000800000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000202000001000000000000000000000000000000000000020000000000000000000800000000804000000000000000000000400000000200000000000000000000000000000000000080000000000000800000000000000000000000000000000400000000000000000000000000000000000000000020000080000000000020040000000000000400000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "blockHash": "0xfe3767404a2aaefd885ac2278f95ef4501739e3a3d5b6fc5855f2a9e28ed205d", + "transactionHash": "0xd0436e0eb5ff655fe1eac53a24e04d4c1741783d35f28fb24700db4dbc2d64c7", + "logs": [ + { + "transactionIndex": 195, + "blockNumber": 5389241, + "transactionHash": "0xd0436e0eb5ff655fe1eac53a24e04d4c1741783d35f28fb24700db4dbc2d64c7", + "address": "0xFdF0F1C4dF891732b586A85F062B7e8eBF65c428", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000c3bd9ce767534ee4932a4c6fad4b911094e41cf0" + ], + "data": "0x", + "logIndex": 315, + "blockHash": "0xfe3767404a2aaefd885ac2278f95ef4501739e3a3d5b6fc5855f2a9e28ed205d" + }, + { + "transactionIndex": 195, + "blockNumber": 5389241, + "transactionHash": "0xd0436e0eb5ff655fe1eac53a24e04d4c1741783d35f28fb24700db4dbc2d64c7", + "address": "0xFdF0F1C4dF891732b586A85F062B7e8eBF65c428", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x00000000000000000000000068ad60cc5e8f3b7cc53beab321cf0e6036962dbc" + ], + "data": "0x", + "logIndex": 316, + "blockHash": "0xfe3767404a2aaefd885ac2278f95ef4501739e3a3d5b6fc5855f2a9e28ed205d" + }, + { + "transactionIndex": 195, + "blockNumber": 5389241, + "transactionHash": "0xd0436e0eb5ff655fe1eac53a24e04d4c1741783d35f28fb24700db4dbc2d64c7", + "address": "0xFdF0F1C4dF891732b586A85F062B7e8eBF65c428", + "topics": [ + "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "logIndex": 317, + "blockHash": "0xfe3767404a2aaefd885ac2278f95ef4501739e3a3d5b6fc5855f2a9e28ed205d" + }, + { + "transactionIndex": 195, + "blockNumber": 5389241, + "transactionHash": "0xd0436e0eb5ff655fe1eac53a24e04d4c1741783d35f28fb24700db4dbc2d64c7", + "address": "0xFdF0F1C4dF891732b586A85F062B7e8eBF65c428", + "topics": [ + "0x7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f" + ], + "data": "0x000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059dcf5b9f5c5f00c6edacd80d88fc1a2f8536787", + "logIndex": 318, + "blockHash": "0xfe3767404a2aaefd885ac2278f95ef4501739e3a3d5b6fc5855f2a9e28ed205d" + } + ], + "blockNumber": 5389241, + "cumulativeGasUsed": "21487798", + "status": 1, + "byzantium": true + }, + "numDeployments": 1, + "implementation": "0xc3BD9ce767534eE4932A4C6FaD4B911094E41CF0", + "devdoc": "Contract deployed as upgradable proxy" +} \ No newline at end of file diff --git a/cross-chain/base/external/baseSepolia/BaseWormholeRelayer.json b/cross-chain/base/external/baseSepolia/BaseWormholeRelayer.json new file mode 100644 index 000000000..7b945deb8 --- /dev/null +++ b/cross-chain/base/external/baseSepolia/BaseWormholeRelayer.json @@ -0,0 +1,3 @@ +{ + "address": "0x93BAD53DDfB6132b0aC8E37f6029163E63372cEE" +} \ No newline at end of file diff --git a/cross-chain/base/external/sepolia/Bridge.json b/cross-chain/base/external/sepolia/Bridge.json new file mode 100644 index 000000000..4a4dba6e1 --- /dev/null +++ b/cross-chain/base/external/sepolia/Bridge.json @@ -0,0 +1,3 @@ +{ + "address": "0x9b1a7fE5a16A15F2f9475C5B231750598b113403" +} \ No newline at end of file diff --git a/cross-chain/base/external/sepolia/TBTCVault.json b/cross-chain/base/external/sepolia/TBTCVault.json new file mode 100644 index 000000000..25914993d --- /dev/null +++ b/cross-chain/base/external/sepolia/TBTCVault.json @@ -0,0 +1,3 @@ +{ + "address": "0xB5679dE944A79732A75CE556191DF11F489448d5" +} \ No newline at end of file diff --git a/cross-chain/base/external/sepolia/Wormhole.json b/cross-chain/base/external/sepolia/Wormhole.json new file mode 100644 index 000000000..f83c46ca5 --- /dev/null +++ b/cross-chain/base/external/sepolia/Wormhole.json @@ -0,0 +1,3 @@ +{ + "address": "0x4a8bc80Ed5a4067f1CCf107057b8270E0cC11A78" +} \ No newline at end of file diff --git a/cross-chain/base/external/sepolia/WormholeRelayer.json b/cross-chain/base/external/sepolia/WormholeRelayer.json new file mode 100644 index 000000000..677a1e21d --- /dev/null +++ b/cross-chain/base/external/sepolia/WormholeRelayer.json @@ -0,0 +1,3 @@ +{ + "address": "0x7B1bD7a6b4E61c2a123AC6BC2cbfC614437D0470" +} \ No newline at end of file