diff --git a/config/config.debug.toml b/config/config.debug.toml index c0158419..e5bc8087 100644 --- a/config/config.debug.toml +++ b/config/config.debug.toml @@ -41,9 +41,9 @@ BridgeVersion = "v1" [NetworkConfig] GenBlockNumber = 1 -PoEAddr = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" -BridgeAddr = "0x0165878A594ca255338adfa4d48449f69242Eb8F" -GlobalExitRootManAddr = "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9" +PoEAddr = "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" +BridgeAddr = "0x60627AC8Ba44F4438186B4bCD5F1cb5E794e19fe" +GlobalExitRootManAddr = "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" MaticAddr = "0x5FbDB2315678afecb367f032d93F642f64180aa3" -L2BridgeAddrs = ["0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988"] +L2BridgeAddrs = ["0xd0a3d58d135e2ee795dFB26ec150D339394254B9"] L1ChainID = 1337 \ No newline at end of file diff --git a/config/config.local.toml b/config/config.local.toml index 835e56a2..da762a15 100644 --- a/config/config.local.toml +++ b/config/config.local.toml @@ -41,9 +41,9 @@ BridgeVersion = "v1" [NetworkConfig] GenBlockNumber = 1 -PoEAddr = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" -BridgeAddr = "0x0165878A594ca255338adfa4d48449f69242Eb8F" -GlobalExitRootManAddr = "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9" +PoEAddr = "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" +BridgeAddr = "0x60627AC8Ba44F4438186B4bCD5F1cb5E794e19fe" +GlobalExitRootManAddr = "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" MaticAddr = "0x5FbDB2315678afecb367f032d93F642f64180aa3" -L2BridgeAddrs = ["0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988"] +L2BridgeAddrs = ["0xd0a3d58d135e2ee795dFB26ec150D339394254B9"] L1ChainID = 1337 \ No newline at end of file diff --git a/config/default.go b/config/default.go index a64ba77b..bd40eee9 100644 --- a/config/default.go +++ b/config/default.go @@ -47,10 +47,10 @@ BridgeVersion = "v1" [NetworkConfig] GenBlockNumber = 1 -PoEAddr = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" -BridgeAddr = "0x0165878A594ca255338adfa4d48449f69242Eb8F" -GlobalExitRootManAddr = "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9" +PoEAddr = "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" +BridgeAddr = "0x60627AC8Ba44F4438186B4bCD5F1cb5E794e19fe" +GlobalExitRootManAddr = "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" MaticAddr = "0x5FbDB2315678afecb367f032d93F642f64180aa3" -L2BridgeAddrs = ["0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988"] +L2BridgeAddrs = ["0xd0a3d58d135e2ee795dFB26ec150D339394254B9"] L1ChainID = 1337 ` diff --git a/config/network.go b/config/network.go index a4787cdf..c67e830e 100644 --- a/config/network.go +++ b/config/network.go @@ -48,16 +48,16 @@ var ( BridgeAddr: common.HexToAddress("0x47c1090bc966280000Fe4356a501f1D0887Ce840"), GlobalExitRootManAddr: common.HexToAddress("0xA379Dd55Eb12e8FCdb467A814A15DE2b29677066"), MaticAddr: common.HexToAddress("0x94Ca2BbE1b469f25D3B22BDf17Fc80ad09E7F662"), - L2BridgeAddrs: []common.Address{common.HexToAddress("0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988")}, + L2BridgeAddrs: []common.Address{common.HexToAddress("0xd0a3d58d135e2ee795dFB26ec150D339394254B9")}, L1ChainID: 5, //Goerli } localConfig = NetworkConfig{ GenBlockNumber: 1, - PoEAddr: common.HexToAddress("0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6"), - BridgeAddr: common.HexToAddress("0x0165878A594ca255338adfa4d48449f69242Eb8F"), - GlobalExitRootManAddr: common.HexToAddress("0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9"), + PoEAddr: common.HexToAddress("0x8A791620dd6260079BF849Dc5567aDC3F2FdC318"), + BridgeAddr: common.HexToAddress("0x60627AC8Ba44F4438186B4bCD5F1cb5E794e19fe"), + GlobalExitRootManAddr: common.HexToAddress("0xa513E6E4b8f2a923D98304ec87F64353C4D5C853"), MaticAddr: common.HexToAddress("0x5FbDB2315678afecb367f032d93F642f64180aa3"), - L2BridgeAddrs: []common.Address{common.HexToAddress("0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988")}, + L2BridgeAddrs: []common.Address{common.HexToAddress("0xd0a3d58d135e2ee795dFB26ec150D339394254B9")}, L1ChainID: 1337, } ) diff --git a/db/storage_test.go b/db/storage_test.go index e96d7076..d241358a 100644 --- a/db/storage_test.go +++ b/db/storage_test.go @@ -135,21 +135,21 @@ func TestTrustedReset(t *testing.T) { require.NoError(t, err) batch1 := etherman.Batch{ BatchNumber: 1, - Coinbase: common.HexToAddress("0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9"), + Coinbase: common.HexToAddress("0xa513E6E4b8f2a923D98304ec87F64353C4D5C853"), BatchL2Data: []byte{}, Timestamp: time.Now(), GlobalExitRoot: common.HexToHash("0x1d02f31780d083b996faee908120beef6366b5a6cab3f9efbe5a1f7e9ad47ba8"), } batch2 := etherman.Batch{ BatchNumber: 2, - Coinbase: common.HexToAddress("0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9"), + Coinbase: common.HexToAddress("0xa513E6E4b8f2a923D98304ec87F64353C4D5C853"), BatchL2Data: []byte{}, Timestamp: time.Now(), GlobalExitRoot: common.HexToHash("0x2d02f31780d083b996faee908120beef6366b5a6cab3f9efbe5a1f7e9ad47ba8"), } batch3 := etherman.Batch{ BatchNumber: 3, - Coinbase: common.HexToAddress("0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9"), + Coinbase: common.HexToAddress("0xa513E6E4b8f2a923D98304ec87F64353C4D5C853"), BatchL2Data: []byte{}, Timestamp: time.Now(), GlobalExitRoot: common.HexToHash("0x3d02f31780d083b996faee908120beef6366b5a6cab3f9efbe5a1f7e9ad47ba8"), @@ -287,7 +287,7 @@ func TestForcedAndVerifiedBatch(t *testing.T) { batch := ðerman.Batch{ BatchNumber: 1, - Coinbase: common.HexToAddress("0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9"), + Coinbase: common.HexToAddress("0xa513E6E4b8f2a923D98304ec87F64353C4D5C853"), BatchL2Data: []byte{}, Timestamp: time.Now(), GlobalExitRoot: common.HexToHash("0x1d02f31780d083b996faee908120beef6366b5a6cab3f9efbe5a1f7e9ad47ba8"), @@ -299,7 +299,7 @@ func TestForcedAndVerifiedBatch(t *testing.T) { BlockID: 1, BlockNumber: 1, ForcedBatchNumber: 1, - Sequencer: common.HexToAddress("0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9"), + Sequencer: common.HexToAddress("0xa513E6E4b8f2a923D98304ec87F64353C4D5C853"), GlobalExitRoot: common.HexToHash("0x3d02f31780d083b996faee908120beef6366b5a6cab3f9efbe5a1f7e9ad47ba8"), RawTxsData: []byte{}, ForcedAt: time.Now(), @@ -310,7 +310,7 @@ func TestForcedAndVerifiedBatch(t *testing.T) { vb := ðerman.VerifiedBatch{ BatchNumber: 1, BlockID: 1, - Aggregator: common.HexToAddress("0x0165878A594ca255338adfa4d48449f69242Eb8F"), + Aggregator: common.HexToAddress("0x60627AC8Ba44F4438186B4bCD5F1cb5E794e19fe"), TxHash: common.HexToHash("0x29e885edaf8e4b51e1d2e05f9da28161d2fb4f6b1d53827d9b80a23cf2d7d9f2"), } err = pg.AddVerifiedBatch(ctx, vb, tx) diff --git a/docker-compose.yml b/docker-compose.yml index d7ba84a1..e599f651 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -74,7 +74,7 @@ services: zkevm-node: container_name: zkevm-node - image: hermeznetwork/zkevm-node@sha256:ca517969314544c3b7c0136f24d02c9fb910954b39007424a8e15f7e73f8e515 + image: hermeznetwork/zkevm-node:v0.0.2-RC3 ports: - 8123:8123 - 61090:61090 @@ -96,13 +96,13 @@ services: zkevm-mock-l1-network: container_name: zkevm-local-l1-network - image: hermeznetwork/geth-zkevm-contracts:v0.6.0.0 + image: hermeznetwork/geth-zkevm-contracts:test ports: - 8545:8545 zkevm-prover: container_name: zkevm-prover - image: hermeznetwork/zkevm-prover:9c4a1fe + image: hermeznetwork/zkevm-prover:88f3835 ports: - 50051:50051 # Prover - 50052:50052 # MockProver diff --git a/docs/running_local.md b/docs/running_local.md index 36cb880c..998551dc 100644 --- a/docs/running_local.md +++ b/docs/running_local.md @@ -71,8 +71,8 @@ make test-edge | Address | Description | |---|---| -| 0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6 | Proof of Efficiency | -| 0x0165878A594ca255338adfa4d48449f69242Eb8F | L1 Bridge | -| 0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988 | L2 Bridge | +| 0x8A791620dd6260079BF849Dc5567aDC3F2FdC318 | Proof of Efficiency | +| 0x60627AC8Ba44F4438186B4bCD5F1cb5E794e19fe | L1 Bridge | +| 0xd0a3d58d135e2ee795dFB26ec150D339394254B9 | L2 Bridge | | 0x5FbDB2315678afecb367f032d93F642f64180aa3 | Matic token | -| 0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9 | GlobalExitRootManager | +| 0xa513E6E4b8f2a923D98304ec87F64353C4D5C853 | GlobalExitRootManager | diff --git a/etherman/etherman.go b/etherman/etherman.go index f1adc24a..869dd900 100644 --- a/etherman/etherman.go +++ b/etherman/etherman.go @@ -24,25 +24,26 @@ import ( ) var ( - updateGlobalExitRootSignatureHash = crypto.Keccak256Hash([]byte("UpdateGlobalExitRoot(bytes32,bytes32)")) - forcedBatchSignatureHash = crypto.Keccak256Hash([]byte("ForceBatch(uint64,bytes32,address,bytes)")) - sequencedBatchesEventSignatureHash = crypto.Keccak256Hash([]byte("SequenceBatches(uint64)")) - forceSequencedBatchesSignatureHash = crypto.Keccak256Hash([]byte("SequenceForceBatches(uint64)")) - verifyBatchesSignatureHash = crypto.Keccak256Hash([]byte("VerifyBatches(uint64,bytes32,address)")) - trustedVerifyBatchesSignatureHash = crypto.Keccak256Hash([]byte("TrustedVerifyBatches(uint64,bytes32,address)")) - setTrustedSequencerURLSignatureHash = crypto.Keccak256Hash([]byte("SetTrustedSequencerURL(string)")) - setForceBatchAllowedSignatureHash = crypto.Keccak256Hash([]byte("SetForceBatchAllowed(bool)")) - setTrustedSequencerSignatureHash = crypto.Keccak256Hash([]byte("SetTrustedSequencer(address)")) - transferOwnershipSignatureHash = crypto.Keccak256Hash([]byte("OwnershipTransferred(address,address)")) - setSecurityCouncilSignatureHash = crypto.Keccak256Hash([]byte("SetSecurityCouncil(address)")) - proofDifferentStateSignatureHash = crypto.Keccak256Hash([]byte("ProofDifferentState(bytes32,bytes32)")) - emergencyStateActivatedSignatureHash = crypto.Keccak256Hash([]byte("EmergencyStateActivated()")) - emergencyStateDeactivatedSignatureHash = crypto.Keccak256Hash([]byte("EmergencyStateDeactivated()")) + updateGlobalExitRootSignatureHash = crypto.Keccak256Hash([]byte("UpdateGlobalExitRoot(bytes32,bytes32)")) + forcedBatchSignatureHash = crypto.Keccak256Hash([]byte("ForceBatch(uint64,bytes32,address,bytes)")) + sequencedBatchesEventSignatureHash = crypto.Keccak256Hash([]byte("SequenceBatches(uint64)")) + forceSequencedBatchesSignatureHash = crypto.Keccak256Hash([]byte("SequenceForceBatches(uint64)")) + verifyBatchesSignatureHash = crypto.Keccak256Hash([]byte("VerifyBatches(uint64,bytes32,address)")) + verifyBatchesTrustedAggregatorSignatureHash = crypto.Keccak256Hash([]byte("VerifyBatchesTrustedAggregator(uint64,bytes32,address)")) + setTrustedSequencerURLSignatureHash = crypto.Keccak256Hash([]byte("SetTrustedSequencerURL(string)")) + setForceBatchAllowedSignatureHash = crypto.Keccak256Hash([]byte("SetForceBatchAllowed(bool)")) + setTrustedSequencerSignatureHash = crypto.Keccak256Hash([]byte("SetTrustedSequencer(address)")) + transferOwnershipSignatureHash = crypto.Keccak256Hash([]byte("OwnershipTransferred(address,address)")) + setSecurityCouncilSignatureHash = crypto.Keccak256Hash([]byte("SetSecurityCouncil(address)")) + proofDifferentStateSignatureHash = crypto.Keccak256Hash([]byte("ProofDifferentState(bytes32,bytes32)")) + emergencyStateActivatedSignatureHash = crypto.Keccak256Hash([]byte("EmergencyStateActivated()")) + emergencyStateDeactivatedSignatureHash = crypto.Keccak256Hash([]byte("EmergencyStateDeactivated()")) + updateZkEVMVersionSignatureHash = crypto.Keccak256Hash([]byte("UpdateZkEVMVersion(uint64,uint64,string)")) // Bridge events depositEventSignatureHash = crypto.Keccak256Hash([]byte("BridgeEvent(uint8,uint32,address,uint32,address,uint256,bytes,uint32)")) claimEventSignatureHash = crypto.Keccak256Hash([]byte("ClaimEvent(uint32,uint32,address,address,uint256)")) - newWrappedTokenEventSignatureHash = crypto.Keccak256Hash([]byte("NewWrappedToken(uint32,address,address)")) + newWrappedTokenEventSignatureHash = crypto.Keccak256Hash([]byte("NewWrappedToken(uint32,address,address,bytes)")) // Proxy events initializedSignatureHash = crypto.Keccak256Hash([]byte("Initialized(uint8)")) @@ -185,8 +186,8 @@ func (etherMan *Client) processEvent(ctx context.Context, vLog types.Log, blocks return etherMan.updateGlobalExitRootEvent(ctx, vLog, blocks, blocksOrder) case forcedBatchSignatureHash: return etherMan.forcedBatchEvent(ctx, vLog, blocks, blocksOrder) - case trustedVerifyBatchesSignatureHash: - return etherMan.trustedVerifyBatchesEvent(ctx, vLog, blocks, blocksOrder) + case verifyBatchesTrustedAggregatorSignatureHash: + return etherMan.verifyBatchesTrustedAggregator(ctx, vLog, blocks, blocksOrder) case verifyBatchesSignatureHash: log.Warn("VerifyBatches event not implemented yet") return nil @@ -202,13 +203,13 @@ func (etherMan *Client) processEvent(ctx context.Context, vLog types.Log, blocks log.Debug("Initialized event detected") return nil case setTrustedSequencerSignatureHash: - log.Debug("setTrustedSequencer event detected") + log.Debug("SetTrustedSequencer event detected") return nil case setForceBatchAllowedSignatureHash: - log.Debug("setForceBatchAllowed event detected") + log.Debug("SetForceBatchAllowed event detected") return nil case setTrustedSequencerURLSignatureHash: - log.Debug("setTrustedSequencerURL event detected") + log.Debug("SetTrustedSequencerURL event detected") return nil case adminChangedSignatureHash: log.Debug("AdminChanged event detected") @@ -232,7 +233,10 @@ func (etherMan *Client) processEvent(ctx context.Context, vLog types.Log, blocks log.Debug("EmergencyStateDeactivated event detected") return nil case transferOwnershipSignatureHash: - log.Debug("transferOwnership event detected") + log.Debug("TransferOwnership event detected") + return nil + case updateZkEVMVersionSignatureHash: + log.Debug("UpdateZkEVMVersion event detected") return nil } log.Warnf("Event not registered: %+v", vLog) @@ -474,9 +478,9 @@ func decodeSequences(txData []byte, lastBatchNumber uint64, sequencer common.Add return sequencedBatches, nil } -func (etherMan *Client) trustedVerifyBatchesEvent(ctx context.Context, vLog types.Log, blocks *[]Block, blocksOrder *map[common.Hash][]Order) error { +func (etherMan *Client) verifyBatchesTrustedAggregator(ctx context.Context, vLog types.Log, blocks *[]Block, blocksOrder *map[common.Hash][]Order) error { log.Debug("trustedVerifyBatches event detected") - vb, err := etherMan.PoE.ParseTrustedVerifyBatches(vLog) + vb, err := etherMan.PoE.ParseVerifyBatchesTrustedAggregator(vLog) if err != nil { return err } diff --git a/etherman/etherman_test.go b/etherman/etherman_test.go index 29e122f3..f3160c34 100644 --- a/etherman/etherman_test.go +++ b/etherman/etherman_test.go @@ -119,7 +119,7 @@ func TestSequencedBatchesEvent(t *testing.T) { MinForcedTimestamp: 0, Transactions: common.Hex2Bytes(rawTxs), }) - _, err = etherman.PoE.SequenceBatches(auth, sequences) + _, err = etherman.PoE.SequenceBatches(auth, sequences, auth.From) require.NoError(t, err) // Mine the tx in a block @@ -157,7 +157,7 @@ func TestVerifyBatchEvent(t *testing.T) { MinForcedTimestamp: 0, Transactions: common.Hex2Bytes(rawTxs), } - _, err = etherman.PoE.SequenceBatches(auth, []polygonzkevm.PolygonZkEVMBatchData{tx}) + _, err = etherman.PoE.SequenceBatches(auth, []polygonzkevm.PolygonZkEVMBatchData{tx}, auth.From) require.NoError(t, err) // Mine the tx in a block @@ -168,7 +168,7 @@ func TestVerifyBatchEvent(t *testing.T) { proofC = [2]*big.Int{big.NewInt(1), big.NewInt(1)} proofB = [2][2]*big.Int{proofC, proofC} ) - _, err = etherman.PoE.TrustedVerifyBatches(auth, 0, 0, 1, common.Hash{}, common.Hash{}, proofA, proofB, proofC) + _, err = etherman.PoE.VerifyBatchesTrustedAggregator(auth, 0, 0, 1, common.Hash{}, common.Hash{}, proofA, proofB, proofC) require.NoError(t, err) // Mine the tx in a block @@ -273,7 +273,7 @@ func TestBridgeEvents(t *testing.T) { //Claim funds var ( network uint32 - smtProof [][32]byte + smtProof [32][32]byte index uint32 ) mainnetExitRoot := block[0].GlobalExitRoots[0].ExitRoots[0] diff --git a/etherman/simulated.go b/etherman/simulated.go index 42034d5a..22c270ba 100644 --- a/etherman/simulated.go +++ b/etherman/simulated.go @@ -47,16 +47,12 @@ func NewSimulatedEtherman(cfg Config, auth *bind.TransactOpts) (etherman *Client if err != nil { return nil, nil, common.Address{}, nil, err } - const posBridge = 2 + const posBridge = 1 calculatedBridgeAddr := crypto.CreateAddress(auth.From, nonce+posBridge) - const posPoE = 3 + const posPoE = 2 calculatedPoEAddr := crypto.CreateAddress(auth.From, nonce+posPoE) genesis := common.HexToHash("0xfd3434cd8f67e59d73488a2b8da242dd1f02849ea5dd99f0ca22c836c3d5b4a9") // Random value. Needs to be different to 0x0 - exitManagerAddr, _, globalExitRoot, err := polygonzkevmglobalexitroot.DeployPolygonzkevmglobalexitroot(auth, client) - if err != nil { - return nil, nil, common.Address{}, nil, err - } - _, err = globalExitRoot.Initialize(auth, calculatedPoEAddr, calculatedBridgeAddr) + exitManagerAddr, _, globalExitRoot, err := polygonzkevmglobalexitroot.DeployPolygonzkevmglobalexitroot(auth, client, calculatedPoEAddr, calculatedBridgeAddr) if err != nil { return nil, nil, common.Address{}, nil, err } @@ -64,7 +60,7 @@ func NewSimulatedEtherman(cfg Config, auth *bind.TransactOpts) (etherman *Client if err != nil { return nil, nil, common.Address{}, nil, err } - poeAddr, _, poe, err := polygonzkevm.DeployPolygonzkevm(auth, client) + poeAddr, _, poe, err := polygonzkevm.DeployPolygonzkevm(auth, client, exitManagerAddr, maticAddr, rollupVerifierAddr, bridgeAddr, 1000, 1) //nolint if err != nil { return nil, nil, common.Address{}, nil, err } @@ -78,14 +74,12 @@ func NewSimulatedEtherman(cfg Config, auth *bind.TransactOpts) (etherman *Client } poeParams := polygonzkevm.PolygonZkEVMInitializePackedParameters{ Admin: auth.From, - ChainID: 1000, //nolint:gomnd TrustedSequencer: auth.From, PendingStateTimeout: 10000, //nolint:gomnd - ForceBatchAllowed: true, TrustedAggregator: auth.From, TrustedAggregatorTimeout: 10000, //nolint:gomnd } - _, err = poe.Initialize(auth, exitManagerAddr, maticAddr, rollupVerifierAddr, bridgeAddr, poeParams, genesis, "http://localhost", "L2") //nolint:gomnd + _, err = poe.Initialize(auth, poeParams, genesis, "http://localhost", "L2", "v1") //nolint:gomnd if err != nil { return nil, nil, common.Address{}, nil, err } diff --git a/go.mod b/go.mod index 37da6ff2..d2b14ee6 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/0xPolygonHermez/zkevm-bridge-service go 1.17 require ( - github.com/0xPolygonHermez/zkevm-node v0.0.1-RC1.0.20230126122354-47d1234cd796 + github.com/0xPolygonHermez/zkevm-node v0.0.2-RC3 github.com/ethereum/go-ethereum v1.10.26 github.com/gobuffalo/packr/v2 v2.8.3 github.com/grpc-ecosystem/grpc-gateway/v2 v2.14.0 diff --git a/go.sum b/go.sum index ecf57c78..f5f54d46 100644 --- a/go.sum +++ b/go.sum @@ -389,10 +389,8 @@ cloud.google.com/go/workflows v1.8.0/go.mod h1:ysGhmEajwZxGn1OhGOGKsTXc5PyxOc0vf cloud.google.com/go/workflows v1.9.0/go.mod h1:ZGkj1aFIOd9c8Gerkjjq7OW7I5+l6cSvT3ujaO/WwSA= collectd.org v0.3.0/go.mod h1:A/8DzQBkF6abtvrT2j/AU/4tiBgJWYyh0y/oB/4MlWE= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= -github.com/0xPolygonHermez/zkevm-node v0.0.1-RC1.0.20230124153345-114c6d8fe630 h1:VluQuFa9GuIsoIgPj5K9w+bs/6wYNBXMEWH7Ilvry4M= -github.com/0xPolygonHermez/zkevm-node v0.0.1-RC1.0.20230124153345-114c6d8fe630/go.mod h1:+MlJhKB7PvAW8P8X4PTKpVPSUG/PwbSDg/cGeJJROy4= -github.com/0xPolygonHermez/zkevm-node v0.0.1-RC1.0.20230126122354-47d1234cd796 h1:7NwhrZLp1jB7X7vBPAMwBKY3K7gVtNLgQHdM8+oete8= -github.com/0xPolygonHermez/zkevm-node v0.0.1-RC1.0.20230126122354-47d1234cd796/go.mod h1:aJE6gi72pBM3wr50CUQeldbjQOB1gwGW34ulZN0bD+0= +github.com/0xPolygonHermez/zkevm-node v0.0.2-RC3 h1:NWalQNWlTi9GORIzWXab8tbtvLAOn74FGoSNlAlwWJI= +github.com/0xPolygonHermez/zkevm-node v0.0.2-RC3/go.mod h1:aJE6gi72pBM3wr50CUQeldbjQOB1gwGW34ulZN0bD+0= github.com/Azure/azure-sdk-for-go/sdk/azcore v0.21.1/go.mod h1:fBF9PQNqB8scdgpZ3ufzaLntG0AG7C1WjPMsiFOmfHM= github.com/Azure/azure-sdk-for-go/sdk/internal v0.8.3/go.mod h1:KLF4gFr6DcKFZwSuH8w8yEK6DpFl3LP5rhdvAb7Yz5I= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v0.3.0/go.mod h1:tPaiy8S5bQ+S5sOiDlINkp7+Ef339+Nz5L5XO+cnOHo= @@ -2102,7 +2100,6 @@ google.golang.org/grpc v1.49.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCD google.golang.org/grpc v1.50.0/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.50.1/go.mod h1:ZgQEeidpAuNRZ8iRrlBKXZQP1ghovWIVhdJRyCDK+GI= google.golang.org/grpc v1.51.0/go.mod h1:wgNDFcnuBGmxLKI/qn4T+m5BtEBYXJPvibbUPsAIPww= -google.golang.org/grpc v1.52.0 h1:kd48UiU7EHsV4rnLyOJRuP/Il/UHE7gdDAQ+SZI7nZk= google.golang.org/grpc v1.52.0/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= google.golang.org/grpc v1.52.3 h1:pf7sOysg4LdgBqduXveGKrcEwbStiK2rtfghdzlUYDQ= google.golang.org/grpc v1.52.3/go.mod h1:pu6fVzoFb+NBYNAvQL08ic+lvB2IojljRYuun5vorUY= diff --git a/test/client/client.go b/test/client/client.go index 04dacf2d..2f733a52 100644 --- a/test/client/client.go +++ b/test/client/client.go @@ -21,6 +21,8 @@ type NetworkSID string const ( l1 NetworkSID = "l1" l2 NetworkSID = "l2" + + mtHeight = 32 ) // RestClient is a client for the rest api. @@ -108,7 +110,7 @@ func (c NodeClient) SendBridgeMessage(ctx context.Context, destNetwork uint32, d } // SendClaim send a claim transaction. -func (c NodeClient) SendClaim(ctx context.Context, deposit *pb.Deposit, smtProof [][32]byte, globalExitRoot *etherman.GlobalExitRoot, +func (c NodeClient) SendClaim(ctx context.Context, deposit *pb.Deposit, smtProof [mtHeight][32]byte, globalExitRoot *etherman.GlobalExitRoot, bridgeSCAddr common.Address, auth *bind.TransactOpts, network NetworkSID, ) error { return c.clients[network].SendClaim(ctx, deposit, smtProof, globalExitRoot, bridgeSCAddr, auth) diff --git a/test/config/node/config.zkevm.node.toml b/test/config/node/config.zkevm.node.toml index 0a99a9be..41b37605 100644 --- a/test/config/node/config.zkevm.node.toml +++ b/test/config/node/config.zkevm.node.toml @@ -27,9 +27,9 @@ FreeClaimGasLimit = 1500000 [Etherman] URL = "http://zkevm-mock-l1-network:8545" L1ChainID = 1337 -PoEAddr = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" +PoEAddr = "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" MaticAddr = "0x5FbDB2315678afecb367f032d93F642f64180aa3" -GlobalExitRootManagerAddr = "0xDc64a140Aa3E981100a9becA4E685f962f0cF6C9" +GlobalExitRootManagerAddr = "0xa513E6E4b8f2a923D98304ec87F64353C4D5C853" MultiGasProvider = false [Etherman.Etherscan] ApiKey = "" @@ -55,8 +55,7 @@ DefaultSenderAddress = "0x1111111111111111111111111111111111111111" [Synchronizer] SyncInterval = "1s" SyncChunkSize = 100 -TrustedSequencerURI = "" -GenBlockNumber = 1 +GenBlockNumber = 63 [Sequencer] MaxSequenceSize = "2000000" diff --git a/test/config/node/genesis.local.json b/test/config/node/genesis.local.json index d4caae4a..54db6b83 100644 --- a/test/config/node/genesis.local.json +++ b/test/config/node/genesis.local.json @@ -1,76 +1,101 @@ { - "root": "0x16851d9301e0a13a24dab6b0baec16a73502cdce67e3d3efa2629c86940d34f4", + "root": "0x5c8df6a4b7748c1308a60c5380a2ff77deb5cfee3bf4fba76eef189d651d4558", "genesis": [ - { - "balance": "200000000000000000000000000", - "nonce": "1", - "address": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988", - "bytecode": "0x608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f0033", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000000": "0x01", - "0x0000000000000000000000000000000000000000000000000000000000000022": "0x0100", - "0x0000000000000000000000000000000000000000000000000000000000000026": "0xae4bb80be56b819606589de61d5ec3b522eeb032" - }, - "contractName": "PolygonZkEVMBridge" - }, - { - "balance": "0", - "nonce": "3", - "address": "0xc949254d682d8c9ad5682521675b8f43b102aec4", - "pvtKey": "0xdfd01798f92667dbf91df722434e8fbe96af0211d4d1b82bbbbc8f1def7a814f" - }, - { - "balance": "100000000000000000000000", - "nonce": "0", - "address": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266", - "pvtKey": "0x00" - }, - { - "balance": "0", - "nonce": "1", - "address": "0xae4bb80be56b819606589de61d5ec3b522eeb032", - "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f0033", - "storage": { - "0x0000000000000000000000000000000000000000000000000000000000000002": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" - }, - "contractName": "PolygonZkEVMGlobalExitRootL2" + { + "contractName": "PolygonZkEVMDeployer", + "balance": "0", + "nonce": "4", + "address": "0x70c5dCfCdf437D051c49C13356958fADf9323913", + "bytecode": "0x6080604052600436106100605760003560e01c80632b79805a146100655780634a94d4871461007a5780636d07dbf81461008d578063715018a6146100c35780638da5cb5b146100d8578063e11ae6cb146100f6578063f2fde38b14610109575b600080fd5b610078610073366004610733565b610129565b005b6100786100883660046107c6565b610189565b34801561009957600080fd5b506100ad6100a836600461081d565b6101cb565b6040516100ba919061083f565b60405180910390f35b3480156100cf57600080fd5b506100786101de565b3480156100e457600080fd5b506000546001600160a01b03166100ad565b610078610104366004610853565b6101f2565b34801561011557600080fd5b506100786101243660046108a3565b610246565b6101316102c4565b600061013e85858561031e565b905061014a818361041e565b507fba82f25fed02cd2a23d9f5d11c2ef588d22af5437cbf23bfe61d87257c480e4c8160405161017a919061083f565b60405180910390a15050505050565b6101916102c4565b61019c838383610462565b506040517f25adb19089b6a549831a273acdf7908cff8b7ee5f551f8d1d37996cf01c5df5b90600090a1505050565b60006101d78383610490565b9392505050565b6101e66102c4565b6101f0600061049d565b565b6101fa6102c4565b600061020784848461031e565b90507fba82f25fed02cd2a23d9f5d11c2ef588d22af5437cbf23bfe61d87257c480e4c81604051610238919061083f565b60405180910390a150505050565b61024e6102c4565b6001600160a01b0381166102b85760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b6102c18161049d565b50565b6000546001600160a01b031633146101f05760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016102af565b6000834710156103705760405162461bcd60e51b815260206004820152601d60248201527f437265617465323a20696e73756666696369656e742062616c616e636500000060448201526064016102af565b81516000036103c15760405162461bcd60e51b815260206004820181905260248201527f437265617465323a2062797465636f6465206c656e677468206973207a65726f60448201526064016102af565b8282516020840186f590506001600160a01b0381166101d75760405162461bcd60e51b8152602060048201526019602482015278437265617465323a204661696c6564206f6e206465706c6f7960381b60448201526064016102af565b60606101d7838360006040518060400160405280601e81526020017f416464726573733a206c6f772d6c6576656c2063616c6c206661696c656400008152506104ed565b6060610488848484604051806060016040528060298152602001610932602991396104ed565b949350505050565b60006101d78383306105c8565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60608247101561054e5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016102af565b600080866001600160a01b0316858760405161056a91906108e2565b60006040518083038185875af1925050503d80600081146105a7576040519150601f19603f3d011682016040523d82523d6000602084013e6105ac565b606091505b50915091506105bd878383876105f2565b979650505050505050565b6000604051836040820152846020820152828152600b8101905060ff815360559020949350505050565b6060831561066157825160000361065a576001600160a01b0385163b61065a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102af565b5081610488565b61048883838151156106765781518083602001fd5b8060405162461bcd60e51b81526004016102af91906108fe565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126106b757600080fd5b813567ffffffffffffffff808211156106d2576106d2610690565b604051601f8301601f19908116603f011681019082821181831017156106fa576106fa610690565b8160405283815286602085880101111561071357600080fd5b836020870160208301376000602085830101528094505050505092915050565b6000806000806080858703121561074957600080fd5b8435935060208501359250604085013567ffffffffffffffff8082111561076f57600080fd5b61077b888389016106a6565b9350606087013591508082111561079157600080fd5b5061079e878288016106a6565b91505092959194509250565b80356001600160a01b03811681146107c157600080fd5b919050565b6000806000606084860312156107db57600080fd5b6107e4846107aa565b9250602084013567ffffffffffffffff81111561080057600080fd5b61080c868287016106a6565b925050604084013590509250925092565b6000806040838503121561083057600080fd5b50508035926020909101359150565b6001600160a01b0391909116815260200190565b60008060006060848603121561086857600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561088d57600080fd5b610899868287016106a6565b9150509250925092565b6000602082840312156108b557600080fd5b6101d7826107aa565b60005b838110156108d95781810151838201526020016108c1565b50506000910152565b600082516108f48184602087016108be565b9190910192915050565b602081526000825180602084015261091d8160408501602087016108be565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2063616c6c20776974682076616c7565206661696c6564a26469706673582212207bb17a87bc2c0ad76098275332177f42e104a72ca11bed987dfdf2a11cc1edaa64736f6c63430008110033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000cae25c8623761783fe4ce241c9b428126a7612a" } - ], - "transactions": [ - { - "rawTx": "0xf902768080839896808080b90266608060405234801561001057600080fd5b5060405161024638038061024683398101604081905261002f91610054565b600280546001600160a01b0319166001600160a01b0392909216919091179055610084565b60006020828403121561006657600080fd5b81516001600160a01b038116811461007d57600080fd5b9392505050565b6101b3806100936000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b366004610164565b60006020819052908152604090205481565b6100a061009b366004610164565b6100cd565b005b6002546100b5906001600160a01b031681565b6040516001600160a01b039091168152602001610064565b6002546001600160a01b0316331461015f5760405162461bcd60e51b815260206004820152604560248201527f506f6c79676f6e5a6b45564d476c6f62616c45786974526f6f744c323a3a757060448201527f6461746545786974526f6f743a204f6e6c7920506f6c79676f6e5a6b45564d42606482015264726964676560d81b608482015260a40160405180910390fd5b600155565b60006020828403121561017657600080fd5b503591905056fea2646970667358221220515fd6c3d86946bd7f5a4ef86115f8c7ba072b8c318ac2c46e1526fb50a66c3364736f6c634300080f00330000000000000000000000009d98deabc42dd696deb9e40b4f1cab7ddbf559888203e8808062c7b6ed3f97f48cb0c909b6fc5fa0bda9ae0392c5e3c6abb883afff10d8843d354c515eb025b1ea82e17a389a23d5d4b0b6dbc45cbf215d181958094d03c4b11b", - "receipt": { - "status": 1, - "gasUsed": "0x029ed4", - "logs": [] - }, - "createAddress": "0xae4bb80be56b819606589de61d5ec3b522eeb032" - }, - { - "rawTx": "0xf947fe0180839896808080b947ee608060405234801561001057600080fd5b506147ce806100206000396000f3fe608060405260043610620001675760003560e01c80637b6323c111620000c5578063d02103ca1162000078578063d02103ca146200047d578063d96a15f7146200049f578063dbc1697614620004b6578063ed6be5c914620004ce578063ee25560b14620004e5578063ff634ed7146200051657600080fd5b80637b6323c1146200037057806381b1c17414620003955780639e34070f14620003cf578063a08e8a0814620003f4578063aaa13cc2146200041e578063bab161bf146200044357600080fd5b806334ac9cf2116200011e57806334ac9cf214620002a25780633ae0504714620002c45780633da8168214620002dc5780633e1970431462000301578063463855491462000326578063647c576c146200034b57600080fd5b80630871e971146200016c57806315064c9614620001855780632072f6c514620001b657806322e95f2c14620001ce5780632dfdf0b5146200020c578063318aee3d1462000233575b600080fd5b620001836200017d36600462002432565b6200052d565b005b3480156200019257600080fd5b50602254620001a19060ff1681565b60405190151581526020015b60405180910390f35b348015620001c357600080fd5b5062000183620009cf565b348015620001db57600080fd5b50620001f3620001ed366004620024be565b62000a08565b6040516001600160a01b039091168152602001620001ad565b3480156200021957600080fd5b506200022460215481565b604051908152602001620001ad565b3480156200024057600080fd5b506200027d62000252366004620024fa565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001ad565b348015620002af57600080fd5b50602754620001f3906001600160a01b031681565b348015620002d157600080fd5b506200022462000a5b565b348015620002e957600080fd5b50620001a1620002fb366004620025e7565b62000b4e565b3480156200030e57600080fd5b50620002246200032036600462002664565b62000c4f565b3480156200033357600080fd5b50620001836200034536600462002774565b62000cdc565b3480156200035857600080fd5b50620001836200036a3660046200285a565b62000e82565b3480156200037d57600080fd5b50620001836200038f36600462002774565b62000fe1565b348015620003a257600080fd5b50620001f3620003b4366004620028aa565b6024602052600090815260409020546001600160a01b031681565b348015620003dc57600080fd5b50620001a1620003ee366004620028aa565b62001469565b3480156200040157600080fd5b506200040b600081565b60405160ff9091168152602001620001ad565b3480156200042b57600080fd5b50620001f36200043d366004620028c4565b620014ae565b3480156200045057600080fd5b506022546200046790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001ad565b3480156200048a57600080fd5b50602654620001f3906001600160a01b031681565b62000183620004b036600462002977565b620015c5565b348015620004c357600080fd5b506200018362001771565b348015620004db57600080fd5b5062000467600081565b348015620004f257600080fd5b506200022462000504366004620028aa565b60236020526000908152604090205481565b3480156200052357600080fd5b506200040b600181565b60225460ff16156200055c5760405162461bcd60e51b81526004016200055390620029de565b60405180910390fd5b60225463ffffffff610100909104811690861603620005e45760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c66000000606482015260840162000553565b60008060606001600160a01b03891662000687578534146200067d5760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e76606482015263616c756560e01b608482015260a40162000553565b60009150620008e9565b6001600160a01b03808a1660009081526025602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200074657604051632770a7eb60e21b81526001600160a01b038b1690639dc29fac90620006fe9033908b9060040162002a46565b600060405180830381600087803b1580156200071957600080fd5b505af11580156200072e573d6000803e3d6000fd5b505050508060200151935080600001519250620008e7565b84156200075b576200075b8a888888620017a8565b620007726001600160a01b038b1633308a62001bcc565b899350602260019054906101000a900463ffffffff169250896001600160a01b03166306fdde036040518163ffffffff1660e01b8152600401600060405180830381865afa158015620007c9573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620007f3919081019062002ada565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000832573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526200085c919081019062002ada565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200089b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620008c1919062002b12565b604051602001620008d59392919062002b60565b60405160208183030381529060405291505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b876021546040516200092b98979695949392919062002b9d565b60405180910390a16200095662000950600084868c8c8c888051906020012062000c4f565b62001c39565b6026546001600160a01b03166333d6247d6200097162000a5b565b6040518263ffffffff1660e01b81526004016200099091815260200190565b600060405180830381600087803b158015620009ab57600080fd5b505af1158015620009c0573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b03163314620009fc5760405162461bcd60e51b8152600401620005539062002c0a565b62000a0662001d8a565b565b600060246000848460405160200162000a2392919062002c67565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b602154600090819081805b602081101562000b45578260011660010362000ac6576001816020811062000a925762000a9262002c91565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000af3565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000b0060028462002cd3565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000b3c9062002cea565b91505062000a66565b50919392505050565b6000846001600160401b038416825b602081101562000c40578160011660010362000bca5786818151811062000b885762000b8862002c91565b60200260200101518360405160200162000bac929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000c1c565b8287828151811062000be05762000be062002c91565b602002602001015160405160200162000c03929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000c2960028362002cd3565b91508062000c378162002cea565b91505062000b5d565b5050821490505b949350505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b60225460ff161562000d025760405162461bcd60e51b81526004016200055390620029de565b62000d188a8a8a8a8a8a8a8a8a8a600162001de8565b62000d298963ffffffff1662002073565b6000836001600160a01b03168387898560405160240162000d4d9392919062002d06565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000d84919062002d41565b60006040518083038185875af1925050503d806000811462000dc3576040519150601f19603f3d011682016040523d82523d6000602084013e62000dc8565b606091505b505090508062000e345760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d4d65737361676560448201526f0e8813595cdcd859d94819985a5b195960821b606482015260840162000553565b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000e6d95949392919062002d5f565b60405180910390a15050505050505050505050565b600054610100900460ff161580801562000ea35750600054600160ff909116105b8062000ebf5750303b15801562000ebf575060005460ff166001145b62000f245760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840162000553565b6000805460ff19166001179055801562000f48576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086166001600160a01b0319928316179092556027805492851692909116919091179055801562000fdb576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010075760405162461bcd60e51b81526004016200055390620029de565b6200101d8a8a8a8a8a8a8a8a8a8a600062001de8565b6200102e8963ffffffff1662002073565b6001600160a01b0385166200112557604080516000808252602082019092526001600160a01b03851690849060405162001069919062002d41565b60006040518083038185875af1925050503d8060008114620010a8576040519150601f19603f3d011682016040523d82523d6000602084013e620010ad565b606091505b50509050806200111e5760405162461bcd60e51b815260206004820152603560248201527f506f6c79676f6e5a6b45564d4272696467653a3a636c61696d41737365743a20604482015274115d1a195c881d1c985b9cd9995c8819985a5b1959605a1b606482015260840162000553565b506200141c565b60225463ffffffff6101009091048116908716036200115a57620011546001600160a01b0386168484620020b5565b6200141c565b600086866040516020016200117192919062002c67565b60408051601f198184030181529181528151602092830120600081815260249093529120549091506001600160a01b031680620013b457600080600085806020019051810190620011c3919062002d96565b925092509250600085848484604051620011dd9062002399565b620011eb9392919062002b60565b8190604051809103906000f59050801580156200120c573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062001240908c908c9060040162002a46565b600060405180830381600087803b1580156200125b57600080fd5b505af115801562001270573d6000803e3d6000fd5b50505050806024600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808d63ffffffff1681526020018c6001600160a01b031681525060256000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d598c8c83604051620013a29392919063ffffffff9390931683526001600160a01b03918216602084015216604082015260600190565b60405180910390a15050505062001419565b6040516340c10f1960e01b81526001600160a01b038216906340c10f1990620013e4908890889060040162002a46565b600060405180830381600087803b158015620013ff57600080fd5b505af115801562001414573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe2754598389878786866040516200145595949392919062002d5f565b60405180910390a150505050505050505050565b6000806200147a6101008462002cd3565b905060006200148c6101008562002e0b565b60009283526023602052604090922054600190921b9182169091149392505050565b6000808888604051602001620014c692919062002c67565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620014f99062002399565b601f1982820381018352601f90910116604081905262001526908d908d908d908d908d9060200162002e4b565b60408051601f198184030181529082905262001546929160200162002e8c565b604051602081830303815290604052805190602001206040516020016200159f94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620015eb5760405162461bcd60e51b81526004016200055390620029de565b60225463ffffffff610100909104811690841603620016735760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c6600606482015260840162000553565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620016c798979695949392919062002b9d565b60405180910390a1620016fe620009506001602260019054906101000a900463ffffffff1633878734888051906020012062000c4f565b6026546001600160a01b03166333d6247d6200171962000a5b565b6040518263ffffffff1660e01b81526004016200173891815260200190565b600060405180830381600087803b1580156200175357600080fd5b505af115801562001768573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b031633146200179e5760405162461bcd60e51b8152600401620005539062002c0a565b62000a06620020d7565b6000620017eb83838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506200218692505050565b9050632afa533160e01b6001600160e01b0319821601620019e05760008080808080806200181d896004818d62002ebf565b8101906200182c919062002eeb565b9650965096509650965096509650336001600160a01b0316876001600160a01b0316146200186e5760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b0386163014620018995760405162461bcd60e51b8152600401620005539062002fa3565b8a85146200190c5760405162461bcd60e51b815260206004820152603960248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205065726044820152780dad2e840c2dadeeadce840c8decae640dcdee840dac2e8c6d603b1b606482015260840162000553565b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200198c919062002d41565b6000604051808303816000865af19150503d8060008114620019cb576040519150601f19603f3d011682016040523d82523d6000602084013e620019d0565b606091505b5050505050505050505062001bc5565b6001600160e01b031981166323f2ebc360e21b1462001a565760405162461bcd60e51b815260206004820152602b60248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a204e6f7460448201526a081d985b1a590818d85b1b60aa1b606482015260840162000553565b60008080808080808062001a6e8a6004818e62002ebf565b81019062001a7d919062003005565b97509750975097509750975097509750336001600160a01b0316886001600160a01b03161462001ac15760405162461bcd60e51b8152600401620005539062002f46565b6001600160a01b038716301462001aec5760405162461bcd60e51b8152600401620005539062002fa3565b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f169162001b75919062002d41565b6000604051808303816000865af19150503d806000811462001bb4576040519150601f19603f3d011682016040523d82523d6000602084013e62001bb9565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b038085166024830152831660448201526064810182905262000fdb9085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b0319909316929092179091526200218d565b80600162001c4a602060026200318e565b62001c5691906200319c565b6021541062001cbb5760405162461bcd60e51b815260206004820152602a60248201527f4465706f736974436f6e74726163743a5f6465706f7369743a204d65726b6c65604482015269081d1c995948199d5b1b60b21b606482015260840162000553565b60016021600082825462001cd09190620031b6565b909155505060215460005b602081101562001d7a578160011660010362001d1057826001826020811062001d085762001d0862002c91565b015550505050565b6001816020811062001d265762001d2662002c91565b0154604080516020810192909252810184905260600160405160208183030381529060405280519060200120925060028262001d63919062002cd3565b91508062001d718162002cea565b91505062001cdb565b5062001d85620031d1565b505050565b60225460ff161562001db05760405162461bcd60e51b81526004016200055390620029de565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001df98a63ffffffff1662001469565b1562001e505760405162461bcd60e51b815260206004820152603060248201526000805160206200477983398151915260448201526f08105b1c9958591e4818db185a5b595960821b606482015260840162000553565b6026546040805160208082018d90528183018c9052825180830384018152606083019384905280519101206312bd9b1960e11b90925260648101919091526000916001600160a01b03169063257b3632906084016020604051808303816000875af115801562001ec4573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001eea9190620031e7565b90508060000362001f4d5760405162461bcd60e51b81526020600482015260376024820152600080516020620047798339815191526044820152760811db1bd8985b115e1a5d149bdbdd081a5b9d985b1a59604a1b606482015260840162000553565b60225463ffffffff878116610100909204161462001fcf5760405162461bcd60e51b815260206004820152604360248201526000805160206200477983398151915260448201527f2044657374696e6174696f6e206e6574776f726b20646f6573206e6f74206d616064820152620e8c6d60eb1b608482015260a40162000553565b602254600090610100900463ffffffff1662001fed57508862001ff0565b50895b6200201b6200200c848b8b8b8b8b8b8051906020012062000c4f565b8e8e63ffffffff168462000b4e565b620009c05760405162461bcd60e51b81526020600482015260326024820152600080516020620047798339815191526044820152711024b73b30b634b21039b6ba10383937b7b360711b606482015260840162000553565b6000620020836101008362002cd3565b90506000620020956101008462002e0b565b6000928352602360205260409092208054600190931b9092179091555050565b62001d858363a9059cbb60e01b848460405160240162001c0192919062002a46565b60225460ff16620021515760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e63792073746174650000000000606482015260840162000553565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6020015190565b6000620021e4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316620022669092919063ffffffff16565b80519091501562001d85578080602001905181019062002205919062003201565b62001d855760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840162000553565b606062000c47848460008585600080866001600160a01b0316858760405162002290919062002d41565b60006040518083038185875af1925050503d8060008114620022cf576040519150601f19603f3d011682016040523d82523d6000602084013e620022d4565b606091505b5091509150620022e787838387620022f2565b979650505050505050565b60608315620023665782516000036200235e576001600160a01b0385163b6200235e5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640162000553565b508162000c47565b62000c4783838151156200237d5781518083602001fd5b8060405162461bcd60e51b815260040162000553919062003221565b611542806200323783390190565b6001600160a01b0381168114620023bd57600080fd5b50565b8035620023cd81620023a7565b919050565b803563ffffffff81168114620023cd57600080fd5b60008083601f840112620023fa57600080fd5b5081356001600160401b038111156200241257600080fd5b6020830191508360208285010111156200242b57600080fd5b9250929050565b60008060008060008060a087890312156200244c57600080fd5b86356200245981620023a7565b95506200246960208801620023d2565b945060408701356200247b81620023a7565b93506060870135925060808701356001600160401b038111156200249e57600080fd5b620024ac89828a01620023e7565b979a9699509497509295939492505050565b60008060408385031215620024d257600080fd5b620024dd83620023d2565b91506020830135620024ef81620023a7565b809150509250929050565b6000602082840312156200250d57600080fd5b81356200251a81620023a7565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171562002562576200256262002521565b604052919050565b600082601f8301126200257c57600080fd5b813560206001600160401b038211156200259a576200259a62002521565b8160051b620025ab82820162002537565b9283528481018201928281019087851115620025c657600080fd5b83870192505b84831015620022e757823582529183019190830190620025cc565b60008060008060808587031215620025fe57600080fd5b8435935060208501356001600160401b03808211156200261d57600080fd5b6200262b888389016200256a565b94506040870135915080821682146200264357600080fd5b509396929550929360600135925050565b60ff81168114620023bd57600080fd5b600080600080600080600060e0888a0312156200268057600080fd5b87356200268d8162002654565b96506200269d60208901620023d2565b95506040880135620026af81620023a7565b9450620026bf60608901620023d2565b93506080880135620026d181620023a7565b9699959850939692959460a0840135945060c09093013592915050565b60006001600160401b038211156200270a576200270a62002521565b50601f01601f191660200190565b600082601f8301126200272a57600080fd5b8135620027416200273b82620026ee565b62002537565b8181528460208386010111156200275757600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d0312156200279557600080fd5b8a356001600160401b0380821115620027ad57600080fd5b620027bb8e838f016200256a565b9b50620027cb60208e01620023d2565b9a5060408d0135995060608d01359850620027e960808e01620023d2565b9750620027f960a08e01620023c0565b96506200280960c08e01620023d2565b95506200281960e08e01620023c0565b94506101008d013593506101208d01359150808211156200283957600080fd5b50620028488d828e0162002718565b9150509295989b9194979a5092959850565b6000806000606084860312156200287057600080fd5b6200287b84620023d2565b925060208401356200288d81620023a7565b915060408401356200289f81620023a7565b809150509250925092565b600060208284031215620028bd57600080fd5b5035919050565b600080600080600080600060a0888a031215620028e057600080fd5b620028eb88620023d2565b96506020880135620028fd81620023a7565b955060408801356001600160401b03808211156200291a57600080fd5b620029288b838c01620023e7565b909750955060608a01359150808211156200294257600080fd5b50620029518a828b01620023e7565b9094509250506080880135620029678162002654565b8091505092959891949750929550565b6000806000606084860312156200298d57600080fd5b6200299884620023d2565b92506020840135620029aa81620023a7565b915060408401356001600160401b03811115620029c657600080fd5b620029d48682870162002718565b9150509250925092565b60208082526042908201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960408201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606082015261746560f01b608082015260a00190565b6001600160a01b03929092168252602082015260400190565b60005b8381101562002a7c57818101518382015260200162002a62565b8381111562000fdb5750506000910152565b600082601f83011262002aa057600080fd5b815162002ab16200273b82620026ee565b81815284602083860101111562002ac757600080fd5b62000c4782602083016020870162002a5f565b60006020828403121562002aed57600080fd5b81516001600160401b0381111562002b0457600080fd5b62000c478482850162002a8e565b60006020828403121562002b2557600080fd5b81516200251a8162002654565b6000815180845262002b4c81602086016020860162002a5f565b601f01601f19169290920160200192915050565b60608152600062002b75606083018662002b32565b828103602084015262002b89818662002b32565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c0830181905260009162002bf18483018762002b32565b925080851660e085015250509998505050505050505050565b6020808252603a908201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060408201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e7472616374000000000000606082015260800190565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60008262002ce55762002ce562002ca7565b500490565b60006001820162002cff5762002cff62002cbd565b5060010190565b6001600160a01b038416815263ffffffff8316602082015260606040820181905260009062002d389083018462002b32565b95945050505050565b6000825162002d5581846020870162002a5f565b9190910192915050565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b60008060006060848603121562002dac57600080fd5b83516001600160401b038082111562002dc457600080fd5b62002dd28783880162002a8e565b9450602086015191508082111562002de957600080fd5b5062002df88682870162002a8e565b92505060408401516200289f8162002654565b60008262002e1d5762002e1d62002ca7565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60608152600062002e6160608301878962002e22565b828103602084015262002e7681868862002e22565b91505060ff831660408301529695505050505050565b6000835162002ea081846020880162002a5f565b83519083019062002eb681836020880162002a5f565b01949350505050565b6000808585111562002ed057600080fd5b8386111562002ede57600080fd5b5050820193919092039150565b600080600080600080600060e0888a03121562002f0757600080fd5b873562002f1481620023a7565b9650602088013562002f2681620023a7565b955060408801359450606088013593506080880135620026d18162002654565b6020808252603c908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a2050657260408201527f6d6974206f776e6572206d757374206265207468652073656e64657200000000606082015260800190565b60208082526033908201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7065726d69743a205370656040820152726e646572206d7573742062652027746869732760681b606082015260800190565b8015158114620023bd57600080fd5b600080600080600080600080610100898b0312156200302357600080fd5b88356200303081620023a7565b975060208901356200304281620023a7565b965060408901359550606089013594506080890135620030628162002ff6565b935060a0890135620030748162002654565b979a969950949793969295929450505060c08201359160e0013590565b600181815b80851115620030d2578160001904821115620030b657620030b662002cbd565b80851615620030c457918102915b93841c939080029062003096565b509250929050565b600082620030eb5750600162000a55565b81620030fa5750600062000a55565b81600181146200311357600281146200311e576200313e565b600191505062000a55565b60ff84111562003132576200313262002cbd565b50506001821b62000a55565b5060208310610133831016604e8410600b841016171562003163575081810a62000a55565b6200316f838362003091565b806000190482111562003186576200318662002cbd565b029392505050565b60006200251a8383620030da565b600082821015620031b157620031b162002cbd565b500390565b60008219821115620031cc57620031cc62002cbd565b500190565b634e487b7160e01b600052600160045260246000fd5b600060208284031215620031fa57600080fd5b5051919050565b6000602082840312156200321457600080fd5b81516200251a8162002ff6565b6020815260006200251a602083018462002b3256fe60c06040523480156200001157600080fd5b5060405162001542380380620015428339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611088620004ba60003960006104690152600081816102f9015261043301526110886000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102ce578063a9059cbb146102e1578063cd0d0096146102f4578063d505accf1461031b578063dd62ed3e1461032e578063ffa1ad741461034157600080fd5b806370a082311461023f5780637ecebe001461026857806395d89b41146102885780639dc29fac14610290578063a3c573eb146102a357600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e5151461020f578063395093511461021757806340c10f191461022a57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610361565b6040516101519190610dc2565b60405180910390f35b61016d610168366004610e33565b6103f3565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610e5d565b61040b565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b600554600160a01b900460ff1660405160ff9091168152602001610151565b61018161042f565b61016d610225366004610e33565b61048b565b61023d610238366004610e33565b6104ad565b005b61018161024d366004610e99565b6001600160a01b031660009081526020819052604090205490565b610181610276366004610e99565b60066020526000908152604090205481565b6101446104ee565b61023d61029e366004610e33565b6104fd565b6005546102b6906001600160a01b031681565b6040516001600160a01b039091168152602001610151565b61016d6102dc366004610e33565b610531565b61016d6102ef366004610e33565b6105ac565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61023d610329366004610ebb565b6105ba565b61018161033c366004610f2e565b6107f5565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461037090610f61565b80601f016020809104026020016040519081016040528092919081815260200182805461039c90610f61565b80156103e95780601f106103be576101008083540402835291602001916103e9565b820191906000526020600020905b8154815290600101906020018083116103cc57829003601f168201915b5050505050905090565b600033610401818585610820565b5060019392505050565b600033610419858285610945565b6104248585856109bf565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104665761046146610b51565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b60003361040181858561049e83836107f5565b6104a89190610fb1565b610820565b6005546001600160a01b031633146104e05760405162461bcd60e51b81526004016104d790610fc9565b60405180910390fd5b6104ea8282610bfd565b5050565b60606004805461037090610f61565b6005546001600160a01b031633146105275760405162461bcd60e51b81526004016104d790610fc9565b6104ea8282610caa565b6000338161053f82866107f5565b90508381101561059f5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016104d7565b6104248286868403610820565b6000336104018185856109bf565b834211156106165760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b60648201526084016104d7565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661066383611019565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006106c161042f565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561074c573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107825750896001600160a01b0316816001600160a01b0316145b6107de5760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b60648201526084016104d7565b6107e98a8a8a610820565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108825760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016104d7565b6001600160a01b0382166108e35760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016104d7565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b600061095184846107f5565b905060001981146109b957818110156109ac5760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016104d7565b6109b98484848403610820565b50505050565b6001600160a01b038316610a235760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016104d7565b6001600160a01b038216610a855760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016104d7565b6001600160a01b03831660009081526020819052604090205481811015610afd5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016104d7565b6001600160a01b0384811660008181526020818152604080832087870390559387168083529184902080548701905592518581529092600080516020611033833981519152910160405180910390a36109b9565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610b7c610361565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610c535760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016104d7565b8060026000828254610c659190610fb1565b90915550506001600160a01b03821660008181526020818152604080832080548601905551848152600080516020611033833981519152910160405180910390a35050565b6001600160a01b038216610d0a5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016104d7565b6001600160a01b03821660009081526020819052604090205481811015610d7e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016104d7565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192916000805160206110338339815191529101610938565b600060208083528351808285015260005b81811015610def57858101830151858201604001528201610dd3565b81811115610e01576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b0381168114610e2e57600080fd5b919050565b60008060408385031215610e4657600080fd5b610e4f83610e17565b946020939093013593505050565b600080600060608486031215610e7257600080fd5b610e7b84610e17565b9250610e8960208501610e17565b9150604084013590509250925092565b600060208284031215610eab57600080fd5b610eb482610e17565b9392505050565b600080600080600080600060e0888a031215610ed657600080fd5b610edf88610e17565b9650610eed60208901610e17565b95506040880135945060608801359350608088013560ff81168114610f1157600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f4157600080fd5b610f4a83610e17565b9150610f5860208401610e17565b90509250929050565b600181811c90821680610f7557607f821691505b602082108103610f9557634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008219821115610fc457610fc4610f9b565b500190565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161102b5761102b610f9b565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa26469706673582212208b7986f78e961ad6c0885b86b24ce427045be98073c1f3d7fe18180542ab873564736f6c634300080f0033506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663aa26469706673582212207321963add10aa42fbf70097691018c23164a96132c6cd71e46023fffa7d461764736f6c634300080f00338203e88080777dd3dc8232ea55dbedf0681a6a9134de7200ab1334a6015345d9257ef62971780fe992e94f761de3335283ba6c1d9f3f512e05503d4526f62eb9644a1cf5681c", - "receipt": { - "status": 1, - "gasUsed": "0x3d3cde", - "logs": [] - }, - "createAddress": "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" - }, - { - "rawTx": "0xf887028083989680949d98deabc42dd696deb9e40b4f1cab7ddbf5598880b864647c576c0000000000000000000000000000000000000000000000000000000000000001000000000000000000000000ae4bb80be56b819606589de61d5ec3b522eeb03200000000000000000000000000000000000000000000000000000000000000008203e8808052465a317fd5c147ded90409a32915bbe579c557787787abbc17e67a47f773694f7fa1fd7b14ab8175e1725ec18cee985bcc262340ad5a215b097f2b3a880ee41b", - "receipt": { - "status": 1, - "gasUsed": "0x016aa5", - "logs": [ - [ - "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988", - [ - "0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498" - ], - "0x0000000000000000000000000000000000000000000000000000000000000001" - ] - ] - }, - "createAddress": null + }, + { + "contractName": "ProxyAdmin", + "balance": "0", + "nonce": "1", + "address": "0xF4041D86682E321927b1AEFEf2c1086A67E2b954", + "bytecode": "0x60806040526004361061006b5760003560e01c8063204e1c7a14610070578063715018a6146100a65780637eff275e146100bd5780638da5cb5b146100dd5780639623609d146100fb57806399a88ec41461010e578063f2fde38b1461012e578063f3b7dead1461014e575b600080fd5b34801561007c57600080fd5b5061009061008b366004610483565b61016e565b60405161009d91906104a7565b60405180910390f35b3480156100b257600080fd5b506100bb6101ff565b005b3480156100c957600080fd5b506100bb6100d83660046104bb565b610213565b3480156100e957600080fd5b506000546001600160a01b0316610090565b6100bb61010936600461050a565b61027d565b34801561011a57600080fd5b506100bb6101293660046104bb565b6102ec565b34801561013a57600080fd5b506100bb610149366004610483565b610320565b34801561015a57600080fd5b50610090610169366004610483565b61039e565b6000806000836001600160a01b031660405161019490635c60da1b60e01b815260040190565b600060405180830381855afa9150503d80600081146101cf576040519150601f19603f3d011682016040523d82523d6000602084013e6101d4565b606091505b5091509150816101e357600080fd5b808060200190518101906101f791906105e0565b949350505050565b6102076103c4565b610211600061041e565b565b61021b6103c4565b6040516308f2839760e41b81526001600160a01b03831690638f283970906102479084906004016104a7565b600060405180830381600087803b15801561026157600080fd5b505af1158015610275573d6000803e3d6000fd5b505050505050565b6102856103c4565b60405163278f794360e11b81526001600160a01b03841690634f1ef2869034906102b590869086906004016105fd565b6000604051808303818588803b1580156102ce57600080fd5b505af11580156102e2573d6000803e3d6000fd5b5050505050505050565b6102f46103c4565b604051631b2ce7f360e11b81526001600160a01b03831690633659cfe6906102479084906004016104a7565b6103286103c4565b6001600160a01b0381166103925760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61039b8161041e565b50565b6000806000836001600160a01b0316604051610194906303e1469160e61b815260040190565b6000546001600160a01b031633146102115760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610389565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461039b57600080fd5b60006020828403121561049557600080fd5b81356104a08161046e565b9392505050565b6001600160a01b0391909116815260200190565b600080604083850312156104ce57600080fd5b82356104d98161046e565b915060208301356104e98161046e565b809150509250929050565b634e487b7160e01b600052604160045260246000fd5b60008060006060848603121561051f57600080fd5b833561052a8161046e565b9250602084013561053a8161046e565b9150604084013567ffffffffffffffff8082111561055757600080fd5b818601915086601f83011261056b57600080fd5b81358181111561057d5761057d6104f4565b604051601f8201601f19908116603f011681019083821181831017156105a5576105a56104f4565b816040528281528960208487010111156105be57600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6000602082840312156105f257600080fd5b81516104a08161046e565b60018060a01b038316815260006020604081840152835180604085015260005b818110156106395785810183015185820160600152820161061d565b506000606082860101526060601f19601f83011685010192505050939250505056fea26469706673582212206232e2e10dd0ae62d268793365a9581496905b1311fa12c8e65667fb563742fa64736f6c63430008110033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x000000000000000000000000dead72fd97a579e98aef2f9eb190066e1858d15a" } + }, + { + "contractName": "PolygonZkEVMBridge implementation", + "balance": "0", + "nonce": "1", + "address": "0xe74D91A48dD2ED0a9f5585368abDED7AF071b12C", + "bytecode": "0x608060405260043610620001435760003560e01c80633e19704311620000b9578063bab161bf1162000078578063bab161bf14620003e6578063d02103ca1462000420578063d96a15f71462000449578063dbc169761462000460578063ee25560b1462000478578063fb57083414620004a957600080fd5b80633e19704314620002f8578063647c576c146200031d57806381b1c17414620003425780639e34070f146200037c578063aaa13cc214620003c157600080fd5b80632d2c9d9411620001065780632d2c9d9414620002035780632dfdf0b51462000228578063318aee3d146200024f57806334ac9cf214620002be5780633ae0504714620002e057600080fd5b80630871e971146200014857806315064c9614620001615780632072f6c5146200019257806322e95f2c14620001aa5780632cffd02e14620001de575b600080fd5b6200015f6200015936600462002418565b620004ce565b005b3480156200016e57600080fd5b506068546200017d9060ff1681565b60405190151581526020015b60405180910390f35b3480156200019f57600080fd5b506200015f620008df565b348015620001b757600080fd5b50620001cf620001c9366004620024a4565b62000917565b604051620001899190620024e0565b348015620001eb57600080fd5b506200015f620001fd36600462002507565b6200096a565b3480156200021057600080fd5b506200015f6200022236600462002507565b62000d6e565b3480156200023557600080fd5b506200024060535481565b60405190815260200162000189565b3480156200025c57600080fd5b50620002996200026e366004620025ec565b606b6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b0390911660208301520162000189565b348015620002cb57600080fd5b50606c54620001cf906001600160a01b031681565b348015620002ed57600080fd5b506200024062000ebd565b3480156200030557600080fd5b50620002406200031736600462002623565b62000fa3565b3480156200032a57600080fd5b506200015f6200033c366004620026ad565b62001030565b3480156200034f57600080fd5b50620001cf62000361366004620026fd565b606a602052600090815260409020546001600160a01b031681565b3480156200038957600080fd5b506200017d6200039b366004620026fd565b600881901c600090815260696020526040902054600160ff9092169190911b9081161490565b348015620003ce57600080fd5b50620001cf620003e036600462002717565b620011ad565b348015620003f357600080fd5b506068546200040a90610100900463ffffffff1681565b60405163ffffffff909116815260200162000189565b3480156200042d57600080fd5b50606854620001cf90600160281b90046001600160a01b031681565b6200015f6200045a366004620027ca565b620012c4565b3480156200046d57600080fd5b506200015f62001448565b3480156200048557600080fd5b506200024062000497366004620026fd565b60696020526000908152604090205481565b348015620004b657600080fd5b506200017d620004c836600462002834565b6200147e565b60685460ff1615620004f357604051630bc011ff60e21b815260040160405180910390fd5b620004fd62001567565b60685463ffffffff868116610100909204161480620005235750600263ffffffff861610155b1562000542576040516302caf51760e11b815260040160405180910390fd5b6000806060856001600160a01b038a166200058257863414620005785760405163b89240f560e01b815260040160405180910390fd5b60009250620007e7565b3415620005a25760405163798ee6f160e01b815260040160405180910390fd5b6001600160a01b03808b166000908152606b602090815260409182902082518084019093525463ffffffff81168352640100000000900490921691810182905290156200066157604051632770a7eb60e21b81526001600160a01b038c1690639dc29fac90620006199033908c9060040162002881565b600060405180830381600087803b1580156200063457600080fd5b505af115801562000649573d6000803e3d6000fd5b505050508060200151945080600001519350620007e5565b85156200067657620006768b898989620015c2565b6040516370a0823160e01b81526000906001600160a01b038d16906370a0823190620006a7903090600401620024e0565b602060405180830381865afa158015620006c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620006eb91906200289a565b9050620007046001600160a01b038d1633308c62001925565b6040516370a0823160e01b81526000906001600160a01b038e16906370a082319062000735903090600401620024e0565b602060405180830381865afa15801562000753573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200077991906200289a565b9050620007878282620028ca565b6068548e9850610100900463ffffffff1696509350620007a78762001992565b620007b28e62001a59565b620007bd8f62001b17565b604051602001620007d19392919062002934565b604051602081830303815290604052945050505b505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600084868c8c86886053546040516200082998979695949392919062002971565b60405180910390a1620008546200084e600085878d8d87898051906020012062000fa3565b62001bd8565b606854600160281b90046001600160a01b03166333d6247d6200087662000ebd565b6040518263ffffffff1660e01b81526004016200089591815260200190565b600060405180830381600087803b158015620008b057600080fd5b505af1158015620008c5573d6000803e3d6000fd5b5050505050505050620008d760018055565b505050505050565b606c546001600160a01b031633146200090b5760405163e2e8106b60e01b815260040160405180910390fd5b6200091562001cdc565b565b6000606a6000848460405160200162000932929190620029de565b60408051601f19818403018152918152815160209283012083529082019290925201600020546001600160a01b031690505b92915050565b60685460ff16156200098f57604051630bc011ff60e21b815260040160405180910390fd5b620009a68b8b8b8b8b8b8b8b8b8b8b600062001d39565b6001600160a01b03861662000a4f57604080516000808252602082019092526001600160a01b038616908590604051620009e1919062002a1e565b60006040518083038185875af1925050503d806000811462000a20576040519150601f19603f3d011682016040523d82523d6000602084013e62000a25565b606091505b505090508062000a4857604051630ce8f45160e31b815260040160405180910390fd5b5062000d20565b60685463ffffffff61010090910481169088160362000a845762000a7e6001600160a01b038716858562001eb7565b62000d20565b6000878760405160200162000a9b929190620029de565b60408051601f1981840301815291815281516020928301206000818152606a9093529120549091506001600160a01b03168062000cb8576000808062000ae48688018862002af5565b92509250925060008584848460405162000afe9062002391565b62000b0c9392919062002934565b8190604051809103906000f590508015801562000b2d573d6000803e3d6000fd5b506040516340c10f1960e01b81529091506001600160a01b038216906340c10f199062000b61908d908d9060040162002881565b600060405180830381600087803b15801562000b7c57600080fd5b505af115801562000b91573d6000803e3d6000fd5b5050505080606a600088815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060405180604001604052808e63ffffffff1681526020018d6001600160a01b0316815250606b6000836001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160000160046101000a8154816001600160a01b0302191690836001600160a01b031602179055509050507f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398d8d838b8b60405162000ca695949392919062002b93565b60405180910390a15050505062000d1d565b6040516340c10f1960e01b81526001600160a01b038216906340c10f199062000ce8908990899060040162002881565b600060405180830381600087803b15801562000d0357600080fd5b505af115801562000d18573d6000803e3d6000fd5b505050505b50505b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838a8888878760405162000d5995949392919062002bce565b60405180910390a15050505050505050505050565b60685460ff161562000d9357604051630bc011ff60e21b815260040160405180910390fd5b62000daa8b8b8b8b8b8b8b8b8b8b8b600162001d39565b6000846001600160a01b031684888a868660405160240162000dd0949392919062002c05565b60408051601f198184030181529181526020820180516001600160e01b0316630c035af960e11b1790525162000e07919062002a1e565b60006040518083038185875af1925050503d806000811462000e46576040519150601f19603f3d011682016040523d82523d6000602084013e62000e4b565b606091505b505090508062000e6e576040516337e391c360e01b815260040160405180910390fd5b7f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459838b8989888860405162000ea795949392919062002bce565b60405180910390a1505050505050505050505050565b605354600090819081805b602081101562000f9a578083901c60011660010362000f2b576033816020811062000ef75762000ef762002c42565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000f58565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b6040805160208101849052908101839052606001604051602081830303815290604052805190602001209150808062000f919062002c58565b91505062000ec8565b50919392505050565b6040516001600160f81b031960f889901b1660208201526001600160e01b031960e088811b821660218401526001600160601b0319606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b600054610100900460ff1615808015620010515750600054600160ff909116105b806200106d5750303b1580156200106d575060005460ff166001145b620010d65760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff191660011790558015620010fa576000805461ff0019166101001790555b60688054610100600160c81b03191661010063ffffffff87160265010000000000600160c81b03191617600160281b6001600160a01b038681169190910291909117909155606c80546001600160a01b0319169184169190911790556200116062001ed9565b8015620011a7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6000808888604051602001620011c5929190620029de565b604051602081830303815290604052805190602001209050600060ff60f81b308360405180602001620011f89062002391565b601f1982820381018352601f90910116604081905262001225908d908d908d908d908d9060200162002c74565b60408051601f198184030181529082905262001245929160200162002cb5565b604051602081830303815290604052805190602001206040516020016200129e94939291906001600160f81b031994909416845260609290921b6001600160601b03191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60685460ff1615620012e957604051630bc011ff60e21b815260040160405180910390fd5b60685463ffffffff8581166101009092041614806200130f5750600263ffffffff851610155b156200132e576040516302caf51760e11b815260040160405180910390fd5b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001606860019054906101000a900463ffffffff16338787348888605354604051620013849998979695949392919062002ce8565b60405180910390a1620013cd6200084e6001606860019054906101000a900463ffffffff16338888348989604051620013bf92919062002d57565b604051809103902062000fa3565b606854600160281b90046001600160a01b03166333d6247d620013ef62000ebd565b6040518263ffffffff1660e01b81526004016200140e91815260200190565b600060405180830381600087803b1580156200142957600080fd5b505af11580156200143e573d6000803e3d6000fd5b5050505050505050565b606c546001600160a01b03163314620014745760405163e2e8106b60e01b815260040160405180910390fd5b6200091562001f0d565b600084815b60208110156200155957600163ffffffff8616821c81169003620014f557858160208110620014b657620014b662002c42565b602002013582604051602001620014d7929190918252602082015260400190565b60405160208183030381529060405280519060200120915062001544565b818682602081106200150b576200150b62002c42565b60200201356040516020016200152b929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b80620015508162002c58565b91505062001483565b50821490505b949350505050565b600260015403620015bb5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401620010cd565b6002600155565b6000620015d3600482848662002d67565b620015de9162002d93565b9050632afa533160e01b6001600160e01b03198216016200177f57600080808080808062001610896004818d62002d67565b8101906200161f919062002dc4565b9650965096509650965096509650336001600160a01b0316876001600160a01b031614620016605760405163912ecce760e01b815260040160405180910390fd5b6001600160a01b03861630146200168a5760405163750643af60e01b815260040160405180910390fd5b8a8514620016ab576040516303fffc4b60e01b815260040160405180910390fd5b604080516001600160a01b0389811660248301528881166044830152606482018890526084820187905260ff861660a483015260c4820185905260e48083018590528351808403909101815261010490920183526020820180516001600160e01b031663d505accf60e01b1790529151918e16916200172b919062002a1e565b6000604051808303816000865af19150503d80600081146200176a576040519150601f19603f3d011682016040523d82523d6000602084013e6200176f565b606091505b505050505050505050506200191e565b6001600160e01b031981166323f2ebc360e21b14620017b157604051637141605d60e11b815260040160405180910390fd5b600080808080808080620017c98a6004818e62002d67565b810190620017d8919062002e2e565b97509750975097509750975097509750336001600160a01b0316886001600160a01b0316146200181b5760405163912ecce760e01b815260040160405180910390fd5b6001600160a01b0387163014620018455760405163750643af60e01b815260040160405180910390fd5b604080516001600160a01b038a811660248301528981166044830152606482018990526084820188905286151560a483015260ff861660c483015260e482018590526101048083018590528351808403909101815261012490920183526020820180516001600160e01b03166323f2ebc360e21b1790529151918f1691620018ce919062002a1e565b6000604051808303816000865af19150503d80600081146200190d576040519150601f19603f3d011682016040523d82523d6000602084013e62001912565b606091505b50505050505050505050505b5050505050565b6040516001600160a01b0380851660248301528316604482015260648101829052620011a79085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915262001f66565b60408051600481526024810182526020810180516001600160e01b03166306fdde0360e01b179052905160609160009182916001600160a01b03861691620019db919062002a1e565b600060405180830381855afa9150503d806000811462001a18576040519150601f19603f3d011682016040523d82523d6000602084013e62001a1d565b606091505b50915091508162001a4e57604051806040016040528060078152602001664e4f5f4e414d4560c81b8152506200155f565b6200155f816200203f565b60408051600481526024810182526020810180516001600160e01b03166395d89b4160e01b179052905160609160009182916001600160a01b0386169162001aa2919062002a1e565b600060405180830381855afa9150503d806000811462001adf576040519150601f19603f3d011682016040523d82523d6000602084013e62001ae4565b606091505b50915091508162001a4e57604051806040016040528060098152602001681393d7d4d6535093d360ba1b8152506200155f565b60408051600481526024810182526020810180516001600160e01b031663313ce56760e01b1790529051600091829182916001600160a01b0386169162001b5f919062002a1e565b600060405180830381855afa9150503d806000811462001b9c576040519150601f19603f3d011682016040523d82523d6000602084013e62001ba1565b606091505b509150915081801562001bb5575080516020145b62001bc25760126200155f565b808060200190518101906200155f919062002eba565b80600162001be96020600262002fd7565b62001bf59190620028ca565b6053541062001c17576040516377ae67b360e11b815260040160405180910390fd5b600060536000815462001c2a9062002c58565b9182905550905060005b602081101562001cc6578082901c60011660010362001c6c57826033826020811062001c645762001c6462002c42565b015550505050565b6033816020811062001c825762001c8262002c42565b01546040805160208101929092528101849052606001604051602081830303815290604052805190602001209250808062001cbd9062002c58565b91505062001c34565b5062001cd162002fe5565b505050565b60018055565b60685460ff161562001d0157604051630bc011ff60e21b815260040160405180910390fd5b6068805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b62001d4a8b63ffffffff16620021e8565b6068546040805160208082018e90528183018d9052825180830384018152606083019384905280519101206312bd9b1960e11b9092526064810191909152600091600160281b90046001600160a01b03169063257b3632906084016020604051808303816000875af115801562001dc5573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001deb91906200289a565b90508060000362001e0e57604051622f6fad60e01b815260040160405180910390fd5b60685463ffffffff888116610100909204161462001e3f576040516302caf51760e11b815260040160405180910390fd5b606854600090610100900463ffffffff1662001e5d57508962001e60565b508a5b62001e8962001e80848c8c8c8c8c8c8c604051620013bf92919062002d57565b8f8f846200147e565b62001ea7576040516338105f3b60e21b815260040160405180910390fd5b5050505050505050505050505050565b62001cd18363a9059cbb60e01b84846040516024016200195a92919062002881565b600054610100900460ff1662001f035760405162461bcd60e51b8152600401620010cd9062002ffb565b6200091562002234565b60685460ff1662001f3157604051635386698160e01b815260040160405180910390fd5b6068805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b600062001fbd826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166200225e9092919063ffffffff16565b80519091501562001cd1578080602001905181019062001fde919062003046565b62001cd15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b6064820152608401620010cd565b6060604082511062002061578180602001905181019062000964919062003066565b8151602003620021b55760005b602081108015620020a157508281815181106200208f576200208f62002c42565b01602001516001600160f81b03191615155b15620020bc5780620020b38162002c58565b9150506200206e565b80600003620020f55750506040805180820190915260128152714e4f545f56414c49445f454e434f44494e4760701b6020820152919050565b6000816001600160401b0381111562002112576200211262002a08565b6040519080825280601f01601f1916602001820160405280156200213d576020820181803683370190505b50905060005b82811015620021ad5784818151811062002161576200216162002c42565b602001015160f81c60f81b82828151811062002181576200218162002c42565b60200101906001600160f81b031916908160001a90535080620021a48162002c58565b91505062002143565b509392505050565b50506040805180820190915260128152714e4f545f56414c49445f454e434f44494e4760701b602082015290565b919050565b600881901c60008181526069602052604081208054600160ff861690811b918218928390559290919081831690036200191e57604051630c8d9eab60e31b815260040160405180910390fd5b600054610100900460ff1662001cd65760405162461bcd60e51b8152600401620010cd9062002ffb565b60606200155f848460008585600080866001600160a01b0316858760405162002288919062002a1e565b60006040518083038185875af1925050503d8060008114620022c7576040519150601f19603f3d011682016040523d82523d6000602084013e620022cc565b606091505b5091509150620022df87838387620022ea565b979650505050505050565b606083156200235e57825160000362002356576001600160a01b0385163b620023565760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401620010cd565b50816200155f565b6200155f8383815115620023755781518083602001fd5b8060405162461bcd60e51b8152600401620010cd9190620030e5565b61159c80620030fb83390190565b6001600160a01b0381168114620023b557600080fd5b50565b803563ffffffff81168114620021e357600080fd5b60008083601f840112620023e057600080fd5b5081356001600160401b03811115620023f857600080fd5b6020830191508360208285010111156200241157600080fd5b9250929050565b60008060008060008060a087890312156200243257600080fd5b86356200243f816200239f565b95506200244f60208801620023b8565b9450604087013562002461816200239f565b93506060870135925060808701356001600160401b038111156200248457600080fd5b6200249289828a01620023cd565b979a9699509497509295939492505050565b60008060408385031215620024b857600080fd5b620024c383620023b8565b91506020830135620024d5816200239f565b809150509250929050565b6001600160a01b0391909116815260200190565b8061040081018310156200096457600080fd5b60008060008060008060008060008060006105208c8e0312156200252a57600080fd5b620025368d8d620024f4565b9a50620025476104008d01620023b8565b99506104208c013598506104408c01359750620025686104608d01620023b8565b96506104808c01356200257b816200239f565b95506200258c6104a08d01620023b8565b94506104c08c01356200259f816200239f565b93506104e08c013592506105008c01356001600160401b03811115620025c457600080fd5b620025d28e828f01620023cd565b915080935050809150509295989b509295989b9093969950565b600060208284031215620025ff57600080fd5b81356200260c816200239f565b9392505050565b60ff81168114620023b557600080fd5b600080600080600080600060e0888a0312156200263f57600080fd5b87356200264c8162002613565b96506200265c60208901620023b8565b955060408801356200266e816200239f565b94506200267e60608901620023b8565b9350608088013562002690816200239f565b9699959850939692959460a0840135945060c09093013592915050565b600080600060608486031215620026c357600080fd5b620026ce84620023b8565b92506020840135620026e0816200239f565b91506040840135620026f2816200239f565b809150509250925092565b6000602082840312156200271057600080fd5b5035919050565b600080600080600080600060a0888a0312156200273357600080fd5b6200273e88620023b8565b9650602088013562002750816200239f565b955060408801356001600160401b03808211156200276d57600080fd5b6200277b8b838c01620023cd565b909750955060608a01359150808211156200279557600080fd5b50620027a48a828b01620023cd565b9094509250506080880135620027ba8162002613565b8091505092959891949750929550565b60008060008060608587031215620027e157600080fd5b620027ec85620023b8565b93506020850135620027fe816200239f565b925060408501356001600160401b038111156200281a57600080fd5b6200282887828801620023cd565b95989497509550505050565b60008060008061046085870312156200284c57600080fd5b843593506200285f8660208701620024f4565b9250620028706104208601620023b8565b939692955092936104400135925050565b6001600160a01b03929092168252602082015260400190565b600060208284031215620028ad57600080fd5b5051919050565b634e487b7160e01b600052601160045260246000fd5b81810381811115620009645762000964620028b4565b60005b83811015620028fd578181015183820152602001620028e3565b50506000910152565b6000815180845262002920816020860160208601620028e0565b601f01601f19169290920160200192915050565b60608152600062002949606083018662002906565b82810360208401526200295d818662002906565b91505060ff83166040830152949350505050565b60ff8916815263ffffffff88811660208301526001600160a01b03888116604084015287821660608401528616608083015260a0820185905261010060c08301819052600091620029c58483018762002906565b925080851660e085015250509998505050505050505050565b60e09290921b6001600160e01b031916825260601b6001600160601b031916600482015260180190565b634e487b7160e01b600052604160045260246000fd5b6000825162002a32818460208701620028e0565b9190910192915050565b604051601f8201601f191681016001600160401b038111828210171562002a675762002a6762002a08565b604052919050565b60006001600160401b0382111562002a8b5762002a8b62002a08565b50601f01601f191660200190565b600082601f83011262002aab57600080fd5b813562002ac262002abc8262002a6f565b62002a3c565b81815284602083860101111562002ad857600080fd5b816020850160208301376000918101602001919091529392505050565b60008060006060848603121562002b0b57600080fd5b83356001600160401b038082111562002b2357600080fd5b62002b318783880162002a99565b9450602086013591508082111562002b4857600080fd5b5062002b578682870162002a99565b9250506040840135620026f28162002613565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff861681526001600160a01b03858116602083015284166040820152608060608201819052600090620022df908301848662002b6a565b63ffffffff95861681529390941660208401526001600160a01b039182166040840152166060820152608081019190915260a00190565b6001600160a01b038516815263ffffffff8416602082015260606040820181905260009062002c38908301848662002b6a565b9695505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820162002c6d5762002c6d620028b4565b5060010190565b60608152600062002c8a60608301878962002b6a565b828103602084015262002c9f81868862002b6a565b91505060ff831660408301529695505050505050565b6000835162002cc9818460208801620028e0565b83519083019062002cdf818360208801620028e0565b01949350505050565b60ff8a16815263ffffffff89811660208301526001600160a01b03898116604084015288821660608401528716608083015260a0820186905261010060c0830181905260009162002d3d848301878962002b6a565b925080851660e085015250509a9950505050505050505050565b8183823760009101908152919050565b6000808585111562002d7857600080fd5b8386111562002d8657600080fd5b5050820193919092039150565b6001600160e01b0319813581811691600485101562002dbc5780818660040360031b1b83161692505b505092915050565b600080600080600080600060e0888a03121562002de057600080fd5b873562002ded816200239f565b9650602088013562002dff816200239f565b955060408801359450606088013593506080880135620026908162002613565b8015158114620023b557600080fd5b600080600080600080600080610100898b03121562002e4c57600080fd5b883562002e59816200239f565b9750602089013562002e6b816200239f565b96506040890135955060608901359450608089013562002e8b8162002e1f565b935060a089013562002e9d8162002613565b979a969950949793969295929450505060c08201359160e0013590565b60006020828403121562002ecd57600080fd5b81516200260c8162002613565b600181815b8085111562002f1b57816000190482111562002eff5762002eff620028b4565b8085161562002f0d57918102915b93841c939080029062002edf565b509250929050565b60008262002f345750600162000964565b8162002f435750600062000964565b816001811462002f5c576002811462002f675762002f87565b600191505062000964565b60ff84111562002f7b5762002f7b620028b4565b50506001821b62000964565b5060208310610133831016604e8410600b841016171562002fac575081810a62000964565b62002fb8838362002eda565b806000190482111562002fcf5762002fcf620028b4565b029392505050565b60006200260c838362002f23565b634e487b7160e01b600052600160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6000602082840312156200305957600080fd5b81516200260c8162002e1f565b6000602082840312156200307957600080fd5b81516001600160401b038111156200309057600080fd5b8201601f81018413620030a257600080fd5b8051620030b362002abc8262002a6f565b818152856020838501011115620030c957600080fd5b620030dc826020830160208601620028e0565b95945050505050565b6020815260006200260c60208301846200290656fe6101006040523480156200001257600080fd5b506040516200159c3803806200159c83398101604081905262000035916200028d565b82826003620000458382620003a1565b506004620000548282620003a1565b50503360c0525060ff811660e052466080819052620000739062000080565b60a052506200046d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000ad6200012e565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6060600380546200013f9062000312565b80601f01602080910402602001604051908101604052809291908181526020018280546200016d9062000312565b8015620001be5780601f106200019257610100808354040283529160200191620001be565b820191906000526020600020905b815481529060010190602001808311620001a057829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f057600080fd5b81516001600160401b03808211156200020d576200020d620001c8565b604051601f8301601f19908116603f01168101908282118183101715620002385762000238620001c8565b816040528381526020925086838588010111156200025557600080fd5b600091505b838210156200027957858201830151818301840152908201906200025a565b600093810190920192909252949350505050565b600080600060608486031215620002a357600080fd5b83516001600160401b0380821115620002bb57600080fd5b620002c987838801620001de565b94506020860151915080821115620002e057600080fd5b50620002ef86828701620001de565b925050604084015160ff811681146200030757600080fd5b809150509250925092565b600181811c908216806200032757607f821691505b6020821081036200034857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200039c57600081815260208120601f850160051c81016020861015620003775750805b601f850160051c820191505b81811015620003985782815560010162000383565b5050505b505050565b81516001600160401b03811115620003bd57620003bd620001c8565b620003d581620003ce845462000312565b846200034e565b602080601f8311600181146200040d5760008415620003f45750858301515b600019600386901b1c1916600185901b17855562000398565b600085815260208120601f198616915b828110156200043e578886015182559484019460019091019084016200041d565b50858210156200045d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e0516110e0620004bc60003960006101f70152600081816102ba015281816104e0015261054e0152600061049101526000818161031f015261045b01526110e06000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c806370a08231116100b8578063a457c2d71161007c578063a457c2d7146102f4578063a9059cbb14610307578063cd0d00961461031a578063d505accf14610341578063dd62ed3e14610354578063ffa1ad741461036757600080fd5b806370a08231146102515780637ecebe001461027a57806395d89b411461029a5780639dc29fac146102a2578063a3c573eb146102b557600080fd5b806330adf81f116100ff57806330adf81f146101c9578063313ce567146101f05780633644e51514610221578063395093511461022957806340c10f191461023c57600080fd5b806306fdde031461013c578063095ea7b31461015a57806318160ddd1461017d57806320606b701461018f57806323b872dd146101b6575b600080fd5b610144610387565b6040516101519190610e26565b60405180910390f35b61016d610168366004610e90565b610419565b6040519015158152602001610151565b6002545b604051908152602001610151565b6101817f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b61016d6101c4366004610eba565b610433565b6101817f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610151565b610181610457565b61016d610237366004610e90565b6104b3565b61024f61024a366004610e90565b6104d5565b005b61018161025f366004610ef6565b6001600160a01b031660009081526020819052604090205490565b610181610288366004610ef6565b60056020526000908152604090205481565b610144610534565b61024f6102b0366004610e90565b610543565b6102dc7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610151565b61016d610302366004610e90565b610595565b61016d610315366004610e90565b610610565b6101817f000000000000000000000000000000000000000000000000000000000000000081565b61024f61034f366004610f18565b61061e565b610181610362366004610f8b565b610859565b610144604051806040016040528060018152602001603160f81b81525081565b60606003805461039690610fbe565b80601f01602080910402602001604051908101604052809291908181526020018280546103c290610fbe565b801561040f5780601f106103e45761010080835404028352916020019161040f565b820191906000526020600020905b8154815290600101906020018083116103f257829003601f168201915b5050505050905090565b600033610427818585610884565b60019150505b92915050565b6000336104418582856109a9565b61044c858585610a23565b506001949350505050565b60007f0000000000000000000000000000000000000000000000000000000000000000461461048e5761048946610bb5565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b6000336104278185856104c68383610859565b6104d0919061100e565b610884565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105265760405162461bcd60e51b815260040161051d90611021565b60405180910390fd5b6105308282610c61565b5050565b60606004805461039690610fbe565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461058b5760405162461bcd60e51b815260040161051d90611021565b6105308282610d0e565b600033816105a38286610859565b9050838110156106035760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b606482015260840161051d565b61044c8286868403610884565b600033610427818585610a23565b8342111561067a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a20457870697265642070656044820152631c9b5a5d60e21b606482015260840161051d565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866106c783611071565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506000610725610457565b60405161190160f01b602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156107b0573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906107e65750896001600160a01b0316816001600160a01b0316145b6108425760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c6964207369604482015266676e617475726560c81b606482015260840161051d565b61084d8a8a8a610884565b50505050505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6001600160a01b0383166108e65760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b606482015260840161051d565b6001600160a01b0382166109475760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b606482015260840161051d565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b60006109b58484610859565b90506000198114610a1d5781811015610a105760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000604482015260640161051d565b610a1d8484848403610884565b50505050565b6001600160a01b038316610a875760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b606482015260840161051d565b6001600160a01b038216610ae95760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b606482015260840161051d565b6001600160a01b03831660009081526020819052604090205481811015610b615760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b606482015260840161051d565b6001600160a01b038481166000818152602081815260408083208787039055938716808352918490208054870190559251858152909260008051602061108b833981519152910160405180910390a3610a1d565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610be0610387565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610cb75760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161051d565b8060026000828254610cc9919061100e565b90915550506001600160a01b0382166000818152602081815260408083208054860190555184815260008051602061108b833981519152910160405180910390a35050565b6001600160a01b038216610d6e5760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161051d565b6001600160a01b03821660009081526020819052604090205481811015610de25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b606482015260840161051d565b6001600160a01b03831660008181526020818152604080832086860390556002805487900390555185815291929160008051602061108b833981519152910161099c565b600060208083528351808285015260005b81811015610e5357858101830151858201604001528201610e37565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b0381168114610e8b57600080fd5b919050565b60008060408385031215610ea357600080fd5b610eac83610e74565b946020939093013593505050565b600080600060608486031215610ecf57600080fd5b610ed884610e74565b9250610ee660208501610e74565b9150604084013590509250925092565b600060208284031215610f0857600080fd5b610f1182610e74565b9392505050565b600080600080600080600060e0888a031215610f3357600080fd5b610f3c88610e74565b9650610f4a60208901610e74565b95506040880135945060608801359350608088013560ff81168114610f6e57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b60008060408385031215610f9e57600080fd5b610fa783610e74565b9150610fb560208401610e74565b90509250929050565b600181811c90821680610fd257607f821691505b602082108103610ff257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561042d5761042d610ff8565b60208082526030908201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60408201526f6c79676f6e5a6b45564d42726964676560801b606082015260800190565b60006001820161108357611083610ff8565b506001019056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220c54f702400844bca54b965f08b878a7ad166d07c77c1b4434783c6c861d64cea64736f6c63430008110033a26469706673582212202aa6f7b7ecc82d0d4918ea3545a938824a9c0c986e4c0adb6b439e9bf3d70d0864736f6c63430008110033" + }, + { + "contractName": "PolygonZkEVMBridge proxy", + "balance": "200000000000000000000000000", + "nonce": "1", + "address": "0xd0a3d58d135e2ee795dFB26ec150D339394254B9", + "bytecode": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106be565b610118565b61005b6100933660046106d9565b610155565b3480156100a457600080fd5b506100ad6101bc565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106be565b6101ed565b3480156100f557600080fd5b506100ad61020d565b610106610269565b6101166101116102fe565b610308565b565b61012061032c565b6001600160a01b0316330361014d5761014a8160405180602001604052806000815250600061035f565b50565b61014a6100fe565b61015d61032c565b6001600160a01b031633036101b4576101af8383838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506001925061035f915050565b505050565b6101af6100fe565b60006101c661032c565b6001600160a01b031633036101e2576101dd6102fe565b905090565b6101ea6100fe565b90565b6101f561032c565b6001600160a01b0316330361014d5761014a8161038a565b600061021761032c565b6001600160a01b031633036101e2576101dd61032c565b606061025383836040518060600160405280602781526020016107d0602791396103de565b9392505050565b6001600160a01b03163b151590565b61027161032c565b6001600160a01b031633036101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101dd610456565b3660008037600080366000845af43d6000803e808015610327573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b6103688361047e565b6000825111806103755750805b156101af57610384838361022e565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f6103b361032c565b604080516001600160a01b03928316815291841660208301520160405180910390a161014a816104be565b6060600080856001600160a01b0316856040516103fb9190610780565b600060405180830381855af49150503d8060008114610436576040519150601f19603f3d011682016040523d82523d6000602084013e61043b565b606091505b509150915061044c86838387610567565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610350565b610487816105e6565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6001600160a01b0381166105235760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b60648201526084016102f5565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b80546001600160a01b0319166001600160a01b039290921691909117905550565b606083156105d45782516000036105cd576105818561025a565b6105cd5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016102f5565b50816105de565b6105de8383610678565b949350505050565b6105ef8161025a565b6106515760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b60648201526084016102f5565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610546565b8151156106885781518083602001fd5b8060405162461bcd60e51b81526004016102f5919061079c565b80356001600160a01b03811681146106b957600080fd5b919050565b6000602082840312156106d057600080fd5b610253826106a2565b6000806000604084860312156106ee57600080fd5b6106f7846106a2565b9250602084013567ffffffffffffffff8082111561071457600080fd5b818601915086601f83011261072857600080fd5b81358181111561073757600080fd5b87602082850101111561074957600080fd5b6020830194508093505050509250925092565b60005b8381101561077757818101518382015260200161075f565b50506000910152565b6000825161079281846020870161075c565b9190910192915050565b60208152600082518060208401526107bb81604085016020870161075c565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a2646970667358221220557373ec903fd3bc4b75a2c6285870c5d4a0ead46cf8edd41db562a58981cc1264736f6c63430008110033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000000": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000001": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x0000000000000000000000000000000000000000000000000000000000000068": "0x00000000000000a40d5f56745a118d0906a34e69aec8c0db1cb8fa0000000100", + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000f4041d86682e321927b1aefef2c1086a67e2b954", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000e74d91a48dd2ed0a9f5585368abded7af071b12c" + } + }, + { + "contractName": "PolygonZkEVMGlobalExitRootL2 implementation", + "balance": "0", + "nonce": "1", + "address": "0xE641334b752d435a5133f64c6DBAB34431A9B9DC", + "bytecode": "0x608060405234801561001057600080fd5b506004361061004c5760003560e01c806301fd904414610051578063257b36321461006d57806333d6247d1461008d578063a3c573eb146100a2575b600080fd5b61005a60015481565b6040519081526020015b60405180910390f35b61005a61007b36600461012f565b60006020819052908152604090205481565b6100a061009b36600461012f565b6100e1565b005b6100c97f000000000000000000000000d0a3d58d135e2ee795dfb26ec150d339394254b981565b6040516001600160a01b039091168152602001610064565b336001600160a01b037f000000000000000000000000d0a3d58d135e2ee795dfb26ec150d339394254b9161461012a5760405163b49365dd60e01b815260040160405180910390fd5b600155565b60006020828403121561014157600080fd5b503591905056fea2646970667358221220859fbbe22cdffd5d3aab670dd9922eb1c7afadaaea0a619f34b3cb92884acce464736f6c63430008110033" + }, + { + "contractName": "PolygonZkEVMGlobalExitRootL2 proxy", + "balance": "0", + "nonce": "1", + "address": "0xa40d5f56745a118d0906a34e69aec8c0db1cb8fa", + "bytecode": "0x60806040526004361061004e5760003560e01c80633659cfe6146100655780634f1ef286146100855780635c60da1b146100985780638f283970146100c9578063f851a440146100e95761005d565b3661005d5761005b6100fe565b005b61005b6100fe565b34801561007157600080fd5b5061005b6100803660046106ca565b610118565b61005b6100933660046106e5565b61015f565b3480156100a457600080fd5b506100ad6101d0565b6040516001600160a01b03909116815260200160405180910390f35b3480156100d557600080fd5b5061005b6100e43660046106ca565b61020b565b3480156100f557600080fd5b506100ad610235565b610106610292565b610116610111610331565b61033b565b565b61012061035f565b6001600160a01b0316336001600160a01b031614156101575761015481604051806020016040528060008152506000610392565b50565b6101546100fe565b61016761035f565b6001600160a01b0316336001600160a01b031614156101c8576101c38383838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525060019250610392915050565b505050565b6101c36100fe565b60006101da61035f565b6001600160a01b0316336001600160a01b03161415610200576101fb610331565b905090565b6102086100fe565b90565b61021361035f565b6001600160a01b0316336001600160a01b0316141561015757610154816103f1565b600061023f61035f565b6001600160a01b0316336001600160a01b03161415610200576101fb61035f565b606061028583836040518060600160405280602781526020016107e460279139610445565b9392505050565b3b151590565b61029a61035f565b6001600160a01b0316336001600160a01b031614156101165760405162461bcd60e51b815260206004820152604260248201527f5472616e73706172656e745570677261646561626c6550726f78793a2061646d60448201527f696e2063616e6e6f742066616c6c6261636b20746f2070726f78792074617267606482015261195d60f21b608482015260a4015b60405180910390fd5b60006101fb610519565b3660008037600080366000845af43d6000803e80801561035a573d6000f35b3d6000fd5b60007fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035b546001600160a01b0316919050565b61039b83610541565b6040516001600160a01b038416907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a26000825111806103dc5750805b156101c3576103eb8383610260565b50505050565b7f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f61041a61035f565b604080516001600160a01b03928316815291841660208301520160405180910390a1610154816105e9565b6060833b6104a45760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610328565b600080856001600160a01b0316856040516104bf9190610794565b600060405180830381855af49150503d80600081146104fa576040519150601f19603f3d011682016040523d82523d6000602084013e6104ff565b606091505b509150915061050f828286610675565b9695505050505050565b60007f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc610383565b803b6105a55760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608401610328565b807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5b80546001600160a01b0319166001600160a01b039290921691909117905550565b6001600160a01b03811661064e5760405162461bcd60e51b815260206004820152602660248201527f455243313936373a206e65772061646d696e20697320746865207a65726f206160448201526564647265737360d01b6064820152608401610328565b807fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61036105c8565b60608315610684575081610285565b8251156106945782518084602001fd5b8160405162461bcd60e51b815260040161032891906107b0565b80356001600160a01b03811681146106c557600080fd5b919050565b6000602082840312156106dc57600080fd5b610285826106ae565b6000806000604084860312156106fa57600080fd5b610703846106ae565b9250602084013567ffffffffffffffff8082111561072057600080fd5b818601915086601f83011261073457600080fd5b81358181111561074357600080fd5b87602082850101111561075557600080fd5b6020830194508093505050509250925092565b60005b8381101561078357818101518382015260200161076b565b838111156103eb5750506000910152565b600082516107a6818460208701610768565b9190910192915050565b60208152600082518060208401526107cf816040850160208701610768565b601f01601f1916919091016040019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212204675187caf3a43285d9a2c1844a981e977bd52a85ff073e7fc649f73847d70a464736f6c63430008090033", + "storage": { + "0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103": "0x000000000000000000000000f4041d86682e321927b1aefef2c1086a67e2b954", + "0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc": "0x000000000000000000000000e641334b752d435a5133f64c6dbab34431a9b9dc" + } + }, + { + "contractName": "PolygonZkEVMTimelock", + "balance": "0", + "nonce": "1", + "address": "0xDEAd72Fd97a579E98AEF2F9EB190066E1858D15a", + "bytecode": "0x6080604052600436106101865760003560e01c806364d62353116100d7578063b1c5f42711610085578063b1c5f427146104dc578063bc197c81146104fc578063c4d252f514610528578063d45c443514610548578063d547741f14610575578063e38335e514610595578063f23a6e61146105a8578063f27a0c92146105d457600080fd5b806364d62353146103f15780638065657f146104115780638f2a0bb0146104315780638f61f4f51461045157806391d1485414610473578063a217fddf14610493578063b08e51c0146104a857600080fd5b8063248a9ca311610134578063248a9ca3146102c45780632ab0f529146102f45780632f2ff15d1461032557806331d507501461034557806336568abe146103655780633a6aae7214610385578063584b153e146103d157600080fd5b806301d5062a1461019257806301ffc9a7146101b457806307bd0265146101e95780630d3cf6fc14610219578063134008d31461024d57806313bc9f2014610260578063150b7a021461028057600080fd5b3661018d57005b600080fd5b34801561019e57600080fd5b506101b26101ad366004611406565b6105e9565b005b3480156101c057600080fd5b506101d46101cf36600461147a565b61066c565b60405190151581526020015b60405180910390f35b3480156101f557600080fd5b5061020b600080516020611df083398151915281565b6040519081526020016101e0565b34801561022557600080fd5b5061020b7f5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca581565b6101b261025b3660046114a4565b610697565b34801561026c57600080fd5b506101d461027b36600461150f565b61073a565b34801561028c57600080fd5b506102ab61029b3660046115dd565b630a85bd0160e11b949350505050565b6040516001600160e01b031990911681526020016101e0565b3480156102d057600080fd5b5061020b6102df36600461150f565b60009081526020819052604090206001015490565b34801561030057600080fd5b506101d461030f36600461150f565b6000908152600160208190526040909120541490565b34801561033157600080fd5b506101b2610340366004611644565b610760565b34801561035157600080fd5b506101d461036036600461150f565b61078a565b34801561037157600080fd5b506101b2610380366004611644565b6107a3565b34801561039157600080fd5b506103b97f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016101e0565b3480156103dd57600080fd5b506101d46103ec36600461150f565b610826565b3480156103fd57600080fd5b506101b261040c36600461150f565b61083c565b34801561041d57600080fd5b5061020b61042c3660046114a4565b6108e0565b34801561043d57600080fd5b506101b261044c3660046116b4565b61091f565b34801561045d57600080fd5b5061020b600080516020611dd083398151915281565b34801561047f57600080fd5b506101d461048e366004611644565b610a5f565b34801561049f57600080fd5b5061020b600081565b3480156104b457600080fd5b5061020b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f78381565b3480156104e857600080fd5b5061020b6104f7366004611765565b610a88565b34801561050857600080fd5b506102ab61051736600461188c565b63bc197c8160e01b95945050505050565b34801561053457600080fd5b506101b261054336600461150f565b610acd565b34801561055457600080fd5b5061020b61056336600461150f565b60009081526001602052604090205490565b34801561058157600080fd5b506101b2610590366004611644565b610ba2565b6101b26105a3366004611765565b610bc7565b3480156105b457600080fd5b506102ab6105c3366004611935565b63f23a6e6160e01b95945050505050565b3480156105e057600080fd5b5061020b610d3f565b600080516020611dd083398151915261060181610dd5565b60006106118989898989896108e0565b905061061d8184610de2565b6000817f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8b8b8b8b8b8a604051610659969594939291906119c2565b60405180910390a3505050505050505050565b60006001600160e01b03198216630271189760e51b1480610691575061069182610ed6565b92915050565b600080516020611df08339815191526106b1816000610a5f565b6106bf576106bf8133610f0b565b60006106cf8888888888886108e0565b90506106db8185610f64565b6106e788888888611000565b6000817fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b588a8a8a8a60405161071f94939291906119ff565b60405180910390a3610730816110d3565b5050505050505050565b6000818152600160205260408120546001811180156107595750428111155b9392505050565b60008281526020819052604090206001015461077b81610dd5565b610785838361110c565b505050565b60008181526001602052604081205481905b1192915050565b6001600160a01b03811633146108185760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b6108228282611190565b5050565b600081815260016020819052604082205461079c565b33301461089f5760405162461bcd60e51b815260206004820152602b60248201527f54696d656c6f636b436f6e74726f6c6c65723a2063616c6c6572206d7573742060448201526a62652074696d656c6f636b60a81b606482015260840161080f565b60025460408051918252602082018390527f11c24f4ead16507c69ac467fbd5e4eed5fb5c699626d2cc6d66421df253886d5910160405180910390a1600255565b60008686868686866040516020016108fd969594939291906119c2565b6040516020818303038152906040528051906020012090509695505050505050565b600080516020611dd083398151915261093781610dd5565b8887146109565760405162461bcd60e51b815260040161080f90611a31565b8885146109755760405162461bcd60e51b815260040161080f90611a31565b60006109878b8b8b8b8b8b8b8b610a88565b90506109938184610de2565b60005b8a811015610a515780827f4cf4410cc57040e44862ef0f45f3dd5a5e02db8eb8add648d4b0e236f1d07dca8e8e858181106109d3576109d3611a74565b90506020020160208101906109e89190611a8a565b8d8d868181106109fa576109fa611a74565b905060200201358c8c87818110610a1357610a13611a74565b9050602002810190610a259190611aa5565b8c8b604051610a39969594939291906119c2565b60405180910390a3610a4a81611b01565b9050610996565b505050505050505050505050565b6000918252602082815260408084206001600160a01b0393909316845291905290205460ff1690565b60008888888888888888604051602001610aa9989796959493929190611bab565b60405160208183030381529060405280519060200120905098975050505050505050565b7ffd643c72710c63c0180259aba6b2d05451e3591a24e58b62239378085726f783610af781610dd5565b610b0082610826565b610b665760405162461bcd60e51b815260206004820152603160248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e2063616044820152701b9b9bdd0818994818d85b98d95b1b1959607a1b606482015260840161080f565b6000828152600160205260408082208290555183917fbaa1eb22f2a492ba1a5fea61b8df4d27c6c8b5f3971e63bb58fa14ff72eedb7091a25050565b600082815260208190526040902060010154610bbd81610dd5565b6107858383611190565b600080516020611df0833981519152610be1816000610a5f565b610bef57610bef8133610f0b565b878614610c0e5760405162461bcd60e51b815260040161080f90611a31565b878414610c2d5760405162461bcd60e51b815260040161080f90611a31565b6000610c3f8a8a8a8a8a8a8a8a610a88565b9050610c4b8185610f64565b60005b89811015610d295760008b8b83818110610c6a57610c6a611a74565b9050602002016020810190610c7f9190611a8a565b905060008a8a84818110610c9557610c95611a74565b9050602002013590503660008a8a86818110610cb357610cb3611a74565b9050602002810190610cc59190611aa5565b91509150610cd584848484611000565b84867fc2617efa69bab66782fa219543714338489c4e9e178271560a91b82c3f612b5886868686604051610d0c94939291906119ff565b60405180910390a35050505080610d2290611b01565b9050610c4e565b50610d33816110d3565b50505050505050505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166315064c966040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d9f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dc39190611c4c565b15610dce5750600090565b5060025490565b610ddf8133610f0b565b50565b610deb8261078a565b15610e505760405162461bcd60e51b815260206004820152602f60248201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e20616c60448201526e1c9958591e481cd8da19591d5b1959608a1b606482015260840161080f565b610e58610d3f565b811015610eb65760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a20696e73756666696369656e746044820152652064656c617960d01b606482015260840161080f565b610ec08142611c6e565b6000928352600160205260409092209190915550565b60006001600160e01b03198216637965db0b60e01b148061069157506301ffc9a760e01b6001600160e01b0319831614610691565b610f158282610a5f565b61082257610f22816111f5565b610f2d836020611207565b604051602001610f3e929190611ca5565b60408051601f198184030181529082905262461bcd60e51b825261080f91600401611d14565b610f6d8261073a565b610f895760405162461bcd60e51b815260040161080f90611d47565b801580610fa55750600081815260016020819052604090912054145b6108225760405162461bcd60e51b815260206004820152602660248201527f54696d656c6f636b436f6e74726f6c6c65723a206d697373696e6720646570656044820152656e64656e637960d01b606482015260840161080f565b6000846001600160a01b031684848460405161101d929190611d91565b60006040518083038185875af1925050503d806000811461105a576040519150601f19603f3d011682016040523d82523d6000602084013e61105f565b606091505b50509050806110cc5760405162461bcd60e51b815260206004820152603360248201527f54696d656c6f636b436f6e74726f6c6c65723a20756e6465726c79696e6720746044820152721c985b9cd858dd1a5bdb881c995d995c9d1959606a1b606482015260840161080f565b5050505050565b6110dc8161073a565b6110f85760405162461bcd60e51b815260040161080f90611d47565b600090815260016020819052604090912055565b6111168282610a5f565b610822576000828152602081815260408083206001600160a01b03851684529091529020805460ff1916600117905561114c3390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b61119a8282610a5f565b15610822576000828152602081815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60606106916001600160a01b03831660145b60606000611216836002611da1565b611221906002611c6e565b6001600160401b0381111561123857611238611528565b6040519080825280601f01601f191660200182016040528015611262576020820181803683370190505b509050600360fc1b8160008151811061127d5761127d611a74565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106112ac576112ac611a74565b60200101906001600160f81b031916908160001a90535060006112d0846002611da1565b6112db906001611c6e565b90505b6001811115611353576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061130f5761130f611a74565b1a60f81b82828151811061132557611325611a74565b60200101906001600160f81b031916908160001a90535060049490941c9361134c81611db8565b90506112de565b5083156107595760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161080f565b80356001600160a01b03811681146113b957600080fd5b919050565b60008083601f8401126113d057600080fd5b5081356001600160401b038111156113e757600080fd5b6020830191508360208285010111156113ff57600080fd5b9250929050565b600080600080600080600060c0888a03121561142157600080fd5b61142a886113a2565b96506020880135955060408801356001600160401b0381111561144c57600080fd5b6114588a828b016113be565b989b979a50986060810135976080820135975060a09091013595509350505050565b60006020828403121561148c57600080fd5b81356001600160e01b03198116811461075957600080fd5b60008060008060008060a087890312156114bd57600080fd5b6114c6876113a2565b95506020870135945060408701356001600160401b038111156114e857600080fd5b6114f489828a016113be565b979a9699509760608101359660809091013595509350505050565b60006020828403121561152157600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b038111828210171561156657611566611528565b604052919050565b600082601f83011261157f57600080fd5b81356001600160401b0381111561159857611598611528565b6115ab601f8201601f191660200161153e565b8181528460208386010111156115c057600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080608085870312156115f357600080fd5b6115fc856113a2565b935061160a602086016113a2565b92506040850135915060608501356001600160401b0381111561162c57600080fd5b6116388782880161156e565b91505092959194509250565b6000806040838503121561165757600080fd5b82359150611667602084016113a2565b90509250929050565b60008083601f84011261168257600080fd5b5081356001600160401b0381111561169957600080fd5b6020830191508360208260051b85010111156113ff57600080fd5b600080600080600080600080600060c08a8c0312156116d257600080fd5b89356001600160401b03808211156116e957600080fd5b6116f58d838e01611670565b909b50995060208c013591508082111561170e57600080fd5b61171a8d838e01611670565b909950975060408c013591508082111561173357600080fd5b506117408c828d01611670565b9a9d999c50979a969997986060880135976080810135975060a0013595509350505050565b60008060008060008060008060a0898b03121561178157600080fd5b88356001600160401b038082111561179857600080fd5b6117a48c838d01611670565b909a50985060208b01359150808211156117bd57600080fd5b6117c98c838d01611670565b909850965060408b01359150808211156117e257600080fd5b506117ef8b828c01611670565b999c989b509699959896976060870135966080013595509350505050565b600082601f83011261181e57600080fd5b813560206001600160401b0382111561183957611839611528565b8160051b61184882820161153e565b928352848101820192828101908785111561186257600080fd5b83870192505b8483101561188157823582529183019190830190611868565b979650505050505050565b600080600080600060a086880312156118a457600080fd5b6118ad866113a2565b94506118bb602087016113a2565b935060408601356001600160401b03808211156118d757600080fd5b6118e389838a0161180d565b945060608801359150808211156118f957600080fd5b61190589838a0161180d565b9350608088013591508082111561191b57600080fd5b506119288882890161156e565b9150509295509295909350565b600080600080600060a0868803121561194d57600080fd5b611956866113a2565b9450611964602087016113a2565b9350604086013592506060860135915060808601356001600160401b0381111561198d57600080fd5b6119288882890161156e565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b60018060a01b038716815285602082015260a0604082015260006119ea60a083018688611999565b60608301949094525060800152949350505050565b60018060a01b0385168152836020820152606060408201526000611a27606083018486611999565b9695505050505050565b60208082526023908201527f54696d656c6f636b436f6e74726f6c6c65723a206c656e677468206d69736d616040820152620e8c6d60eb1b606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611a9c57600080fd5b610759826113a2565b6000808335601e19843603018112611abc57600080fd5b8301803591506001600160401b03821115611ad657600080fd5b6020019150368190038213156113ff57600080fd5b634e487b7160e01b600052601160045260246000fd5b600060018201611b1357611b13611aeb565b5060010190565b81835260006020808501808196508560051b810191508460005b87811015611b9e5782840389528135601e19883603018112611b5557600080fd5b870185810190356001600160401b03811115611b7057600080fd5b803603821315611b7f57600080fd5b611b8a868284611999565b9a87019a9550505090840190600101611b34565b5091979650505050505050565b60a0808252810188905260008960c08301825b8b811015611bec576001600160a01b03611bd7846113a2565b16825260209283019290910190600101611bbe565b5083810360208501528881526001600160fb1b03891115611c0c57600080fd5b8860051b9150818a60208301370182810360209081016040850152611c349082018789611b1a565b60608401959095525050608001529695505050505050565b600060208284031215611c5e57600080fd5b8151801515811461075957600080fd5b8082018082111561069157610691611aeb565b60005b83811015611c9c578181015183820152602001611c84565b50506000910152565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351611cd7816017850160208801611c81565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351611d08816028840160208801611c81565b01602801949350505050565b6020815260008251806020840152611d33816040850160208701611c81565b601f01601f19169190910160400192915050565b6020808252602a908201527f54696d656c6f636b436f6e74726f6c6c65723a206f7065726174696f6e206973604082015269206e6f7420726561647960b01b606082015260800190565b8183823760009101908152919050565b808202811582820484141761069157610691611aeb565b600081611dc757611dc7611aeb565b50600019019056feb09aa5aeb3702cfd50b6b62bc4532604938f21248a27a1d5ca736082b6819cc1d8aa0f3194971a2a116679f7c2090f6939c8d4e01a2a8d7e41d55e5351469e63a2646970667358221220e85779c5558fca47883d23a3cceaeb125898c578f2a4d1ea63a0d3bd9db9b9eb64736f6c63430008110033", + "storage": { + "0x0000000000000000000000000000000000000000000000000000000000000002": "0x000000000000000000000000000000000000000000000000000000000000000a", + "0xa35b5405ab15b96b03cc591647476727d852994a412b5030df6fc27d6663ae98": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x3068bd570ea4e7d974748b6421609a672ffc2752a61ba3a01cab0651ae1ac36d": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x64494413541ff93b31aa309254e3fed72a7456e9845988b915b4c7a7ceba8814": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0x555ccfd2adedd3617807cc741088518e69e1b40eeadcc863c31e3de2eeb454dd": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0x3412d5605ac6cd444957cedb533e5dacad6378b4bc819ebe3652188a665066d6": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0xba259d66f4dd33fbb3dec88075da2b4d0684440fd415c1f24df79a0258ca9e62": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xdae2aa361dfd1ca020a396615627d436107c35eff9fe7738a3512819782d706a": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5", + "0xd449b9dacab93eed6e33b971a4f75b09702709f5b92088a7d361838e246a3556": "0x0000000000000000000000000000000000000000000000000000000000000001", + "0xc3ad33e20b0c56a223ad5104fff154aa010f8715b9c981fd38fdc60a4d1a52fc": "0x5f58e3a2316349923ce3780f8d587db2d72378aed66a8261c916544fa6846ca5" + } + }, + { + "accountName": "keyless Deployer", + "balance": "0", + "nonce": "1", + "address": "0x8b5081b0a6186731873f39d566ed886c7404c3D0" + }, + { + "accountName": "deployer", + "balance": "0", + "nonce": "8", + "address": "0x0cae25c8623761783Fe4CE241C9b428126A7612A" + }, + { + "accountName": "test account", + "balance": "100000000000000000000000", + "nonce": "0", + "address": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266" + } ] -} \ No newline at end of file + } \ No newline at end of file diff --git a/test/config/prover/config.prover.json b/test/config/prover/config.prover.json index 01c15c40..d5cd99bf 100644 --- a/test/config/prover/config.prover.json +++ b/test/config/prover/config.prover.json @@ -9,6 +9,7 @@ "runAggregatorServer": false, "runAggregatorClient": false, "runAggregatorClientMock": true, + "aggregatorClientMockTimeout": 1, "runFileGenBatchProof": false, "runFileGenAggregatedProof": false, @@ -55,7 +56,6 @@ "aggregatorServerPort": 50081, "aggregatorClientPort": 50081, "aggregatorClientHost": "zkevm-node", - "aggregatorClientMockTimeout": 1, "mapConstPolsFile": false, "mapConstantsTreeFile": false, @@ -63,7 +63,6 @@ "inputFile": "input_executor_0.json", "inputFile2": "input_executor_1.json", - "rom": "config/scripts/rom.json", "keccakScriptFile": "config/scripts/keccak_script.json", "storageRomFile": "config/scripts/storage_sm_rom.json", diff --git a/test/e2e/bridge_test.go b/test/e2e/bridge_test.go index 1c49e495..3bcadb7c 100644 --- a/test/e2e/bridge_test.go +++ b/test/e2e/bridge_test.go @@ -21,8 +21,8 @@ import ( ) var ( - l1BridgeAddr = common.HexToAddress("0x0165878A594ca255338adfa4d48449f69242Eb8F") - l2BridgeAddr = common.HexToAddress("0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988") + l1BridgeAddr = common.HexToAddress("0x60627AC8Ba44F4438186B4bCD5F1cb5E794e19fe") + l2BridgeAddr = common.HexToAddress("0xd0a3d58d135e2ee795dFB26ec150D339394254B9") ) // TestE2E tests the flow of deposit and withdraw funds using the vector diff --git a/test/mocksmartcontracts/abi/polygonzkevmbridge.abi b/test/mocksmartcontracts/abi/polygonzkevmbridge.abi index d64ab6c5..7d712923 100644 --- a/test/mocksmartcontracts/abi/polygonzkevmbridge.abi +++ b/test/mocksmartcontracts/abi/polygonzkevmbridge.abi @@ -1,4 +1,84 @@ [ + { + "inputs": [], + "name": "AlreadyClaimed", + "type": "error" + }, + { + "inputs": [], + "name": "AmountDoesNotMatchMsgValue", + "type": "error" + }, + { + "inputs": [], + "name": "DestinationNetworkInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "EtherTransferFailed", + "type": "error" + }, + { + "inputs": [], + "name": "GlobalExitRootInvalid", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidSmtProof", + "type": "error" + }, + { + "inputs": [], + "name": "MerkleTreeFull", + "type": "error" + }, + { + "inputs": [], + "name": "MessageFailed", + "type": "error" + }, + { + "inputs": [], + "name": "MsgValueNotZero", + "type": "error" + }, + { + "inputs": [], + "name": "NotValidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "NotValidOwner", + "type": "error" + }, + { + "inputs": [], + "name": "NotValidSignature", + "type": "error" + }, + { + "inputs": [], + "name": "NotValidSpender", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyEmergencyState", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyNotEmergencyState", + "type": "error" + }, + { + "inputs": [], + "name": "OnlyPolygonZkEVM", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -136,50 +216,17 @@ "internalType": "address", "name": "wrappedTokenAddress", "type": "address" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "metadata", + "type": "bytes" } ], "name": "NewWrappedToken", "type": "event" }, - { - "inputs": [], - "name": "LEAF_TYPE_ASSET", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "LEAF_TYPE_MESSAGE", - "outputs": [ - { - "internalType": "uint8", - "name": "", - "type": "uint8" - } - ], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "MAINNET_NETWORK_ID", - "outputs": [ - { - "internalType": "uint32", - "name": "", - "type": "uint32" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "activateEmergencyState", @@ -246,9 +293,9 @@ { "inputs": [ { - "internalType": "bytes32[]", + "internalType": "bytes32[32]", "name": "smtProof", - "type": "bytes32[]" + "type": "bytes32[32]" }, { "internalType": "uint32", @@ -304,9 +351,9 @@ { "inputs": [ { - "internalType": "bytes32[]", + "internalType": "bytes32[32]", "name": "smtProof", - "type": "bytes32[]" + "type": "bytes32[32]" }, { "internalType": "uint32", @@ -489,7 +536,7 @@ "name": "globalExitRootManager", "outputs": [ { - "internalType": "contract IPolygonZkEVMGlobalExitRoot", + "internalType": "contract IBasePolygonZkEVMGlobalExitRoot", "name": "", "type": "address" } @@ -505,7 +552,7 @@ "type": "uint32" }, { - "internalType": "contract IPolygonZkEVMGlobalExitRoot", + "internalType": "contract IBasePolygonZkEVMGlobalExitRoot", "name": "_globalExitRootManager", "type": "address" }, @@ -644,14 +691,14 @@ "type": "bytes32" }, { - "internalType": "bytes32[]", + "internalType": "bytes32[32]", "name": "smtProof", - "type": "bytes32[]" + "type": "bytes32[32]" }, { - "internalType": "uint64", + "internalType": "uint32", "name": "index", - "type": "uint64" + "type": "uint32" }, { "internalType": "bytes32", diff --git a/test/mocksmartcontracts/bin/polygonzkevmbridge.bin b/test/mocksmartcontracts/bin/polygonzkevmbridge.bin index 6bad440c..1666258e 100644 --- a/test/mocksmartcontracts/bin/polygonzkevmbridge.bin +++ b/test/mocksmartcontracts/bin/polygonzkevmbridge.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b5061392f806100206000396000f3fe608060405260043610620001ab5760003560e01c80637b6323c111620000e7578063d02103ca1162000089578063ed6be5c91162000060578063ed6be5c914620005ce578063ee25560b14620005e5578063ff634ed7146200061657600080fd5b8063d02103ca146200057d578063d96a15f7146200059f578063dbc1697614620005b657600080fd5b8063a08e8a0811620000be578063a08e8a0814620004f4578063aaa13cc2146200051e578063bab161bf146200054357600080fd5b80637b6323c1146200047057806381b1c17414620004955780639e34070f14620004cf57600080fd5b806334ac9cf211620001515780633e19704311620001285780633e1970431462000345578063463855491462000426578063647c576c146200044b57600080fd5b806334ac9cf214620002e65780633ae0504714620003085780633da81682146200032057600080fd5b806322e95f2c116200018657806322e95f2c14620002125780632dfdf0b51462000250578063318aee3d146200027757600080fd5b80630871e97114620001b057806315064c9614620001c95780632072f6c514620001fa575b600080fd5b620001c7620001c13660046200189a565b6200062d565b005b348015620001d657600080fd5b50602254620001e59060ff1681565b60405190151581526020015b60405180910390f35b3480156200020757600080fd5b50620001c762000a82565b3480156200021f57600080fd5b50620002376200023136600462001927565b62000b10565b6040516001600160a01b039091168152602001620001f1565b3480156200025d57600080fd5b506200026860215481565b604051908152602001620001f1565b3480156200028457600080fd5b50620002c16200029636600462001963565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001f1565b348015620002f357600080fd5b5060275462000237906001600160a01b031681565b3480156200031557600080fd5b506200026862000ba2565b3480156200032d57600080fd5b50620001e56200033f36600462001a5d565b62000c95565b3480156200035257600080fd5b50620002686200036436600462001adb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200043357600080fd5b50620001c76200044536600462001bec565b62000d95565b3480156200045857600080fd5b50620001c76200046a36600462001cd3565b62000eb2565b3480156200047d57600080fd5b50620001c76200048f36600462001bec565b62001038565b348015620004a257600080fd5b5062000237620004b436600462001d23565b6024602052600090815260409020546001600160a01b031681565b348015620004dc57600080fd5b50620001e5620004ee36600462001d23565b620011a4565b3480156200050157600080fd5b506200050b600081565b60405160ff9091168152602001620001f1565b3480156200052b57600080fd5b50620002376200053d36600462001d3d565b620011e9565b3480156200055057600080fd5b506022546200056790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001f1565b3480156200058a57600080fd5b5060265462000237906001600160a01b031681565b620001c7620005b036600462001df1565b62001355565b348015620005c357600080fd5b50620001c762001532565b348015620005db57600080fd5b5062000567600081565b348015620005f257600080fd5b50620002686200060436600462001d23565b60236020526000908152604090205481565b3480156200062357600080fd5b506200050b600181565b60225460ff1615620006b75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4015b60405180910390fd5b60225463ffffffff6101009091048116908616036200073f5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c660000006064820152608401620006ae565b60008060606001600160a01b038916620007fb57853414620007f15760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e7660648201527f616c756500000000000000000000000000000000000000000000000000000000608482015260a401620006ae565b60009150620009bf565b6001600160a01b03808a16600081815260256020908152604080832081518083018352905463ffffffff80821683526401000000009091049096169281019290925260225481517f06fdde0300000000000000000000000000000000000000000000000000000000815291518f9950610100909104909516965090936306fdde03926004838101939192918290030181865afa158015620008a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ca919081019062001e88565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000909573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000933919081019062001e88565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000972573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000998919062001f08565b604051602001620009ac9392919062001f56565b6040516020818303038152906040529150505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000a0198979695949392919062001f93565b60405180910390a16026546001600160a01b03166333d6247d62000a2462000ba2565b6040518263ffffffff1660e01b815260040162000a4391815260200190565b600060405180830381600087803b15801562000a5e57600080fd5b505af115801562000a73573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b0316331462000b045760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060448201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e74726163740000000000006064820152608401620006ae565b62000b0e620015be565b565b600060246000848460405160200162000b6c92919060e09290921b7fffffffff0000000000000000000000000000000000000000000000000000000016825260601b6bffffffffffffffffffffffff1916600482015260180190565b60408051808303601f19018152918152815160209283012083529082019290925201600020546001600160a01b03169392505050565b602154600090819081805b602081101562000c8c578260011660010362000c0d576001816020811062000bd95762000bd962001fff565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000c3a565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000c476002846200202b565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000c839062002042565b91505062000bad565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000d88578160011660010362000d125786818151811062000cd05762000cd062001fff565b60200260200101518360405160200162000cf4929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000d64565b8287828151811062000d285762000d2862001fff565b602002602001015160405160200162000d4b929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000d716002836200202b565b91508062000d7f8162002042565b91505062000ca5565b5050909114949350505050565b60225460ff161562000e1b5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620006ae565b62000e318a8a8a8a8a8a8a8a8a8a60016200167c565b62000e428963ffffffff166200170f565b6040805163ffffffff808c168252881660208201526001600160a01b03808816928201929092529084166060820152608081018390527f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839060a0015b60405180910390a150505050505050505050565b600054610100900460ff161580801562000ed35750600054600160ff909116105b8062000eef5750303b15801562000eef575060005460ff166001145b62000f635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620006ae565b6000805460ff19166001179055801562000f87576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556027805492851692909116919091179055801562001032576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010be5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620006ae565b620010d48a8a8a8a8a8a8a8a8a8a60006200167c565b620010e58963ffffffff166200170f565b6001600160a01b0385161562000e42576040805163ffffffff881681526001600160a01b038716602082015260008183015290517fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d599181900360600190a16040805163ffffffff808c168252881660208201526001600160a01b03808816928201929092529084166060820152608081018390527f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839060a00162000e9e565b600080620011b5610100846200202b565b90506000620011c7610100856200206a565b60009283526023602052604090922054600190921b9182169091149392505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200126c9062001800565b601f1982820381018352601f90910116604081905262001299908d908d908d908d908d90602001620020aa565b60408051601f1981840301815290829052620012b99291602001620020eb565b604051602081830303815290604052805190602001206040516020016200132f94939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620013db5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620006ae565b60225463ffffffff610100909104811690841603620014635760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c66006064820152608401620006ae565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620014b798979695949392919062001f93565b60405180910390a16026546001600160a01b03166333d6247d620014da62000ba2565b6040518263ffffffff1660e01b8152600401620014f991815260200190565b600060405180830381600087803b1580156200151457600080fd5b505af115801562001529573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b03163314620015b45760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060448201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e74726163740000000000006064820152608401620006ae565b62000b0e62001751565b60225460ff1615620016445760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620006ae565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6200168d8a63ffffffff16620011a4565b15620017025760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f20416c726561647920636c61696d6564000000000000000000000000000000006064820152608401620006ae565b5050505050505050505050565b60006200171f610100836200202b565b9050600062001731610100846200206a565b6000928352602360205260409092208054600190931b9092179091555050565b60225460ff16620017cb5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620006ae565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6117db806200211f83390190565b6001600160a01b03811681146200182457600080fd5b50565b803562001834816200180e565b919050565b803563ffffffff811681146200183457600080fd5b60008083601f8401126200186157600080fd5b50813567ffffffffffffffff8111156200187a57600080fd5b6020830191508360208285010111156200189357600080fd5b9250929050565b60008060008060008060a08789031215620018b457600080fd5b8635620018c1816200180e565b9550620018d16020880162001839565b94506040870135620018e3816200180e565b935060608701359250608087013567ffffffffffffffff8111156200190757600080fd5b6200191589828a016200184e565b979a9699509497509295939492505050565b600080604083850312156200193b57600080fd5b620019468362001839565b9150602083013562001958816200180e565b809150509250929050565b6000602082840312156200197657600080fd5b813562001983816200180e565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620019cc57620019cc6200198a565b604052919050565b600082601f830112620019e657600080fd5b8135602067ffffffffffffffff82111562001a055762001a056200198a565b8160051b62001a16828201620019a0565b928352848101820192828101908785111562001a3157600080fd5b83870192505b8483101562001a525782358252918301919083019062001a37565b979650505050505050565b6000806000806080858703121562001a7457600080fd5b84359350602085013567ffffffffffffffff8082111562001a9457600080fd5b62001aa288838901620019d4565b945060408701359150808216821462001aba57600080fd5b509396929550929360600135925050565b60ff811681146200182457600080fd5b600080600080600080600060e0888a03121562001af757600080fd5b873562001b048162001acb565b965062001b146020890162001839565b9550604088013562001b26816200180e565b945062001b366060890162001839565b9350608088013562001b48816200180e565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562001b825762001b826200198a565b50601f01601f191660200190565b600082601f83011262001ba257600080fd5b813562001bb962001bb38262001b65565b620019a0565b81815284602083860101111562001bcf57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562001c0d57600080fd5b8a3567ffffffffffffffff8082111562001c2657600080fd5b62001c348e838f01620019d4565b9b5062001c4460208e0162001839565b9a5060408d0135995060608d0135985062001c6260808e0162001839565b975062001c7260a08e0162001827565b965062001c8260c08e0162001839565b955062001c9260e08e0162001827565b94506101008d013593506101208d013591508082111562001cb257600080fd5b5062001cc18d828e0162001b90565b9150509295989b9194979a5092959850565b60008060006060848603121562001ce957600080fd5b62001cf48462001839565b9250602084013562001d06816200180e565b9150604084013562001d18816200180e565b809150509250925092565b60006020828403121562001d3657600080fd5b5035919050565b600080600080600080600060a0888a03121562001d5957600080fd5b62001d648862001839565b9650602088013562001d76816200180e565b9550604088013567ffffffffffffffff8082111562001d9457600080fd5b62001da28b838c016200184e565b909750955060608a013591508082111562001dbc57600080fd5b5062001dcb8a828b016200184e565b909450925050608088013562001de18162001acb565b8091505092959891949750929550565b60008060006060848603121562001e0757600080fd5b62001e128462001839565b9250602084013562001e24816200180e565b9150604084013567ffffffffffffffff81111562001e4157600080fd5b62001e4f8682870162001b90565b9150509250925092565b60005b8381101562001e7657818101518382015260200162001e5c565b83811115620010325750506000910152565b60006020828403121562001e9b57600080fd5b815167ffffffffffffffff81111562001eb357600080fd5b8201601f8101841362001ec557600080fd5b805162001ed662001bb38262001b65565b81815285602083850101111562001eec57600080fd5b62001eff82602083016020860162001e59565b95945050505050565b60006020828403121562001f1b57600080fd5b8151620019838162001acb565b6000815180845262001f4281602086016020860162001e59565b601f01601f19169290920160200192915050565b60608152600062001f6b606083018662001f28565b828103602084015262001f7f818662001f28565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262001fe68285018762001f28565b925080851660e085015250509998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826200203d576200203d62002015565b500490565b6000600182016200206357634e487b7160e01b600052601160045260246000fd5b5060010190565b6000826200207c576200207c62002015565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000620020c060608301878962002081565b8281036020840152620020d581868862002081565b91505060ff831660408301529695505050505050565b60008351620020ff81846020880162001e59565b8351908301906200211581836020880162001e59565b0194935050505056fe60c06040523480156200001157600080fd5b50604051620017db380380620017db8339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611321620004ba60003960006104e001526000818161034a01526104aa01526113216000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf1461036c578063dd62ed3e1461037f578063ffa1ad74146103b857600080fd5b8063a457c2d71461031f578063a9059cbb14610332578063cd0d00961461034557600080fd5b806395d89b41116100bd57806395d89b41146102d95780639dc29fac146102e1578063a3c573eb146102f457600080fd5b806370a08231146102905780637ecebe00146102b957600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b6101846103d8565b60405161019191906110b4565b60405180910390f35b6101ad6101a8366004611125565b61046a565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461114f565b610482565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104a6565b6101ad610276366004611125565b610502565b61028e610289366004611125565b610541565b005b6101c161029e36600461118b565b6001600160a01b031660009081526020819052604090205490565b6101c16102c736600461118b565b60066020526000908152604090205481565b6101846105d4565b61028e6102ef366004611125565b6105e3565b600554610307906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ad61032d366004611125565b61066d565b6101ad610340366004611125565b610717565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61028e61037a3660046111ad565b610725565b6101c161038d366004611220565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610184604051806040016040528060018152602001603160f81b81525081565b6060600380546103e790611253565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611253565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b6000336104788185856109aa565b5060019392505050565b600033610490858285610b03565b61049b858585610b95565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104dd576104d846610dac565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610478908290869061053c9087906112a3565b6109aa565b6005546001600160a01b031633146105c65760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084015b60405180910390fd5b6105d08282610e58565b5050565b6060600480546103e790611253565b6005546001600160a01b031633146106635760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084016105bd565b6105d08282610f37565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561070a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105bd565b61049b82868684036109aa565b600033610478818585610b95565b8342111561079a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d69740000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866107e7836112bb565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108456104a6565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156108eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906109215750896001600160a01b0316816001600160a01b0316145b6109935760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e61747572650000000000000000000000000000000000000000000000000060648201526084016105bd565b61099e8a8a8a6109aa565b50505050505050505050565b6001600160a01b038316610a255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216610aa15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b8f5781811015610b825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105bd565b610b8f84848484036109aa565b50505050565b6001600160a01b038316610c115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216610c8d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03831660009081526020819052604090205481811015610d1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d539084906112a3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9f91815260200190565b60405180910390a3610b8f565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610dd76103d8565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610eae5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105bd565b8060026000828254610ec091906112a3565b90915550506001600160a01b03821660009081526020819052604081208054839290610eed9084906112a3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610fb35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216600090815260208190526040902054818110156110425760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110719084906112d4565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610af6565b600060208083528351808285015260005b818110156110e1578581018301518582016040015282016110c5565b818111156110f3576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461112057600080fd5b919050565b6000806040838503121561113857600080fd5b61114183611109565b946020939093013593505050565b60008060006060848603121561116457600080fd5b61116d84611109565b925061117b60208501611109565b9150604084013590509250925092565b60006020828403121561119d57600080fd5b6111a682611109565b9392505050565b600080600080600080600060e0888a0312156111c857600080fd5b6111d188611109565b96506111df60208901611109565b95506040880135945060608801359350608088013560ff8116811461120357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561123357600080fd5b61123c83611109565b915061124a60208401611109565b90509250929050565b600181811c9082168061126757607f821691505b60208210810361128757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156112b6576112b661128d565b500190565b6000600182016112cd576112cd61128d565b5060010190565b6000828210156112e6576112e661128d565b50039056fea26469706673582212205d074ee584238a5fb66873e3fc67d479c99eb1688b3ca2f77c22e4f97ce77b0064736f6c634300080f0033a26469706673582212209c3e6dd9ad65734df28342f27198e6ccf4e89a9ceff35fa28b458f87db72a74c64736f6c634300080f0033 \ No newline at end of file +608060405234801561001057600080fd5b5061389d806100206000396000f3fe608060405260043610620001875760003560e01c80633e19704311620000db578063bab161bf1162000089578063dbc169761162000060578063dbc16976146200056c578063ee25560b1462000584578063fb57083414620005b557600080fd5b8063bab161bf14620004f0578063d02103ca146200052a578063d96a15f7146200055557600080fd5b806381b1c17411620000be57806381b1c174146200044c5780639e34070f1462000486578063aaa13cc214620004cb57600080fd5b80633e1970431462000346578063647c576c146200042757600080fd5b80632d2c9d941162000139578063318aee3d116200011c578063318aee3d146200029d57806334ac9cf2146200030c5780633ae05047146200032e57600080fd5b80632d2c9d9414620002515780632dfdf0b5146200027657600080fd5b80632072f6c5116200016e5780632072f6c514620001d657806322e95f2c14620001ee5780632cffd02e146200022c57600080fd5b80630871e971146200018c57806315064c9614620001a5575b600080fd5b620001a36200019d36600462001860565b620005da565b005b348015620001b257600080fd5b50606854620001c19060ff1681565b60405190151581526020015b60405180910390f35b348015620001e357600080fd5b50620001a362000811565b348015620001fb57600080fd5b50620002136200020d366004620018ed565b62000849565b6040516001600160a01b039091168152602001620001cd565b3480156200023957600080fd5b50620001a36200024b3660046200193c565b620008cc565b3480156200025e57600080fd5b50620001a3620002703660046200193c565b620009c6565b3480156200028357600080fd5b506200028e60535481565b604051908152602001620001cd565b348015620002aa57600080fd5b50620002e7620002bc36600462001a22565b606b6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001cd565b3480156200031957600080fd5b50606c5462000213906001600160a01b031681565b3480156200033b57600080fd5b506200028e62000a02565b3480156200035357600080fd5b506200028e6200036536600462001a59565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200043457600080fd5b50620001a36200044636600462001ae3565b62000ae8565b3480156200045957600080fd5b50620002136200046b36600462001b33565b606a602052600090815260409020546001600160a01b031681565b3480156200049357600080fd5b50620001c1620004a536600462001b33565b600881901c600090815260696020526040902054600160ff9092169190911b9081161490565b348015620004d857600080fd5b5062000213620004ea36600462001b4d565b62000cb8565b348015620004fd57600080fd5b506068546200051490610100900463ffffffff1681565b60405163ffffffff9091168152602001620001cd565b3480156200053757600080fd5b5060685462000213906501000000000090046001600160a01b031681565b620001a36200056636600462001c01565b62000e24565b3480156200057957600080fd5b50620001a362000f69565b3480156200059157600080fd5b506200028e620005a336600462001b33565b60696020526000908152604090205481565b348015620005c257600080fd5b50620001c1620005d436600462001c6c565b62000f9f565b60685460ff1615620005ff57604051630bc011ff60e21b815260040160405180910390fd5b6200060962001086565b60685463ffffffff8681166101009092041614806200062f5750600263ffffffff861610155b156200064e576040516302caf51760e11b815260040160405180910390fd5b6000806060856001600160a01b038a16620006a7578634146200069d576040517fb89240f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600092506200073a565b3415620006e0576040517f798ee6f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6068548a9450610100900463ffffffff169250620006fe84620010e1565b620007098b620011df565b620007148c620012ca565b604051602001620007289392919062001d0d565b60405160208183030381529060405291505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600084868c8c86886053546040516200077c98979695949392919062001d4a565b60405180910390a16068546501000000000090046001600160a01b03166333d6247d620007a862000a02565b6040518263ffffffff1660e01b8152600401620007c791815260200190565b600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b50505050505050506200080960018055565b505050505050565b606c546001600160a01b031633146200083d5760405163e2e8106b60e01b815260040160405180910390fd5b62000847620013aa565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152606a90915220546001600160a01b03165b92915050565b60685460ff1615620008f157604051630bc011ff60e21b815260040160405180910390fd5b620009088b8b8b8b8b8b8b8b8b8b8b600062001407565b6001600160a01b038616156200095b577f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398787600085856040516200095295949392919062001ddf565b60405180910390a15b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b60685460ff1615620009eb57604051630bc011ff60e21b815260040160405180910390fd5b6200095b8b8b8b8b8b8b8b8b8b8b8b600162001407565b605354600090819081805b602081101562000adf578083901c60011660010362000a70576033816020811062000a3c5762000a3c62001e25565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a9d565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b6040805160208101849052908101839052606001604051602081830303815290604052805190602001209150808062000ad69062001e3b565b91505062000a0d565b50919392505050565b600054610100900460ff161580801562000b095750600054600160ff909116105b8062000b255750303b15801562000b25575060005460ff166001145b62000b9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801562000bc1576000805461ff0019166101001790555b606880547fffffffffffffff000000000000000000000000000000000000000000000000ff1661010063ffffffff8716027fffffffffffffff0000000000000000000000000000000000000000ffffffffff1617650100000000006001600160a01b038681169190910291909117909155606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001691841691909117905562000c6b62001426565b801562000cb2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162000d3b90620017d8565b601f1982820381018352601f90910116604081905262000d68908d908d908d908d908d9060200162001e63565b60408051601f198184030181529082905262000d88929160200162001ea4565b6040516020818303038152906040528051906020012060405160200162000dfe94939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60685460ff161562000e4957604051630bc011ff60e21b815260040160405180910390fd5b60685463ffffffff85811661010090920416148062000e6f5750600263ffffffff851610155b1562000e8e576040516302caf51760e11b815260040160405180910390fd5b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001606860019054906101000a900463ffffffff1633878734888860535460405162000ee49998979695949392919062001ed7565b60405180910390a16068546501000000000090046001600160a01b03166333d6247d62000f1062000a02565b6040518263ffffffff1660e01b815260040162000f2f91815260200190565b600060405180830381600087803b15801562000f4a57600080fd5b505af115801562000f5f573d6000803e3d6000fd5b5050505050505050565b606c546001600160a01b0316331462000f955760405163e2e8106b60e01b815260040160405180910390fd5b620008476200149d565b600084815b60208110156200107a57600163ffffffff8616821c81169003620010165785816020811062000fd75762000fd762001e25565b60200201358260405160200162000ff8929190918252602082015260400190565b60405160208183030381529060405280519060200120915062001065565b818682602081106200102c576200102c62001e25565b60200201356040516020016200104c929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b80620010718162001e3b565b91505062000fa4565b50909114949350505050565b600260015403620010da5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000b94565b6002600155565b60408051600481526024810182526020810180516001600160e01b03167f06fdde0300000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162001143919062001f45565b600060405180830381855afa9150503d806000811462001180576040519150601f19603f3d011682016040523d82523d6000602084013e62001185565b606091505b509150915081620011cc576040518060400160405280600781526020017f4e4f5f4e414d4500000000000000000000000000000000000000000000000000815250620011d7565b620011d7816200150f565b949350505050565b60408051600481526024810182526020810180516001600160e01b03167f95d89b4100000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162001241919062001f45565b600060405180830381855afa9150503d80600081146200127e576040519150601f19603f3d011682016040523d82523d6000602084013e62001283565b606091505b509150915081620011cc576040518060400160405280600981526020017f4e4f5f53594d424f4c0000000000000000000000000000000000000000000000815250620011d7565b60408051600481526024810182526020810180516001600160e01b03167f313ce567000000000000000000000000000000000000000000000000000000001790529051600091829182916001600160a01b038616916200132b919062001f45565b600060405180830381855afa9150503d806000811462001368576040519150601f19603f3d011682016040523d82523d6000602084013e6200136d565b606091505b509150915081801562001381575080516020145b6200138e576012620011d7565b80806020019051810190620011d7919062001f63565b60018055565b60685460ff1615620013cf57604051630bc011ff60e21b815260040160405180910390fd5b6068805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b620014188b63ffffffff16620016ff565b505050505050505050505050565b600054610100900460ff16620014935760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000b94565b620008476200176b565b60685460ff16620014da576040517f5386698100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6068805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60606040825110620015315781806020019051810190620008c6919062001f99565b8151602003620016c15760005b6020811080156200158957508281815181106200155f576200155f62001e25565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b15620015a457806200159b8162001e3b565b9150506200153e565b80600003620015e857505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff81111562001606576200160662001f83565b6040519080825280601f01601f19166020018201604052801562001631576020820181803683370190505b50905060005b82811015620016b95784818151811062001655576200165562001e25565b602001015160f81c60f81b82828151811062001675576200167562001e25565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080620016b08162001e3b565b91505062001637565b509392505050565b505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b919050565b600881901c60008181526069602052604081208054600160ff861690811b9182189283905592909190818316900362001764576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b600054610100900460ff16620013a45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000b94565b611820806200204883390190565b6001600160a01b0381168114620017fc57600080fd5b50565b803563ffffffff81168114620016fa57600080fd5b60008083601f8401126200182757600080fd5b50813567ffffffffffffffff8111156200184057600080fd5b6020830191508360208285010111156200185957600080fd5b9250929050565b60008060008060008060a087890312156200187a57600080fd5b86356200188781620017e6565b95506200189760208801620017ff565b94506040870135620018a981620017e6565b935060608701359250608087013567ffffffffffffffff811115620018cd57600080fd5b620018db89828a0162001814565b979a9699509497509295939492505050565b600080604083850312156200190157600080fd5b6200190c83620017ff565b915060208301356200191e81620017e6565b809150509250929050565b806104008101831015620008c657600080fd5b60008060008060008060008060008060006105208c8e0312156200195f57600080fd5b6200196b8d8d62001929565b9a506200197c6104008d01620017ff565b99506104208c013598506104408c013597506200199d6104608d01620017ff565b96506104808c0135620019b081620017e6565b9550620019c16104a08d01620017ff565b94506104c08c0135620019d481620017e6565b93506104e08c013592506105008c013567ffffffffffffffff811115620019fa57600080fd5b62001a088e828f0162001814565b915080935050809150509295989b509295989b9093969950565b60006020828403121562001a3557600080fd5b813562001a4281620017e6565b9392505050565b60ff81168114620017fc57600080fd5b600080600080600080600060e0888a03121562001a7557600080fd5b873562001a828162001a49565b965062001a9260208901620017ff565b9550604088013562001aa481620017e6565b945062001ab460608901620017ff565b9350608088013562001ac681620017e6565b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121562001af957600080fd5b62001b0484620017ff565b9250602084013562001b1681620017e6565b9150604084013562001b2881620017e6565b809150509250925092565b60006020828403121562001b4657600080fd5b5035919050565b600080600080600080600060a0888a03121562001b6957600080fd5b62001b7488620017ff565b9650602088013562001b8681620017e6565b9550604088013567ffffffffffffffff8082111562001ba457600080fd5b62001bb28b838c0162001814565b909750955060608a013591508082111562001bcc57600080fd5b5062001bdb8a828b0162001814565b909450925050608088013562001bf18162001a49565b8091505092959891949750929550565b6000806000806060858703121562001c1857600080fd5b62001c2385620017ff565b9350602085013562001c3581620017e6565b9250604085013567ffffffffffffffff81111562001c5257600080fd5b62001c608782880162001814565b95989497509550505050565b600080600080610460858703121562001c8457600080fd5b8435935062001c97866020870162001929565b925062001ca86104208601620017ff565b939692955092936104400135925050565b60005b8381101562001cd657818101518382015260200162001cbc565b50506000910152565b6000815180845262001cf981602086016020860162001cb9565b601f01601f19169290920160200192915050565b60608152600062001d22606083018662001cdf565b828103602084015262001d36818662001cdf565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262001d9d8285018762001cdf565b925080851660e085015250509998505050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff8616815260006001600160a01b0380871660208401528086166040840152506080606083015262001e1a60808301848662001db6565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820162001e5c57634e487b7160e01b600052601160045260246000fd5b5060010190565b60608152600062001e7960608301878962001db6565b828103602084015262001e8e81868862001db6565b91505060ff831660408301529695505050505050565b6000835162001eb881846020880162001cb9565b83519083019062001ece81836020880162001cb9565b01949350505050565b600061010060ff8c16835263ffffffff808c1660208501526001600160a01b03808c166040860152818b166060860152808a166080860152508760a08501528160c085015262001f2b828501878962001db6565b925080851660e085015250509a9950505050505050505050565b6000825162001f5981846020870162001cb9565b9190910192915050565b60006020828403121562001f7657600080fd5b815162001a428162001a49565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001fac57600080fd5b815167ffffffffffffffff8082111562001fc557600080fd5b818401915084601f83011262001fda57600080fd5b81518181111562001fef5762001fef62001f83565b604051601f8201601f19908116603f011681019083821181831017156200201a576200201a62001f83565b816040528281528760208487010111156200203457600080fd5b62001e1a83602083016020880162001cb956fe6101006040523480156200001257600080fd5b50604051620018203803806200182083398101604081905262000035916200028d565b82826003620000458382620003a1565b506004620000548282620003a1565b50503360c0525060ff811660e052466080819052620000739062000080565b60a052506200046d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000ad6200012e565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6060600380546200013f9062000312565b80601f01602080910402602001604051908101604052809291908181526020018280546200016d9062000312565b8015620001be5780601f106200019257610100808354040283529160200191620001be565b820191906000526020600020905b815481529060010190602001808311620001a057829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f057600080fd5b81516001600160401b03808211156200020d576200020d620001c8565b604051601f8301601f19908116603f01168101908282118183101715620002385762000238620001c8565b816040528381526020925086838588010111156200025557600080fd5b600091505b838210156200027957858201830151818301840152908201906200025a565b600093810190920192909252949350505050565b600080600060608486031215620002a357600080fd5b83516001600160401b0380821115620002bb57600080fd5b620002c987838801620001de565b94506020860151915080821115620002e057600080fd5b50620002ef86828701620001de565b925050604084015160ff811681146200030757600080fd5b809150509250925092565b600181811c908216806200032757607f821691505b6020821081036200034857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200039c57600081815260208120601f850160051c81016020861015620003775750805b601f850160051c820191505b81811015620003985782815560010162000383565b5050505b505050565b81516001600160401b03811115620003bd57620003bd620001c8565b620003d581620003ce845462000312565b846200034e565b602080601f8311600181146200040d5760008415620003f45750858301515b600019600386901b1c1916600185901b17855562000398565b600085815260208120601f198616915b828110156200043e578886015182559484019460019091019084016200041d565b50858210156200045d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051611364620004bc60003960006102370152600081816102fa015281816105630152610623015260006104f701526000818161035f01526104c101526113646000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610381578063dd62ed3e14610394578063ffa1ad74146103cd57600080fd5b8063a457c2d714610334578063a9059cbb14610347578063cd0d00961461035a57600080fd5b806395d89b41116100bd57806395d89b41146102da5780639dc29fac146102e2578063a3c573eb146102f557600080fd5b806370a08231146102915780637ecebe00146102ba57600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610261578063395093511461026957806340c10f191461027c57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b6101846103ed565b6040516101919190611107565b60405180910390f35b6101ad6101a8366004611171565b61047f565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461119b565b610499565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b6101c16104bd565b6101ad610277366004611171565b610519565b61028f61028a366004611171565b610558565b005b6101c161029f3660046111d7565b6001600160a01b031660009081526020819052604090205490565b6101c16102c83660046111d7565b60056020526000908152604090205481565b610184610609565b61028f6102f0366004611171565b610618565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610191565b6101ad610342366004611171565b6106c0565b6101ad610355366004611171565b61076a565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61028f61038f3660046111f9565b610778565b6101c16103a236600461126c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610184604051806040016040528060018152602001603160f81b81525081565b6060600380546103fc9061129f565b80601f01602080910402602001604051908101604052809291908181526020018280546104289061129f565b80156104755780601f1061044a57610100808354040283529160200191610475565b820191906000526020600020905b81548152906001019060200180831161045857829003601f168201915b5050505050905090565b60003361048d8185856109fd565b60019150505b92915050565b6000336104a7858285610b56565b6104b2858585610be8565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104f4576104ef46610dff565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061048d90829086906105539087906112ef565b6109fd565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fb5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084015b60405180910390fd5b6106058282610eab565b5050565b6060600480546103fc9061129f565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084016105f2565b6106058282610f8a565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561075d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105f2565b6104b282868684036109fd565b60003361048d818585610be8565b834211156107ed5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d69740000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661083a83611302565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108986104bd565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561093e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906109745750896001600160a01b0316816001600160a01b0316145b6109e65760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e61747572650000000000000000000000000000000000000000000000000060648201526084016105f2565b6109f18a8a8a6109fd565b50505050505050505050565b6001600160a01b038316610a785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b038216610af45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610be25781811015610bd55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105f2565b610be284848484036109fd565b50505050565b6001600160a01b038316610c645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b038216610ce05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b03831660009081526020819052604090205481811015610d6f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610da69084906112ef565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610df291815260200190565b60405180910390a3610be2565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e2a6103ed565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610f015760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105f2565b8060026000828254610f1391906112ef565b90915550506001600160a01b03821660009081526020819052604081208054839290610f409084906112ef565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166110065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b038216600090815260208190526040902054818110156110955760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110c490849061131b565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b49565b600060208083528351808285015260005b8181101561113457858101830151858201604001528201611118565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461116c57600080fd5b919050565b6000806040838503121561118457600080fd5b61118d83611155565b946020939093013593505050565b6000806000606084860312156111b057600080fd5b6111b984611155565b92506111c760208501611155565b9150604084013590509250925092565b6000602082840312156111e957600080fd5b6111f282611155565b9392505050565b600080600080600080600060e0888a03121561121457600080fd5b61121d88611155565b965061122b60208901611155565b95506040880135945060608801359350608088013560ff8116811461124f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561127f57600080fd5b61128883611155565b915061129660208401611155565b90509250929050565b600181811c908216806112b357607f821691505b6020821081036112d357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610493576104936112d9565b600060018201611314576113146112d9565b5060010190565b81810381811115610493576104936112d956fea264697066735822122096b785fb92e9d4372a52fbc641ca1490dd9eca1990f97279973ebfb2e360d35264736f6c63430008110033a26469706673582212204fbf6a7640de60d7941c9ee705e32fe415593d34e02483ee4e6c0dcb17e37e3c64736f6c63430008110033 \ No newline at end of file diff --git a/test/mocksmartcontracts/polygonzkevmbridge.sol b/test/mocksmartcontracts/polygonzkevmbridge.sol index 0efcc15f..9f6c8677 100644 --- a/test/mocksmartcontracts/polygonzkevmbridge.sol +++ b/test/mocksmartcontracts/polygonzkevmbridge.sol @@ -1,15 +1,16 @@ // SPDX-License-Identifier: AGPL-3.0 -pragma solidity 0.8.15; +pragma solidity 0.8.17; import "./lib/DepositContract.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/utils/SafeERC20Upgradeable.sol"; import "./lib/TokenWrapped.sol"; -import "./interfaces/IPolygonZkEVMGlobalExitRoot.sol"; +import "./interfaces/IBasePolygonZkEVMGlobalExitRoot.sol"; import "./interfaces/IBridgeMessageReceiver.sol"; import "./interfaces/IPolygonZkEVMBridge.sol"; import "@openzeppelin/contracts-upgradeable/token/ERC20/extensions/IERC20MetadataUpgradeable.sol"; import "./lib/EmergencyManager.sol"; +import "./lib/GlobalExitRootLib.sol"; /** * PolygonZkEVMBridge that will be deployed on both networks Ethereum and Polygon zkEVM @@ -34,18 +35,24 @@ contract PolygonZkEVMBridge is // bytes4(keccak256(bytes("permit(address,address,uint256,uint256,bool,uint8,bytes32,bytes32)"))); bytes4 private constant _PERMIT_SIGNATURE_DAI = 0x8fcbaf0c; - // Mainnet indentifier - uint32 public constant MAINNET_NETWORK_ID = 0; + // Mainnet identifier + uint32 private constant _MAINNET_NETWORK_ID = 0; + + // Number of networks supported by the bridge + uint32 private constant _CURRENT_SUPPORTED_NETWORKS = 2; // Leaf type asset - uint8 public constant LEAF_TYPE_ASSET = 0; + uint8 private constant _LEAF_TYPE_ASSET = 0; // Leaf type message - uint8 public constant LEAF_TYPE_MESSAGE = 1; + uint8 private constant _LEAF_TYPE_MESSAGE = 1; // Network identifier uint32 public networkID; + // Global Exit Root address + IBasePolygonZkEVMGlobalExitRoot public globalExitRootManager; + // Leaf index --> claimed bit map mapping(uint256 => uint256) public claimedBitMap; @@ -55,9 +62,6 @@ contract PolygonZkEVMBridge is // Wrapped token Address --> Origin token information mapping(address => TokenInformation) public wrappedTokenToTokenInfo; - // Global Exit Root address - IPolygonZkEVMGlobalExitRoot public globalExitRootManager; - // PolygonZkEVM address address public polygonZkEVMaddress; @@ -65,22 +69,26 @@ contract PolygonZkEVMBridge is * @param _networkID networkID * @param _globalExitRootManager global exit root manager address * @param _polygonZkEVMaddress polygonZkEVM address + * @notice The value of `_polygonZkEVMaddress` on the L2 deployment of the contract will be address(0), so + * emergency state is not possible for the L2 deployment of the bridge, intentionally */ function initialize( uint32 _networkID, - IPolygonZkEVMGlobalExitRoot _globalExitRootManager, + IBasePolygonZkEVMGlobalExitRoot _globalExitRootManager, address _polygonZkEVMaddress - ) public virtual initializer { + ) external virtual initializer { networkID = _networkID; globalExitRootManager = _globalExitRootManager; polygonZkEVMaddress = _polygonZkEVMaddress; + + // Initialize OZ contracts + __ReentrancyGuard_init(); } modifier onlyPolygonZkEVM() { - require( - polygonZkEVMaddress == msg.sender, - "PolygonZkEVM::onlyPolygonZkEVM: only PolygonZkEVM contract" - ); + if (polygonZkEVMaddress != msg.sender) { + revert OnlyPolygonZkEVM(); + } _; } @@ -115,7 +123,8 @@ contract PolygonZkEVMBridge is event NewWrappedToken( uint32 originNetwork, address originTokenAddress, - address wrappedTokenAddress + address wrappedTokenAddress, + bytes metadata ); /** @@ -132,47 +141,51 @@ contract PolygonZkEVMBridge is address destinationAddress, uint256 amount, bytes calldata permitData - ) public payable virtual ifNotEmergencyState { - require( - destinationNetwork != networkID, - "PolygonZkEVMBridge::bridgeAsset: Destination cannot be itself" - ); + ) public payable virtual ifNotEmergencyState nonReentrant { + if ( + destinationNetwork == networkID || + destinationNetwork >= _CURRENT_SUPPORTED_NETWORKS + ) { + revert DestinationNetworkInvalid(); + } address originTokenAddress; uint32 originNetwork; bytes memory metadata; + uint256 leafAmount = amount; if (token == address(0)) { // Ether transfer - require( - msg.value == amount, - "PolygonZkEVMBridge::bridgeAsset: Amount does not match message.value" - ); + if (msg.value != amount) { + revert AmountDoesNotMatchMsgValue(); + } // Ether is treated as ether from mainnet - originNetwork = MAINNET_NETWORK_ID; + originNetwork = _MAINNET_NETWORK_ID; } else { - TokenInformation memory tokenInfo = wrappedTokenToTokenInfo[token]; + // Check msg.value is 0 if tokens are bridged + if (msg.value != 0) { + revert MsgValueNotZero(); + } originTokenAddress = token; originNetwork = networkID; // Encode metadata metadata = abi.encode( - IERC20MetadataUpgradeable(token).name(), - IERC20MetadataUpgradeable(token).symbol(), - IERC20MetadataUpgradeable(token).decimals() + _safeName(token), + _safeSymbol(token), + _safeDecimals(token) ); - } emit BridgeEvent( - LEAF_TYPE_ASSET, + _LEAF_TYPE_ASSET, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, - amount, + leafAmount, metadata, uint32(depositCount) ); @@ -182,7 +195,7 @@ contract PolygonZkEVMBridge is } /** - * @notice Bridge message + * @notice Bridge message and send ETH value * @param destinationNetwork Network destination * @param destinationAddress Address destination * @param metadata Message metadata @@ -190,15 +203,17 @@ contract PolygonZkEVMBridge is function bridgeMessage( uint32 destinationNetwork, address destinationAddress, - bytes memory metadata - ) public payable ifNotEmergencyState { - require( - destinationNetwork != networkID, - "PolygonZkEVMBridge::bridgeMessage: Destination cannot be itself" - ); + bytes calldata metadata + ) external payable ifNotEmergencyState { + if ( + destinationNetwork == networkID || + destinationNetwork >= _CURRENT_SUPPORTED_NETWORKS + ) { + revert DestinationNetworkInvalid(); + } emit BridgeEvent( - LEAF_TYPE_MESSAGE, + _LEAF_TYPE_MESSAGE, networkID, msg.sender, destinationNetwork, @@ -226,7 +241,7 @@ contract PolygonZkEVMBridge is * @param metadata Abi encoded metadata if any, empty otherwise */ function claimAsset( - bytes32[] memory smtProof, + bytes32[_DEPOSIT_CONTRACT_TREE_DEPTH] calldata smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, @@ -235,8 +250,8 @@ contract PolygonZkEVMBridge is uint32 destinationNetwork, address destinationAddress, uint256 amount, - bytes memory metadata - ) public ifNotEmergencyState { + bytes calldata metadata + ) external ifNotEmergencyState { // Verify leaf exist and it does not have been claimed _verifyLeaf( smtProof, @@ -249,24 +264,20 @@ contract PolygonZkEVMBridge is destinationAddress, amount, metadata, - LEAF_TYPE_ASSET + _LEAF_TYPE_ASSET ); - // Update nullifier - _setClaimed(index); - // Transfer funds if (originTokenAddress == address(0)) { - + } else { // Transfer tokens - emit NewWrappedToken( originNetwork, originTokenAddress, - address(0) + address(0), + metadata ); - } emit ClaimEvent( @@ -280,6 +291,9 @@ contract PolygonZkEVMBridge is /** * @notice Verify merkle proof and execute message + * If the receiving address is an EOA, the call will result as a success + * Which means that the amount of ether will be transferred correctly, but the message + * will not trigger any execution * @param smtProof Smt proof * @param index Index of the leaf * @param mainnetExitRoot Mainnet exit root @@ -292,7 +306,7 @@ contract PolygonZkEVMBridge is * @param metadata Abi encoded metadata if any, empty otherwise */ function claimMessage( - bytes32[] memory smtProof, + bytes32[_DEPOSIT_CONTRACT_TREE_DEPTH] calldata smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, @@ -301,8 +315,8 @@ contract PolygonZkEVMBridge is uint32 destinationNetwork, address destinationAddress, uint256 amount, - bytes memory metadata - ) public ifNotEmergencyState { + bytes calldata metadata + ) external ifNotEmergencyState { // Verify leaf exist and it does not have been claimed _verifyLeaf( smtProof, @@ -315,12 +329,9 @@ contract PolygonZkEVMBridge is destinationAddress, amount, metadata, - LEAF_TYPE_MESSAGE + _LEAF_TYPE_MESSAGE ); - // Update nullifier - _setClaimed(index); - emit ClaimEvent( index, originNetwork, @@ -332,6 +343,9 @@ contract PolygonZkEVMBridge is /** * @notice Returns the precalculated address of a wrapper using the token information + * Note Updating the metadata of a token is not supported. + * Since the metadata has relevance in the address deployed, this function will not return a valid + * wrapped address if the metadata provided is not the original one. * @param originNetwork Origin network * @param originTokenAddress Origin token address, 0 address is reserved for ether * @param name Name of the token @@ -344,7 +358,7 @@ contract PolygonZkEVMBridge is string calldata name, string calldata symbol, uint8 decimals - ) public view returns (address) { + ) external view returns (address) { bytes32 salt = keccak256( abi.encodePacked(originNetwork, originTokenAddress) ); @@ -375,7 +389,7 @@ contract PolygonZkEVMBridge is function getTokenWrappedAddress( uint32 originNetwork, address originTokenAddress - ) public view returns (address) { + ) external view returns (address) { return tokenInfoToWrappedToken[ keccak256(abi.encodePacked(originNetwork, originTokenAddress)) @@ -413,7 +427,7 @@ contract PolygonZkEVMBridge is * @param leafType Leaf type --> [0] transfer Ether / ERC20 tokens, [1] message */ function _verifyLeaf( - bytes32[] memory smtProof, + bytes32[_DEPOSIT_CONTRACT_TREE_DEPTH] calldata smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, @@ -422,50 +436,45 @@ contract PolygonZkEVMBridge is uint32 destinationNetwork, address destinationAddress, uint256 amount, - bytes memory metadata, + bytes calldata metadata, uint8 leafType ) internal { - // Check nullifier - require( - !isClaimed(index), - "PolygonZkEVMBridge::_verifyLeaf: Already claimed" - ); + // Set and check nullifier + _setAndCheckClaimed(index); } /** * @notice Function to check if an index is claimed or not * @param index Index */ - function isClaimed(uint256 index) public view returns (bool) { - uint256 claimedWordIndex = index / 256; - uint256 claimedBitIndex = index % 256; - uint256 claimedWord = claimedBitMap[claimedWordIndex]; - uint256 mask = (1 << claimedBitIndex); - return (claimedWord & mask) == mask; + function isClaimed(uint256 index) external view returns (bool) { + (uint256 wordPos, uint256 bitPos) = _bitmapPositions(index); + uint256 mask = (1 << bitPos); + return (claimedBitMap[wordPos] & mask) == mask; } /** - * @notice Function set a index as claimed + * @notice Function to check that an index is not claimed and set it as claimed * @param index Index */ - function _setClaimed(uint256 index) private { - uint256 claimedWordIndex = index / 256; - uint256 claimedBitIndex = index % 256; - claimedBitMap[claimedWordIndex] = - claimedBitMap[claimedWordIndex] | - (1 << claimedBitIndex); + function _setAndCheckClaimed(uint256 index) private { + (uint256 wordPos, uint256 bitPos) = _bitmapPositions(index); + uint256 mask = 1 << bitPos; + uint256 flipped = claimedBitMap[wordPos] ^= mask; + if (flipped & mask == 0) { + revert AlreadyClaimed(); + } } /** - * @notice Function to extract the selector of a bytes calldata - * @param _data The calldata bytes + * @notice Function decode an index into a wordPos and bitPos + * @param index Index */ - function _getSelector( - bytes memory _data - ) private pure returns (bytes4 sig) { - assembly { - sig := mload(add(_data, 32)) - } + function _bitmapPositions( + uint256 index + ) private pure returns (uint256 wordPos, uint256 bitPos) { + wordPos = uint248(index >> 8); + bitPos = uint8(index); } /** @@ -479,7 +488,7 @@ contract PolygonZkEVMBridge is uint256 amount, bytes calldata permitData ) internal { - bytes4 sig = _getSelector(permitData); + bytes4 sig = bytes4(permitData[:4]); if (sig == _PERMIT_SIGNATURE) { ( address owner, @@ -501,18 +510,16 @@ contract PolygonZkEVMBridge is bytes32 ) ); - require( - owner == msg.sender, - "PolygonZkEVMBridge::_permit: Permit owner must be the sender" - ); - require( - spender == address(this), - "PolygonZkEVMBridge::_permit: Spender must be 'this'" - ); - require( - value == amount, - "PolygonZkEVMBridge::_permit: Permit amount does not match" - ); + if (owner != msg.sender) { + revert NotValidOwner(); + } + if (spender != address(this)) { + revert NotValidSpender(); + } + + if (value != amount) { + revert NotValidAmount(); + } // we call without checking the result, in case it fails and he doesn't have enough balance // the following transferFrom should be fail. This prevents DoS attacks from using a signature @@ -531,10 +538,9 @@ contract PolygonZkEVMBridge is ) ); } else { - require( - sig == _PERMIT_SIGNATURE_DAI, - "PolygonZkEVMBridge::_permit: Not valid call" - ); + if (sig != _PERMIT_SIGNATURE_DAI) { + revert NotValidSignature(); + } ( address holder, @@ -558,14 +564,14 @@ contract PolygonZkEVMBridge is bytes32 ) ); - require( - holder == msg.sender, - "PolygonZkEVMBridge::_permit: Permit owner must be the sender" - ); - require( - spender == address(this), - "PolygonZkEVMBridge::_permit: Spender must be 'this'" - ); + + if (holder != msg.sender) { + revert NotValidOwner(); + } + + if (spender != address(this)) { + revert NotValidSpender(); + } // we call without checking the result, in case it fails and he doesn't have enough balance // the following transferFrom should be fail. This prevents DoS attacks from using a signature @@ -586,4 +592,72 @@ contract PolygonZkEVMBridge is ); } } + + // Helpers to safely get the metadata from a token, inspired by https://github.com/traderjoe-xyz/joe-core/blob/main/contracts/MasterChefJoeV3.sol#L55-L95 + + /** + * @notice Provides a safe ERC20.symbol version which returns 'NO_SYMBOL' as fallback string + * @param token The address of the ERC-20 token contract + */ + function _safeSymbol(address token) internal view returns (string memory) { + (bool success, bytes memory data) = address(token).staticcall( + abi.encodeCall(IERC20MetadataUpgradeable.symbol, ()) + ); + return success ? _returnDataToString(data) : "NO_SYMBOL"; + } + + /** + * @notice Provides a safe ERC20.name version which returns 'NO_NAME' as fallback string. + * @param token The address of the ERC-20 token contract. + */ + function _safeName(address token) internal view returns (string memory) { + (bool success, bytes memory data) = address(token).staticcall( + abi.encodeCall(IERC20MetadataUpgradeable.name, ()) + ); + return success ? _returnDataToString(data) : "NO_NAME"; + } + + /** + * @notice Provides a safe ERC20.decimals version which returns '18' as fallback value. + * Note Tokens with (decimals > 255) are not supported + * @param token The address of the ERC-20 token contract + */ + function _safeDecimals(address token) internal view returns (uint8) { + (bool success, bytes memory data) = address(token).staticcall( + abi.encodeCall(IERC20MetadataUpgradeable.decimals, ()) + ); + return success && data.length == 32 ? abi.decode(data, (uint8)) : 18; + } + + /** + * @notice Function to convert returned data to string + * returns 'NOT_VALID_ENCODING' as fallback value. + * @param data returned data + */ + function _returnDataToString( + bytes memory data + ) internal pure returns (string memory) { + if (data.length >= 64) { + return abi.decode(data, (string)); + } else if (data.length == 32) { + // Since the strings on bytes32 are encoded left-right, check the first zero in the data + uint256 nonZeroBytes; + while (nonZeroBytes < 32 && data[nonZeroBytes] != 0) { + nonZeroBytes++; + } + + // If the first one is 0, we do not handle the encoding + if (nonZeroBytes == 0) { + return "NOT_VALID_ENCODING"; + } + // Create a byte array with nonZeroBytes length + bytes memory bytesArray = new bytes(nonZeroBytes); + for (uint256 i = 0; i < nonZeroBytes; i++) { + bytesArray[i] = data[i]; + } + return string(bytesArray); + } else { + return "NOT_VALID_ENCODING"; + } + } } diff --git a/test/mocksmartcontracts/polygonzkevmbridge/polygonzkevmbridge.go b/test/mocksmartcontracts/polygonzkevmbridge/polygonzkevmbridge.go index 200a1fe6..b9718a20 100644 --- a/test/mocksmartcontracts/polygonzkevmbridge/polygonzkevmbridge.go +++ b/test/mocksmartcontracts/polygonzkevmbridge/polygonzkevmbridge.go @@ -30,8 +30,8 @@ var ( // PolygonzkevmbridgeMetaData contains all meta data concerning the Polygonzkevmbridge contract. var PolygonzkevmbridgeMetaData = &bind.MetaData{ - ABI: "[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"leafType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"depositCount\",\"type\":\"uint32\"}],\"name\":\"BridgeEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wrappedTokenAddress\",\"type\":\"address\"}],\"name\":\"NewWrappedToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"LEAF_TYPE_ASSET\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LEAF_TYPE_MESSAGE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAINNET_NETWORK_ID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"permitData\",\"type\":\"bytes\"}],\"name\":\"bridgeAsset\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"bridgeMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"claimAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"claimMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimedBitMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDepositRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"leafType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"getLeafValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"}],\"name\":\"getTokenWrappedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_networkID\",\"type\":\"uint32\"},{\"internalType\":\"contractIPolygonZkEVMGlobalExitRoot\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_polygonZkEVMaddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"isClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"polygonZkEVMaddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"precalculatedWrapperAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"tokenInfoToWrappedToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"leafHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[]\",\"name\":\"smtProof\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint64\",\"name\":\"index\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"verifyMerkleProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokenToTokenInfo\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", - Bin: "0x608060405234801561001057600080fd5b5061392f806100206000396000f3fe608060405260043610620001ab5760003560e01c80637b6323c111620000e7578063d02103ca1162000089578063ed6be5c91162000060578063ed6be5c914620005ce578063ee25560b14620005e5578063ff634ed7146200061657600080fd5b8063d02103ca146200057d578063d96a15f7146200059f578063dbc1697614620005b657600080fd5b8063a08e8a0811620000be578063a08e8a0814620004f4578063aaa13cc2146200051e578063bab161bf146200054357600080fd5b80637b6323c1146200047057806381b1c17414620004955780639e34070f14620004cf57600080fd5b806334ac9cf211620001515780633e19704311620001285780633e1970431462000345578063463855491462000426578063647c576c146200044b57600080fd5b806334ac9cf214620002e65780633ae0504714620003085780633da81682146200032057600080fd5b806322e95f2c116200018657806322e95f2c14620002125780632dfdf0b51462000250578063318aee3d146200027757600080fd5b80630871e97114620001b057806315064c9614620001c95780632072f6c514620001fa575b600080fd5b620001c7620001c13660046200189a565b6200062d565b005b348015620001d657600080fd5b50602254620001e59060ff1681565b60405190151581526020015b60405180910390f35b3480156200020757600080fd5b50620001c762000a82565b3480156200021f57600080fd5b50620002376200023136600462001927565b62000b10565b6040516001600160a01b039091168152602001620001f1565b3480156200025d57600080fd5b506200026860215481565b604051908152602001620001f1565b3480156200028457600080fd5b50620002c16200029636600462001963565b60256020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001f1565b348015620002f357600080fd5b5060275462000237906001600160a01b031681565b3480156200031557600080fd5b506200026862000ba2565b3480156200032d57600080fd5b50620001e56200033f36600462001a5d565b62000c95565b3480156200035257600080fd5b50620002686200036436600462001adb565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200043357600080fd5b50620001c76200044536600462001bec565b62000d95565b3480156200045857600080fd5b50620001c76200046a36600462001cd3565b62000eb2565b3480156200047d57600080fd5b50620001c76200048f36600462001bec565b62001038565b348015620004a257600080fd5b5062000237620004b436600462001d23565b6024602052600090815260409020546001600160a01b031681565b348015620004dc57600080fd5b50620001e5620004ee36600462001d23565b620011a4565b3480156200050157600080fd5b506200050b600081565b60405160ff9091168152602001620001f1565b3480156200052b57600080fd5b50620002376200053d36600462001d3d565b620011e9565b3480156200055057600080fd5b506022546200056790610100900463ffffffff1681565b60405163ffffffff9091168152602001620001f1565b3480156200058a57600080fd5b5060265462000237906001600160a01b031681565b620001c7620005b036600462001df1565b62001355565b348015620005c357600080fd5b50620001c762001532565b348015620005db57600080fd5b5062000567600081565b348015620005f257600080fd5b50620002686200060436600462001d23565b60236020526000908152604090205481565b3480156200062357600080fd5b506200050b600181565b60225460ff1615620006b75760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a4015b60405180910390fd5b60225463ffffffff6101009091048116908616036200073f5760405162461bcd60e51b815260206004820152603d60248201527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a60448201527f2044657374696e6174696f6e2063616e6e6f7420626520697473656c660000006064820152608401620006ae565b60008060606001600160a01b038916620007fb57853414620007f15760405162461bcd60e51b8152602060048201526044602482018190527f506f6c79676f6e5a6b45564d4272696467653a3a62726964676541737365743a908201527f20416d6f756e7420646f6573206e6f74206d61746368206d6573736167652e7660648201527f616c756500000000000000000000000000000000000000000000000000000000608482015260a401620006ae565b60009150620009bf565b6001600160a01b03808a16600081815260256020908152604080832081518083018352905463ffffffff80821683526401000000009091049096169281019290925260225481517f06fdde0300000000000000000000000000000000000000000000000000000000815291518f9950610100909104909516965090936306fdde03926004838101939192918290030181865afa158015620008a0573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620008ca919081019062001e88565b8a6001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa15801562000909573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405262000933919081019062001e88565b8b6001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000972573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000998919062001f08565b604051602001620009ac9392919062001f56565b6040516020818303038152906040529150505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600083858b8b8b8760215460405162000a0198979695949392919062001f93565b60405180910390a16026546001600160a01b03166333d6247d62000a2462000ba2565b6040518263ffffffff1660e01b815260040162000a4391815260200190565b600060405180830381600087803b15801562000a5e57600080fd5b505af115801562000a73573d6000803e3d6000fd5b50505050505050505050505050565b6027546001600160a01b0316331462000b045760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060448201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e74726163740000000000006064820152608401620006ae565b62000b0e620015be565b565b600060246000848460405160200162000b6c92919060e09290921b7fffffffff0000000000000000000000000000000000000000000000000000000016825260601b6bffffffffffffffffffffffff1916600482015260180190565b60408051808303601f19018152918152815160209283012083529082019290925201600020546001600160a01b03169392505050565b602154600090819081805b602081101562000c8c578260011660010362000c0d576001816020811062000bd95762000bd962001fff565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000c3a565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b62000c476002846200202b565b6040805160208101859052908101849052909350606001604051602081830303815290604052805190602001209150808062000c839062002042565b91505062000bad565b50919392505050565b60008467ffffffffffffffff8416825b602081101562000d88578160011660010362000d125786818151811062000cd05762000cd062001fff565b60200260200101518360405160200162000cf4929190918252602082015260400190565b60405160208183030381529060405280519060200120925062000d64565b8287828151811062000d285762000d2862001fff565b602002602001015160405160200162000d4b929190918252602082015260400190565b6040516020818303038152906040528051906020012092505b62000d716002836200202b565b91508062000d7f8162002042565b91505062000ca5565b5050909114949350505050565b60225460ff161562000e1b5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620006ae565b62000e318a8a8a8a8a8a8a8a8a8a60016200167c565b62000e428963ffffffff166200170f565b6040805163ffffffff808c168252881660208201526001600160a01b03808816928201929092529084166060820152608081018390527f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839060a0015b60405180910390a150505050505050505050565b600054610100900460ff161580801562000ed35750600054600160ff909116105b8062000eef5750303b15801562000eef575060005460ff166001145b62000f635760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401620006ae565b6000805460ff19166001179055801562000f87576000805461ff0019166101001790555b6022805463ffffffff86166101000264ffffffff0019909116179055602680546001600160a01b038086167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556027805492851692909116919091179055801562001032576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b60225460ff1615620010be5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620006ae565b620010d48a8a8a8a8a8a8a8a8a8a60006200167c565b620010e58963ffffffff166200170f565b6001600160a01b0385161562000e42576040805163ffffffff881681526001600160a01b038716602082015260008183015290517fccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d599181900360600190a16040805163ffffffff808c168252881660208201526001600160a01b03808816928201929092529084166060820152608081018390527f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839060a00162000e9e565b600080620011b5610100846200202b565b90506000620011c7610100856200206a565b60009283526023602052604090922054600190921b9182169091149392505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b3083604051806020016200126c9062001800565b601f1982820381018352601f90910116604081905262001299908d908d908d908d908d90602001620020aa565b60408051601f1981840301815290829052620012b99291602001620020eb565b604051602081830303815290604052805190602001206040516020016200132f94939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60225460ff1615620013db5760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620006ae565b60225463ffffffff610100909104811690841603620014635760405162461bcd60e51b815260206004820152603f60248201527f506f6c79676f6e5a6b45564d4272696467653a3a6272696467654d657373616760448201527f653a2044657374696e6174696f6e2063616e6e6f7420626520697473656c66006064820152608401620006ae565b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001602260019054906101000a900463ffffffff163386863487602154604051620014b798979695949392919062001f93565b60405180910390a16026546001600160a01b03166333d6247d620014da62000ba2565b6040518263ffffffff1660e01b8152600401620014f991815260200190565b600060405180830381600087803b1580156200151457600080fd5b505af115801562001529573d6000803e3d6000fd5b50505050505050565b6027546001600160a01b03163314620015b45760405162461bcd60e51b815260206004820152603a60248201527f506f6c79676f6e5a6b45564d3a3a6f6e6c79506f6c79676f6e5a6b45564d3a2060448201527f6f6e6c7920506f6c79676f6e5a6b45564d20636f6e74726163740000000000006064820152608401620006ae565b62000b0e62001751565b60225460ff1615620016445760405162461bcd60e51b815260206004820152604260248201527f456d657267656e63794d616e616765723a3a69664e6f74456d657267656e637960448201527f53746174653a206f6e6c79206966206e6f7420656d657267656e637920737461606482015261746560f01b608482015260a401620006ae565b6022805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b6200168d8a63ffffffff16620011a4565b15620017025760405162461bcd60e51b815260206004820152603060248201527f506f6c79676f6e5a6b45564d4272696467653a3a5f7665726966794c6561663a60448201527f20416c726561647920636c61696d6564000000000000000000000000000000006064820152608401620006ae565b5050505050505050505050565b60006200171f610100836200202b565b9050600062001731610100846200206a565b6000928352602360205260409092208054600190931b9092179091555050565b60225460ff16620017cb5760405162461bcd60e51b815260206004820152603b60248201527f456d657267656e63794d616e616765723a3a6966456d657267656e637953746160448201527f74653a206f6e6c7920696620656d657267656e637920737461746500000000006064820152608401620006ae565b6022805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b6117db806200211f83390190565b6001600160a01b03811681146200182457600080fd5b50565b803562001834816200180e565b919050565b803563ffffffff811681146200183457600080fd5b60008083601f8401126200186157600080fd5b50813567ffffffffffffffff8111156200187a57600080fd5b6020830191508360208285010111156200189357600080fd5b9250929050565b60008060008060008060a08789031215620018b457600080fd5b8635620018c1816200180e565b9550620018d16020880162001839565b94506040870135620018e3816200180e565b935060608701359250608087013567ffffffffffffffff8111156200190757600080fd5b6200191589828a016200184e565b979a9699509497509295939492505050565b600080604083850312156200193b57600080fd5b620019468362001839565b9150602083013562001958816200180e565b809150509250929050565b6000602082840312156200197657600080fd5b813562001983816200180e565b9392505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715620019cc57620019cc6200198a565b604052919050565b600082601f830112620019e657600080fd5b8135602067ffffffffffffffff82111562001a055762001a056200198a565b8160051b62001a16828201620019a0565b928352848101820192828101908785111562001a3157600080fd5b83870192505b8483101562001a525782358252918301919083019062001a37565b979650505050505050565b6000806000806080858703121562001a7457600080fd5b84359350602085013567ffffffffffffffff8082111562001a9457600080fd5b62001aa288838901620019d4565b945060408701359150808216821462001aba57600080fd5b509396929550929360600135925050565b60ff811681146200182457600080fd5b600080600080600080600060e0888a03121562001af757600080fd5b873562001b048162001acb565b965062001b146020890162001839565b9550604088013562001b26816200180e565b945062001b366060890162001839565b9350608088013562001b48816200180e565b9699959850939692959460a0840135945060c09093013592915050565b600067ffffffffffffffff82111562001b825762001b826200198a565b50601f01601f191660200190565b600082601f83011262001ba257600080fd5b813562001bb962001bb38262001b65565b620019a0565b81815284602083860101111562001bcf57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000806000806000806101408b8d03121562001c0d57600080fd5b8a3567ffffffffffffffff8082111562001c2657600080fd5b62001c348e838f01620019d4565b9b5062001c4460208e0162001839565b9a5060408d0135995060608d0135985062001c6260808e0162001839565b975062001c7260a08e0162001827565b965062001c8260c08e0162001839565b955062001c9260e08e0162001827565b94506101008d013593506101208d013591508082111562001cb257600080fd5b5062001cc18d828e0162001b90565b9150509295989b9194979a5092959850565b60008060006060848603121562001ce957600080fd5b62001cf48462001839565b9250602084013562001d06816200180e565b9150604084013562001d18816200180e565b809150509250925092565b60006020828403121562001d3657600080fd5b5035919050565b600080600080600080600060a0888a03121562001d5957600080fd5b62001d648862001839565b9650602088013562001d76816200180e565b9550604088013567ffffffffffffffff8082111562001d9457600080fd5b62001da28b838c016200184e565b909750955060608a013591508082111562001dbc57600080fd5b5062001dcb8a828b016200184e565b909450925050608088013562001de18162001acb565b8091505092959891949750929550565b60008060006060848603121562001e0757600080fd5b62001e128462001839565b9250602084013562001e24816200180e565b9150604084013567ffffffffffffffff81111562001e4157600080fd5b62001e4f8682870162001b90565b9150509250925092565b60005b8381101562001e7657818101518382015260200162001e5c565b83811115620010325750506000910152565b60006020828403121562001e9b57600080fd5b815167ffffffffffffffff81111562001eb357600080fd5b8201601f8101841362001ec557600080fd5b805162001ed662001bb38262001b65565b81815285602083850101111562001eec57600080fd5b62001eff82602083016020860162001e59565b95945050505050565b60006020828403121562001f1b57600080fd5b8151620019838162001acb565b6000815180845262001f4281602086016020860162001e59565b601f01601f19169290920160200192915050565b60608152600062001f6b606083018662001f28565b828103602084015262001f7f818662001f28565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262001fe68285018762001f28565b925080851660e085015250509998505050505050505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601260045260246000fd5b6000826200203d576200203d62002015565b500490565b6000600182016200206357634e487b7160e01b600052601160045260246000fd5b5060010190565b6000826200207c576200207c62002015565b500690565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b606081526000620020c060608301878962002081565b8281036020840152620020d581868862002081565b91505060ff831660408301529695505050505050565b60008351620020ff81846020880162001e59565b8351908301906200211581836020880162001e59565b0194935050505056fe60c06040523480156200001157600080fd5b50604051620017db380380620017db8339810160408190526200003491620002ad565b82826003620000448382620003c1565b506004620000538282620003c1565b5050600580546001600160a81b0319163360ff60a01b191617600160a01b60ff851602179055504660808190526200008b9062000098565b60a052506200048d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000c562000146565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b606060038054620001579062000332565b80601f0160208091040260200160405190810160405280929190818152602001828054620001859062000332565b8015620001d65780601f10620001aa57610100808354040283529160200191620001d6565b820191906000526020600020905b815481529060010190602001808311620001b857829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f8301126200020857600080fd5b81516001600160401b0380821115620002255762000225620001e0565b604051601f8301601f19908116603f01168101908282118183101715620002505762000250620001e0565b816040528381526020925086838588010111156200026d57600080fd5b600091505b8382101562000291578582018301518183018401529082019062000272565b83821115620002a35760008385830101525b9695505050505050565b600080600060608486031215620002c357600080fd5b83516001600160401b0380821115620002db57600080fd5b620002e987838801620001f6565b945060208601519150808211156200030057600080fd5b506200030f86828701620001f6565b925050604084015160ff811681146200032757600080fd5b809150509250925092565b600181811c908216806200034757607f821691505b6020821081036200036857634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003bc57600081815260208120601f850160051c81016020861015620003975750805b601f850160051c820191505b81811015620003b857828155600101620003a3565b5050505b505050565b81516001600160401b03811115620003dd57620003dd620001e0565b620003f581620003ee845462000332565b846200036e565b602080601f8311600181146200042d5760008415620004145750858301515b600019600386901b1c1916600185901b178555620003b8565b600085815260208120601f198616915b828110156200045e578886015182559484019460019091019084016200043d565b50858210156200047d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a051611321620004ba60003960006104e001526000818161034a01526104aa01526113216000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf1461036c578063dd62ed3e1461037f578063ffa1ad74146103b857600080fd5b8063a457c2d71461031f578063a9059cbb14610332578063cd0d00961461034557600080fd5b806395d89b41116100bd57806395d89b41146102d95780639dc29fac146102e1578063a3c573eb146102f457600080fd5b806370a08231146102905780637ecebe00146102b957600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610260578063395093511461026857806340c10f191461027b57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b6101846103d8565b60405161019191906110b4565b60405180910390f35b6101ad6101a8366004611125565b61046a565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461114f565b610482565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60055474010000000000000000000000000000000000000000900460ff1660405160ff9091168152602001610191565b6101c16104a6565b6101ad610276366004611125565b610502565b61028e610289366004611125565b610541565b005b6101c161029e36600461118b565b6001600160a01b031660009081526020819052604090205490565b6101c16102c736600461118b565b60066020526000908152604090205481565b6101846105d4565b61028e6102ef366004611125565b6105e3565b600554610307906001600160a01b031681565b6040516001600160a01b039091168152602001610191565b6101ad61032d366004611125565b61066d565b6101ad610340366004611125565b610717565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61028e61037a3660046111ad565b610725565b6101c161038d366004611220565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610184604051806040016040528060018152602001603160f81b81525081565b6060600380546103e790611253565b80601f016020809104026020016040519081016040528092919081815260200182805461041390611253565b80156104605780601f1061043557610100808354040283529160200191610460565b820191906000526020600020905b81548152906001019060200180831161044357829003601f168201915b5050505050905090565b6000336104788185856109aa565b5060019392505050565b600033610490858285610b03565b61049b858585610b95565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104dd576104d846610dac565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b0387168452909152812054909190610478908290869061053c9087906112a3565b6109aa565b6005546001600160a01b031633146105c65760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084015b60405180910390fd5b6105d08282610e58565b5050565b6060600480546103e790611253565b6005546001600160a01b031633146106635760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084016105bd565b6105d08282610f37565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561070a5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105bd565b61049b82868684036109aa565b600033610478818585610b95565b8342111561079a5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d69740000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038716600090815260066020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866107e7836112bb565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108456104a6565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa1580156108eb573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906109215750896001600160a01b0316816001600160a01b0316145b6109935760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e61747572650000000000000000000000000000000000000000000000000060648201526084016105bd565b61099e8a8a8a6109aa565b50505050505050505050565b6001600160a01b038316610a255760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216610aa15760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610b8f5781811015610b825760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105bd565b610b8f84848484036109aa565b50505050565b6001600160a01b038316610c115760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216610c8d5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03831660009081526020819052604090205481811015610d1c5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610d539084906112a3565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610d9f91815260200190565b60405180910390a3610b8f565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610dd76103d8565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610eae5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105bd565b8060026000828254610ec091906112a3565b90915550506001600160a01b03821660009081526020819052604081208054839290610eed9084906112a3565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b038216610fb35760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b038216600090815260208190526040902054818110156110425760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105bd565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110719084906112d4565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610af6565b600060208083528351808285015260005b818110156110e1578581018301518582016040015282016110c5565b818111156110f3576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461112057600080fd5b919050565b6000806040838503121561113857600080fd5b61114183611109565b946020939093013593505050565b60008060006060848603121561116457600080fd5b61116d84611109565b925061117b60208501611109565b9150604084013590509250925092565b60006020828403121561119d57600080fd5b6111a682611109565b9392505050565b600080600080600080600060e0888a0312156111c857600080fd5b6111d188611109565b96506111df60208901611109565b95506040880135945060608801359350608088013560ff8116811461120357600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561123357600080fd5b61123c83611109565b915061124a60208401611109565b90509250929050565b600181811c9082168061126757607f821691505b60208210810361128757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b600082198211156112b6576112b661128d565b500190565b6000600182016112cd576112cd61128d565b5060010190565b6000828210156112e6576112e661128d565b50039056fea26469706673582212205d074ee584238a5fb66873e3fc67d479c99eb1688b3ca2f77c22e4f97ce77b0064736f6c634300080f0033a26469706673582212209c3e6dd9ad65734df28342f27198e6ccf4e89a9ceff35fa28b458f87db72a74c64736f6c634300080f0033", + ABI: "[{\"inputs\":[],\"name\":\"AlreadyClaimed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"AmountDoesNotMatchMsgValue\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DestinationNetworkInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EtherTransferFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"GlobalExitRootInvalid\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidSmtProof\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MerkleTreeFull\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageFailed\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MsgValueNotZero\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotValidAmount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotValidOwner\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotValidSignature\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotValidSpender\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyNotEmergencyState\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"OnlyPolygonZkEVM\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"leafType\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"depositCount\",\"type\":\"uint32\"}],\"name\":\"BridgeEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"ClaimEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateActivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"EmergencyStateDeactivated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"wrappedTokenAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"NewWrappedToken\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"activateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"permitData\",\"type\":\"bytes\"}],\"name\":\"bridgeAsset\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"bridgeMessage\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[32]\",\"name\":\"smtProof\",\"type\":\"bytes32[32]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"claimAsset\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32[32]\",\"name\":\"smtProof\",\"type\":\"bytes32[32]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"mainnetExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"rollupExitRoot\",\"type\":\"bytes32\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"claimMessage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"claimedBitMap\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deactivateEmergencyState\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"depositCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getDepositRoot\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"leafType\",\"type\":\"uint8\"},{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originAddress\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destinationNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"destinationAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"metadataHash\",\"type\":\"bytes32\"}],\"name\":\"getLeafValue\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"}],\"name\":\"getTokenWrappedAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"globalExitRootManager\",\"outputs\":[{\"internalType\":\"contractIBasePolygonZkEVMGlobalExitRoot\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"_networkID\",\"type\":\"uint32\"},{\"internalType\":\"contractIBasePolygonZkEVMGlobalExitRoot\",\"name\":\"_globalExitRootManager\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_polygonZkEVMaddress\",\"type\":\"address\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"isClaimed\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"isEmergencyState\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"networkID\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"polygonZkEVMaddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"},{\"internalType\":\"string\",\"name\":\"name\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"symbol\",\"type\":\"string\"},{\"internalType\":\"uint8\",\"name\":\"decimals\",\"type\":\"uint8\"}],\"name\":\"precalculatedWrapperAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"tokenInfoToWrappedToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"leafHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32[32]\",\"name\":\"smtProof\",\"type\":\"bytes32[32]\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"bytes32\",\"name\":\"root\",\"type\":\"bytes32\"}],\"name\":\"verifyMerkleProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"wrappedTokenToTokenInfo\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"originNetwork\",\"type\":\"uint32\"},{\"internalType\":\"address\",\"name\":\"originTokenAddress\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}]", + Bin: "0x608060405234801561001057600080fd5b5061389d806100206000396000f3fe608060405260043610620001875760003560e01c80633e19704311620000db578063bab161bf1162000089578063dbc169761162000060578063dbc16976146200056c578063ee25560b1462000584578063fb57083414620005b557600080fd5b8063bab161bf14620004f0578063d02103ca146200052a578063d96a15f7146200055557600080fd5b806381b1c17411620000be57806381b1c174146200044c5780639e34070f1462000486578063aaa13cc214620004cb57600080fd5b80633e1970431462000346578063647c576c146200042757600080fd5b80632d2c9d941162000139578063318aee3d116200011c578063318aee3d146200029d57806334ac9cf2146200030c5780633ae05047146200032e57600080fd5b80632d2c9d9414620002515780632dfdf0b5146200027657600080fd5b80632072f6c5116200016e5780632072f6c514620001d657806322e95f2c14620001ee5780632cffd02e146200022c57600080fd5b80630871e971146200018c57806315064c9614620001a5575b600080fd5b620001a36200019d36600462001860565b620005da565b005b348015620001b257600080fd5b50606854620001c19060ff1681565b60405190151581526020015b60405180910390f35b348015620001e357600080fd5b50620001a362000811565b348015620001fb57600080fd5b50620002136200020d366004620018ed565b62000849565b6040516001600160a01b039091168152602001620001cd565b3480156200023957600080fd5b50620001a36200024b3660046200193c565b620008cc565b3480156200025e57600080fd5b50620001a3620002703660046200193c565b620009c6565b3480156200028357600080fd5b506200028e60535481565b604051908152602001620001cd565b348015620002aa57600080fd5b50620002e7620002bc36600462001a22565b606b6020526000908152604090205463ffffffff81169064010000000090046001600160a01b031682565b6040805163ffffffff90931683526001600160a01b03909116602083015201620001cd565b3480156200031957600080fd5b50606c5462000213906001600160a01b031681565b3480156200033b57600080fd5b506200028e62000a02565b3480156200035357600080fd5b506200028e6200036536600462001a59565b6040517fff0000000000000000000000000000000000000000000000000000000000000060f889901b1660208201527fffffffff0000000000000000000000000000000000000000000000000000000060e088811b821660218401526bffffffffffffffffffffffff19606089811b821660258601529188901b909216603984015285901b16603d8201526051810183905260718101829052600090609101604051602081830303815290604052805190602001209050979650505050505050565b3480156200043457600080fd5b50620001a36200044636600462001ae3565b62000ae8565b3480156200045957600080fd5b50620002136200046b36600462001b33565b606a602052600090815260409020546001600160a01b031681565b3480156200049357600080fd5b50620001c1620004a536600462001b33565b600881901c600090815260696020526040902054600160ff9092169190911b9081161490565b348015620004d857600080fd5b5062000213620004ea36600462001b4d565b62000cb8565b348015620004fd57600080fd5b506068546200051490610100900463ffffffff1681565b60405163ffffffff9091168152602001620001cd565b3480156200053757600080fd5b5060685462000213906501000000000090046001600160a01b031681565b620001a36200056636600462001c01565b62000e24565b3480156200057957600080fd5b50620001a362000f69565b3480156200059157600080fd5b506200028e620005a336600462001b33565b60696020526000908152604090205481565b348015620005c257600080fd5b50620001c1620005d436600462001c6c565b62000f9f565b60685460ff1615620005ff57604051630bc011ff60e21b815260040160405180910390fd5b6200060962001086565b60685463ffffffff8681166101009092041614806200062f5750600263ffffffff861610155b156200064e576040516302caf51760e11b815260040160405180910390fd5b6000806060856001600160a01b038a16620006a7578634146200069d576040517fb89240f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600092506200073a565b3415620006e0576040517f798ee6f100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6068548a9450610100900463ffffffff169250620006fe84620010e1565b620007098b620011df565b620007148c620012ca565b604051602001620007289392919062001d0d565b60405160208183030381529060405291505b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b600084868c8c86886053546040516200077c98979695949392919062001d4a565b60405180910390a16068546501000000000090046001600160a01b03166333d6247d620007a862000a02565b6040518263ffffffff1660e01b8152600401620007c791815260200190565b600060405180830381600087803b158015620007e257600080fd5b505af1158015620007f7573d6000803e3d6000fd5b50505050505050506200080960018055565b505050505050565b606c546001600160a01b031633146200083d5760405163e2e8106b60e01b815260040160405180910390fd5b62000847620013aa565b565b6040805160e084901b7fffffffff0000000000000000000000000000000000000000000000000000000016602080830191909152606084901b6bffffffffffffffffffffffff1916602483015282516018818403018152603890920183528151918101919091206000908152606a90915220546001600160a01b03165b92915050565b60685460ff1615620008f157604051630bc011ff60e21b815260040160405180910390fd5b620009088b8b8b8b8b8b8b8b8b8b8b600062001407565b6001600160a01b038616156200095b577f490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a398787600085856040516200095295949392919062001ddf565b60405180910390a15b6040805163ffffffff8c81168252891660208201526001600160a01b0388811682840152861660608201526080810185905290517f25308c93ceeed162da955b3f7ce3e3f93606579e40fb92029faa9efe275459839181900360a00190a15050505050505050505050565b60685460ff1615620009eb57604051630bc011ff60e21b815260040160405180910390fd5b6200095b8b8b8b8b8b8b8b8b8b8b8b600162001407565b605354600090819081805b602081101562000adf578083901c60011660010362000a70576033816020811062000a3c5762000a3c62001e25565b0154604080516020810192909252810185905260600160405160208183030381529060405280519060200120935062000a9d565b60408051602081018690529081018390526060016040516020818303038152906040528051906020012093505b6040805160208101849052908101839052606001604051602081830303815290604052805190602001209150808062000ad69062001e3b565b91505062000a0d565b50919392505050565b600054610100900460ff161580801562000b095750600054600160ff909116105b8062000b255750303b15801562000b25575060005460ff166001145b62000b9d5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff19166001179055801562000bc1576000805461ff0019166101001790555b606880547fffffffffffffff000000000000000000000000000000000000000000000000ff1661010063ffffffff8716027fffffffffffffff0000000000000000000000000000000000000000ffffffffff1617650100000000006001600160a01b038681169190910291909117909155606c80547fffffffffffffffffffffffff00000000000000000000000000000000000000001691841691909117905562000c6b62001426565b801562000cb2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e089901b1660208201526bffffffffffffffffffffffff19606088901b1660248201526000908190603801604051602081830303815290604052805190602001209050600060ff60f81b30836040518060200162000d3b90620017d8565b601f1982820381018352601f90910116604081905262000d68908d908d908d908d908d9060200162001e63565b60408051601f198184030181529082905262000d88929160200162001ea4565b6040516020818303038152906040528051906020012060405160200162000dfe94939291907fff0000000000000000000000000000000000000000000000000000000000000094909416845260609290921b6bffffffffffffffffffffffff191660018401526015830152603582015260550190565b60408051808303601f1901815291905280516020909101209a9950505050505050505050565b60685460ff161562000e4957604051630bc011ff60e21b815260040160405180910390fd5b60685463ffffffff85811661010090920416148062000e6f5750600263ffffffff851610155b1562000e8e576040516302caf51760e11b815260040160405180910390fd5b7f501781209a1f8899323b96b4ef08b168df93e0a90c673d1e4cce39366cb62f9b6001606860019054906101000a900463ffffffff1633878734888860535460405162000ee49998979695949392919062001ed7565b60405180910390a16068546501000000000090046001600160a01b03166333d6247d62000f1062000a02565b6040518263ffffffff1660e01b815260040162000f2f91815260200190565b600060405180830381600087803b15801562000f4a57600080fd5b505af115801562000f5f573d6000803e3d6000fd5b5050505050505050565b606c546001600160a01b0316331462000f955760405163e2e8106b60e01b815260040160405180910390fd5b620008476200149d565b600084815b60208110156200107a57600163ffffffff8616821c81169003620010165785816020811062000fd75762000fd762001e25565b60200201358260405160200162000ff8929190918252602082015260400190565b60405160208183030381529060405280519060200120915062001065565b818682602081106200102c576200102c62001e25565b60200201356040516020016200104c929190918252602082015260400190565b6040516020818303038152906040528051906020012091505b80620010718162001e3b565b91505062000fa4565b50909114949350505050565b600260015403620010da5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640162000b94565b6002600155565b60408051600481526024810182526020810180516001600160e01b03167f06fdde0300000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162001143919062001f45565b600060405180830381855afa9150503d806000811462001180576040519150601f19603f3d011682016040523d82523d6000602084013e62001185565b606091505b509150915081620011cc576040518060400160405280600781526020017f4e4f5f4e414d4500000000000000000000000000000000000000000000000000815250620011d7565b620011d7816200150f565b949350505050565b60408051600481526024810182526020810180516001600160e01b03167f95d89b4100000000000000000000000000000000000000000000000000000000179052905160609160009182916001600160a01b0386169162001241919062001f45565b600060405180830381855afa9150503d80600081146200127e576040519150601f19603f3d011682016040523d82523d6000602084013e62001283565b606091505b509150915081620011cc576040518060400160405280600981526020017f4e4f5f53594d424f4c0000000000000000000000000000000000000000000000815250620011d7565b60408051600481526024810182526020810180516001600160e01b03167f313ce567000000000000000000000000000000000000000000000000000000001790529051600091829182916001600160a01b038616916200132b919062001f45565b600060405180830381855afa9150503d806000811462001368576040519150601f19603f3d011682016040523d82523d6000602084013e6200136d565b606091505b509150915081801562001381575080516020145b6200138e576012620011d7565b80806020019051810190620011d7919062001f63565b60018055565b60685460ff1615620013cf57604051630bc011ff60e21b815260040160405180910390fd5b6068805460ff191660011790556040517f2261efe5aef6fedc1fd1550b25facc9181745623049c7901287030b9ad1a549790600090a1565b620014188b63ffffffff16620016ff565b505050505050505050505050565b600054610100900460ff16620014935760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000b94565b620008476200176b565b60685460ff16620014da576040517f5386698100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6068805460ff191690556040517f1e5e34eea33501aecf2ebec9fe0e884a40804275ea7fe10b2ba084c8374308b390600090a1565b60606040825110620015315781806020019051810190620008c6919062001f99565b8151602003620016c15760005b6020811080156200158957508281815181106200155f576200155f62001e25565b01602001517fff000000000000000000000000000000000000000000000000000000000000001615155b15620015a457806200159b8162001e3b565b9150506200153e565b80600003620015e857505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e4700000000000000000000000000006020820152919050565b60008167ffffffffffffffff81111562001606576200160662001f83565b6040519080825280601f01601f19166020018201604052801562001631576020820181803683370190505b50905060005b82811015620016b95784818151811062001655576200165562001e25565b602001015160f81c60f81b82828151811062001675576200167562001e25565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535080620016b08162001e3b565b91505062001637565b509392505050565b505060408051808201909152601281527f4e4f545f56414c49445f454e434f44494e470000000000000000000000000000602082015290565b919050565b600881901c60008181526069602052604081208054600160ff861690811b9182189283905592909190818316900362001764576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050505050565b600054610100900460ff16620013a45760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b606482015260840162000b94565b611820806200204883390190565b6001600160a01b0381168114620017fc57600080fd5b50565b803563ffffffff81168114620016fa57600080fd5b60008083601f8401126200182757600080fd5b50813567ffffffffffffffff8111156200184057600080fd5b6020830191508360208285010111156200185957600080fd5b9250929050565b60008060008060008060a087890312156200187a57600080fd5b86356200188781620017e6565b95506200189760208801620017ff565b94506040870135620018a981620017e6565b935060608701359250608087013567ffffffffffffffff811115620018cd57600080fd5b620018db89828a0162001814565b979a9699509497509295939492505050565b600080604083850312156200190157600080fd5b6200190c83620017ff565b915060208301356200191e81620017e6565b809150509250929050565b806104008101831015620008c657600080fd5b60008060008060008060008060008060006105208c8e0312156200195f57600080fd5b6200196b8d8d62001929565b9a506200197c6104008d01620017ff565b99506104208c013598506104408c013597506200199d6104608d01620017ff565b96506104808c0135620019b081620017e6565b9550620019c16104a08d01620017ff565b94506104c08c0135620019d481620017e6565b93506104e08c013592506105008c013567ffffffffffffffff811115620019fa57600080fd5b62001a088e828f0162001814565b915080935050809150509295989b509295989b9093969950565b60006020828403121562001a3557600080fd5b813562001a4281620017e6565b9392505050565b60ff81168114620017fc57600080fd5b600080600080600080600060e0888a03121562001a7557600080fd5b873562001a828162001a49565b965062001a9260208901620017ff565b9550604088013562001aa481620017e6565b945062001ab460608901620017ff565b9350608088013562001ac681620017e6565b9699959850939692959460a0840135945060c09093013592915050565b60008060006060848603121562001af957600080fd5b62001b0484620017ff565b9250602084013562001b1681620017e6565b9150604084013562001b2881620017e6565b809150509250925092565b60006020828403121562001b4657600080fd5b5035919050565b600080600080600080600060a0888a03121562001b6957600080fd5b62001b7488620017ff565b9650602088013562001b8681620017e6565b9550604088013567ffffffffffffffff8082111562001ba457600080fd5b62001bb28b838c0162001814565b909750955060608a013591508082111562001bcc57600080fd5b5062001bdb8a828b0162001814565b909450925050608088013562001bf18162001a49565b8091505092959891949750929550565b6000806000806060858703121562001c1857600080fd5b62001c2385620017ff565b9350602085013562001c3581620017e6565b9250604085013567ffffffffffffffff81111562001c5257600080fd5b62001c608782880162001814565b95989497509550505050565b600080600080610460858703121562001c8457600080fd5b8435935062001c97866020870162001929565b925062001ca86104208601620017ff565b939692955092936104400135925050565b60005b8381101562001cd657818101518382015260200162001cbc565b50506000910152565b6000815180845262001cf981602086016020860162001cb9565b601f01601f19169290920160200192915050565b60608152600062001d22606083018662001cdf565b828103602084015262001d36818662001cdf565b91505060ff83166040830152949350505050565b600061010060ff8b16835263ffffffff808b1660208501526001600160a01b03808b166040860152818a1660608601528089166080860152508660a08501528160c085015262001d9d8285018762001cdf565b925080851660e085015250509998505050505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b63ffffffff8616815260006001600160a01b0380871660208401528086166040840152506080606083015262001e1a60808301848662001db6565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b60006001820162001e5c57634e487b7160e01b600052601160045260246000fd5b5060010190565b60608152600062001e7960608301878962001db6565b828103602084015262001e8e81868862001db6565b91505060ff831660408301529695505050505050565b6000835162001eb881846020880162001cb9565b83519083019062001ece81836020880162001cb9565b01949350505050565b600061010060ff8c16835263ffffffff808c1660208501526001600160a01b03808c166040860152818b166060860152808a166080860152508760a08501528160c085015262001f2b828501878962001db6565b925080851660e085015250509a9950505050505050505050565b6000825162001f5981846020870162001cb9565b9190910192915050565b60006020828403121562001f7657600080fd5b815162001a428162001a49565b634e487b7160e01b600052604160045260246000fd5b60006020828403121562001fac57600080fd5b815167ffffffffffffffff8082111562001fc557600080fd5b818401915084601f83011262001fda57600080fd5b81518181111562001fef5762001fef62001f83565b604051601f8201601f19908116603f011681019083821181831017156200201a576200201a62001f83565b816040528281528760208487010111156200203457600080fd5b62001e1a83602083016020880162001cb956fe6101006040523480156200001257600080fd5b50604051620018203803806200182083398101604081905262000035916200028d565b82826003620000458382620003a1565b506004620000548282620003a1565b50503360c0525060ff811660e052466080819052620000739062000080565b60a052506200046d915050565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f620000ad6200012e565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6060600380546200013f9062000312565b80601f01602080910402602001604051908101604052809291908181526020018280546200016d9062000312565b8015620001be5780601f106200019257610100808354040283529160200191620001be565b820191906000526020600020905b815481529060010190602001808311620001a057829003601f168201915b5050505050905090565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620001f057600080fd5b81516001600160401b03808211156200020d576200020d620001c8565b604051601f8301601f19908116603f01168101908282118183101715620002385762000238620001c8565b816040528381526020925086838588010111156200025557600080fd5b600091505b838210156200027957858201830151818301840152908201906200025a565b600093810190920192909252949350505050565b600080600060608486031215620002a357600080fd5b83516001600160401b0380821115620002bb57600080fd5b620002c987838801620001de565b94506020860151915080821115620002e057600080fd5b50620002ef86828701620001de565b925050604084015160ff811681146200030757600080fd5b809150509250925092565b600181811c908216806200032757607f821691505b6020821081036200034857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200039c57600081815260208120601f850160051c81016020861015620003775750805b601f850160051c820191505b81811015620003985782815560010162000383565b5050505b505050565b81516001600160401b03811115620003bd57620003bd620001c8565b620003d581620003ce845462000312565b846200034e565b602080601f8311600181146200040d5760008415620003f45750858301515b600019600386901b1c1916600185901b17855562000398565b600085815260208120601f198616915b828110156200043e578886015182559484019460019091019084016200041d565b50858210156200045d5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60805160a05160c05160e051611364620004bc60003960006102370152600081816102fa015281816105630152610623015260006104f701526000818161035f01526104c101526113646000f3fe608060405234801561001057600080fd5b50600436106101775760003560e01c806370a08231116100d8578063a457c2d71161008c578063d505accf11610066578063d505accf14610381578063dd62ed3e14610394578063ffa1ad74146103cd57600080fd5b8063a457c2d714610334578063a9059cbb14610347578063cd0d00961461035a57600080fd5b806395d89b41116100bd57806395d89b41146102da5780639dc29fac146102e2578063a3c573eb146102f557600080fd5b806370a08231146102915780637ecebe00146102ba57600080fd5b806330adf81f1161012f5780633644e515116101145780633644e51514610261578063395093511461026957806340c10f191461027c57600080fd5b806330adf81f14610209578063313ce5671461023057600080fd5b806318160ddd1161016057806318160ddd146101bd57806320606b70146101cf57806323b872dd146101f657600080fd5b806306fdde031461017c578063095ea7b31461019a575b600080fd5b6101846103ed565b6040516101919190611107565b60405180910390f35b6101ad6101a8366004611171565b61047f565b6040519015158152602001610191565b6002545b604051908152602001610191565b6101c17f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81565b6101ad61020436600461119b565b610499565b6101c17f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b60405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152602001610191565b6101c16104bd565b6101ad610277366004611171565b610519565b61028f61028a366004611171565b610558565b005b6101c161029f3660046111d7565b6001600160a01b031660009081526020819052604090205490565b6101c16102c83660046111d7565b60056020526000908152604090205481565b610184610609565b61028f6102f0366004611171565b610618565b61031c7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610191565b6101ad610342366004611171565b6106c0565b6101ad610355366004611171565b61076a565b6101c17f000000000000000000000000000000000000000000000000000000000000000081565b61028f61038f3660046111f9565b610778565b6101c16103a236600461126c565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b610184604051806040016040528060018152602001603160f81b81525081565b6060600380546103fc9061129f565b80601f01602080910402602001604051908101604052809291908181526020018280546104289061129f565b80156104755780601f1061044a57610100808354040283529160200191610475565b820191906000526020600020905b81548152906001019060200180831161045857829003601f168201915b5050505050905090565b60003361048d8185856109fd565b60019150505b92915050565b6000336104a7858285610b56565b6104b2858585610be8565b506001949350505050565b60007f000000000000000000000000000000000000000000000000000000000000000046146104f4576104ef46610dff565b905090565b507f000000000000000000000000000000000000000000000000000000000000000090565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061048d90829086906105539087906112ef565b6109fd565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146105fb5760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084015b60405180910390fd5b6106058282610eab565b5050565b6060600480546103fc9061129f565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146106b65760405162461bcd60e51b815260206004820152603060248201527f546f6b656e577261707065643a3a6f6e6c794272696467653a204e6f7420506f60448201527f6c79676f6e5a6b45564d4272696467650000000000000000000000000000000060648201526084016105f2565b6106058282610f8a565b3360008181526001602090815260408083206001600160a01b03871684529091528120549091908381101561075d5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f00000000000000000000000000000000000000000000000000000060648201526084016105f2565b6104b282868684036109fd565b60003361048d818585610be8565b834211156107ed5760405162461bcd60e51b8152602060048201526024808201527f546f6b656e577261707065643a3a7065726d69743a204578706972656420706560448201527f726d69740000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b038716600090815260056020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661083a83611302565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e00160405160208183030381529060405280519060200120905060006108986104bd565b6040517f1901000000000000000000000000000000000000000000000000000000000000602082015260228101919091526042810183905260620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa15801561093e573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116158015906109745750896001600160a01b0316816001600160a01b0316145b6109e65760405162461bcd60e51b815260206004820152602760248201527f546f6b656e577261707065643a3a7065726d69743a20496e76616c696420736960448201527f676e61747572650000000000000000000000000000000000000000000000000060648201526084016105f2565b6109f18a8a8a6109fd565b50505050505050505050565b6001600160a01b038316610a785760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f726573730000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b038216610af45760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f737300000000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038381166000908152600160209081526040808320938616835292905220546000198114610be25781811015610bd55760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016105f2565b610be284848484036109fd565b50505050565b6001600160a01b038316610c645760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f647265737300000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b038216610ce05760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f657373000000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b03831660009081526020819052604090205481811015610d6f5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e6365000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b03808516600090815260208190526040808220858503905591851681529081208054849290610da69084906112ef565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610df291815260200190565b60405180910390a3610be2565b60007f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f610e2a6103ed565b805160209182012060408051808201825260018152603160f81b90840152805192830193909352918101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018390523060a082015260c001604051602081830303815290604052805190602001209050919050565b6001600160a01b038216610f015760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105f2565b8060026000828254610f1391906112ef565b90915550506001600160a01b03821660009081526020819052604081208054839290610f409084906112ef565b90915550506040518181526001600160a01b038316906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35050565b6001600160a01b0382166110065760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f730000000000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b038216600090815260208190526040902054818110156110955760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f636500000000000000000000000000000000000000000000000000000000000060648201526084016105f2565b6001600160a01b03831660009081526020819052604081208383039055600280548492906110c490849061131b565b90915550506040518281526000906001600160a01b038516907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef90602001610b49565b600060208083528351808285015260005b8181101561113457858101830151858201604001528201611118565b506000604082860101526040601f19601f8301168501019250505092915050565b80356001600160a01b038116811461116c57600080fd5b919050565b6000806040838503121561118457600080fd5b61118d83611155565b946020939093013593505050565b6000806000606084860312156111b057600080fd5b6111b984611155565b92506111c760208501611155565b9150604084013590509250925092565b6000602082840312156111e957600080fd5b6111f282611155565b9392505050565b600080600080600080600060e0888a03121561121457600080fd5b61121d88611155565b965061122b60208901611155565b95506040880135945060608801359350608088013560ff8116811461124f57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6000806040838503121561127f57600080fd5b61128883611155565b915061129660208401611155565b90509250929050565b600181811c908216806112b357607f821691505b6020821081036112d357634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610493576104936112d9565b600060018201611314576113146112d9565b5060010190565b81810381811115610493576104936112d956fea264697066735822122096b785fb92e9d4372a52fbc641ca1490dd9eca1990f97279973ebfb2e360d35264736f6c63430008110033a26469706673582212204fbf6a7640de60d7941c9ee705e32fe415593d34e02483ee4e6c0dcb17e37e3c64736f6c63430008110033", } // PolygonzkevmbridgeABI is the input ABI used to generate the binding from. @@ -201,99 +201,6 @@ func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorRaw) Transact(opts *bind. return _Polygonzkevmbridge.Contract.contract.Transact(opts, method, params...) } -// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. -// -// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) -func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) LEAFTYPEASSET(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _Polygonzkevmbridge.contract.Call(opts, &out, "LEAF_TYPE_ASSET") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. -// -// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) -func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) LEAFTYPEASSET() (uint8, error) { - return _Polygonzkevmbridge.Contract.LEAFTYPEASSET(&_Polygonzkevmbridge.CallOpts) -} - -// LEAFTYPEASSET is a free data retrieval call binding the contract method 0xa08e8a08. -// -// Solidity: function LEAF_TYPE_ASSET() view returns(uint8) -func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) LEAFTYPEASSET() (uint8, error) { - return _Polygonzkevmbridge.Contract.LEAFTYPEASSET(&_Polygonzkevmbridge.CallOpts) -} - -// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. -// -// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) -func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) LEAFTYPEMESSAGE(opts *bind.CallOpts) (uint8, error) { - var out []interface{} - err := _Polygonzkevmbridge.contract.Call(opts, &out, "LEAF_TYPE_MESSAGE") - - if err != nil { - return *new(uint8), err - } - - out0 := *abi.ConvertType(out[0], new(uint8)).(*uint8) - - return out0, err - -} - -// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. -// -// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) -func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) LEAFTYPEMESSAGE() (uint8, error) { - return _Polygonzkevmbridge.Contract.LEAFTYPEMESSAGE(&_Polygonzkevmbridge.CallOpts) -} - -// LEAFTYPEMESSAGE is a free data retrieval call binding the contract method 0xff634ed7. -// -// Solidity: function LEAF_TYPE_MESSAGE() view returns(uint8) -func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) LEAFTYPEMESSAGE() (uint8, error) { - return _Polygonzkevmbridge.Contract.LEAFTYPEMESSAGE(&_Polygonzkevmbridge.CallOpts) -} - -// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. -// -// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) -func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) MAINNETNETWORKID(opts *bind.CallOpts) (uint32, error) { - var out []interface{} - err := _Polygonzkevmbridge.contract.Call(opts, &out, "MAINNET_NETWORK_ID") - - if err != nil { - return *new(uint32), err - } - - out0 := *abi.ConvertType(out[0], new(uint32)).(*uint32) - - return out0, err - -} - -// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. -// -// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) -func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) MAINNETNETWORKID() (uint32, error) { - return _Polygonzkevmbridge.Contract.MAINNETNETWORKID(&_Polygonzkevmbridge.CallOpts) -} - -// MAINNETNETWORKID is a free data retrieval call binding the contract method 0xed6be5c9. -// -// Solidity: function MAINNET_NETWORK_ID() view returns(uint32) -func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) MAINNETNETWORKID() (uint32, error) { - return _Polygonzkevmbridge.Contract.MAINNETNETWORKID(&_Polygonzkevmbridge.CallOpts) -} - // ClaimedBitMap is a free data retrieval call binding the contract method 0xee25560b. // // Solidity: function claimedBitMap(uint256 ) view returns(uint256) @@ -666,10 +573,10 @@ func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) TokenInfoToWrappedTo return _Polygonzkevmbridge.Contract.TokenInfoToWrappedToken(&_Polygonzkevmbridge.CallOpts, arg0) } -// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. +// VerifyMerkleProof is a free data retrieval call binding the contract method 0xfb570834. // -// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) -func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) VerifyMerkleProof(opts *bind.CallOpts, leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { +// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[32] smtProof, uint32 index, bytes32 root) pure returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) VerifyMerkleProof(opts *bind.CallOpts, leafHash [32]byte, smtProof [32][32]byte, index uint32, root [32]byte) (bool, error) { var out []interface{} err := _Polygonzkevmbridge.contract.Call(opts, &out, "verifyMerkleProof", leafHash, smtProof, index, root) @@ -683,17 +590,17 @@ func (_Polygonzkevmbridge *PolygonzkevmbridgeCaller) VerifyMerkleProof(opts *bin } -// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. +// VerifyMerkleProof is a free data retrieval call binding the contract method 0xfb570834. // -// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) -func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) VerifyMerkleProof(leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { +// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[32] smtProof, uint32 index, bytes32 root) pure returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) VerifyMerkleProof(leafHash [32]byte, smtProof [32][32]byte, index uint32, root [32]byte) (bool, error) { return _Polygonzkevmbridge.Contract.VerifyMerkleProof(&_Polygonzkevmbridge.CallOpts, leafHash, smtProof, index, root) } -// VerifyMerkleProof is a free data retrieval call binding the contract method 0x3da81682. +// VerifyMerkleProof is a free data retrieval call binding the contract method 0xfb570834. // -// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[] smtProof, uint64 index, bytes32 root) pure returns(bool) -func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) VerifyMerkleProof(leafHash [32]byte, smtProof [][32]byte, index uint64, root [32]byte) (bool, error) { +// Solidity: function verifyMerkleProof(bytes32 leafHash, bytes32[32] smtProof, uint32 index, bytes32 root) pure returns(bool) +func (_Polygonzkevmbridge *PolygonzkevmbridgeCallerSession) VerifyMerkleProof(leafHash [32]byte, smtProof [32][32]byte, index uint32, root [32]byte) (bool, error) { return _Polygonzkevmbridge.Contract.VerifyMerkleProof(&_Polygonzkevmbridge.CallOpts, leafHash, smtProof, index, root) } @@ -805,45 +712,45 @@ func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) BridgeMessage(de return _Polygonzkevmbridge.Contract.BridgeMessage(&_Polygonzkevmbridge.TransactOpts, destinationNetwork, destinationAddress, metadata) } -// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. +// ClaimAsset is a paid mutator transaction binding the contract method 0x2cffd02e. // -// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) ClaimAsset(opts *bind.TransactOpts, smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { +// Solidity: function claimAsset(bytes32[32] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) ClaimAsset(opts *bind.TransactOpts, smtProof [32][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { return _Polygonzkevmbridge.contract.Transact(opts, "claimAsset", smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) } -// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. +// ClaimAsset is a paid mutator transaction binding the contract method 0x2cffd02e. // -// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) ClaimAsset(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { +// Solidity: function claimAsset(bytes32[32] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) ClaimAsset(smtProof [32][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { return _Polygonzkevmbridge.Contract.ClaimAsset(&_Polygonzkevmbridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) } -// ClaimAsset is a paid mutator transaction binding the contract method 0x7b6323c1. +// ClaimAsset is a paid mutator transaction binding the contract method 0x2cffd02e. // -// Solidity: function claimAsset(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) ClaimAsset(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { +// Solidity: function claimAsset(bytes32[32] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originTokenAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) ClaimAsset(smtProof [32][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originTokenAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { return _Polygonzkevmbridge.Contract.ClaimAsset(&_Polygonzkevmbridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originTokenAddress, destinationNetwork, destinationAddress, amount, metadata) } -// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. +// ClaimMessage is a paid mutator transaction binding the contract method 0x2d2c9d94. // -// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) ClaimMessage(opts *bind.TransactOpts, smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { +// Solidity: function claimMessage(bytes32[32] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactor) ClaimMessage(opts *bind.TransactOpts, smtProof [32][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { return _Polygonzkevmbridge.contract.Transact(opts, "claimMessage", smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) } -// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. +// ClaimMessage is a paid mutator transaction binding the contract method 0x2d2c9d94. // -// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) ClaimMessage(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { +// Solidity: function claimMessage(bytes32[32] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeSession) ClaimMessage(smtProof [32][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { return _Polygonzkevmbridge.Contract.ClaimMessage(&_Polygonzkevmbridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) } -// ClaimMessage is a paid mutator transaction binding the contract method 0x46385549. +// ClaimMessage is a paid mutator transaction binding the contract method 0x2d2c9d94. // -// Solidity: function claimMessage(bytes32[] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() -func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) ClaimMessage(smtProof [][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { +// Solidity: function claimMessage(bytes32[32] smtProof, uint32 index, bytes32 mainnetExitRoot, bytes32 rollupExitRoot, uint32 originNetwork, address originAddress, uint32 destinationNetwork, address destinationAddress, uint256 amount, bytes metadata) returns() +func (_Polygonzkevmbridge *PolygonzkevmbridgeTransactorSession) ClaimMessage(smtProof [32][32]byte, index uint32, mainnetExitRoot [32]byte, rollupExitRoot [32]byte, originNetwork uint32, originAddress common.Address, destinationNetwork uint32, destinationAddress common.Address, amount *big.Int, metadata []byte) (*types.Transaction, error) { return _Polygonzkevmbridge.Contract.ClaimMessage(&_Polygonzkevmbridge.TransactOpts, smtProof, index, mainnetExitRoot, rollupExitRoot, originNetwork, originAddress, destinationNetwork, destinationAddress, amount, metadata) } @@ -1640,12 +1547,13 @@ type PolygonzkevmbridgeNewWrappedToken struct { OriginNetwork uint32 OriginTokenAddress common.Address WrappedTokenAddress common.Address + Metadata []byte Raw types.Log // Blockchain specific contextual infos } -// FilterNewWrappedToken is a free log retrieval operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. +// FilterNewWrappedToken is a free log retrieval operation binding the contract event 0x490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a39. // -// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) +// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress, bytes metadata) func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) FilterNewWrappedToken(opts *bind.FilterOpts) (*PolygonzkevmbridgeNewWrappedTokenIterator, error) { logs, sub, err := _Polygonzkevmbridge.contract.FilterLogs(opts, "NewWrappedToken") @@ -1655,9 +1563,9 @@ func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) FilterNewWrappedToken(opt return &PolygonzkevmbridgeNewWrappedTokenIterator{contract: _Polygonzkevmbridge.contract, event: "NewWrappedToken", logs: logs, sub: sub}, nil } -// WatchNewWrappedToken is a free log subscription operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. +// WatchNewWrappedToken is a free log subscription operation binding the contract event 0x490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a39. // -// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) +// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress, bytes metadata) func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) WatchNewWrappedToken(opts *bind.WatchOpts, sink chan<- *PolygonzkevmbridgeNewWrappedToken) (event.Subscription, error) { logs, sub, err := _Polygonzkevmbridge.contract.WatchLogs(opts, "NewWrappedToken") @@ -1692,9 +1600,9 @@ func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) WatchNewWrappedToken(opts }), nil } -// ParseNewWrappedToken is a log parse operation binding the contract event 0xccd7715648d1f2bb13e158f96b5b6c3aeda555d4cb87112e274a6f28bc571d59. +// ParseNewWrappedToken is a log parse operation binding the contract event 0x490e59a1701b938786ac72570a1efeac994a3dbe96e2e883e19e902ace6e6a39. // -// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress) +// Solidity: event NewWrappedToken(uint32 originNetwork, address originTokenAddress, address wrappedTokenAddress, bytes metadata) func (_Polygonzkevmbridge *PolygonzkevmbridgeFilterer) ParseNewWrappedToken(log types.Log) (*PolygonzkevmbridgeNewWrappedToken, error) { event := new(PolygonzkevmbridgeNewWrappedToken) if err := _Polygonzkevmbridge.contract.UnpackLog(event, "NewWrappedToken", log); err != nil { diff --git a/test/operations/manager.go b/test/operations/manager.go index d73f7c4e..ea3d47c7 100644 --- a/test/operations/manager.go +++ b/test/operations/manager.go @@ -44,8 +44,8 @@ const ( // MaticTokenAddress token address MaticTokenAddress = "0x5FbDB2315678afecb367f032d93F642f64180aa3" //nolint:gosec - l1BridgeAddr = "0x0165878A594ca255338adfa4d48449f69242Eb8F" - l2BridgeAddr = "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" + l1BridgeAddr = "0x60627AC8Ba44F4438186B4bCD5F1cb5E794e19fe" + l2BridgeAddr = "0xd0a3d58d135e2ee795dFB26ec150D339394254B9" l1AccHexAddress = "0x3C44CdDdB6a900fa2b585dd299e03d12FA4293BC" @@ -53,6 +53,8 @@ const ( makeCmd = "make" cmdDir = "../.." + + mtHeight = 32 ) var ( @@ -488,21 +490,21 @@ func (m *Manager) CheckAccountTokenBalance(ctx context.Context, network NetworkS } // GetClaimData gets the claim data -func (m *Manager) GetClaimData(ctx context.Context, networkID, depositCount uint) ([][bridgectrl.KeyLen]byte, *etherman.GlobalExitRoot, error) { +func (m *Manager) GetClaimData(ctx context.Context, networkID, depositCount uint) ([mtHeight][bridgectrl.KeyLen]byte, *etherman.GlobalExitRoot, error) { res, err := m.bridgeService.GetProof(context.Background(), &pb.GetProofRequest{ NetId: uint32(networkID), DepositCnt: uint64(depositCount), }) if err != nil { - return nil, nil, err + return [mtHeight][32]byte{}, nil, err } - prooves := [][bridgectrl.KeyLen]byte{} - for _, p := range res.Proof.MerkleProof { + proves := [mtHeight][bridgectrl.KeyLen]byte{} + for i, p := range res.Proof.MerkleProof { var proof [bridgectrl.KeyLen]byte copy(proof[:], common.FromHex(p)) - prooves = append(prooves, proof) + proves[i] = proof } - return prooves, ðerman.GlobalExitRoot{ + return proves, ðerman.GlobalExitRoot{ ExitRoots: []common.Hash{ common.HexToHash(res.Proof.MainExitRoot), common.HexToHash(res.Proof.RollupExitRoot), @@ -530,7 +532,7 @@ func (m *Manager) GetBridgeInfoByDestAddr(ctx context.Context, addr *common.Addr } // SendL1Claim send an L1 claim -func (m *Manager) SendL1Claim(ctx context.Context, deposit *pb.Deposit, smtProof [][32]byte, globalExitRoot *etherman.GlobalExitRoot) error { +func (m *Manager) SendL1Claim(ctx context.Context, deposit *pb.Deposit, smtProof [mtHeight][32]byte, globalExitRoot *etherman.GlobalExitRoot) error { client := m.clients[L1] auth, err := client.GetSigner(ctx, accHexPrivateKeys[L1]) if err != nil { @@ -541,7 +543,7 @@ func (m *Manager) SendL1Claim(ctx context.Context, deposit *pb.Deposit, smtProof } // SendL2Claim send an L2 claim -func (m *Manager) SendL2Claim(ctx context.Context, deposit *pb.Deposit, smtProof [][32]byte, globalExitRoot *etherman.GlobalExitRoot) error { +func (m *Manager) SendL2Claim(ctx context.Context, deposit *pb.Deposit, smtProof [mtHeight][32]byte, globalExitRoot *etherman.GlobalExitRoot) error { client := m.clients[L2] auth, err := client.GetSigner(ctx, accHexPrivateKeys[L2]) if err != nil { diff --git a/test/scripts/claim/main.go b/test/scripts/claim/main.go index ed02c2d8..aca51369 100644 --- a/test/scripts/claim/main.go +++ b/test/scripts/claim/main.go @@ -12,12 +12,14 @@ import ( ) const ( - l2BridgeAddr = "0x9d98deabc42dd696deb9e40b4f1cab7ddbf55988" + l2BridgeAddr = "0xd0a3d58d135e2ee795dFB26ec150D339394254B9" l2AccHexAddress = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266" l2AccHexPrivateKey = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" l2NetworkURL = "http://localhost:8123" bridgeURL = "http://localhost:8080" + + mtHeight = 32 ) func main() { @@ -55,10 +57,10 @@ func main() { log.Debug("mainnetExitRoot: ", proof.MainExitRoot) log.Debug("rollupExitRoot: ", proof.RollupExitRoot) - var smt [][32]byte + var smt [mtHeight][32]byte for i := 0; i < len(proof.MerkleProof); i++ { log.Debug("smt: ", proof.MerkleProof[i]) - smt = append(smt, common.HexToHash(proof.MerkleProof[i])) + smt[i] = common.HexToHash(proof.MerkleProof[i]) } globalExitRoot := ðerman.GlobalExitRoot{ ExitRoots: []common.Hash{common.HexToHash(proof.MainExitRoot), common.HexToHash(proof.RollupExitRoot)}, diff --git a/test/scripts/forcebatchproposal/main.go b/test/scripts/forcebatchproposal/main.go index ce00c864..e6c5abf8 100644 --- a/test/scripts/forcebatchproposal/main.go +++ b/test/scripts/forcebatchproposal/main.go @@ -15,7 +15,7 @@ const ( l1AccHexPrivateKey = "0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80" l1NetworkURL = "http://localhost:8545" - poeAddress = "0x2279B7A0a67DB372996a5FaB50D91eAA73d2eBe6" + poeAddress = "0x8A791620dd6260079BF849Dc5567aDC3F2FdC318" maticTokenAddr = "0x5FbDB2315678afecb367f032d93F642f64180aa3" //nolint:gosec ) @@ -44,7 +44,7 @@ func main() { if err != nil { log.Fatal("Error approving matics: ", err) } - tx, err := poe.SequenceBatches(auth, nil) + tx, err := poe.SequenceBatches(auth, nil, auth.From) if err != nil { log.Fatal("Error sending the batch: ", err) } diff --git a/utils/client.go b/utils/client.go index d20100b2..1170b679 100644 --- a/utils/client.go +++ b/utils/client.go @@ -26,6 +26,8 @@ const ( LeafTypeAsset uint32 = 0 // LeafTypeMessage represents a bridge message LeafTypeMessage uint32 = 1 + + mtHeight = 32 ) // Client is the utillity client @@ -152,7 +154,7 @@ func (c Client) SendBridgeMessage(ctx context.Context, destNetwork uint32, destA } // SendClaim sends a claim transaction. -func (c Client) SendClaim(ctx context.Context, deposit *pb.Deposit, smtProof [][32]byte, globalExitRoot *etherman.GlobalExitRoot, bridgeSCAddr common.Address, auth *bind.TransactOpts) error { +func (c Client) SendClaim(ctx context.Context, deposit *pb.Deposit, smtProof [mtHeight][32]byte, globalExitRoot *etherman.GlobalExitRoot, bridgeSCAddr common.Address, auth *bind.TransactOpts) error { br, err := polygonzkevmbridge.NewPolygonzkevmbridge(bridgeSCAddr, c.Client) if err != nil { return err