diff --git a/sepolia/2025-10-17-base-bridge-alpha-deployment/.env b/sepolia/2025-10-17-base-bridge-alpha-deployment/.env new file mode 100644 index 00000000..56f6e7b9 --- /dev/null +++ b/sepolia/2025-10-17-base-bridge-alpha-deployment/.env @@ -0,0 +1,2 @@ +OP_COMMIT=594bc933a38425f745b46399a3619bcdeb74965d +BASE_CONTRACTS_COMMIT=98ec680a67c173d38aa52588c5dc0fbaa1c0561c \ No newline at end of file diff --git a/sepolia/2025-10-17-base-bridge-alpha-deployment/Makefile b/sepolia/2025-10-17-base-bridge-alpha-deployment/Makefile new file mode 100644 index 00000000..2b3396bb --- /dev/null +++ b/sepolia/2025-10-17-base-bridge-alpha-deployment/Makefile @@ -0,0 +1,13 @@ +include ../../Makefile +include ../.env +include .env + +.PHONY: deps +deps: + forge install --no-git github.com/base/bridge@e9b5fe27280ad2345d823d42668810432b0651aa + +.PHONY: deploy +deploy: + forge script DeployBridge --rpc-url $(L2_RPC_URL) \ + --sender $(shell cast wallet address --account testnet-admin) \ + --account testnet-admin --broadcast -vvvv \ No newline at end of file diff --git a/sepolia/2025-10-17-base-bridge-alpha-deployment/README.md b/sepolia/2025-10-17-base-bridge-alpha-deployment/README.md new file mode 100644 index 00000000..2939113a --- /dev/null +++ b/sepolia/2025-10-17-base-bridge-alpha-deployment/README.md @@ -0,0 +1,18 @@ +# Base Bridge Deployment + +Deploys the Base side of [Base Bridge](https://github.com/base/bridge). This should be done after deploying the Solana bridge program since the program's pubkey needs to be added to `config.json`. + +## Deployment Steps + +1. Install dependencies + +```bash +cd sepolia/2025-10-17-base-bridge-alpha-deployment +make deps +``` + +2. Deploy bridge + +```bash +make deploy +``` diff --git a/sepolia/2025-10-17-base-bridge-alpha-deployment/addresses.json b/sepolia/2025-10-17-base-bridge-alpha-deployment/addresses.json new file mode 100644 index 00000000..52cb4067 --- /dev/null +++ b/sepolia/2025-10-17-base-bridge-alpha-deployment/addresses.json @@ -0,0 +1,8 @@ +{ + "Bridge": "0x64567a9147fa89B1edc987e36Eb6f4b6db71656b", + "BridgeValidator": "0x41775f86710572Ec9AbeA4955A3dE882e0930675", + "CrossChainERC20Factory": "0xa51473BC986c95a5E1a7F9A9991e3f2f263842bE", + "Twin": "0x013d06E4cf47229D973Cb3C4e23Ff8D336CE5FF6", + "RelayerOrchestrator": "0x815170c71B25c6aA9891F386f96d2e84cC682149", + "WrappedSol": "0x003512146Fd54b71f926C7Fd4B7bd20Fc84E22c5" +} \ No newline at end of file diff --git a/sepolia/2025-10-17-base-bridge-alpha-deployment/config.json b/sepolia/2025-10-17-base-bridge-alpha-deployment/config.json new file mode 100644 index 00000000..4fb3f13d --- /dev/null +++ b/sepolia/2025-10-17-base-bridge-alpha-deployment/config.json @@ -0,0 +1,13 @@ +{ + "salt": "0xa9252d7f6f4f65eaaecf9228b26ebb5ed5c03771fd884c8c07d639ac2ce40e55", + "initialOwner": "0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f", + "partnerValidators": "0x0000000000000000000000000000000000000001", + "baseValidators": [ + "0x0e9a877906EBc3b7098DA2404412BF0Ed1A5EFb4", + "0x6D0E9C04BD896608b7e10b87FB686E1Feba85510" + ], + "baseSignatureThreshold": 2, + "partnerValidatorThreshold": 0, + "remoteBridge": "0x5270f413294ec2409da350d920dc5d0e691b65fb868577de3a359b79bee6b4ac", + "guardians": ["0x5dfEB066334B67355A15dc9b67317fD2a2e1f77f"] +} diff --git a/sepolia/2025-10-17-base-bridge-alpha-deployment/foundry.toml b/sepolia/2025-10-17-base-bridge-alpha-deployment/foundry.toml new file mode 100644 index 00000000..c384b585 --- /dev/null +++ b/sepolia/2025-10-17-base-bridge-alpha-deployment/foundry.toml @@ -0,0 +1,20 @@ +[profile.default] +src = 'src' +out = 'out' +libs = ['lib'] +broadcast = 'records' +fs_permissions = [{ access = "read-write", path = "./" }] +optimizer = true +optimizer_runs = 999999 +solc_version = "0.8.28" +via-ir = false +remappings = [ + '@eth-optimism-bedrock/=lib/optimism/packages/contracts-bedrock/', + '@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts', + '@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts', + '@rari-capital/solmate/=lib/solmate/', + '@base-contracts/=lib/base-contracts', + '@solady/=lib/solady/src/', +] + +# See more config options https://github.com/foundry-rs/foundry/tree/master/config \ No newline at end of file diff --git a/sepolia/2025-10-17-base-bridge-alpha-deployment/records/DeployBridge.s.sol/84532/run-1761064051180.json b/sepolia/2025-10-17-base-bridge-alpha-deployment/records/DeployBridge.s.sol/84532/run-1761064051180.json new file mode 100644 index 00000000..1a22ad58 --- /dev/null +++ b/sepolia/2025-10-17-base-bridge-alpha-deployment/records/DeployBridge.s.sol/84532/run-1761064051180.json @@ -0,0 +1,882 @@ +{ + "transactions": [ + { + "hash": "0x412e9ed3060c3ba457f7aeda2204ff11c48b348d68d62e5fb23a902f3aa9a302", + "transactionType": "CREATE", + "contractName": "Twin", + "contractAddress": "0x4dc9cf09dce777c7ce4657adc002645361d4e792", + "function": null, + "arguments": [ + "0x64567a9147fa89B1edc987e36Eb6f4b6db71656b" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "gas": "0x8c894", + "value": "0x0", + "input": "0x60a0604052348015600e575f5ffd5b506040516107b03803806107b0833981016040819052602b916061565b6001600160a01b03811660515760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0316608052608c565b5f602082840312156070575f5ffd5b81516001600160a01b03811681146085575f5ffd5b9392505050565b6080516107076100a95f395f81816068015260cb01526107075ff3fe60806040526004361061002b575f3560e01c806360ed1d2814610036578063ee9a31a214610057575f5ffd5b3661003257005b5f5ffd5b348015610041575f5ffd5b50610055610050366004610389565b6100b3565b005b348015610062575f5ffd5b5061008a7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614806100f657503330145b61012c576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61013d61013882610527565b610140565b50565b5f81516003811115610154576101546105bc565b0361022c575f5f826020015173ffffffffffffffffffffffffffffffffffffffff1683604001516fffffffffffffffffffffffffffffffff16846060015160405161019f91906105e9565b5f6040518083038185875af1925050503d805f81146101d9576040519150601f19603f3d011682016040523d82523d5f602084013e6101de565b606091505b5091509150818190610226576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161021d91906105ff565b60405180910390fd5b50505050565b600181516003811115610241576102416105bc565b036102fb5760408101516fffffffffffffffffffffffffffffffff1615610294576040517f81c2388100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f826020015173ffffffffffffffffffffffffffffffffffffffff1683606001516040516102c391906105e9565b5f60405180830381855af49150503d805f81146101d9576040519150601f19603f3d011682016040523d82523d5f602084013e6101de565b600281516003811115610310576103106105bc565b03610330576040810151606082015180516020820183f080610226575f5ffd5b600381516003811115610345576103456105bc565b0361013d575f816040015190505f5f836060015180602001905181019061036c9190610652565b915091508181516020830185f580610382575f5ffd5b5050505050565b5f60208284031215610399575f5ffd5b813567ffffffffffffffff8111156103af575f5ffd5b8201608081850312156103c0575f5ffd5b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715610417576104176103c7565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715610464576104646103c7565b604052919050565b80356fffffffffffffffffffffffffffffffff8116811461048b575f5ffd5b919050565b5f67ffffffffffffffff8211156104a9576104a96103c7565b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b5f82601f8301126104e4575f5ffd5b81356104f76104f282610490565b61041d565b81815284602083860101111561050b575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f60808236031215610537575f5ffd5b61053f6103f4565b82356004811061054d575f5ffd5b8152602083013573ffffffffffffffffffffffffffffffffffffffff81168114610575575f5ffd5b60208201526105866040840161046c565b6040820152606083013567ffffffffffffffff8111156105a4575f5ffd5b6105b0368286016104d5565b60608301525092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b5f82518060208501845e5f920191825250919050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f5f60408385031215610663575f5ffd5b82519150602083015167ffffffffffffffff811115610680575f5ffd5b8301601f81018513610690575f5ffd5b805161069e6104f282610490565b8181528660208385010111156106b2575f5ffd5b8160208401602083015e5f60208383010152809350505050925092905056fea2646970667358221220ecd62574def5cbde1a390b3a28be1417f09ed9db0a349a4078ffc3cc5c7bd2aa64736f6c634300081c003300000000000000000000000064567a9147fa89b1edc987e36eb6f4b6db71656b", + "nonce": "0x5a0", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xa6d43aeccb5d852c1ff40f36a5f66b1c6664b33fb7d4d96a5cbb5d819a863e4a", + "transactionType": "CREATE", + "contractName": "UpgradeableBeacon", + "contractAddress": "0x013d06e4cf47229d973cb3c4e23ff8d336ce5ff6", + "function": null, + "arguments": [ + "0x6F0fB066334B67355A15dc9b67317fd2A2E20890", + "0x4DC9cf09dce777c7Ce4657ADc002645361D4E792" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "gas": "0x4c1bf", + "value": "0x0", + "input": "0x60806040526040516103a53803806103a583398101604081905261002291610108565b61002c8282610033565b5050610139565b61003d8282610041565b5050565b61004a82610053565b61003d8161009d565b8060601b60601c9050684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc5581817f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f38a35050565b6001600160a01b0316803b6100b957636d3e283b5f526004601cfd5b8068911c5a209f08d5ec5e55807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f38a250565b80516001600160a01b0381168114610103575f5ffd5b919050565b5f5f60408385031215610119575f5ffd5b610122836100ed565b9150610130602084016100ed565b90509250929050565b61025f806101465f395ff3fe608060405234801561000f575f5ffd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100b25780638da5cb5b146100ba578063f2fde38b146100ca575f5ffd5b80633659cfe6146100685780635c60da1b1461007d575b5f5ffd5b61007b6100763660046101ef565b6100dd565b005b68911c5a209f08d5ec5e545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007b6100f1565b684343a0dc92ed22dbfc54610089565b61007b6100d83660046101ef565b610104565b6100e561012a565b6100ee81610148565b50565b6100f961012a565b6101025f6101a5565b565b61010c61012a565b8060601b61012157637448fbae5f526004601cfd5b6100ee816101a5565b684343a0dc92ed22dbfc543314610102576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16803b61017157636d3e283b5f526004601cfd5b8068911c5a209f08d5ec5e55807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f38a250565b8060601b60601c9050684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc5581817f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f38a35050565b5f602082840312156101ff575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610222575f5ffd5b939250505056fea26469706673582212204df276d825fed74b1d1cec9e8d4151a0fbdbbd97bd93bd6a5c4550f78c5b368a64736f6c634300081c00330000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e208900000000000000000000000004dc9cf09dce777c7ce4657adc002645361d4e792", + "nonce": "0x5a1", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xb46dfda2d8ebfccaf573de5a6b65d84340289097d25aa4e1db0139a8a349ceac", + "transactionType": "CREATE", + "contractName": "CrossChainERC20", + "contractAddress": "0xa73bb8a073e2578edaab56f9c48b276647a08bcb", + "function": null, + "arguments": [ + "0x64567a9147fa89B1edc987e36Eb6f4b6db71656b" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "gas": "0x1461c7", + "value": "0x0", + "input": "0x60a060405234801561000f575f5ffd5b5060405161125038038061125083398101604081905261002e916100d5565b6001600160a01b0381166100555760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03811660805261006a610070565b50610102565b63409feecd198054600181161561008e5763f92ee8a95f526004601cfd5b6001600160401b03808260011c146100d0578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b5f602082840312156100e5575f5ffd5b81516001600160a01b03811681146100fb575f5ffd5b9392505050565b6080516111286101285f395f818161028c01528181610535015261076e01526111285ff3fe608060405234801561000f575f5ffd5b5060043610610115575f3560e01c80637ecebe00116100ad578063a9059cbb1161007d578063d6c0b2c411610063578063d6c0b2c414610257578063dd62ed3e1461025f578063e78cea9214610272575f5ffd5b8063a9059cbb14610231578063d505accf14610244575f5ffd5b80637ecebe00146101de578063828b417b1461020357806395d89b41146102165780639dc29fac1461021e575f5ffd5b8063313ce567116100e8578063313ce567146101875780633644e5151461019c57806340c10f19146101a457806370a08231146101b9575f5ffd5b806306fdde0314610119578063095ea7b31461013757806318160ddd1461015a57806323b872dd14610174575b5f5ffd5b6101216102b6565b60405161012e9190610c2f565b60405180910390f35b61014a610145366004610caa565b610345565b604051901515815260200161012e565b6805345cdf77eb68f44c545b60405190815260200161012e565b61014a610182366004610cd2565b6103d2565b60035460405160ff909116815260200161012e565b6101666104a1565b6101b76101b2366004610caa565b61051d565b005b6101666101c7366004610d0c565b6387a211a2600c9081525f91909152602090205490565b6101666101ec366004610d0c565b6338377508600c9081525f91909152602090205490565b6101b7610211366004610e31565b610637565b610121610747565b6101b761022c366004610caa565b610756565b61014a61023f366004610caa565b610864565b6101b7610252366004610eaf565b6108db565b600254610166565b61016661026d366004610f15565b610aad565b60405173ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016815260200161012e565b60605f80546102c490610f46565b80601f01602080910402602001604051908101604052809291908181526020018280546102f090610f46565b801561033b5780601f106103125761010080835404028352916020019161033b565b820191905f5260205f20905b81548152906001019060200180831161031e57829003601f168201915b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff83166e22d473030f116ddee9f6b43ac78ba3188219151761038357633f68539a5f526004601cfd5b82602052637f5e9f20600c52335f52816034600c2055815f52602c5160601c337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa35060015b92915050565b5f8360601b6e22d473030f116ddee9f6b43ac78ba333146104275733602052637f5e9f208117600c526034600c208054801915610424578085111561041e576313be252b5f526004601cfd5b84810382555b50505b6387a211a28117600c526020600c2080548085111561044d5763f4d678b85f526004601cfd5b84810382555050835f526020600c208381540181555082602052600c5160601c8160601c7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a3505060019392505050565b5f806104ab6102b6565b805190602001209050604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f815260208101929092527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc69082015246606082015230608082015260a09020919050565b3373ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000161461058c576040517fed7a257c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff82166105d9576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6105e38282610b32565b8173ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d41213968858260405161062b91815260200190565b60405180910390a25050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156106885760018160011c14303b1061067f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b50846106c0576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002859055600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660ff84161790555f6106fd8582610fdb565b50600161070a8482610fdb565b508015610740576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050565b6060600180546102c490610f46565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146107c5576040517fed7a257c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8216610812576040517fb817eee700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61081c8282610bae565b8173ffffffffffffffffffffffffffffffffffffffff167fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca58260405161062b91815260200190565b5f6387a211a2600c52335f526020600c2080548084111561088c5763f4d678b85f526004601cfd5b83810382555050825f526020600c208281540181555081602052600c5160601c337fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a350600192915050565b73ffffffffffffffffffffffffffffffffffffffff86166e22d473030f116ddee9f6b43ac78ba3188519151761091857633f68539a5f526004601cfd5b5f6109216102b6565b8051906020012090507fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc64286101561096057631a15a3cc5f526004601cfd5b6040518960601b60601c99508860601b60601c985065383775081901600e52895f526020600c2080547f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f835284602084015283604084015246606084015230608084015260a08320602e527f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c983528b60208401528a60408401528960608401528060808401528860a084015260c08320604e526042602c205f528760ff16602052866040528560605260208060805f60015afa8c3d5114610a485763ddafbaef5f526004601cfd5b019055777f5e9f20000000000000000000000000000000000000000089176040526034602c20889055888a7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925602060608501a360405250505f60605250505050505050565b5f7fffffffffffffffffffffffffffffffffffdd2b8cfcf0ee922116094bc538745d73ffffffffffffffffffffffffffffffffffffffff831601610b1257507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6103cc565b50602052637f5e9f20600c9081525f91909152603490205490565b505050565b6805345cdf77eb68f44c5481810181811015610b555763e5cfe9575f526004601cfd5b806805345cdf77eb68f44c5550506387a211a2600c52815f526020600c208181540181555080602052600c5160601c5f7fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602080a35050565b6387a211a2600c52815f526020600c20805480831115610bd55763f4d678b85f526004601cfd5b82900390556805345cdf77eb68f44c805482900390555f81815273ffffffffffffffffffffffffffffffffffffffff83167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602083a35050565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610ca5575f5ffd5b919050565b5f5f60408385031215610cbb575f5ffd5b610cc483610c82565b946020939093013593505050565b5f5f5f60608486031215610ce4575f5ffd5b610ced84610c82565b9250610cfb60208501610c82565b929592945050506040919091013590565b5f60208284031215610d1c575f5ffd5b610d2582610c82565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112610d68575f5ffd5b813567ffffffffffffffff811115610d8257610d82610d2c565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff82111715610dee57610dee610d2c565b604052818152838201602001851015610e05575f5ffd5b816020850160208301375f918101602001919091529392505050565b803560ff81168114610ca5575f5ffd5b5f5f5f5f60808587031215610e44575f5ffd5b84359350602085013567ffffffffffffffff811115610e61575f5ffd5b610e6d87828801610d59565b935050604085013567ffffffffffffffff811115610e89575f5ffd5b610e9587828801610d59565b925050610ea460608601610e21565b905092959194509250565b5f5f5f5f5f5f5f60e0888a031215610ec5575f5ffd5b610ece88610c82565b9650610edc60208901610c82565b95506040880135945060608801359350610ef860808901610e21565b9699959850939692959460a0840135945060c09093013592915050565b5f5f60408385031215610f26575f5ffd5b610f2f83610c82565b9150610f3d60208401610c82565b90509250929050565b600181811c90821680610f5a57607f821691505b602082108103610f91577f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b50919050565b601f821115610b2d57805f5260205f20601f840160051c81016020851015610fbc5750805b601f840160051c820191505b81811015610740575f8155600101610fc8565b815167ffffffffffffffff811115610ff557610ff5610d2c565b611009816110038454610f46565b84610f97565b6020601f82116001811461105a575f83156110245750848201515b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600385901b1c1916600184901b178455610740565b5f848152602081207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08516915b828110156110a75787850151825560209485019460019092019101611087565b50848210156110e357868401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600387901b60f8161c191681555b50505050600190811b0190555056fea2646970667358221220d2fb81c45e4c919f9f3d7fde2b3f5c7f2cc036de5b08b7b5d1c212ba5571b71564736f6c634300081c003300000000000000000000000064567a9147fa89b1edc987e36eb6f4b6db71656b", + "nonce": "0x5a2", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xf2d765b8606e52c8cc6818691c9aa8057557e3c757674b9b623a3beba86988de", + "transactionType": "CREATE", + "contractName": "UpgradeableBeacon", + "contractAddress": "0xfbaade604e0de1ac8b902120b6e25b9cd5884665", + "function": null, + "arguments": [ + "0x6F0fB066334B67355A15dc9b67317fd2A2E20890", + "0xa73bb8A073E2578eDAaB56f9C48B276647a08bcb" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "gas": "0x4c1bf", + "value": "0x0", + "input": "0x60806040526040516103a53803806103a583398101604081905261002291610108565b61002c8282610033565b5050610139565b61003d8282610041565b5050565b61004a82610053565b61003d8161009d565b8060601b60601c9050684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc5581817f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f38a35050565b6001600160a01b0316803b6100b957636d3e283b5f526004601cfd5b8068911c5a209f08d5ec5e55807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f38a250565b80516001600160a01b0381168114610103575f5ffd5b919050565b5f5f60408385031215610119575f5ffd5b610122836100ed565b9150610130602084016100ed565b90509250929050565b61025f806101465f395ff3fe608060405234801561000f575f5ffd5b5060043610610064575f3560e01c8063715018a61161004d578063715018a6146100b25780638da5cb5b146100ba578063f2fde38b146100ca575f5ffd5b80633659cfe6146100685780635c60da1b1461007d575b5f5ffd5b61007b6100763660046101ef565b6100dd565b005b68911c5a209f08d5ec5e545b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007b6100f1565b684343a0dc92ed22dbfc54610089565b61007b6100d83660046101ef565b610104565b6100e561012a565b6100ee81610148565b50565b6100f961012a565b6101025f6101a5565b565b61010c61012a565b8060601b61012157637448fbae5f526004601cfd5b6100ee816101a5565b684343a0dc92ed22dbfc543314610102576382b429005f526004601cfd5b73ffffffffffffffffffffffffffffffffffffffff16803b61017157636d3e283b5f526004601cfd5b8068911c5a209f08d5ec5e55807fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f38a250565b8060601b60601c9050684343a0dc92ed22dbfc5481684343a0dc92ed22dbfc5581817f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f38a35050565b5f602082840312156101ff575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610222575f5ffd5b939250505056fea26469706673582212204df276d825fed74b1d1cec9e8d4151a0fbdbbd97bd93bd6a5c4550f78c5b368a64736f6c634300081c00330000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890000000000000000000000000a73bb8a073e2578edaab56f9c48b276647a08bcb", + "nonce": "0x5a3", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xad2616b57ecf141419cb0ee4c14caf4fdeed14b0e6e38cfdb548f8497624648c", + "transactionType": "CREATE", + "contractName": "CrossChainERC20Factory", + "contractAddress": "0x9bb8a17474401c26f9e2173bb2cd428d41586361", + "function": null, + "arguments": [ + "0xFbAadE604E0de1aC8B902120B6E25B9cD5884665" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "gas": "0x86c84", + "value": "0x0", + "input": "0x60a0604052348015600e575f5ffd5b5060405161075f38038061075f833981016040819052602b916061565b6001600160a01b03811660515760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0316608052608c565b5f602082840312156070575f5ffd5b81516001600160a01b03811681146085575f5ffd5b9392505050565b6080516106b56100aa5f395f818160c2015261023001526106b55ff3fe608060405234801561000f575f5ffd5b506004361061004a575f3560e01c806323c3601f1461004e57806334476ab11461008b57806349493a4d146100bd578063ad831c1a146100e4575b5f5ffd5b61006161005c36600461053c565b6100ec565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b6100ad6100993660046105c1565b5f6020819052908152604090205460ff1681565b6040519015158152602001610082565b6100617f000000000000000000000000000000000000000000000000000000000000000081565b61006161015b565b5f7ff96418d547c92b1533fdada48caf5875c6a25d0edac5bf1450299d00000000008501610146576040517f2d70578000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610152858585856101fa565b95945050505050565b5f6101f57f069be72ab836d4eacc02525b7350a78a395da2f1253a40ebafd66300000000005f1b6040518060400160405280600681526020017f536f6c616e6100000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f534f4c000000000000000000000000000000000000000000000000000000000081525060096101fa565b905090565b5f5f858585856040516020016102139493929190610640565b6040516020818303038152906040528051906020012090506102557f000000000000000000000000000000000000000000000000000000000000000082610369565b73ffffffffffffffffffffffffffffffffffffffff81165f818152602081905260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f828b417b0000000000000000000000000000000000000000000000000000000081529193509063828b417b906102e6908990899089908990600401610640565b5f604051808303815f87803b1580156102fd575f5ffd5b505af115801561030f573d5f5f3e3d5ffd5b505060405133815288925073ffffffffffffffffffffffffffffffffffffffff851691507f0b84965add45c4d10c5aacc22714edc5f88def8df83d2c1f9d18b45ef2d287839060200160405180910390a350949350505050565b5f6103755f848461037c565b9392505050565b604080517fb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f36060527f1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c9091527660195155f3363d3d373d3d363d602036600436635c60da6020527c60523d8160223d3973000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8416176009525f90826074600c87f59150816104395763301164255f526004601cfd5b6040525f6060529392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f82601f830112610483575f5ffd5b813567ffffffffffffffff81111561049d5761049d610447565b6040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0603f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501160116810181811067ffffffffffffffff8211171561050957610509610447565b604052818152838201602001851015610520575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f6080858703121561054f575f5ffd5b84359350602085013567ffffffffffffffff81111561056c575f5ffd5b61057887828801610474565b935050604085013567ffffffffffffffff811115610594575f5ffd5b6105a087828801610474565b925050606085013560ff811681146105b6575f5ffd5b939692955090935050565b5f602082840312156105d1575f5ffd5b813573ffffffffffffffffffffffffffffffffffffffff81168114610375575f5ffd5b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b848152608060208201525f61065860808301866105f4565b828103604084015261066a81866105f4565b91505060ff831660608301529594505050505056fea2646970667358221220f8580010539103fca1b4f359cdfb177f98b25738d0d577d2e4708865a69c7ac464736f6c634300081c0033000000000000000000000000fbaade604e0de1ac8b902120b6e25b9cd5884665", + "nonce": "0x5a4", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xcca6960f26ce754403d975ba1e65761e76bb72cdbf4fa43897233b0d81a4fd2a", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "function": "deploy(address,address)", + "arguments": [ + "0x9BB8a17474401C26F9e2173BB2CD428d41586361", + "0x6F0fB066334B67355A15dc9b67317fd2A2E20890" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "gas": "0x2a3cd", + "value": "0x0", + "input": "0x545e7c610000000000000000000000009bb8a17474401c26f9e2173bb2cd428d415863610000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "nonce": "0x5a5", + "chainId": "0x14a34" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "contractName": null, + "address": "0xa51473bc986c95a5e1a7f9a9991e3f2f263842be", + "initCode": "0x60793d8160093d39f33d3d336d6396ff2a80c067f99b3d2ab4df2414605157363d3d37363d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af43d6000803e604c573d6000fd5b3d6000f35b3d3560203555604080361115604c5736038060403d373d3d355af43d6000803e604c573d6000fd00000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0x36dab9664876f2238d536e9264937619b9cfa87b1a089f34883748f005bd8b9f", + "transactionType": "CREATE", + "contractName": "BridgeValidator", + "contractAddress": "0xc6a99e05b835270b4205d619a531087789f81c46", + "function": null, + "arguments": [ + "0x64567a9147fa89B1edc987e36Eb6f4b6db71656b", + "0x0000000000000000000000000000000000000001" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "gas": "0x183053", + "value": "0x0", + "input": "0x60c060405234801561000f575f5ffd5b5060405161159238038061159283398101604081905261002e9161015a565b6001600160a01b0382166100555760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03811661007c5760405163d92e233d60e01b815260040160405180910390fd5b5f195f557f245c109929d1c5575e8db91278c683d6e028507d88b9169278939e24f465af0180546001600160801b0319166001600160801b031790556001600160a01b03828116608052811660a0526100d36100da565b505061018b565b63409feecd19805460018116156100f85763f92ee8a95f526004601cfd5b6001600160401b03808260011c1461013a578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b80516001600160a01b0381168114610155575f5ffd5b919050565b5f5f6040838503121561016b575f5ffd5b6101748361013f565b91506101826020840161013f565b90509250929050565b60805160a0516113d86101ba5f395f81816101eb01526109b501525f818161023701526103c101526113d85ff3fe608060405234801561000f575f5ffd5b50600436106100cf575f3560e01c80637fa920b61161007d578063d69c3d3011610058578063d69c3d30146101dd578063d91879c8146101e6578063ee9a31a214610232575f5ffd5b80637fa920b6146101a05780639bf6a053146101b3578063c92a1099146101bb575f5ffd5b80633ddb0cd4116100ad5780633ddb0cd41461013f5780633df39dfe14610162578063567942cf1461018b575f5ffd5b80631903d397146100d357806324ea54f41461012f5780632b6e5bcf14610137575b5f5ffd5b7f245c109929d1c5575e8db91278c683d6e028507d88b9169278939e24f465af015470010000000000000000000000000000000090046fffffffffffffffffffffffffffffffff165b6040519081526020015b60405180910390f35b61011c600181565b61011c5f5481565b61015261014d366004610f24565b610259565b6040519015158152602001610126565b61016a6102a7565b6040516fffffffffffffffffffffffffffffffff9091168152602001610126565b61019e610199366004610f46565b6102e7565b005b61019e6101ae366004611027565b6103bf565b61011c600581565b6101526101c93660046110c2565b60026020525f908152604090205460ff1681565b61011c60015481565b61020d7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610126565b61020d7f000000000000000000000000000000000000000000000000000000000000000081565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f245c109929d1c5575e8db91278c683d6e028507d88b9169278939e24f465af00602052604081205460ff165b92915050565b5f6102e27f245c109929d1c5575e8db91278c683d6e028507d88b9169278939e24f465af01546fffffffffffffffffffffffffffffffff1690565b905090565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf60113280546003825580156103385760018160011c14303b1061032f5763f92ee8a95f526004601cfd5b818160ff1b1b91505b50610344858585610665565b600582111561037f576040517fe56d58cf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f82905580156103b8576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610428573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061044c91906110d9565b15610483576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b825f8190036104be576040517f6074424200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8167ffffffffffffffff8111156104d8576104d86110f8565b604051908082528060200260200182016040528015610501578160200160208202803683370190505b506001549091505f5b83811015610597576105728261051f81611125565b935089898481811061053357610533611181565b905060400201602001358a8a8581811061054f5761054f611181565b9050604002015f0135604080519384526020840192909252908201526060902090565b83828151811061058457610584611181565b602090810291909101015260010161050a565b506105a382868661090f565b5f5b8381101561065957600160025f8584815181106105c4576105c4611181565b602002602001015181526020019081526020015f205f6101000a81548160ff02191690831515021790555087878281811061060157610601611181565b9050604002016020013583828151811061061d5761061d611181565b60200260200101517f5e55930eb861ee57d9b7fa9e506b7f413cb1599c9886e57f1c8091f5fee5fc3360405160405180910390a36001016105a5565b50600155505050505050565b7f245c109929d1c5575e8db91278c683d6e028507d88b9169278939e24f465af006fffffffffffffffffffffffffffffffff8216158015906106b957506fffffffffffffffffffffffffffffffff82168310155b6106ef576040517faabd5a0900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601083111561072a576040517f2c4f399f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b838110156108b7575f85858381811061074757610747611181565b905060200201602081019061075c9190610f24565b73ffffffffffffffffffffffffffffffffffffffff16036107a9576040517f713ce51100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f8686848181106107bd576107bd611181565b90506020020160208101906107d29190610f24565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f205460ff1615610832576040517f0d57d92a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001825f87878581811061084857610848611181565b905060200201602081019061085d9190610f24565b73ffffffffffffffffffffffffffffffffffffffff16815260208101919091526040015f2080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001691151591909117905560010161072c565b506fffffffffffffffffffffffffffffffff91821691909216700100000000000000000000000000000000027fffffffffffffffffffffffffffffffff00000000000000000000000000000000161760019091015550565b5f61091b848484610aad565b90506109577f245c109929d1c5575e8db91278c683d6e028507d88b9169278939e24f465af01546fffffffffffffffffffffffffffffffff1690565b6fffffffffffffffffffffffffffffffff1661097282610c5e565b10156109aa576040517ff62bc97a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5480156103b8575f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166394cf795e6040518163ffffffff1660e01b81526004015f60405180830381865afa158015610a1b573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0168201604052610a609190810190611226565b905081610a6d8285610cec565b1015610aa5576040517f593ac4cb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050505050565b6060610aba60418361133a565b15610af1576040517f4be6321b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610afd60418461134d565b90505f610b2886604051602001610b149190611360565b604051602081830303815290604052610d8b565b90505f808367ffffffffffffffff811115610b4557610b456110f8565b604051908082528060200260200182016040528015610b6e578160200160208202803683370190505b509050865f5b85811015610c505760216041820283019081013560ff1690803590602001355f610ba089858585610df4565b90508773ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1611610c07576040517fd02ef0e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80878681518110610c1a57610c1a611181565b73ffffffffffffffffffffffffffffffffffffffff9092166020928302919091019091015296505060019092019150610b749050565b509098975050505050505050565b5f5f5f5b8351811015610ce557610cd1848281518110610c8057610c80611181565b602002602001015173ffffffffffffffffffffffffffffffffffffffff165f9081527f245c109929d1c5575e8db91278c683d6e028507d88b9169278939e24f465af00602052604090205460ff1690565b15610cdd576001909101905b600101610c62565b5092915050565b5f5f5f5f5b8451811015610d81575f610d1e87878481518110610d1157610d11611181565b6020026020010151610e39565b905086518103610d2e5750610d79565b6001811b831615610d6b576040517f8044bb3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600193840193901b91909117905b600101610cf1565b5090949350505050565b5f815160207f19457468657265756d205369676e6564204d6573736167653a0a00000000000081525f5f52815b600182039150600a81066030018253600a900480610db85750603a03602081113d3d3e80515f5117845281810160209190910384012092525090565b5f604051855f5260ff851660205283604052826060526020600160805f60015afa5191503d610e2a57638baa579f5f526004601cfd5b5f606052604052949350505050565b5f5f5b8351811015610ef757838181518110610e5757610e57611181565b60200260200101515f015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480610ee35750838181518110610ea857610ea8611181565b60200260200101516020015173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15610eef5790506102a1565b600101610e3c565b50509051919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610f21575f5ffd5b50565b5f60208284031215610f34575f5ffd5b8135610f3f81610f00565b9392505050565b5f5f5f5f60608587031215610f59575f5ffd5b843567ffffffffffffffff811115610f6f575f5ffd5b8501601f81018713610f7f575f5ffd5b803567ffffffffffffffff811115610f95575f5ffd5b8760208260051b8401011115610fa9575f5ffd5b6020918201955093508501356fffffffffffffffffffffffffffffffff81168114610fd2575f5ffd5b9396929550929360400135925050565b5f5f83601f840112610ff2575f5ffd5b50813567ffffffffffffffff811115611009575f5ffd5b602083019150836020828501011115611020575f5ffd5b9250929050565b5f5f5f5f6040858703121561103a575f5ffd5b843567ffffffffffffffff811115611050575f5ffd5b8501601f81018713611060575f5ffd5b803567ffffffffffffffff811115611076575f5ffd5b8760208260061b840101111561108a575f5ffd5b60209182019550935085013567ffffffffffffffff8111156110aa575f5ffd5b6110b687828801610fe2565b95989497509550505050565b5f602082840312156110d2575f5ffd5b5035919050565b5f602082840312156110e9575f5ffd5b81518015158114610f3f575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361117a577f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5060010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b6040805190810167ffffffffffffffff811182821017156111d1576111d16110f8565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561121e5761121e6110f8565b604052919050565b5f60208284031215611236575f5ffd5b815167ffffffffffffffff81111561124c575f5ffd5b8201601f8101841361125c575f5ffd5b805167ffffffffffffffff811115611276576112766110f8565b61128560208260051b016111d7565b8082825260208201915060208360061b8501019250868311156112a6575f5ffd5b6020840193505b8284101561130357604084880312156112c4575f5ffd5b6112cc6111ae565b84516112d781610f00565b815260208501516112e781610f00565b80602083015250808352506020820191506040840193506112ad565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f826113485761134861130d565b500690565b5f8261135b5761135b61130d565b500490565b602080825282518282018190525f918401906040840190835b81811015611397578351835260209384019390920191600101611379565b50909594505050505056fea26469706673582212207ceedf727f1bd1281cce70297cdcafc481f8bd32b5e97692e0d9bf67e23bb29b64736f6c634300081c003300000000000000000000000064567a9147fa89b1edc987e36eb6f4b6db71656b0000000000000000000000000000000000000000000000000000000000000001", + "nonce": "0x5a6", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0xdb7eb9fb9bcdf88290193a6c915a483ebff40b5b162744958e9f3b077c3d80f3", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "function": "deployAndCall(address,address,bytes)", + "arguments": [ + "0xC6A99E05B835270B4205D619a531087789f81c46", + "0x6F0fB066334B67355A15dc9b67317fd2A2E20890", + "0x567942cf00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e9a877906ebc3b7098da2404412bf0ed1a5efb40000000000000000000000006d0e9c04bd896608b7e10b87fb686e1feba85510" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "gas": "0x4bb34", + "value": "0x0", + "input": "0x4314f120000000000000000000000000c6a99e05b835270b4205d619a531087789f81c460000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c4567942cf00000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000e9a877906ebc3b7098da2404412bf0ed1a5efb40000000000000000000000006d0e9c04bd896608b7e10b87fb686e1feba8551000000000000000000000000000000000000000000000000000000000", + "nonce": "0x5a7", + "chainId": "0x14a34" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "contractName": null, + "address": "0x41775f86710572ec9abea4955a3de882e0930675", + "initCode": "0x60793d8160093d39f33d3d336d6396ff2a80c067f99b3d2ab4df2414605157363d3d37363d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af43d6000803e604c573d6000fd5b3d6000f35b3d3560203555604080361115604c5736038060403d373d3d355af43d6000803e604c573d6000fd00000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xbbcfd555c29dd3691d7f07bae881c1a7b23e26852b45a6908d5856daff10f779", + "transactionType": "CREATE", + "contractName": "Bridge", + "contractAddress": "0x6827fb4906530520af8ba952550cfea393857bed", + "function": null, + "arguments": [ + "0x5270f413294ec2409da350d920dc5d0e691b65fb868577de3a359b79bee6b4ac", + "0x013d06E4cf47229D973Cb3C4e23Ff8D336CE5FF6", + "0xa51473BC986c95a5E1a7F9A9991e3f2f263842bE", + "0x41775f86710572Ec9AbeA4955A3dE882e0930675" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "gas": "0x5355eb", + "value": "0x0", + "input": "0x610100604052348015610010575f5ffd5b50604051614cc2380380614cc283398101604081905261002f91610153565b6001600160a01b0383166100565760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03821661007d5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0381166100a45760405163d92e233d60e01b815260040160405180910390fd5b60808490526001600160a01b0380841660a05282811660c052811660e0526100ca6100d3565b5050505061019d565b63409feecd19805460018116156100f15763f92ee8a95f526004601cfd5b6001600160401b03808260011c14610133578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b80516001600160a01b038116811461014e575f5ffd5b919050565b5f5f5f5f60808587031215610166575f5ffd5b8451935061017660208601610138565b925061018460408601610138565b915061019260608601610138565b905092959194509250565b60805160a05160c05160e051614ac16102015f395f81816105ae0152611fa701525f81816104830152818161099c01528181610dcb0152610fb101525f81816106a601528181610e2001526111a701525f81816105e10152610d070152614ac15ff3fe608060405260043610610229575f3560e01c806370b43d4511610131578063bd4598be116100ac578063f1d31a751161007c578063f3aa14e911610062578063f3aa14e91461071c578063fb25e6051461073b578063fee81cf4146107a8575f5ffd5b8063f1d31a75146106db578063f2fde38b14610709575f5ffd5b8063bd4598be1461062f578063bd7084b21461064e578063d227c30b14610695578063f04e283e146106c8575f5ffd5b8063946d920411610101578063a11cbfd2116100e7578063a11cbfd21461059d578063afb1f778146105d0578063b1d4dc0d14610603575f5ffd5b8063946d92041461055f5780639cd8d3251461057e575f5ffd5b806370b43d45146104d7578063715018a614610505578063770ae03d1461050d5780638da5cb5b1461052c575f5ffd5b80632de94807116101c15780635c975abb116101915780636249a05e116101775780636249a05e146104725780636736eb17146104a55780636c12f6c8146104b8575f5ffd5b80635c975abb146104265780635ca1e1651461043f575f5ffd5b80632de94807146103a55780634a4ee7b1146103d6578063514e62fc146103e957806354d1f13d1461041e575f5ffd5b80631cd64df4116101fc5780631cd64df4146102df5780632260a9c21461030e57806324ea54f414610389578063256929621461039d575f5ffd5b806316c38b3c1461022d578063183a4f6e1461024e578063189bc6ad146102615780631c10893f146102cc575b5f5ffd5b348015610238575f5ffd5b5061024c610247366004613a05565b6107d9565b005b61024c61025c366004613a20565b61084a565b34801561026c575f5ffd5b506102a261027b366004613a20565b60026020525f908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b61024c6102da366004613a58565b610857565b3480156102ea575f5ffd5b506102fe6102f9366004613a58565b61086d565b60405190151581526020016102c3565b348015610319575f5ffd5b5061037b610328366004613a58565b73ffffffffffffffffffffffffffffffffffffffff919091165f9081527f86fd1c0757ed9526a07041356cbdd3c36e2a83be313529de06f943db1414830060209081526040808320938352929052205490565b6040519081526020016102c3565b348015610394575f5ffd5b5061037b600181565b61024c61088b565b3480156103b0575f5ffd5b5061037b6103bf366004613a82565b638b78c6d8600c9081525f91909152602090205490565b61024c6103e4366004613a58565b6108d8565b3480156103f4575f5ffd5b506102fe610403366004613a58565b638b78c6d8600c9081525f9290925260209091205416151590565b61024c6108ea565b348015610431575f5ffd5b506003546102fe9060ff1681565b34801561044a575f5ffd5b507f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db1361015461037b565b34801561047d575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b61024c6104b3366004613c1b565b610923565b3480156104c3575f5ffd5b5061037b6104d2366004613c6b565b610a69565b3480156104e2575f5ffd5b506102fe6104f1366004613a20565b60016020525f908152604090205460ff1681565b61024c610a73565b348015610518575f5ffd5b5061024c610527366004613ca2565b610a86565b348015610537575f5ffd5b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927546102a2565b34801561056a575f5ffd5b5061024c610579366004613ce1565b610b62565b348015610589575f5ffd5b5061024c610598366004613c6b565b610cfd565b3480156105a8575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b3480156105db575f5ffd5b5061037b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561060e575f5ffd5b5061062261061d366004613d19565b61105a565b6040516102c39190613d32565b34801561063a575f5ffd5b5061024c610649366004613ca2565b611065565b348015610659575f5ffd5b507f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db1361005460405167ffffffffffffffff90911681526020016102c3565b3480156106a0575f5ffd5b506102a27f000000000000000000000000000000000000000000000000000000000000000081565b61024c6106d6366004613a82565b611141565b3480156106e6575f5ffd5b506102fe6106f5366004613a20565b5f6020819052908152604090205460ff1681565b61024c610717366004613a82565b61117b565b348015610727575f5ffd5b506102a2610736366004613a20565b6111a1565b348015610746575f5ffd5b5061037b610755366004613a58565b73ffffffffffffffffffffffffffffffffffffffff919091165f9081527f86fd1c0757ed9526a07041356cbdd3c36e2a83be313529de06f943db1414830160209081526040808320938352929052205490565b3480156107b3575f5ffd5b5061037b6107c2366004613a82565b63389a75e1600c9081525f91909152602090205490565b60016107e4816111cd565b600380547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168315159081179091556040519081527f444c79de75518689625f69d421a54d335ae43dda0df443aa8d23bef31e44af7e9060200160405180910390a15050565b61085433826111f1565b50565b61085f6111fc565b6108698282611231565b5050565b638b78c6d8600c9081525f8390526020902054811681145b92915050565b5f6202a30067ffffffffffffffff164201905063389a75e1600c52335f52806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d5f5fa250565b6108e06111fc565b61086982826111f1565b63389a75e1600c52335f525f6020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c925f5fa2565b688000000000ab143c065c156109405763ab143c065f526004601cfd5b30688000000000ab143c065d60035460ff1615610989576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8181610995828261123d565b5f6109c0867f00000000000000000000000000000000000000000000000000000000000000006115a9565b90505f6109d787836109d2888a613e21565b611c14565b905061177061ffff1681511115610a1a576040517f69eae45700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a243382611dbd565b50505050610a2f5f90565b15610a5857688000000000ab143c0646600103610a4e575f815d610a52565b8081555b50505050565b5f688000000000ab143c065d505050565b5f61088582611ebe565b610a7b6111fc565b610a845f611eec565b565b688000000000ab143c065c15610aa35763ab143c065f526004601cfd5b30688000000000ab143c065d60035460ff1615610aec576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b81811015610b2a57610b22838383818110610b0b57610b0b613f68565b9050602002810190610b1d9190613f95565b611f51565b600101610aee565b505f5b15610b5257688000000000ab143c0646600103610b4c575f815d505050565b80555050565b5f688000000000ab143c065d5050565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffbf6011328054600382558015610bb35760018160011c14303b10610baa5763f92ee8a95f526004601cfd5b818160ff1b1b91505b5073ffffffffffffffffffffffffffffffffffffffff8416610c01576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c0a846121a3565b5f5b82811015610cc2575f848483818110610c2757610c27613f68565b9050602002016020810190610c3c9190613a82565b73ffffffffffffffffffffffffffffffffffffffff1603610c89576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610cba848483818110610c9e57610c9e613f68565b9050602002016020810190610cb39190613a82565b6001611231565b600101610c0c565b508015610a52576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a150505050565b610d05612206565b7f0000000000000000000000000000000000000000000000000000000000000000604082013503610d80575f610d3e60a0830183613fd1565b810190610d4b91906140c7565b90505f5f5f8360600151806020019051810190610d6891906140f9565b925092509250610d7983838361223f565b5050505050565b6001610d9260a0830160808401614179565b6002811115610da357610da361413e565b03610def575f610db660a0830183613fd1565b810190610dc39190614192565b9050610869817f00000000000000000000000000000000000000000000000000000000000000006122a7565b6040808201355f9081526002602052205473ffffffffffffffffffffffffffffffffffffffff1680610e9a57610e497f00000000000000000000000000000000000000000000000000000000000000008360400135612734565b6040838101355f90815260026020522080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff831617905590505b5f610eab60a0840160808501614179565b6002811115610ebc57610ebc61413e565b03610f63575f610ecf60a0840184613fd1565b810190610edc91906140c7565b6040517f60ed1d2800000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906360ed1d2890610f319084906004016141f8565b5f604051808303815f87803b158015610f48575f5ffd5b505af1158015610f5a573d5f5f3e3d5ffd5b50505050505050565b6002610f7560a0840160808501614179565b6002811115610f8657610f8661413e565b03610869575f80610f9a60a0850185613fd1565b810190610fa7919061426a565b91509150610fd5827f00000000000000000000000000000000000000000000000000000000000000006122a7565b6040517f60ed1d2800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906360ed1d28906110279084906004016141f8565b5f604051808303815f87803b15801561103e575f5ffd5b505af1158015611050573d5f5f3e3d5ffd5b5050505050505050565b606061088582612747565b688000000000ab143c065c156110825763ab143c065f526004601cfd5b30688000000000ab143c065d60035460ff16156110cb576040517f9e87fac800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81816110d7828261123d565b5f6110ea6110e58587613e21565b612a61565b905061177061ffff168151111561112d576040517f69eae45700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111373382611dbd565b505050610b2d5f90565b6111496111fc565b63389a75e1600c52805f526020600c20805442111561116f57636f5e88185f526004601cfd5b5f905561085481611eec565b6111836111fc565b8060601b61119857637448fbae5f526004601cfd5b61085481611eec565b5f6108857f00000000000000000000000000000000000000000000000000000000000000008330612a94565b638b78c6d8600c52335f52806020600c205416610854576382b429005f526004601cfd5b61086982825f612b57565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927543314610a84576382b429005f526004601cfd5b61086982826001612b57565b806040811115611279576040517f3c46992e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60408051603a80825261076082019092525f916020820161074080368337505060408051600c8082526101a082019092529293505f928392509060208201610180803683370190505090505f5f5b8581101561105057603a8888838181106112e3576112e3613f68565b90506020028101906112f591906142b6565b6113039060208101906142e8565b9050111561133d576040517f9ed3ecbb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b88888381811061135157611351613f68565b905060200281019061136391906142b6565b6113719060208101906142e8565b90508110156115a057365f8a8a8581811061138e5761138e613f68565b90506020028101906113a091906142b6565b6113ae9060208101906142e8565b848181106113be576113be613f68565b90506020028101906113d09190613fd1565b90925090506022811461140f576040517f74149ed900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81355f805b8981101561144d57828b828151811061142f5761142f613f68565b602002602001015103611445576001915061144d565b600101611414565b50806114b257603a891061148d576040517f9ed3ecbb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818a8a815181106114a0576114a0613f68565b60209081029190910101526001909801975b5f84846114c160016022614379565b60ff168181106114d3576114d3613f68565b9091013560f81c60011491508190506114f0575050505050611598565b5f5f5b8981101561152c57848b828151811061150e5761150e613f68565b602002602001015103611524576001915061152c565b6001016114f3565b508061159157600c891061156c576040517f87e497e500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b838a8a8151811061157f5761157f613f68565b60209081029190910101526001909801975b5050505050505b60010161133f565b506001016112c7565b5f5f836060015167ffffffffffffffff16116115f1576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82517f86fd1c0757ed9526a07041356cbdd3c36e2a83be313529de06f943db14148300905f9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff11111111111111111111111111111111111111120161176957845173ffffffffffffffffffffffffffffffffffffffff165f9081526001830160209081526040808320828901518452909152812054908190036116c3576040517fe092ade800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80866060015167ffffffffffffffff166116dd9190614392565b9150813414611718576040517f1841b4e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b855173ffffffffffffffffffffffffffffffffffffffff165f90815260208481526040808320828a01518452909152812080546002965084929061175d9084906143a9565b90915550611ba4915050565b34156117a1576040517f1841b4e100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84516040517f34476ab100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908516906334476ab190602401602060405180830381865afa15801561180e573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183291906143bc565b156119cd575f855f015173ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa158015611884573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118a891906143d7565b602087015190915015806118bf5750602086015181145b6118f5576040517fa5269ce000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60208601819052606086015186516040517f9dc29fac00000000000000000000000000000000000000000000000000000000815233600482015267ffffffffffffffff90921660248301819052935073ffffffffffffffffffffffffffffffffffffffff1690639dc29fac906044015f604051808303815f87803b15801561197b575f5ffd5b505af115801561198d573d5f5f3e3d5ffd5b5050505060208601517f069be72ab836d4eacc02525b7350a78a395da2f1253a40ebafd6630000000000146119c35760016119c5565b5f5b935050611ba4565b845173ffffffffffffffffffffffffffffffffffffffff165f908152600183016020908152604080832082890151845290915281205490819003611a3d576040517fe092ade800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81876060015167ffffffffffffffff16611a589190614392565b90505f611a68885f015130612bae565b9050611a79885f0151333085612be1565b5f611a87895f015130612bae565b90505f611a9483836143ee565b90505f611aa18683614401565b90505f8111611adc576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611ae68682614392565b96505f611af388846143ee565b90508015611b08578b51611b08903383612c43565b611b1182612c96565b8c6060019067ffffffffffffffff16908167ffffffffffffffff168152505087895f015f8e5f015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8e6020015181526020019081526020015f205f828254611b9391906143a9565b9091555060029a5050505050505050505b8451602080870151604080890151815173ffffffffffffffffffffffffffffffffffffffff909516855292840191909152820152606081018290527ff1109ae3af61805fa998753209b2a90166bfc4b38ad8a6b5a268591ce18f99c09060800160405180910390a1505092915050565b604080517f010000000000000000000000000000000000000000000000000000000000000060208201528151600181830301815260219091019091526060905f846002811115611c6657611c6661413e565b03611cb257805f8660400151611c89886060015167ffffffffffffffff16612cb3565b604051602001611c9c9493929190614450565b6040516020818303038152906040529050611d6b565b6001846002811115611cc657611cc661413e565b03611d0857806001865f015187602001518860400151611cf38a6060015167ffffffffffffffff16612cb3565b604051602001611c9c969594939291906144c1565b6002846002811115611d1c57611d1c61413e565b03611d6b5780600286602001518760400151611d45896060015167ffffffffffffffff16612cb3565b604051602001611d59959493929190614564565b60405160208183030381529060405290505b80611d7584612d21565b604051602001611d869291906145da565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815291905295945050505050565b604080516060810182527f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db136100805467ffffffffffffffff16825273ffffffffffffffffffffffffffffffffffffffff851660208301529181018390525f611e2282612df8565b83549091505f90611e3e90839067ffffffffffffffff16612e36565b845467ffffffffffffffff808216600101167fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909116178555604051909150819083907f877352bc1cb00627bdb5bf16a3664cfe784f66bb3c1bfef68bf5b4ae34e6659990611eae9087906145ee565b60405180910390a3505050505050565b5f610885611ed26040840160208501613d19565b67ffffffffffffffff168335611ee785612eef565b612f25565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927805473ffffffffffffffffffffffffffffffffffffffff9092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a355565b5f611f5b82610a69565b5f8181526020819052604090205490915060ff1615611f78575050565b6040517fc92a1099000000000000000000000000000000000000000000000000000000008152600481018290527f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff169063c92a109990602401602060405180830381865afa158015612001573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061202591906143bc565b61205b576040517f6eca2e4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b30639cd8d3256120716080850160608601613d19565b67ffffffffffffffff16846040518363ffffffff1660e01b81526004016120989190614697565b5f604051808303815f88803b1580156120af575f5ffd5b5087f1935050505080156120c1575060015b61212c575f81815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690921790915551829133917f1dc47a66003d9a2334f04c3d23d98f174d7e65e9a4a72fa13277a15120c1559e9190a35050565b5f81815260016020818152604080842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00908116909155918490528084208054909216909217905551829133917f68bfb2e57fcbb47277da442d81d3e40ff118cbbcaf345b07997b35f592359e499190a35050565b73ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff74873927819055805f7f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b333014610a84576040517fad5db22700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7f86fd1c0757ed9526a07041356cbdd3c36e2a83be313529de06f943db1414830061226b82600a614896565b73ffffffffffffffffffffffffffffffffffffffff9094165f908152600190910160209081526040808320948352939052919091209190915550565b604082015182517f86fd1c0757ed9526a07041356cbdd3c36e2a83be313529de06f943db141483009160601c905f9073ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff1111111111111111111111111111111111111112016123f857845173ffffffffffffffffffffffffffffffffffffffff165f908152600184016020908152604080832082890151845290915281205490819003612382576040517fe092ade800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80866060015167ffffffffffffffff1661239c9190614392565b865173ffffffffffffffffffffffffffffffffffffffff165f90815260208681526040808320828b015184529091528120805492945084929091906123e29084906143ee565b909155506123f290508383612f48565b506126c6565b84516040517f34476ab100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152908516906334476ab190602401602060405180830381865afa158015612465573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061248991906143bc565b156125e2575f855f015173ffffffffffffffffffffffffffffffffffffffff1663d6c0b2c46040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124db573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124ff91906143d7565b905061250e8187602001511490565b612544576040517fa5269ce000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b606086015186516040517f40c10f1900000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff868116600483015267ffffffffffffffff9093166024820181905294509116906340c10f19906044015f604051808303815f87803b1580156125c6575f5ffd5b505af11580156125d8573d5f5f3e3d5ffd5b50505050506126c6565b845173ffffffffffffffffffffffffffffffffffffffff165f908152600184016020908152604080832082890151845290915281205490819003612652576040517fe092ade800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80866060015167ffffffffffffffff1661266c9190614392565b865173ffffffffffffffffffffffffffffffffffffffff165f90815260208681526040808320828b015184529091528120805492945084929091906126b29084906143ee565b909155505085516126c4908484612c43565b505b84516020808701516040805173ffffffffffffffffffffffffffffffffffffffff948516815292830191909152918416818301526060810183905290517f6899b9db6ebabd932aa1fc835134c9b9ca2168d78a4cbee8854b1c00c86476099181900360800190a15050505050565b5f6127405f8484612f61565b9392505050565b7f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db13610080546060919067ffffffffffffffff165f036127b0576040517fd4e9c9cc00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805467ffffffffffffffff908116908416106127f8576040517f41a2330800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f5f6128058761302c565b93509350935093505f8367ffffffffffffffff81111561282757612827613a9d565b604051908082528060200260200182016040528015612850578160200160208202803683370190505b509050845f5b8581101561295257600167ffffffffffffffff8616821c8116145f8082156128a5576128838560016143a9565b90506128908460016143a9565b61289e906001901b826143ee565b91506128ce565b6128b08460016143a9565b6128be906001901b866143a9565b90506128cb6001826143ee565b91505b60028b0154821061290b576040517f44a5e33500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8a600201828154811061292057612920613f68565b905f5260205f20015486858151811061293b5761293b613f68565b602090810291909101015293505050600101612856565b508251825161296191906143a9565b67ffffffffffffffff81111561297957612979613a9d565b6040519080825280602002602001820160405280156129a2578160200160208202803683370190505b5097505f805b83518110156129fc578381815181106129c3576129c3613f68565b60200260200101518a83806129d7906148a4565b9450815181106129e9576129e9613f68565b60209081029190910101526001016129a8565b505f5b8451811015612a5357848181518110612a1a57612a1a613f68565b60200260200101518a8380612a2e906148a4565b945081518110612a4057612a40613f68565b60209081029190910101526001016129ff565b505050505050505050919050565b60605f612a6d83612d21565b604051602001612a7e9291906148db565b6040516020818303038152906040529050919050565b604080517fb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f360609081527f1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c83527660195155f3363d3d373d3d363d602036600436635c60da60205273ffffffffffffffffffffffffffffffffffffffff86167c60523d8160223d39730000000000000000000000000000000000000000176009526074600c20919092525f91829052612b4e818585613053565b95945050505050565b638b78c6d8600c52825f526020600c20805483811783612b78575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe265f5fa3505050505050565b5f816014526f70a082310000000000000000000000005f5260208060246010865afa601f3d111660205102905092915050565b60405181606052826040528360601b602c526f23b872dd000000000000000000000000600c5260205f6064601c5f895af18060015f511416612c3557803d873b151710612c3557637939f4245f526004601cfd5b505f60605260405250505050565b81601452806034526fa9059cbb0000000000000000000000005f5260205f604460105f875af18060015f511416612c8c57803d853b151710612c8c576390b8ec185f526004601cfd5b505f603452505050565b5f680100000000000000008210612caf57612caf613072565b5090565b5f60c0821519811c70010000000000000000000000000000000102602081811b8218601081811b8218600881811b8218808a16821b918a901c1617808216831b921c1617808216831b921c1617808216604090811b91901c90911617608081811b91901c175b901c92915050565b60605f612d2e835161307f565b604051602001612d69919060e09190911b7fffffffff0000000000000000000000000000000000000000000000000000000016815260040190565b60405160208183030381529060405290505f5b8351811015612df15781612da8858381518110612d9b57612d9b613f68565b60200260200101516130ea565b604051602001612db99291906145da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101612d7c565b5092915050565b5f815f015182602001518360400151604051602001612e1993929190614911565b604051602081830303815290604052805190602001209050919050565b7f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db1361028054600180820183555f8381527fff5d2acbda7763eef60e554187d5d0d790e60252d450c5d42ea73fe91ad1fd9c909201859055915490917f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db136100918391612ebc916143ee565b9050612ec88185613230565b5f612edc612ed7866001614972565b613305565b6001909301839055509091505092915050565b5f6040820135612f0560a0840160808501614179565b612f1260a0850185613fd1565b604051602001612e199493929190614992565b6040805184815260208101849052908101829052606090205f905b949350505050565b5f385f3884865af16108695763b12d13eb5f526004601cfd5b604080517fb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f36060527f1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6c9091527660195155f3363d3d373d3d363d602036600436635c60da6020527c60523d8160223d3973000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff8416176009525f90826074600c87f591508161301e5763301164255f526004601cfd5b6040525f6060529392505050565b5f5f5f606061303a856133cc565b9195509350915061304a85613556565b90509193509193565b5f60ff5f5350603592835260601b60015260155260555f908120915290565b6335278d125f526004601cfd5b5f60e082151960c01c70010000000000000000000000000000000102602081811b8218601081811b8218600881811b8218808a16821b918a901c1617808216831b921c1617808216831b921c1617808216604090811b91901c90911617608081811b91901c17612d19565b60605f825f015160405160200161310391815260200190565b60405160208183030381529060405290508061312384602001515161307f565b6040516020016131349291906149c2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815291905290505f5b8360200151518110156131db57818460200151828151811061318a5761318a613f68565b60200260200101516040516020016131a39291906145da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529150600101613166565b50806131ea84604001516136e9565b6040516020016131fb9291906145da565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190529392505050565b7f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db136100825f5b600167ffffffffffffffff8516821c811603610d79575f6132758383613707565b90505f84600201828154811061328d5761328d613f68565b905f5260205f20015490505f8560020185815481106132ae576132ae613f68565b905f5260205f20015490505f6132c4838361371e565b600288018054600181810183555f8381526020902090910183905590549192506132ed916143ee565b9550846132f9816148a4565b95505050505050613254565b7f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db136102545f907f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db1361009080830361335b57505f9392505050565b5f6133658561374c565b905080515f0361337957505f949350505050565b80516001036133c35782600201815f8151811061339857613398613f68565b6020026020010151815481106133b0576133b0613f68565b905f5260205f2001549350505050919050565b612b4e81613849565b5f8080807f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db13610080549091505f908190819061340f9067ffffffffffffffff1661390d565b90505f61341d8260016143a9565b90505b801561351c575f6134326001836143ee565b865490915067ffffffffffffffff16811c60019081169003613509576001811b67ffffffffffffffff808616908c161080159061348b57506134748186614972565b67ffffffffffffffff168b67ffffffffffffffff16105b156134e6575f61349b868d614a01565b90505f6134a782613970565b6134bc67ffffffffffffffff84166002614392565b6134c691906143ee565b90506134d281896143a9565b9b50929950975061354f9650505050505050565b6134ef826139a8565b6134f990876143a9565b95506135058186614972565b9450505b508061351481614a21565b915050613420565b506040517f8e429c5200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b9193909250565b60408051818152610820810182526060917f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db136100915f916020820161080080368337505083549192505f91829150819081906135b99067ffffffffffffffff1661390d565b90505f6135c78260016143a9565b90505b80156136db575f6135dc6001836143ee565b885490915067ffffffffffffffff16811c600190811690036136c8576001811b5f67ffffffffffffffff808716908d1610801590613636575061361f8287614972565b67ffffffffffffffff168c67ffffffffffffffff16105b90505f613642846139a8565b9050816136ac575f6001613656838b6143a9565b61366091906143ee565b90508b600201818154811061367757613677613f68565b905f5260205f2001548b8b8061368c906148a4565b9c508151811061369e5761369e613f68565b602002602001018181525050505b6136b681896143a9565b97506136c28388614972565b96505050505b50806136d381614a21565b9150506135ca565b505050908252509392505050565b60606136f5825161307f565b82604051602001612a7e929190614a55565b5f5f613712836139a8565b9050612f4081856143ee565b5f8183101561373a57505f828152602082905260409020610885565b5f828152602084905260409020612740565b60608167ffffffffffffffff165f0361377457604080515f8082526020820190925290612df1565b60408051818152610820810182525f9160208201610800803683370190505090505f80806137a18661390d565b90505f6137af8260016143a9565b90505b801561383e575f6137c46001836143ee565b9050600167ffffffffffffffff8916821c81160361382b575f6137e785836139c3565b9050808787815181106137fc576137fc613f68565b602090810291909101015285613811816148a4565b96505061381d826139a8565b61382790866143a9565b9450505b508061383681614a21565b9150506137b2565b505050815292915050565b5f807f4f00c1a67879b7469d7dd58849b9cbcdedefec3f3b862c2933a36197db13610090505f81600201845f8151811061388557613885613f68565b60200260200101518154811061389d5761389d613f68565b5f91825260209091200154905060015b8451811015613905575f836002018683815181106138cd576138cd613f68565b6020026020010151815481106138e5576138e5613f68565b905f5260205f20015490506138fa83826139e6565b9250506001016138ad565b509392505050565b5f8167ffffffffffffffff165f0361392657505f919050565b5f825b67ffffffffffffffff8116156139585781613943816148a4565b92505060011c677fffffffffffffff16613929565b5f8211613965575f612f40565b612f406001836143ee565b5f805b67ffffffffffffffff8316156108855761399060018416826143a9565b905060018367ffffffffffffffff16901c9250613973565b5f60016139b583826143a9565b6001901b61088591906143ee565b5f5f6139ce836139a8565b905060016139dc82866143a9565b612f4091906143ee565b5f828152602082905260408120612740565b8015158114610854575f5ffd5b5f60208284031215613a15575f5ffd5b8135612740816139f8565b5f60208284031215613a30575f5ffd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff81168114610854575f5ffd5b5f5f60408385031215613a69575f5ffd5b8235613a7481613a37565b946020939093013593505050565b5f60208284031215613a92575f5ffd5b813561274081613a37565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040516080810167ffffffffffffffff81118282101715613aed57613aed613a9d565b60405290565b6040516060810167ffffffffffffffff81118282101715613aed57613aed613a9d565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613b5d57613b5d613a9d565b604052919050565b803567ffffffffffffffff81168114613b7c575f5ffd5b919050565b5f60808284031215613b91575f5ffd5b613b99613aca565b90508135613ba681613a37565b81526020828101359082015260408083013590820152613bc860608301613b65565b606082015292915050565b5f5f83601f840112613be3575f5ffd5b50813567ffffffffffffffff811115613bfa575f5ffd5b6020830191508360208260051b8501011115613c14575f5ffd5b9250929050565b5f5f5f60a08486031215613c2d575f5ffd5b613c378585613b81565b9250608084013567ffffffffffffffff811115613c52575f5ffd5b613c5e86828701613bd3565b9497909650939450505050565b5f60208284031215613c7b575f5ffd5b813567ffffffffffffffff811115613c91575f5ffd5b820160c08185031215612740575f5ffd5b5f5f60208385031215613cb3575f5ffd5b823567ffffffffffffffff811115613cc9575f5ffd5b613cd585828601613bd3565b90969095509350505050565b5f5f5f60408486031215613cf3575f5ffd5b8335613cfe81613a37565b9250602084013567ffffffffffffffff811115613c52575f5ffd5b5f60208284031215613d29575f5ffd5b61274082613b65565b602080825282518282018190525f918401906040840190835b81811015613d69578351835260209384019390920191600101613d4b565b509095945050505050565b5f67ffffffffffffffff821115613d8d57613d8d613a9d565b5060051b60200190565b5f82601f830112613da6575f5ffd5b813567ffffffffffffffff811115613dc057613dc0613a9d565b613df160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601613b16565b818152846020838601011115613e05575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f613e33613e2e84613d74565b613b16565b8381526020810190600585901b840136811115613e4e575f5ffd5b845b81811015613d6957803567ffffffffffffffff811115613e6e575f5ffd5b86016060368290031215613e80575f5ffd5b613e88613af3565b81358152602082013567ffffffffffffffff811115613ea5575f5ffd5b820136601f820112613eb5575f5ffd5b8035613ec3613e2e82613d74565b8082825260208201915060208360051b850101925036831115613ee4575f5ffd5b602084015b83811015613f2557803567ffffffffffffffff811115613f07575f5ffd5b613f1636602083890101613d97565b84525060209283019201613ee9565b506020850152505050604082013567ffffffffffffffff811115613f47575f5ffd5b613f5336828501613d97565b60408301525085525060209384019301613e50565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff41833603018112613fc7575f5ffd5b9190910192915050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614004575f5ffd5b83018035915067ffffffffffffffff82111561401e575f5ffd5b602001915036819003821315613c14575f5ffd5b5f60808284031215614042575f5ffd5b61404a613aca565b905081356004811061405a575f5ffd5b8152602082013561406a81613a37565b602082015260408201356fffffffffffffffffffffffffffffffff81168114614091575f5ffd5b6040820152606082013567ffffffffffffffff8111156140af575f5ffd5b6140bb84828501613d97565b60608301525092915050565b5f602082840312156140d7575f5ffd5b813567ffffffffffffffff8111156140ed575f5ffd5b612f4084828501614032565b5f5f5f6060848603121561410b575f5ffd5b835161411681613a37565b60208501516040860151919450925060ff81168114614133575f5ffd5b809150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b803560038110613b7c575f5ffd5b5f60208284031215614189575f5ffd5b6127408261416b565b5f608082840312156141a2575f5ffd5b6127408383613b81565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081525f82516004811061420f5761420f61413e565b8060208401525073ffffffffffffffffffffffffffffffffffffffff60208401511660408301526fffffffffffffffffffffffffffffffff60408401511660608301526060830151608080840152612f4060a08401826141ac565b5f5f60a0838503121561427b575f5ffd5b6142858484613b81565b9150608083013567ffffffffffffffff8111156142a0575f5ffd5b6142ac85828601614032565b9150509250929050565b5f82357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112613fc7575f5ffd5b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261431b575f5ffd5b83018035915067ffffffffffffffff821115614335575f5ffd5b6020019150600581901b3603821315613c14575f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b60ff82811682821603908111156108855761088561434c565b80820281158282048414176108855761088561434c565b808201808211156108855761088561434c565b5f602082840312156143cc575f5ffd5b8151612740816139f8565b5f602082840312156143e7575f5ffd5b5051919050565b818103818111156108855761088561434c565b5f82614434577f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b500490565b5f81518060208401855e5f93019283525090919050565b5f61445b8287614439565b60f89590951b7fff000000000000000000000000000000000000000000000000000000000000001685525050600183019190915260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166021820152602901919050565b5f6144cc8289614439565b60f89790971b7fff00000000000000000000000000000000000000000000000000000000000000168752505060609390931b7fffffffffffffffffffffffffffffffffffffffff0000000000000000000000001660018501526015840191909152603583015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166055820152605d01919050565b5f61456f8288614439565b60f89690961b7fff0000000000000000000000000000000000000000000000000000000000000016865250506001840192909252602183015260c01b7fffffffffffffffff000000000000000000000000000000000000000000000000166041820152604901919050565b5f612f406145e88386614439565b84614439565b6020815267ffffffffffffffff825116602082015273ffffffffffffffffffffffffffffffffffffffff60208301511660408201525f6040830151606080840152612f4060808401826141ac565b6003811061464c5761464c61413e565b9052565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b60208082528235828201525f9067ffffffffffffffff906146b9908501613b65565b1660408301525f604084013590508060608401525067ffffffffffffffff6146e360608501613b65565b1660808301526146f56080840161416b565b61470260a084018261463c565b5060a08301357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614737575f5ffd5b830160208101903567ffffffffffffffff811115614753575f5ffd5b803603821315614761575f5ffd5b60c080850152612b4e60e085018284614650565b6001815b60018411156147b0578085048111156147945761479461434c565b60018416156147a257908102905b60019390931c928002614779565b935093915050565b5f826147c657506001610885565b816147d257505f610885565b81600181146147e857600281146147f25761480e565b6001915050610885565b60ff8411156148035761480361434c565b50506001821b610885565b5060208310610133831016604e8410600b8410161715614831575081810a610885565b61485c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484614775565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561488e5761488e61434c565b029392505050565b5f61274060ff8416836147b8565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036148d4576148d461434c565b5060010190565b7fff000000000000000000000000000000000000000000000000000000000000008360f81b1681525f612f406001830184614439565b7fffffffffffffffff0000000000000000000000000000000000000000000000008460c01b1681527fffffffffffffffffffffffffffffffffffffffff0000000000000000000000008360601b1660088201525f612b4e601c830184614439565b67ffffffffffffffff81811683821601908111156108855761088561434c565b8481526149a2602082018561463c565b606060408201525f6149b8606083018486614650565b9695505050505050565b5f6149cd8285614439565b60e09390931b7fffffffff000000000000000000000000000000000000000000000000000000001683525050600401919050565b67ffffffffffffffff82811682821603908111156108855761088561434c565b5f81614a2f57614a2f61434c565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b7fffffffff000000000000000000000000000000000000000000000000000000008360e01b1681525f612f40600483018461443956fea2646970667358221220290ec9711f7eee3b922fa1ce8886b777131b7c66fc27a832dab589884dac941b64736f6c634300081c00335270f413294ec2409da350d920dc5d0e691b65fb868577de3a359b79bee6b4ac000000000000000000000000013d06e4cf47229d973cb3c4e23ff8d336ce5ff6000000000000000000000000a51473bc986c95a5e1a7f9a9991e3f2f263842be00000000000000000000000041775f86710572ec9abea4955a3de882e0930675", + "nonce": "0x5a8", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x13d30b1cc77d753c330abff59a105c53527f2fce88d9e53468e0d4f7e5cb74df", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "function": "deployDeterministicAndCall(address,address,bytes32,bytes)", + "arguments": [ + "0x6827Fb4906530520af8ba952550cfEA393857bEd", + "0x6F0fB066334B67355A15dc9b67317fd2A2E20890", + "0x8c1a617bdb47342f9c17ac8750e0b070c372c7210b72a942ba884bdf7ac2874a", + "0x946d92040000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "gas": "0x4829d", + "value": "0x0", + "input": "0xa97b90d50000000000000000000000006827fb4906530520af8ba952550cfea393857bed0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e208908c1a617bdb47342f9c17ac8750e0b070c372c7210b72a942ba884bdf7ac2874a00000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000084946d92040000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e2089000000000000000000000000000000000000000000000000000000000", + "nonce": "0x5a9", + "chainId": "0x14a34" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "contractName": null, + "address": "0x64567a9147fa89b1edc987e36eb6f4b6db71656b", + "initCode": "0x60793d8160093d39f33d3d336d6396ff2a80c067f99b3d2ab4df2414605157363d3d37363d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af43d6000803e604c573d6000fd5b3d6000f35b3d3560203555604080361115604c5736038060403d373d3d355af43d6000803e604c573d6000fd00000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xc56efb1412d28ad36dbcbaa238971cb203f6a6329a8ff66bcbc65e8069f57dfe", + "transactionType": "CREATE", + "contractName": "RelayerOrchestrator", + "contractAddress": "0xcf0b2bbbb0e79c46599d5ca18347fbe028edd7a3", + "function": null, + "arguments": [ + "0x64567a9147fa89B1edc987e36Eb6f4b6db71656b", + "0x41775f86710572Ec9AbeA4955A3dE882e0930675" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "gas": "0x7af17", + "value": "0x0", + "input": "0x60c060405234801561000f575f5ffd5b5060405161070838038061070883398101604081905261002e916100ae565b6001600160a01b0382166100555760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b03811661007c5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b039182166080521660a0526100df565b80516001600160a01b03811681146100a9575f5ffd5b919050565b5f5f604083850312156100bf575f5ffd5b6100c883610093565b91506100d660208401610093565b90509250929050565b60805160a0516105fc61010c5f395f8181605d015261011201525f818160ad01526101be01526105fc5ff3fe608060405234801561000f575f5ffd5b506004361061003f575f3560e01c80636cd7827d14610043578063a11cbfd214610058578063ee9a31a2146100a8575b5f5ffd5b6100566100513660046102b1565b6100cf565b005b61007f7f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61007f7f000000000000000000000000000000000000000000000000000000000000000081565b841561017b576040517f7fa920b600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690637fa920b69061014d9089908990879087906004016103c6565b5f604051808303815f87803b158015610164575f5ffd5b505af1158015610176573d5f5f3e3d5ffd5b505050505b8215610223576040517f770ae03d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063770ae03d906101f5908790879060040161049c565b5f604051808303815f87803b15801561020c575f5ffd5b505af115801561021e573d5f5f3e3d5ffd5b505050505b505050505050565b5f5f83601f84011261023b575f5ffd5b50813567ffffffffffffffff811115610252575f5ffd5b6020830191508360208260051b850101111561026c575f5ffd5b9250929050565b5f5f83601f840112610283575f5ffd5b50813567ffffffffffffffff81111561029a575f5ffd5b60208301915083602082850101111561026c575f5ffd5b5f5f5f5f5f5f606087890312156102c6575f5ffd5b863567ffffffffffffffff8111156102dc575f5ffd5b8701601f810189136102ec575f5ffd5b803567ffffffffffffffff811115610302575f5ffd5b8960208260061b8401011115610316575f5ffd5b60209182019750955087013567ffffffffffffffff811115610336575f5ffd5b61034289828a0161022b565b909550935050604087013567ffffffffffffffff811115610361575f5ffd5b61036d89828a01610273565b979a9699509497509295939492505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604080825281018490525f8560608301825b87811015610400578235825260208084013590830152604092830192909101906001016103d8565b50838103602085015261041481868861037f565b98975050505050505050565b803567ffffffffffffffff81168114610437575f5ffd5b919050565b5f5f83357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261046f575f5ffd5b830160208101925035905067ffffffffffffffff81111561048e575f5ffd5b80360382131561026c575f5ffd5b602080825281018290525f6040600584901b8301810190830185837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4136839003015b878210156105b9577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0878603018452823581811261051a575f5ffd5b89018035865267ffffffffffffffff61053560208301610420565b1660208701526040818101359087015267ffffffffffffffff61055a60608301610420565b166060870152608081013560038110158015610574575f5ffd5b50608087015261058760a082018261043c565b915060c060a088015261059e60c08801838361037f565b965050506020830192506020840193506001820191506104de565b509297965050505050505056fea26469706673582212205088542475db6d257ca490934dd9023af311bc0327ac384da1cbf79ff6b873a564736f6c634300081c003300000000000000000000000064567a9147fa89b1edc987e36eb6f4b6db71656b00000000000000000000000041775f86710572ec9abea4955a3de882e0930675", + "nonce": "0x5aa", + "chainId": "0x14a34" + }, + "additionalContracts": [], + "isFixedGasLimit": false + }, + { + "hash": "0x15df849730959a53ebc64f12828705e2f529447c6b01cb3262045d314b64a630", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "function": "deploy(address,address)", + "arguments": [ + "0xcF0b2BbbB0e79c46599D5CA18347FBe028EDD7A3", + "0x6F0fB066334B67355A15dc9b67317fd2A2E20890" + ], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "gas": "0x2a3cd", + "value": "0x0", + "input": "0x545e7c61000000000000000000000000cf0b2bbbb0e79c46599d5ca18347fbe028edd7a30000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "nonce": "0x5ab", + "chainId": "0x14a34" + }, + "additionalContracts": [ + { + "transactionType": "CREATE", + "contractName": null, + "address": "0x815170c71b25c6aa9891f386f96d2e84cc682149", + "initCode": "0x60793d8160093d39f33d3d336d6396ff2a80c067f99b3d2ab4df2414605157363d3d37363d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc545af43d6000803e604c573d6000fd5b3d6000f35b3d3560203555604080361115604c5736038060403d373d3d355af43d6000803e604c573d6000fd00000000000000" + } + ], + "isFixedGasLimit": false + }, + { + "hash": "0xc97ce961690354bedec3c1c9c1f810be855f15aef4c4cf9dc230c790c79a3155", + "transactionType": "CALL", + "contractName": null, + "contractAddress": "0xa51473bc986c95a5e1a7f9a9991e3f2f263842be", + "function": "deploySolWrapper()", + "arguments": [], + "transaction": { + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0xa51473bc986c95a5e1a7f9a9991e3f2f263842be", + "gas": "0x52327", + "value": "0x0", + "input": "0xad831c1a", + "nonce": "0x5ac", + "chainId": "0x14a34" + }, + "additionalContracts": [ + { + "transactionType": "CREATE2", + "contractName": null, + "address": "0x003512146fd54b71f926c7fd4b7bd20fc84e22c5", + "initCode": "0x60523d8160223d3973fbaade604e0de1ac8b902120b6e25b9cd588466560195155f3363d3d373d3d363d602036600436635c60da1b60e01b36527fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50545afa5036515af43d6000803e604d573d6000fd5b3d6000f3" + } + ], + "isFixedGasLimit": false + } + ], + "receipts": [ + { + "status": "0x1", + "cumulativeGasUsed": "0x1c9798", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x412e9ed3060c3ba457f7aeda2204ff11c48b348d68d62e5fb23a902f3aa9a302", + "transactionIndex": "0xf", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x6c1ad", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": null, + "contractAddress": "0x4dc9cf09dce777c7ce4657adc002645361d4e792", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x3dc", + "l1GasPrice": "0xe", + "l1GasUsed": "0x442d" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x204053", + "logs": [ + { + "address": "0x013d06e4cf47229d973cb3c4e23ff8d336ce5ff6", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xa6d43aeccb5d852c1ff40f36a5f66b1c6664b33fb7d4d96a5cbb5d819a863e4a", + "transactionIndex": "0x10", + "logIndex": "0x19", + "removed": false + }, + { + "address": "0x013d06e4cf47229d973cb3c4e23ff8d336ce5ff6", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x0000000000000000000000004dc9cf09dce777c7ce4657adc002645361d4e792" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xa6d43aeccb5d852c1ff40f36a5f66b1c6664b33fb7d4d96a5cbb5d819a863e4a", + "transactionIndex": "0x10", + "logIndex": "0x1a", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000002000000000000000000000000000002000000000000000000000000000000000000000000000000000002000001000000000000000000000000000000000000020000000000400000000800010000000000000000000000000000400000000400010000000000000000000000010000000000000000000000000000000000000000000000000000000000080400000000000000000000000000000000000020000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xa6d43aeccb5d852c1ff40f36a5f66b1c6664b33fb7d4d96a5cbb5d819a863e4a", + "transactionIndex": "0x10", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x3a8bb", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": null, + "contractAddress": "0x013d06e4cf47229d973cb3c4e23ff8d336ce5ff6", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x23e", + "l1GasPrice": "0xe", + "l1GasUsed": "0x2794" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x2fee00", + "logs": [ + { + "address": "0xa73bb8a073e2578edaab56f9c48b276647a08bcb", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xb46dfda2d8ebfccaf573de5a6b65d84340289097d25aa4e1db0139a8a349ceac", + "transactionIndex": "0x11", + "logIndex": "0x1b", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000040004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xb46dfda2d8ebfccaf573de5a6b65d84340289097d25aa4e1db0139a8a349ceac", + "transactionIndex": "0x11", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0xfadad", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": null, + "contractAddress": "0xa73bb8a073e2578edaab56f9c48b276647a08bcb", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x903", + "l1GasPrice": "0xe", + "l1GasUsed": "0x9f18" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3396bb", + "logs": [ + { + "address": "0xfbaade604e0de1ac8b902120b6e25b9cd5884665", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xf2d765b8606e52c8cc6818691c9aa8057557e3c757674b9b623a3beba86988de", + "transactionIndex": "0x12", + "logIndex": "0x1c", + "removed": false + }, + { + "address": "0xfbaade604e0de1ac8b902120b6e25b9cd5884665", + "topics": [ + "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", + "0x000000000000000000000000a73bb8a073e2578edaab56f9c48b276647a08bcb" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xf2d765b8606e52c8cc6818691c9aa8057557e3c757674b9b623a3beba86988de", + "transactionIndex": "0x12", + "logIndex": "0x1d", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000400000000000000000800000000000000000000002000000000000000000000000000000000001000000000000000000000000000100000000000000000002000001000000000000000000000000000000000000020000000000400000000800000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000020000000000000000000000000000002000000000000000000040020001000000000000000000000000000000000000000000000000000080000000000", + "type": "0x2", + "transactionHash": "0xf2d765b8606e52c8cc6818691c9aa8057557e3c757674b9b623a3beba86988de", + "transactionIndex": "0x12", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x3a8bb", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": null, + "contractAddress": "0xfbaade604e0de1ac8b902120b6e25b9cd5884665", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x23e", + "l1GasPrice": "0xe", + "l1GasUsed": "0x2794" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3a1197", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xad2616b57ecf141419cb0ee4c14caf4fdeed14b0e6e38cfdb548f8497624648c", + "transactionIndex": "0x13", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x67adc", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": null, + "contractAddress": "0x9bb8a17474401c26f9e2173bb2cd428d41586361", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x418", + "l1GasPrice": "0xe", + "l1GasUsed": "0x484f" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x3bfadc", + "logs": [ + { + "address": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "topics": [ + "0xc95935a66d15e0da5e412aca0ad27ae891d20b2fb91cf3994b6a3bf2b8178082", + "0x000000000000000000000000a51473bc986c95a5e1a7f9a9991e3f2f263842be", + "0x0000000000000000000000009bb8a17474401c26f9e2173bb2cd428d41586361", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xcca6960f26ce754403d975ba1e65761e76bb72cdbf4fa43897233b0d81a4fd2a", + "transactionIndex": "0x14", + "logIndex": "0x1e", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000800000000000000000000400000002000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000400000000000200000000000000000000000000000000040800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000002000800200000000000000400000000000000000000002000000000000000000000040000000000400000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xcca6960f26ce754403d975ba1e65761e76bb72cdbf4fa43897233b0d81a4fd2a", + "transactionIndex": "0x14", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x1e945", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "contractAddress": null, + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x5a", + "l1GasPrice": "0xe", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x4e9630", + "logs": [ + { + "address": "0xc6a99e05b835270b4205d619a531087789f81c46", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0x36dab9664876f2238d536e9264937619b9cfa87b1a089f34883748f005bd8b9f", + "transactionIndex": "0x15", + "logIndex": "0x1f", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000400000000000000080000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000001000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0x36dab9664876f2238d536e9264937619b9cfa87b1a089f34883748f005bd8b9f", + "transactionIndex": "0x15", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x129b54", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": null, + "contractAddress": "0xc6a99e05b835270b4205d619a531087789f81c46", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x9c7", + "l1GasPrice": "0xe", + "l1GasUsed": "0xaca3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x520314", + "logs": [ + { + "address": "0x41775f86710572ec9abea4955a3de882e0930675", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xdb7eb9fb9bcdf88290193a6c915a483ebff40b5b162744958e9f3b077c3d80f3", + "transactionIndex": "0x16", + "logIndex": "0x20", + "removed": false + }, + { + "address": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "topics": [ + "0xc95935a66d15e0da5e412aca0ad27ae891d20b2fb91cf3994b6a3bf2b8178082", + "0x00000000000000000000000041775f86710572ec9abea4955a3de882e0930675", + "0x000000000000000000000000c6a99e05b835270b4205d619a531087789f81c46", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xdb7eb9fb9bcdf88290193a6c915a483ebff40b5b162744958e9f3b077c3d80f3", + "transactionIndex": "0x16", + "logIndex": "0x21", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000800000000000000000000400000002000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000400000000000200000000000000100000000000000000008800000000000000800000000000000000000000080000000000000000000000000000000000000000000000000080000002000000000000000000400000000800000000000000000400000000000000000000004000002000000000000000000000000000400000000000000000004000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xdb7eb9fb9bcdf88290193a6c915a483ebff40b5b162744958e9f3b077c3d80f3", + "transactionIndex": "0x16", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x36ce4", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "contractAddress": null, + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x9d", + "l1GasPrice": "0xe", + "l1GasUsed": "0xad3" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x921dc9", + "logs": [ + { + "address": "0x6827fb4906530520af8ba952550cfea393857bed", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xbbcfd555c29dd3691d7f07bae881c1a7b23e26852b45a6908d5856daff10f779", + "transactionIndex": "0x17", + "logIndex": "0x22", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000800000000", + "type": "0x2", + "transactionHash": "0xbbcfd555c29dd3691d7f07bae881c1a7b23e26852b45a6908d5856daff10f779", + "transactionIndex": "0x17", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x401ab5", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": null, + "contractAddress": "0x6827fb4906530520af8ba952550cfea393857bed", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x2041", + "l1GasPrice": "0xe", + "l1GasUsed": "0x23958" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x953344", + "logs": [ + { + "address": "0x64567a9147fa89b1edc987e36eb6f4b6db71656b", + "topics": [ + "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", + "0x0000000000000000000000000000000000000000000000000000000000000000", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0x13d30b1cc77d753c330abff59a105c53527f2fce88d9e53468e0d4f7e5cb74df", + "transactionIndex": "0x18", + "logIndex": "0x23", + "removed": false + }, + { + "address": "0x64567a9147fa89b1edc987e36eb6f4b6db71656b", + "topics": [ + "0x715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890", + "0x0000000000000000000000000000000000000000000000000000000000000001" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0x13d30b1cc77d753c330abff59a105c53527f2fce88d9e53468e0d4f7e5cb74df", + "transactionIndex": "0x18", + "logIndex": "0x24", + "removed": false + }, + { + "address": "0x64567a9147fa89b1edc987e36eb6f4b6db71656b", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0x13d30b1cc77d753c330abff59a105c53527f2fce88d9e53468e0d4f7e5cb74df", + "transactionIndex": "0x18", + "logIndex": "0x25", + "removed": false + }, + { + "address": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "topics": [ + "0xc95935a66d15e0da5e412aca0ad27ae891d20b2fb91cf3994b6a3bf2b8178082", + "0x00000000000000000000000064567a9147fa89b1edc987e36eb6f4b6db71656b", + "0x0000000000000000000000006827fb4906530520af8ba952550cfea393857bed", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0x13d30b1cc77d753c330abff59a105c53527f2fce88d9e53468e0d4f7e5cb74df", + "transactionIndex": "0x18", + "logIndex": "0x26", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000800000800000000000000400000002000000000000000000000000000000000000000000000040040000000000000000000000000000000000080001000000040000000000000000000000000000020000004000400000000800200000000000000000000000000000400000800000000000000800000000000008040000000080000002000000000000000000000000000000000000000000080000000000010000000000000000000000802000400000000400400000000000000000000004000000080000000060000000000000000000000000000000000000000000000000000000000000000040", + "type": "0x2", + "transactionHash": "0x13d30b1cc77d753c330abff59a105c53527f2fce88d9e53468e0d4f7e5cb74df", + "transactionIndex": "0x18", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x3157b", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "contractAddress": null, + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x97", + "l1GasPrice": "0xe", + "l1GasUsed": "0xa76" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x9b1c6a", + "logs": [], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "type": "0x2", + "transactionHash": "0xc56efb1412d28ad36dbcbaa238971cb203f6a6329a8ff66bcbc65e8069f57dfe", + "transactionIndex": "0x19", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x5e926", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": null, + "contractAddress": "0xcf0b2bbbb0e79c46599d5ca18347fbe028edd7a3", + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x39f", + "l1GasPrice": "0xe", + "l1GasUsed": "0x3ff1" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0x9d05af", + "logs": [ + { + "address": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "topics": [ + "0xc95935a66d15e0da5e412aca0ad27ae891d20b2fb91cf3994b6a3bf2b8178082", + "0x000000000000000000000000815170c71b25c6aa9891f386f96d2e84cc682149", + "0x000000000000000000000000cf0b2bbbb0e79c46599d5ca18347fbe028edd7a3", + "0x0000000000000000000000006f0fb066334b67355a15dc9b67317fd2a2e20890" + ], + "data": "0x", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0x15df849730959a53ebc64f12828705e2f529447c6b01cb3262045d314b64a630", + "transactionIndex": "0x1a", + "logIndex": "0x27", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000800000000000000000000400000002000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000400000000000200000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000800000000000000000400004000000000000000000000000008040000000000000000000000000000000000000000000000000100000000000000000000000", + "type": "0x2", + "transactionHash": "0x15df849730959a53ebc64f12828705e2f529447c6b01cb3262045d314b64a630", + "transactionIndex": "0x1a", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x1e945", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0x0000000000006396ff2a80c067f99b3d2ab4df24", + "contractAddress": null, + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x5a", + "l1GasPrice": "0xe", + "l1GasUsed": "0x640" + }, + { + "status": "0x1", + "cumulativeGasUsed": "0xa0bdd5", + "logs": [ + { + "address": "0x003512146fd54b71f926c7fd4b7bd20fc84e22c5", + "topics": [ + "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" + ], + "data": "0x0000000000000000000000000000000000000000000000000000000000000001", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xc97ce961690354bedec3c1c9c1f810be855f15aef4c4cf9dc230c790c79a3155", + "transactionIndex": "0x1b", + "logIndex": "0x28", + "removed": false + }, + { + "address": "0xa51473bc986c95a5e1a7f9a9991e3f2f263842be", + "topics": [ + "0x0b84965add45c4d10c5aacc22714edc5f88def8df83d2c1f9d18b45ef2d28783", + "0x000000000000000000000000003512146fd54b71f926c7fd4b7bd20fc84e22c5", + "0x069be72ab836d4eacc02525b7350a78a395da2f1253a40ebafd6630000000000" + ], + "data": "0x0000000000000000000000008c1a617bdb47342f9c17ac8750e0b070c372c721", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "blockTimestamp": "0x68f7b472", + "transactionHash": "0xc97ce961690354bedec3c1c9c1f810be855f15aef4c4cf9dc230c790c79a3155", + "transactionIndex": "0x1b", + "logIndex": "0x29", + "removed": false + } + ], + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000100000000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000100800200004000000080000000080000000000000000000000000000000000000000000000000000000000000000000001000040000000000000000000000000000000000002000000000040004000000000000000000000000000000000000000008000000000000000800000000000000000008000000", + "type": "0x2", + "transactionHash": "0xc97ce961690354bedec3c1c9c1f810be855f15aef4c4cf9dc230c790c79a3155", + "transactionIndex": "0x1b", + "blockHash": "0x822cbe9ff4681557c8f631212ac75360cb4c5c3c833b8d44e531f9750ecc75f6", + "blockNumber": "0x1f22ac9", + "gasUsed": "0x3b826", + "effectiveGasPrice": "0xf4280", + "from": "0x8c1a617bdb47342f9c17ac8750e0b070c372c721", + "to": "0xa51473bc986c95a5e1a7f9a9991e3f2f263842be", + "contractAddress": null, + "l1BaseFeeScalar": "0x44d", + "l1BlobBaseFee": "0x1", + "l1BlobBaseFeeScalar": "0xa118b", + "l1Fee": "0x5a", + "l1GasPrice": "0xe", + "l1GasUsed": "0x640" + } + ], + "libraries": [], + "pending": [], + "returns": {}, + "timestamp": 1761064051180, + "chain": 84532, + "commit": "398e6cc" +} \ No newline at end of file diff --git a/sepolia/2025-10-17-base-bridge-alpha-deployment/script/DeployBridge.s.sol b/sepolia/2025-10-17-base-bridge-alpha-deployment/script/DeployBridge.s.sol new file mode 100644 index 00000000..33f945a2 --- /dev/null +++ b/sepolia/2025-10-17-base-bridge-alpha-deployment/script/DeployBridge.s.sol @@ -0,0 +1,250 @@ +// SPDX-License-Identifier: MIT +pragma solidity 0.8.28; + +import {Script} from "forge-std/Script.sol"; +import {stdJson} from "forge-std/StdJson.sol"; +import {ERC1967Factory} from "@solady/utils/ERC1967Factory.sol"; +import {ERC1967FactoryConstants} from "@solady/utils/ERC1967FactoryConstants.sol"; +import {LibString} from "solady/utils/LibString.sol"; +import {UpgradeableBeacon} from "@solady/utils/UpgradeableBeacon.sol"; +import {AddressAliasHelper} from "@eth-optimism-bedrock/src/vendor/AddressAliasHelper.sol"; + +import {Pubkey} from "bridge/libraries/SVMLib.sol"; +import {TokenLib} from "bridge/libraries/TokenLib.sol"; +import {RelayerOrchestrator} from "bridge/periphery/RelayerOrchestrator.sol"; +import {Bridge} from "bridge/Bridge.sol"; +import {BridgeValidator} from "bridge/BridgeValidator.sol"; +import {CrossChainERC20} from "bridge/CrossChainERC20.sol"; +import {CrossChainERC20Factory} from "bridge/CrossChainERC20Factory.sol"; +import {Twin} from "bridge/Twin.sol"; + +struct Cfg { + bytes32 salt; + address erc1967Factory; + address initialOwner; + address partnerValidators; + address[] baseValidators; + uint128 baseSignatureThreshold; + uint256 partnerValidatorThreshold; + Pubkey remoteBridge; + address[] guardians; +} + +contract DeployBridge is Script { + using stdJson for string; + using AddressAliasHelper for address; + + string public cfgData; + Cfg public cfg; + + function setUp() public { + cfgData = vm.readFile(string.concat(vm.projectRoot(), "/config.json")); + + cfg.salt = _readBytes32FromConfig("salt"); + cfg.erc1967Factory = ERC1967FactoryConstants.ADDRESS; + cfg.initialOwner = _readAddressFromConfig("initialOwner").applyL1ToL2Alias(); + cfg.partnerValidators = _readAddressFromConfig("partnerValidators"); + cfg.baseValidators = _readAddressArrayFromConfig("baseValidators"); + cfg.baseSignatureThreshold = uint128(_readUintFromConfig("baseSignatureThreshold")); + cfg.partnerValidatorThreshold = _readUintFromConfig("partnerValidatorThreshold"); + cfg.remoteBridge = Pubkey.wrap(_readBytes32FromConfig("remoteBridge")); + cfg.guardians = _readAddressArrayFromConfig("guardians"); + + require(cfg.guardians.length == 1, "invalid guardians length"); + cfg.guardians[0] = cfg.guardians[0].applyL1ToL2Alias(); + } + + function run() public { + address precomputedBridgeAddress = ERC1967Factory(cfg.erc1967Factory).predictDeterministicAddress(_salt()); + + vm.startBroadcast(); + address twinBeacon = _deployTwinBeacon({precomputedBridgeAddress: precomputedBridgeAddress}); + address factory = _deployFactory({precomputedBridgeAddress: precomputedBridgeAddress}); + address bridgeValidator = _deployBridgeValidator({bridge: precomputedBridgeAddress}); + address bridge = + _deployBridge({twinBeacon: twinBeacon, crossChainErc20Factory: factory, bridgeValidator: bridgeValidator}); + address relayerOrchestrator = _deployRelayerOrchestrator({bridge: bridge, bridgeValidator: bridgeValidator}); + address sol = CrossChainERC20Factory(factory).deploySolWrapper(); + vm.stopBroadcast(); + + require(address(bridge) == precomputedBridgeAddress, "Bridge address mismatch"); + + _serializeAddress({key: "Bridge", value: bridge}); + _serializeAddress({key: "BridgeValidator", value: bridgeValidator}); + _serializeAddress({key: "CrossChainERC20Factory", value: factory}); + _serializeAddress({key: "Twin", value: twinBeacon}); + _serializeAddress({key: "RelayerOrchestrator", value: relayerOrchestrator}); + _serializeAddress({key: "WrappedSol", value: sol}); + + _postCheck(twinBeacon, factory, bridgeValidator, bridge, relayerOrchestrator, sol); + } + + function _postCheck( + address twinBeacon, + address factory, + address bridgeValidator, + address bridge, + address relayerOrchestrator, + address sol + ) private view { + // Twin + Twin twinImpl = Twin(payable(UpgradeableBeacon(twinBeacon).implementation())); + require(twinImpl.BRIDGE() == bridge, "PC01: incorrect bridge address in twin impl"); + + // Factory + UpgradeableBeacon tokenBeacon = UpgradeableBeacon(CrossChainERC20Factory(factory).BEACON()); + CrossChainERC20 tokenImpl = CrossChainERC20(tokenBeacon.implementation()); + require(tokenImpl.bridge() == bridge, "PC02: incorrect bridge address in token impl"); + + // BridgeValidator + require( + BridgeValidator(bridgeValidator).BRIDGE() == bridge, "PC03: incorrect bridge address in BridgeValidator" + ); + require( + BridgeValidator(bridgeValidator).PARTNER_VALIDATORS() == cfg.partnerValidators, + "PC04: incorrect partnerValidators address in BridgeValidator" + ); + require( + BridgeValidator(bridgeValidator).partnerValidatorThreshold() == cfg.partnerValidatorThreshold, + "PC05: incorrect partner validator threshold in BridgeValidator" + ); + require( + BridgeValidator(bridgeValidator).getBaseThreshold() == cfg.baseSignatureThreshold, + "PC06: incorrect Base threshold in BridgeValidator" + ); + require( + BridgeValidator(bridgeValidator).getBaseValidatorCount() == cfg.baseValidators.length, + "PC07: incorrect registered base validator count" + ); + + for (uint256 i; i < cfg.baseValidators.length; i++) { + require( + BridgeValidator(bridgeValidator).isBaseValidator(cfg.baseValidators[i]), + "PC08: base validator not registered" + ); + } + + // Bridge + require(Bridge(bridge).REMOTE_BRIDGE() == cfg.remoteBridge, "PC09: incorrect remote bridge in Bridge contract"); + require(Bridge(bridge).TWIN_BEACON() == twinBeacon, "PC10: incorrect twin beacon in Bridge contract"); + require(Bridge(bridge).CROSS_CHAIN_ERC20_FACTORY() == factory, "PC11: incorrect factory in Bridge contract"); + require( + Bridge(bridge).BRIDGE_VALIDATOR() == bridgeValidator, "PC12: incorrect bridge validator in Bridge contract" + ); + require(Bridge(bridge).owner() == cfg.initialOwner, "PC13: incorrect Bridge owner"); + + for (uint256 i; i < cfg.guardians.length; i++) { + require( + Bridge(bridge).rolesOf(cfg.guardians[i]) == Bridge(bridge).GUARDIAN_ROLE(), + "PC14: guardian missing perms" + ); + } + + // RelayerOrchestrator + require( + RelayerOrchestrator(relayerOrchestrator).BRIDGE() == bridge, "PC15: incorrect bridge in RelayerOrchestrator" + ); + require( + RelayerOrchestrator(relayerOrchestrator).BRIDGE_VALIDATOR() == bridgeValidator, + "PC16: incorrect bridge validator in RelayerOrchestrator" + ); + + // SOL + require(CrossChainERC20(sol).bridge() == bridge, "PC17: incorrect bridge in SOL contract"); + require(LibString.eq(CrossChainERC20(sol).name(), "Solana"), "PC18: incorrect SOL name"); + require(LibString.eq(CrossChainERC20(sol).symbol(), "SOL"), "PC19: incorrect SOL symbol"); + require( + CrossChainERC20(sol).remoteToken() == Pubkey.unwrap(TokenLib.NATIVE_SOL_PUBKEY), + "PC20: incorrect SOL remote token" + ); + require(CrossChainERC20(sol).decimals() == 9, "PC21: incorrect SOL decimals"); + } + + function _deployTwinBeacon(address precomputedBridgeAddress) private returns (address) { + address twinImpl = address(new Twin(precomputedBridgeAddress)); + return address(new UpgradeableBeacon({initialOwner: cfg.initialOwner, initialImplementation: twinImpl})); + } + + function _deployFactory(address precomputedBridgeAddress) private returns (address) { + address erc20Impl = address(new CrossChainERC20(precomputedBridgeAddress)); + address erc20Beacon = + address(new UpgradeableBeacon({initialOwner: cfg.initialOwner, initialImplementation: erc20Impl})); + + address xChainErc20FactoryImpl = address(new CrossChainERC20Factory(erc20Beacon)); + return + ERC1967Factory(cfg.erc1967Factory).deploy({implementation: xChainErc20FactoryImpl, admin: cfg.initialOwner}); + } + + function _deployBridgeValidator(address bridge) private returns (address) { + address bridgeValidatorImpl = + address(new BridgeValidator({bridgeAddress: bridge, partnerValidators: cfg.partnerValidators})); + + return ERC1967Factory(cfg.erc1967Factory) + .deployAndCall({ + implementation: bridgeValidatorImpl, + admin: cfg.initialOwner, + data: abi.encodeCall( + BridgeValidator.initialize, + (cfg.baseValidators, cfg.baseSignatureThreshold, cfg.partnerValidatorThreshold) + ) + }); + } + + function _deployBridge(address twinBeacon, address crossChainErc20Factory, address bridgeValidator) + private + returns (address) + { + Bridge bridgeImpl = new Bridge({ + remoteBridge: cfg.remoteBridge, + twinBeacon: twinBeacon, + crossChainErc20Factory: crossChainErc20Factory, + bridgeValidator: bridgeValidator + }); + + return ERC1967Factory(cfg.erc1967Factory) + .deployDeterministicAndCall({ + implementation: address(bridgeImpl), + admin: cfg.initialOwner, + salt: _salt(), + data: abi.encodeCall(Bridge.initialize, (cfg.initialOwner, cfg.guardians)) + }); + } + + function _deployRelayerOrchestrator(address bridge, address bridgeValidator) private returns (address) { + address relayerOrchestratorImpl = + address(new RelayerOrchestrator({bridge: bridge, bridgeValidator: bridgeValidator})); + + return + ERC1967Factory(cfg.erc1967Factory) + .deploy({implementation: relayerOrchestratorImpl, admin: cfg.initialOwner}); + } + + function _serializeAddress(string memory key, address value) private { + vm.writeJson({ + json: LibString.toHexStringChecksummed(value), path: "addresses.json", valueKey: string.concat(".", key) + }); + } + + function _readAddressFromConfig(string memory key) private view returns (address) { + return vm.parseJsonAddress({json: cfgData, key: string.concat(".", key)}); + } + + function _readAddressArrayFromConfig(string memory key) private view returns (address[] memory) { + return vm.parseJsonAddressArray({json: cfgData, key: string.concat(".", key)}); + } + + function _readUintFromConfig(string memory key) private view returns (uint256) { + return vm.parseJsonUint({json: cfgData, key: string.concat(".", key)}); + } + + function _readBytes32FromConfig(string memory key) private view returns (bytes32) { + return vm.parseJsonBytes32({json: cfgData, key: string.concat(".", key)}); + } + + /// @dev Appends `msg.sender` to the front of the salt to satisfy a requirement + /// of the `ERC1967Factory.deployDeterministicAndCall()` method. + function _salt() private view returns (bytes32) { + bytes12 s = bytes12(keccak256(abi.encode(cfg.salt))); + return bytes32(abi.encodePacked(msg.sender, s)); + } +}