From 07fe378937427139d350ca6221b8c1d6235e54be Mon Sep 17 00:00:00 2001 From: RnkSngh Date: Wed, 18 Dec 2024 03:22:40 -0800 Subject: [PATCH] fix typo in chainId -> chainID in crossl2 prover --- bindings/go/crossl2prover/CrossL2Prover.go | 51 ++++------- bindings/go/icrossl2prover/ICrossL2Prover.go | 34 ++++---- bindings/go/venus/Venus.go | 87 ++++++------------- contracts/core/proofAPI/CrossL2Prover.sol | 6 +- contracts/examples/Venus.sol | 22 +++-- contracts/interfaces/ICrossL2Prover.sol | 4 +- package.json | 2 +- src/evm/contracts/CrossL2Prover.ts | 8 +- src/evm/contracts/Venus.ts | 24 ++--- .../factories/CrossL2Prover__factory.ts | 14 +-- .../factories/ICrossL2Prover__factory.ts | 8 +- src/evm/contracts/factories/Venus__factory.ts | 58 ++++--------- 12 files changed, 114 insertions(+), 204 deletions(-) diff --git a/bindings/go/crossl2prover/CrossL2Prover.go b/bindings/go/crossl2prover/CrossL2Prover.go index b8ca1ad2..98971c22 100644 --- a/bindings/go/crossl2prover/CrossL2Prover.go +++ b/bindings/go/crossl2prover/CrossL2Prover.go @@ -51,7 +51,7 @@ type OpIcs23ProofPath struct { // CrossL2ProverMetaData contains all meta data concerning the CrossL2Prover contract. var CrossL2ProverMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"verifier_\",\"type\":\"address\",\"internalType\":\"contractISignatureVerifier\"},{\"name\":\"clientType_\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"LIGHT_CLIENT_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLightClientType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clientType\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"peptideAppHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"peptideHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"peptideAppHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validateEvent\",\"inputs\":[{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"emittingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"unindexedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validateReceipt\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"srcChainID\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"receiptRLP\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISignatureVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"appHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proofs\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"CannotUpdateClientWithDifferentAppHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAppHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidIbcStateProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidL1BlockHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidL1BlockNumber\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPacketProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofValue\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRLPEncodedL1BlockNumber\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRLPEncodedL1StateRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MethodNotImplemented\",\"inputs\":[]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"verifier_\",\"type\":\"address\",\"internalType\":\"contractISignatureVerifier\"},{\"name\":\"clientType_\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"LIGHT_CLIENT_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLightClientType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"clientType\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"peptideAppHashes\",\"inputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"peptideHeight\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"peptideAppHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validateEvent\",\"inputs\":[{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"emittingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"unindexedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validateReceipt\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifier\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractISignatureVerifier\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"verifyMembership\",\"inputs\":[{\"name\":\"appHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"proofs\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"verifyNonMembership\",\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structIcs23Proof\",\"components\":[{\"name\":\"proof\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23Proof[]\",\"components\":[{\"name\":\"path\",\"type\":\"tuple[]\",\"internalType\":\"structOpIcs23ProofPath[]\",\"components\":[{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"suffix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"key\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"value\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"prefix\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"pure\"},{\"type\":\"error\",\"name\":\"CannotUpdateClientWithDifferentAppHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAppHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidIbcStateProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidL1BlockHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidL1BlockNumber\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidPacketProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofKey\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidProofValue\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRLPEncodedL1BlockNumber\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRLPEncodedL1StateRoot\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MethodNotImplemented\",\"inputs\":[]}]", } // CrossL2ProverABI is the input ABI used to generate the binding from. @@ -326,9 +326,9 @@ func (_CrossL2Prover *CrossL2ProverCallerSession) PeptideAppHashes(arg0 *big.Int // ValidateEvent is a free data retrieval call binding the contract method 0x25dc9f2b. // -// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(bytes32 chainId, address emittingContract, bytes[] topics, bytes unindexedData) +// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(string chainId, address emittingContract, bytes[] topics, bytes unindexedData) func (_CrossL2Prover *CrossL2ProverCaller) ValidateEvent(opts *bind.CallOpts, logIndex *big.Int, proof []byte) (struct { - ChainId [32]byte + ChainId string EmittingContract common.Address Topics [][]byte UnindexedData []byte @@ -337,7 +337,7 @@ func (_CrossL2Prover *CrossL2ProverCaller) ValidateEvent(opts *bind.CallOpts, lo err := _CrossL2Prover.contract.Call(opts, &out, "validateEvent", logIndex, proof) outstruct := new(struct { - ChainId [32]byte + ChainId string EmittingContract common.Address Topics [][]byte UnindexedData []byte @@ -346,7 +346,7 @@ func (_CrossL2Prover *CrossL2ProverCaller) ValidateEvent(opts *bind.CallOpts, lo return *outstruct, err } - outstruct.ChainId = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.ChainId = *abi.ConvertType(out[0], new(string)).(*string) outstruct.EmittingContract = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) outstruct.Topics = *abi.ConvertType(out[2], new([][]byte)).(*[][]byte) outstruct.UnindexedData = *abi.ConvertType(out[3], new([]byte)).(*[]byte) @@ -357,9 +357,9 @@ func (_CrossL2Prover *CrossL2ProverCaller) ValidateEvent(opts *bind.CallOpts, lo // ValidateEvent is a free data retrieval call binding the contract method 0x25dc9f2b. // -// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(bytes32 chainId, address emittingContract, bytes[] topics, bytes unindexedData) +// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(string chainId, address emittingContract, bytes[] topics, bytes unindexedData) func (_CrossL2Prover *CrossL2ProverSession) ValidateEvent(logIndex *big.Int, proof []byte) (struct { - ChainId [32]byte + ChainId string EmittingContract common.Address Topics [][]byte UnindexedData []byte @@ -369,9 +369,9 @@ func (_CrossL2Prover *CrossL2ProverSession) ValidateEvent(logIndex *big.Int, pro // ValidateEvent is a free data retrieval call binding the contract method 0x25dc9f2b. // -// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(bytes32 chainId, address emittingContract, bytes[] topics, bytes unindexedData) +// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(string chainId, address emittingContract, bytes[] topics, bytes unindexedData) func (_CrossL2Prover *CrossL2ProverCallerSession) ValidateEvent(logIndex *big.Int, proof []byte) (struct { - ChainId [32]byte + ChainId string EmittingContract common.Address Topics [][]byte UnindexedData []byte @@ -381,46 +381,33 @@ func (_CrossL2Prover *CrossL2ProverCallerSession) ValidateEvent(logIndex *big.In // ValidateReceipt is a free data retrieval call binding the contract method 0x2cd78e77. // -// Solidity: function validateReceipt(bytes proof) view returns(bytes32 srcChainID, bytes receiptRLP) -func (_CrossL2Prover *CrossL2ProverCaller) ValidateReceipt(opts *bind.CallOpts, proof []byte) (struct { - SrcChainID [32]byte - ReceiptRLP []byte -}, error) { +// Solidity: function validateReceipt(bytes proof) view returns(string, bytes) +func (_CrossL2Prover *CrossL2ProverCaller) ValidateReceipt(opts *bind.CallOpts, proof []byte) (string, []byte, error) { var out []interface{} err := _CrossL2Prover.contract.Call(opts, &out, "validateReceipt", proof) - outstruct := new(struct { - SrcChainID [32]byte - ReceiptRLP []byte - }) if err != nil { - return *outstruct, err + return *new(string), *new([]byte), err } - outstruct.SrcChainID = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) - outstruct.ReceiptRLP = *abi.ConvertType(out[1], new([]byte)).(*[]byte) + out0 := *abi.ConvertType(out[0], new(string)).(*string) + out1 := *abi.ConvertType(out[1], new([]byte)).(*[]byte) - return *outstruct, err + return out0, out1, err } // ValidateReceipt is a free data retrieval call binding the contract method 0x2cd78e77. // -// Solidity: function validateReceipt(bytes proof) view returns(bytes32 srcChainID, bytes receiptRLP) -func (_CrossL2Prover *CrossL2ProverSession) ValidateReceipt(proof []byte) (struct { - SrcChainID [32]byte - ReceiptRLP []byte -}, error) { +// Solidity: function validateReceipt(bytes proof) view returns(string, bytes) +func (_CrossL2Prover *CrossL2ProverSession) ValidateReceipt(proof []byte) (string, []byte, error) { return _CrossL2Prover.Contract.ValidateReceipt(&_CrossL2Prover.CallOpts, proof) } // ValidateReceipt is a free data retrieval call binding the contract method 0x2cd78e77. // -// Solidity: function validateReceipt(bytes proof) view returns(bytes32 srcChainID, bytes receiptRLP) -func (_CrossL2Prover *CrossL2ProverCallerSession) ValidateReceipt(proof []byte) (struct { - SrcChainID [32]byte - ReceiptRLP []byte -}, error) { +// Solidity: function validateReceipt(bytes proof) view returns(string, bytes) +func (_CrossL2Prover *CrossL2ProverCallerSession) ValidateReceipt(proof []byte) (string, []byte, error) { return _CrossL2Prover.Contract.ValidateReceipt(&_CrossL2Prover.CallOpts, proof) } diff --git a/bindings/go/icrossl2prover/ICrossL2Prover.go b/bindings/go/icrossl2prover/ICrossL2Prover.go index 5caf6ba0..a487210a 100644 --- a/bindings/go/icrossl2prover/ICrossL2Prover.go +++ b/bindings/go/icrossl2prover/ICrossL2Prover.go @@ -31,7 +31,7 @@ var ( // ICrossL2ProverMetaData contains all meta data concerning the ICrossL2Prover contract. var ICrossL2ProverMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"function\",\"name\":\"LIGHT_CLIENT_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLightClientType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validateEvent\",\"inputs\":[{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"emittingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"unindexedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validateReceipt\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"srcChainId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"receiptRLP\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"}]", + ABI: "[{\"type\":\"function\",\"name\":\"LIGHT_CLIENT_TYPE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"enumLightClientType\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getState\",\"inputs\":[{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"updateClient\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"height\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"appHash\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"validateEvent\",\"inputs\":[{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"chainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"emittingContract\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"unindexedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validateReceipt\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"srcChainId\",\"type\":\"string\",\"internalType\":\"string\"},{\"name\":\"receiptRLP\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"stateMutability\":\"view\"}]", } // ICrossL2ProverABI is the input ABI used to generate the binding from. @@ -244,9 +244,9 @@ func (_ICrossL2Prover *ICrossL2ProverCallerSession) GetState(height *big.Int) (* // ValidateEvent is a free data retrieval call binding the contract method 0x25dc9f2b. // -// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(bytes32 chainId, address emittingContract, bytes[] topics, bytes unindexedData) +// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(string chainId, address emittingContract, bytes[] topics, bytes unindexedData) func (_ICrossL2Prover *ICrossL2ProverCaller) ValidateEvent(opts *bind.CallOpts, logIndex *big.Int, proof []byte) (struct { - ChainId [32]byte + ChainId string EmittingContract common.Address Topics [][]byte UnindexedData []byte @@ -255,7 +255,7 @@ func (_ICrossL2Prover *ICrossL2ProverCaller) ValidateEvent(opts *bind.CallOpts, err := _ICrossL2Prover.contract.Call(opts, &out, "validateEvent", logIndex, proof) outstruct := new(struct { - ChainId [32]byte + ChainId string EmittingContract common.Address Topics [][]byte UnindexedData []byte @@ -264,7 +264,7 @@ func (_ICrossL2Prover *ICrossL2ProverCaller) ValidateEvent(opts *bind.CallOpts, return *outstruct, err } - outstruct.ChainId = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.ChainId = *abi.ConvertType(out[0], new(string)).(*string) outstruct.EmittingContract = *abi.ConvertType(out[1], new(common.Address)).(*common.Address) outstruct.Topics = *abi.ConvertType(out[2], new([][]byte)).(*[][]byte) outstruct.UnindexedData = *abi.ConvertType(out[3], new([]byte)).(*[]byte) @@ -275,9 +275,9 @@ func (_ICrossL2Prover *ICrossL2ProverCaller) ValidateEvent(opts *bind.CallOpts, // ValidateEvent is a free data retrieval call binding the contract method 0x25dc9f2b. // -// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(bytes32 chainId, address emittingContract, bytes[] topics, bytes unindexedData) +// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(string chainId, address emittingContract, bytes[] topics, bytes unindexedData) func (_ICrossL2Prover *ICrossL2ProverSession) ValidateEvent(logIndex *big.Int, proof []byte) (struct { - ChainId [32]byte + ChainId string EmittingContract common.Address Topics [][]byte UnindexedData []byte @@ -287,9 +287,9 @@ func (_ICrossL2Prover *ICrossL2ProverSession) ValidateEvent(logIndex *big.Int, p // ValidateEvent is a free data retrieval call binding the contract method 0x25dc9f2b. // -// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(bytes32 chainId, address emittingContract, bytes[] topics, bytes unindexedData) +// Solidity: function validateEvent(uint256 logIndex, bytes proof) view returns(string chainId, address emittingContract, bytes[] topics, bytes unindexedData) func (_ICrossL2Prover *ICrossL2ProverCallerSession) ValidateEvent(logIndex *big.Int, proof []byte) (struct { - ChainId [32]byte + ChainId string EmittingContract common.Address Topics [][]byte UnindexedData []byte @@ -299,23 +299,23 @@ func (_ICrossL2Prover *ICrossL2ProverCallerSession) ValidateEvent(logIndex *big. // ValidateReceipt is a free data retrieval call binding the contract method 0x2cd78e77. // -// Solidity: function validateReceipt(bytes proof) view returns(bytes32 srcChainId, bytes receiptRLP) +// Solidity: function validateReceipt(bytes proof) view returns(string srcChainId, bytes receiptRLP) func (_ICrossL2Prover *ICrossL2ProverCaller) ValidateReceipt(opts *bind.CallOpts, proof []byte) (struct { - SrcChainId [32]byte + SrcChainId string ReceiptRLP []byte }, error) { var out []interface{} err := _ICrossL2Prover.contract.Call(opts, &out, "validateReceipt", proof) outstruct := new(struct { - SrcChainId [32]byte + SrcChainId string ReceiptRLP []byte }) if err != nil { return *outstruct, err } - outstruct.SrcChainId = *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + outstruct.SrcChainId = *abi.ConvertType(out[0], new(string)).(*string) outstruct.ReceiptRLP = *abi.ConvertType(out[1], new([]byte)).(*[]byte) return *outstruct, err @@ -324,9 +324,9 @@ func (_ICrossL2Prover *ICrossL2ProverCaller) ValidateReceipt(opts *bind.CallOpts // ValidateReceipt is a free data retrieval call binding the contract method 0x2cd78e77. // -// Solidity: function validateReceipt(bytes proof) view returns(bytes32 srcChainId, bytes receiptRLP) +// Solidity: function validateReceipt(bytes proof) view returns(string srcChainId, bytes receiptRLP) func (_ICrossL2Prover *ICrossL2ProverSession) ValidateReceipt(proof []byte) (struct { - SrcChainId [32]byte + SrcChainId string ReceiptRLP []byte }, error) { return _ICrossL2Prover.Contract.ValidateReceipt(&_ICrossL2Prover.CallOpts, proof) @@ -334,9 +334,9 @@ func (_ICrossL2Prover *ICrossL2ProverSession) ValidateReceipt(proof []byte) (str // ValidateReceipt is a free data retrieval call binding the contract method 0x2cd78e77. // -// Solidity: function validateReceipt(bytes proof) view returns(bytes32 srcChainId, bytes receiptRLP) +// Solidity: function validateReceipt(bytes proof) view returns(string srcChainId, bytes receiptRLP) func (_ICrossL2Prover *ICrossL2ProverCallerSession) ValidateReceipt(proof []byte) (struct { - SrcChainId [32]byte + SrcChainId string ReceiptRLP []byte }, error) { return _ICrossL2Prover.Contract.ValidateReceipt(&_ICrossL2Prover.CallOpts, proof) diff --git a/bindings/go/venus/Venus.go b/bindings/go/venus/Venus.go index e8bebfa0..02187c50 100644 --- a/bindings/go/venus/Venus.go +++ b/bindings/go/venus/Venus.go @@ -31,7 +31,7 @@ var ( // VenusMetaData contains all meta data concerning the Venus contract. var VenusMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"contractICrossL2Prover\"},{\"name\":\"_counterParty\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_chainId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"chainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"counterParty\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastReceivedTransmission\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"prover\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractICrossL2Prover\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveEvent\",\"inputs\":[{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expectedEmitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expectedTopics\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"expectedUnindexedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveReceipt\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveTransmissionEvent\",\"inputs\":[{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"SuccessfulReceipt\",\"inputs\":[{\"name\":\"srcChainId\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"receiptRLP\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransmissionReceived\",\"inputs\":[{\"name\":\"message\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransmitToHouston\",\"inputs\":[{\"name\":\"message\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidCounterpartyEvent\",\"inputs\":[{\"name\":\"counterParty\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes[]\",\"indexed\":false,\"internalType\":\"bytes[]\"},{\"name\":\"unindexed\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"invalidChainId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidCounterpartyEvent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidEventProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidEventSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidProverAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidReceiptProof\",\"inputs\":[]}]", + ABI: "[{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_prover\",\"type\":\"address\",\"internalType\":\"contractICrossL2Prover\"},{\"name\":\"_chainId\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"chainId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"string\",\"internalType\":\"string\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastReceivedTransmission\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"prover\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractICrossL2Prover\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"receiveEvent\",\"inputs\":[{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expectedEmitter\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"expectedTopics\",\"type\":\"bytes[]\",\"internalType\":\"bytes[]\"},{\"name\":\"expectedUnindexedData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveReceipt\",\"inputs\":[{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"receiveTransmissionEvent\",\"inputs\":[{\"name\":\"logIndex\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"proof\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"expectedEmitter\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"SuccessfulReceipt\",\"inputs\":[{\"name\":\"srcChainId\",\"type\":\"string\",\"indexed\":false,\"internalType\":\"string\"},{\"name\":\"receiptRLP\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransmissionReceived\",\"inputs\":[{\"name\":\"message\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TransmitToHouston\",\"inputs\":[{\"name\":\"message\",\"type\":\"bytes32\",\"indexed\":false,\"internalType\":\"bytes32\"},{\"name\":\"timestamp\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ValidCounterpartyEvent\",\"inputs\":[{\"name\":\"counterParty\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"},{\"name\":\"topics\",\"type\":\"bytes[]\",\"indexed\":false,\"internalType\":\"bytes[]\"},{\"name\":\"unindexed\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"invalidChainId\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidCounterpartyEvent\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidEventProof\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidEventSender\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidProverAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"invalidReceiptProof\",\"inputs\":[]}]", } // VenusABI is the input ABI used to generate the binding from. @@ -182,16 +182,16 @@ func (_Venus *VenusTransactorRaw) Transact(opts *bind.TransactOpts, method strin // ChainId is a free data retrieval call binding the contract method 0x9a8a0592. // -// Solidity: function chainId() view returns(bytes32) -func (_Venus *VenusCaller) ChainId(opts *bind.CallOpts) ([32]byte, error) { +// Solidity: function chainId() view returns(string) +func (_Venus *VenusCaller) ChainId(opts *bind.CallOpts) (string, error) { var out []interface{} err := _Venus.contract.Call(opts, &out, "chainId") if err != nil { - return *new([32]byte), err + return *new(string), err } - out0 := *abi.ConvertType(out[0], new([32]byte)).(*[32]byte) + out0 := *abi.ConvertType(out[0], new(string)).(*string) return out0, err @@ -199,49 +199,18 @@ func (_Venus *VenusCaller) ChainId(opts *bind.CallOpts) ([32]byte, error) { // ChainId is a free data retrieval call binding the contract method 0x9a8a0592. // -// Solidity: function chainId() view returns(bytes32) -func (_Venus *VenusSession) ChainId() ([32]byte, error) { +// Solidity: function chainId() view returns(string) +func (_Venus *VenusSession) ChainId() (string, error) { return _Venus.Contract.ChainId(&_Venus.CallOpts) } // ChainId is a free data retrieval call binding the contract method 0x9a8a0592. // -// Solidity: function chainId() view returns(bytes32) -func (_Venus *VenusCallerSession) ChainId() ([32]byte, error) { +// Solidity: function chainId() view returns(string) +func (_Venus *VenusCallerSession) ChainId() (string, error) { return _Venus.Contract.ChainId(&_Venus.CallOpts) } -// CounterParty is a free data retrieval call binding the contract method 0x2c453bdf. -// -// Solidity: function counterParty() view returns(address) -func (_Venus *VenusCaller) CounterParty(opts *bind.CallOpts) (common.Address, error) { - var out []interface{} - err := _Venus.contract.Call(opts, &out, "counterParty") - - if err != nil { - return *new(common.Address), err - } - - out0 := *abi.ConvertType(out[0], new(common.Address)).(*common.Address) - - return out0, err - -} - -// CounterParty is a free data retrieval call binding the contract method 0x2c453bdf. -// -// Solidity: function counterParty() view returns(address) -func (_Venus *VenusSession) CounterParty() (common.Address, error) { - return _Venus.Contract.CounterParty(&_Venus.CallOpts) -} - -// CounterParty is a free data retrieval call binding the contract method 0x2c453bdf. -// -// Solidity: function counterParty() view returns(address) -func (_Venus *VenusCallerSession) CounterParty() (common.Address, error) { - return _Venus.Contract.CounterParty(&_Venus.CallOpts) -} - // LastReceivedTransmission is a free data retrieval call binding the contract method 0xe03d0aac. // // Solidity: function lastReceivedTransmission() view returns(bytes32) @@ -346,25 +315,25 @@ func (_Venus *VenusTransactorSession) ReceiveReceipt(proof []byte) (*types.Trans return _Venus.Contract.ReceiveReceipt(&_Venus.TransactOpts, proof) } -// ReceiveTransmissionEvent is a paid mutator transaction binding the contract method 0xa17d42d4. +// ReceiveTransmissionEvent is a paid mutator transaction binding the contract method 0x19e819af. // -// Solidity: function receiveTransmissionEvent(uint256 logIndex, bytes proof) returns() -func (_Venus *VenusTransactor) ReceiveTransmissionEvent(opts *bind.TransactOpts, logIndex *big.Int, proof []byte) (*types.Transaction, error) { - return _Venus.contract.Transact(opts, "receiveTransmissionEvent", logIndex, proof) +// Solidity: function receiveTransmissionEvent(uint256 logIndex, bytes proof, address expectedEmitter) returns() +func (_Venus *VenusTransactor) ReceiveTransmissionEvent(opts *bind.TransactOpts, logIndex *big.Int, proof []byte, expectedEmitter common.Address) (*types.Transaction, error) { + return _Venus.contract.Transact(opts, "receiveTransmissionEvent", logIndex, proof, expectedEmitter) } -// ReceiveTransmissionEvent is a paid mutator transaction binding the contract method 0xa17d42d4. +// ReceiveTransmissionEvent is a paid mutator transaction binding the contract method 0x19e819af. // -// Solidity: function receiveTransmissionEvent(uint256 logIndex, bytes proof) returns() -func (_Venus *VenusSession) ReceiveTransmissionEvent(logIndex *big.Int, proof []byte) (*types.Transaction, error) { - return _Venus.Contract.ReceiveTransmissionEvent(&_Venus.TransactOpts, logIndex, proof) +// Solidity: function receiveTransmissionEvent(uint256 logIndex, bytes proof, address expectedEmitter) returns() +func (_Venus *VenusSession) ReceiveTransmissionEvent(logIndex *big.Int, proof []byte, expectedEmitter common.Address) (*types.Transaction, error) { + return _Venus.Contract.ReceiveTransmissionEvent(&_Venus.TransactOpts, logIndex, proof, expectedEmitter) } -// ReceiveTransmissionEvent is a paid mutator transaction binding the contract method 0xa17d42d4. +// ReceiveTransmissionEvent is a paid mutator transaction binding the contract method 0x19e819af. // -// Solidity: function receiveTransmissionEvent(uint256 logIndex, bytes proof) returns() -func (_Venus *VenusTransactorSession) ReceiveTransmissionEvent(logIndex *big.Int, proof []byte) (*types.Transaction, error) { - return _Venus.Contract.ReceiveTransmissionEvent(&_Venus.TransactOpts, logIndex, proof) +// Solidity: function receiveTransmissionEvent(uint256 logIndex, bytes proof, address expectedEmitter) returns() +func (_Venus *VenusTransactorSession) ReceiveTransmissionEvent(logIndex *big.Int, proof []byte, expectedEmitter common.Address) (*types.Transaction, error) { + return _Venus.Contract.ReceiveTransmissionEvent(&_Venus.TransactOpts, logIndex, proof, expectedEmitter) } // VenusSuccessfulReceiptIterator is returned from FilterSuccessfulReceipt and is used to iterate over the raw logs and unpacked data for SuccessfulReceipt events raised by the Venus contract. @@ -436,14 +405,14 @@ func (it *VenusSuccessfulReceiptIterator) Close() error { // VenusSuccessfulReceipt represents a SuccessfulReceipt event raised by the Venus contract. type VenusSuccessfulReceipt struct { - SrcChainId [32]byte + SrcChainId string ReceiptRLP []byte Raw types.Log // Blockchain specific contextual infos } -// FilterSuccessfulReceipt is a free log retrieval operation binding the contract event 0xf771e200728f07a661e482ccfec772812dfe16ba618778746183c6622500118b. +// FilterSuccessfulReceipt is a free log retrieval operation binding the contract event 0x4d68957cde09c265c835fd8796e533a4b8208f6f1ba94b0ac437ad860cfe9a4d. // -// Solidity: event SuccessfulReceipt(bytes32 srcChainId, bytes receiptRLP) +// Solidity: event SuccessfulReceipt(string srcChainId, bytes receiptRLP) func (_Venus *VenusFilterer) FilterSuccessfulReceipt(opts *bind.FilterOpts) (*VenusSuccessfulReceiptIterator, error) { logs, sub, err := _Venus.contract.FilterLogs(opts, "SuccessfulReceipt") @@ -453,9 +422,9 @@ func (_Venus *VenusFilterer) FilterSuccessfulReceipt(opts *bind.FilterOpts) (*Ve return &VenusSuccessfulReceiptIterator{contract: _Venus.contract, event: "SuccessfulReceipt", logs: logs, sub: sub}, nil } -// WatchSuccessfulReceipt is a free log subscription operation binding the contract event 0xf771e200728f07a661e482ccfec772812dfe16ba618778746183c6622500118b. +// WatchSuccessfulReceipt is a free log subscription operation binding the contract event 0x4d68957cde09c265c835fd8796e533a4b8208f6f1ba94b0ac437ad860cfe9a4d. // -// Solidity: event SuccessfulReceipt(bytes32 srcChainId, bytes receiptRLP) +// Solidity: event SuccessfulReceipt(string srcChainId, bytes receiptRLP) func (_Venus *VenusFilterer) WatchSuccessfulReceipt(opts *bind.WatchOpts, sink chan<- *VenusSuccessfulReceipt) (event.Subscription, error) { logs, sub, err := _Venus.contract.WatchLogs(opts, "SuccessfulReceipt") @@ -490,9 +459,9 @@ func (_Venus *VenusFilterer) WatchSuccessfulReceipt(opts *bind.WatchOpts, sink c }), nil } -// ParseSuccessfulReceipt is a log parse operation binding the contract event 0xf771e200728f07a661e482ccfec772812dfe16ba618778746183c6622500118b. +// ParseSuccessfulReceipt is a log parse operation binding the contract event 0x4d68957cde09c265c835fd8796e533a4b8208f6f1ba94b0ac437ad860cfe9a4d. // -// Solidity: event SuccessfulReceipt(bytes32 srcChainId, bytes receiptRLP) +// Solidity: event SuccessfulReceipt(string srcChainId, bytes receiptRLP) func (_Venus *VenusFilterer) ParseSuccessfulReceipt(log types.Log) (*VenusSuccessfulReceipt, error) { event := new(VenusSuccessfulReceipt) if err := _Venus.contract.UnpackLog(event, "SuccessfulReceipt", log); err != nil { diff --git a/contracts/core/proofAPI/CrossL2Prover.sol b/contracts/core/proofAPI/CrossL2Prover.sol index d3c78ce4..a04f1908 100644 --- a/contracts/core/proofAPI/CrossL2Prover.sol +++ b/contracts/core/proofAPI/CrossL2Prover.sol @@ -47,7 +47,7 @@ contract CrossL2Prover is AppStateVerifier, ICrossL2Prover { /** * @inheritdoc ICrossL2Prover */ - function validateReceipt(bytes calldata proof) public view returns (bytes32 srcChainID, bytes memory receiptRLP) { + function validateReceipt(bytes calldata proof) public view returns (string memory, bytes memory) { ( Ics23Proof memory peptideAppProof, bytes[] memory receiptMMPTProof, @@ -75,13 +75,13 @@ contract CrossL2Prover is AppStateVerifier, ICrossL2Prover { // index. // This is done through a Merkle proof. - return (srcChainID, MerkleTrie.get(receiptIndex, receiptMMPTProof, receiptRoot)); + return (srcChainId, MerkleTrie.get(receiptIndex, receiptMMPTProof, receiptRoot)); } function validateEvent(uint256 logIndex, bytes calldata proof) external view - returns (bytes32 chainId, address emittingContract, bytes[] memory topics, bytes memory unindexedData) + returns (string memory chainId, address emittingContract, bytes[] memory topics, bytes memory unindexedData) { bytes memory receiptRLP; (chainId, receiptRLP) = validateReceipt(proof); diff --git a/contracts/examples/Venus.sol b/contracts/examples/Venus.sol index e1fcc6b0..0de56659 100644 --- a/contracts/examples/Venus.sol +++ b/contracts/examples/Venus.sol @@ -28,9 +28,8 @@ import {Bytes} from "optimism/libraries/Bytes.sol"; */ contract Venus { ICrossL2Prover public immutable prover; - address public immutable counterParty; // The dapp on the counter party chain we wish to prove on this local chain bytes32 public lastReceivedTransmission; // Last received arguments from transmitted event - bytes32 public immutable chainId; + string public chainId; // The event that we emit on source chain to be proven on this local chain event TransmitToHouston(bytes32 message, uint64 timestamp); @@ -38,7 +37,7 @@ contract Venus { // Event that we emit on this local chain to indicate that we have received an event from the source chain event TransmissionReceived(bytes32 message, uint64 timestamp); - event SuccessfulReceipt(bytes32 srcChainId, bytes receiptRLP); + event SuccessfulReceipt(string srcChainId, bytes receiptRLP); event ValidCounterpartyEvent(address counterParty, bytes[] topics, bytes unindexed); error invalidProverAddress(); @@ -49,12 +48,11 @@ contract Venus { error invalidEventSender(); error invalidCounterpartyEvent(); - constructor(ICrossL2Prover _prover, address _counterParty, bytes32 _chainId) { + constructor(ICrossL2Prover _prover, string memory _chainId) { if (address(_prover) == address(0)) { revert invalidProverAddress(); } prover = _prover; - counterParty = _counterParty; chainId = _chainId; } @@ -65,7 +63,7 @@ contract Venus { * otherwise. */ function receiveReceipt(bytes calldata proof) external { - (bytes32 srcChainId, bytes memory receiptRLP) = prover.validateReceipt(proof); + (string memory srcChainId, bytes memory receiptRLP) = prover.validateReceipt(proof); emit SuccessfulReceipt(srcChainId, receiptRLP); } @@ -85,10 +83,10 @@ contract Venus { // Now that we have validated the receipt, we can trust the rlp encoded receipt bytes. Now we unpack the event // data from these rlp encoded receipt bytes and validate it. - (bytes32 proofChainId, address emittingContract, bytes[] memory topics, bytes memory unindexedData) = + (string memory proofChainId, address emittingContract, bytes[] memory topics, bytes memory unindexedData) = prover.validateEvent(logIndex, proof); - if (chainId != proofChainId) { + if (!Bytes.equal(bytes(chainId), bytes(proofChainId))) { revert invalidChainId(); } if (emittingContract != expectedEmitter) { @@ -113,17 +111,17 @@ contract Venus { * @param proof The proof to validate - returned by polymer proof api. This contains the proof to fetch a rlp * encoded byte at a given index. */ - function receiveTransmissionEvent(uint256 logIndex, bytes calldata proof) external { + function receiveTransmissionEvent(uint256 logIndex, bytes calldata proof, address expectedEmitter) external { // First, we validate the proof and log in one go, but have to validate the counterparty chain id. - (bytes32 proofChainId, address emittingContract, bytes[] memory topics, bytes memory unindexedData) = + (string memory proofChainId, address emittingContract, bytes[] memory topics, bytes memory unindexedData) = prover.validateEvent(logIndex, proof); // Once we validate the chain id, we can Now we unpack the event - if (chainId != proofChainId) { + if (!Bytes.equal(bytes(chainId), bytes(proofChainId))) { revert invalidChainId(); } - if (emittingContract != counterParty) { + if (emittingContract != expectedEmitter) { // If this triggers, we have received a valid event from the source chain with a valid proof, // but it was emitted from a wrong address. This would likely be someone trying to spoof another contract's // event. diff --git a/contracts/interfaces/ICrossL2Prover.sol b/contracts/interfaces/ICrossL2Prover.sol index 83c778df..f9a8dac3 100644 --- a/contracts/interfaces/ICrossL2Prover.sol +++ b/contracts/interfaces/ICrossL2Prover.sol @@ -66,7 +66,7 @@ interface ICrossL2Prover is IClientUpdates { function validateReceipt(bytes calldata proof) external view - returns (bytes32 srcChainId, bytes calldata receiptRLP); + returns (string memory srcChainId, bytes calldata receiptRLP); /** * @notice A a log at a given raw rlp encoded receipt at a given logIndex within the receipt. @@ -84,7 +84,7 @@ interface ICrossL2Prover is IClientUpdates { function validateEvent(uint256 logIndex, bytes calldata proof) external view - returns (bytes32 chainId, address emittingContract, bytes[] calldata topics, bytes calldata unindexedData); + returns (string memory chainId, address emittingContract, bytes[] calldata topics, bytes calldata unindexedData); /** * Returns the peptide at a given apphash at a given height, diff --git a/package.json b/package.json index 69688617..d88a851d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@open-ibc/vibc-core-smart-contracts", - "version": "4.0.17", + "version": "4.0.18", "main": "dist/index.js", "bin": { "verify-vibc-core-smart-contracts": "./dist/scripts/verify-contract-script.js", diff --git a/src/evm/contracts/CrossL2Prover.ts b/src/evm/contracts/CrossL2Prover.ts index 518c4482..281c9e74 100644 --- a/src/evm/contracts/CrossL2Prover.ts +++ b/src/evm/contracts/CrossL2Prover.ts @@ -218,7 +218,7 @@ export interface CrossL2Prover extends BaseContract { validateReceipt: TypedContractMethod< [proof: BytesLike], - [[string, string] & { srcChainID: string; receiptRLP: string }], + [[string, string]], "view" >; @@ -284,11 +284,7 @@ export interface CrossL2Prover extends BaseContract { >; getFunction( nameOrSignature: "validateReceipt" - ): TypedContractMethod< - [proof: BytesLike], - [[string, string] & { srcChainID: string; receiptRLP: string }], - "view" - >; + ): TypedContractMethod<[proof: BytesLike], [[string, string]], "view">; getFunction( nameOrSignature: "verifier" ): TypedContractMethod<[], [string], "view">; diff --git a/src/evm/contracts/Venus.ts b/src/evm/contracts/Venus.ts index 07d9d69b..ec6f90f4 100644 --- a/src/evm/contracts/Venus.ts +++ b/src/evm/contracts/Venus.ts @@ -27,7 +27,6 @@ export interface VenusInterface extends Interface { getFunction( nameOrSignature: | "chainId" - | "counterParty" | "lastReceivedTransmission" | "prover" | "receiveEvent" @@ -44,10 +43,6 @@ export interface VenusInterface extends Interface { ): EventFragment; encodeFunctionData(functionFragment: "chainId", values?: undefined): string; - encodeFunctionData( - functionFragment: "counterParty", - values?: undefined - ): string; encodeFunctionData( functionFragment: "lastReceivedTransmission", values?: undefined @@ -63,14 +58,10 @@ export interface VenusInterface extends Interface { ): string; encodeFunctionData( functionFragment: "receiveTransmissionEvent", - values: [BigNumberish, BytesLike] + values: [BigNumberish, BytesLike, AddressLike] ): string; decodeFunctionResult(functionFragment: "chainId", data: BytesLike): Result; - decodeFunctionResult( - functionFragment: "counterParty", - data: BytesLike - ): Result; decodeFunctionResult( functionFragment: "lastReceivedTransmission", data: BytesLike @@ -91,7 +82,7 @@ export interface VenusInterface extends Interface { } export namespace SuccessfulReceiptEvent { - export type InputTuple = [srcChainId: BytesLike, receiptRLP: BytesLike]; + export type InputTuple = [srcChainId: string, receiptRLP: BytesLike]; export type OutputTuple = [srcChainId: string, receiptRLP: string]; export interface OutputObject { srcChainId: string; @@ -196,8 +187,6 @@ export interface Venus extends BaseContract { chainId: TypedContractMethod<[], [string], "view">; - counterParty: TypedContractMethod<[], [string], "view">; - lastReceivedTransmission: TypedContractMethod<[], [string], "view">; prover: TypedContractMethod<[], [string], "view">; @@ -217,7 +206,7 @@ export interface Venus extends BaseContract { receiveReceipt: TypedContractMethod<[proof: BytesLike], [void], "nonpayable">; receiveTransmissionEvent: TypedContractMethod< - [logIndex: BigNumberish, proof: BytesLike], + [logIndex: BigNumberish, proof: BytesLike, expectedEmitter: AddressLike], [void], "nonpayable" >; @@ -229,9 +218,6 @@ export interface Venus extends BaseContract { getFunction( nameOrSignature: "chainId" ): TypedContractMethod<[], [string], "view">; - getFunction( - nameOrSignature: "counterParty" - ): TypedContractMethod<[], [string], "view">; getFunction( nameOrSignature: "lastReceivedTransmission" ): TypedContractMethod<[], [string], "view">; @@ -257,7 +243,7 @@ export interface Venus extends BaseContract { getFunction( nameOrSignature: "receiveTransmissionEvent" ): TypedContractMethod< - [logIndex: BigNumberish, proof: BytesLike], + [logIndex: BigNumberish, proof: BytesLike, expectedEmitter: AddressLike], [void], "nonpayable" >; @@ -292,7 +278,7 @@ export interface Venus extends BaseContract { >; filters: { - "SuccessfulReceipt(bytes32,bytes)": TypedContractEvent< + "SuccessfulReceipt(string,bytes)": TypedContractEvent< SuccessfulReceiptEvent.InputTuple, SuccessfulReceiptEvent.OutputTuple, SuccessfulReceiptEvent.OutputObject diff --git a/src/evm/contracts/factories/CrossL2Prover__factory.ts b/src/evm/contracts/factories/CrossL2Prover__factory.ts index ca81ede3..333cb229 100644 --- a/src/evm/contracts/factories/CrossL2Prover__factory.ts +++ b/src/evm/contracts/factories/CrossL2Prover__factory.ts @@ -138,8 +138,8 @@ const _abi = [ outputs: [ { name: "chainId", - type: "bytes32", - internalType: "bytes32", + type: "string", + internalType: "string", }, { name: "emittingContract", @@ -171,12 +171,12 @@ const _abi = [ ], outputs: [ { - name: "srcChainID", - type: "bytes32", - internalType: "bytes32", + name: "", + type: "string", + internalType: "string", }, { - name: "receiptRLP", + name: "", type: "bytes", internalType: "bytes", }, @@ -397,7 +397,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60a06040523480156200001157600080fd5b50604051620034ec380380620034ec83398101604081905262000034916200006e565b6001600160a01b03821660805260006200004f8282620001fd565b505050620002c9565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200008257600080fd5b82516001600160a01b03811681146200009a57600080fd5b602084810151919350906001600160401b0380821115620000ba57600080fd5b818601915086601f830112620000cf57600080fd5b815181811115620000e457620000e462000058565b604051601f8201601f19908116603f011681019083821181831017156200010f576200010f62000058565b8160405282815289868487010111156200012857600080fd5b600093505b828410156200014c57848401860151818501870152928501926200012d565b828411156200015e5760008684830101525b8096505050505050509250929050565b600181811c908216806200018357607f821691505b602082108103620001a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001f857600081815260208120601f850160051c81016020861015620001d35750805b601f850160051c820191505b81811015620001f457828155600101620001df565b5050505b505050565b81516001600160401b0381111562000219576200021962000058565b62000231816200022a84546200016e565b84620001aa565b602080601f831160018114620002695760008415620002505750858301515b600019600386901b1c1916600185901b178555620001f4565b600085815260208120601f198616915b828110156200029a5788860151825594840194600190910190840162000279565b5085821015620002b95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613201620002eb6000396000818160e9015261105801526132016000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806349ff245e1161006657806349ff245e1461016557806357c1c5f414610178578063b3768f0d1461018d578063c2f0329f146101a2578063c67e15f7146101b557600080fd5b806325dc9f2b146100a35780632a6ded74146100cf5780632b7ac3f3146100e45780632cd78e771461012357806344c9af2814610144575b600080fd5b6100b66100b136600461238b565b6101d5565b6040516100c6949392919061242e565b60405180910390f35b6100e26100dd3660046124d2565b610206565b005b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c6565b610136610131366004612544565b61021f565b6040516100c6929190612585565b6101576101523660046125a6565b6103a0565b6040519081526020016100c6565b6100e26101733660046125bf565b6103b6565b610180600281565b6040516100c69190612625565b6101956103c8565b6040516100c6919061264d565b6100e26101b036600461275f565b610456565b6101576101c33660046125a6565b60016020526000908152604090205481565b60008060608060606101e7878761021f565b90955090506101f68882610618565b969a919950975094955050505050565b604051632974974360e01b815260040160405180910390fd5b60006060818080808080610235898b018b612af2565b955095509550955095509550306001600160a01b031663c2f0329f610276600189602001516102649190612bcd565b60009081526001602052604090205490565b60001b610317856000805461028a90612be4565b80601f01602080910402602001604051908101604052809291908181526020018280546102b690612be4565b80156103035780601f106102d857610100808354040283529160200191610303565b820191906000526020600020905b8154815290600101906020018083116102e657829003601f168201915b5050505050886001600160401b031661073b565b60408051602081018a9052016040516020818303038152906040528a6040518563ffffffff1660e01b81526004016103529493929190612c18565b60006040518083038186803b15801561036a57600080fd5b505afa15801561037e573d6000803e3d6000fd5b505050508761038e828787610772565b975097505050505050505b9250929050565b6000818152600160205260408120545b92915050565b6103c284848484611007565b50505050565b600080546103d590612be4565b80601f016020809104026020016040519081016040528092919081815260200182805461040190612be4565b801561044e5780601f106104235761010080835404028352916020019161044e565b820191906000526020600020905b81548152906001019060200180831161043157829003601f168201915b505050505081565b6104608180612d7a565b600081811061047157610471612dc3565b90506020028101906104839190612dd9565b610491906020810190612df9565b60405161049f929190612e3f565b60405180910390208380519060200120146104cd5760405163026a287560e51b815260040160405180910390fd5b6104d78180612d7a565b60008181106104e8576104e8612dc3565b90506020028101906104fa9190612dd9565b610508906040810190612df9565b604051610516929190612e3f565b6040518091039020828051906020012014610544576040516310d9300f60e11b815260040160405180910390fd5b6105796105518280612d7a565b600081811061056257610562612dc3565b90506020028101906105749190612dd9565b611109565b6105838280612d7a565b600181811061059457610594612dc3565b90506020028101906105a69190612dd9565b6105b4906040810190612df9565b6105bd91612e4f565b146105db57604051636589f0e160e11b815260040160405180910390fd5b6105f96105e88280612d7a565b600181811061056257610562612dc3565b84146103c2576040516392cb8fbb60e01b815260040160405180910390fd5b6000606080600061063f61063a8660018089516106359190612bcd565b61132d565b61146f565b9050600061067a6106698360038151811061065c5761065c612dc3565b602002602001015161147d565b888151811061065c5761065c612dc3565b905061069f8160008151811061069257610692612dc3565b60200260200101516116a0565b6106a890612e6d565b60001c945060006106c58260018151811061065c5761065c612dc3565b90506106dd8260028151811061069257610692612dc3565b935060005b81518110156107305761070082828151811061069257610692612dc3565b86828151811061071257610712612dc3565b6020026020010181905250808061072890612e91565b9150506106e2565b505050509250925092565b60608383610748846117cc565b60405160200161075a93929190612eaa565b60405160208183030381529060405290509392505050565b606060008451116107c25760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064015b60405180910390fd5b60006107cd846118d7565b905060006107da866119bb565b90506000846040516020016107f191815260200190565b60405160208183030381529060405290506000805b8451811015610fa957600085828151811061082357610823612dc3565b6020026020010151905084518311156108955760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016107b9565b8260000361093457805180516020918201206040516108e3926108bd92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b61092f5760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016107b9565b610a2a565b8051516020116109ba578051805160209182012060405161095e926108bd92910190815260200190565b61092f5760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016107b9565b805184516020808701919091208251919092012014610a2a5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016107b9565b610a3660106001612f36565b81602001515103610bd15784518303610b6957610a63816020015160108151811061069257610692612dc3565b96506000875111610adc5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016107b9565b60018651610aea9190612bcd565b8214610b5e5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016107b9565b505050505050611000565b6000858481518110610b7d57610b7d612dc3565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110610ba857610ba8612dc3565b60200260200101519050610bbb81611a1e565b9550610bc8600186612f36565b94505050610f96565b600281602001515103610f3d576000610be982611a43565b9050600081600081518110610c0057610c00612dc3565b016020015160f81c90506000610c17600283612f64565b610c22906002612f86565b90506000610c33848360ff16611a67565b90506000610c418a89611a67565b90506000610c4f8383611a98565b905080835114610cc75760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016107b9565b60ff851660021480610cdc575060ff85166003145b15610e7d5780825114610d575760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016107b9565b610d71876020015160018151811061069257610692612dc3565b9c5060008d5111610dea5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016107b9565b60018c51610df89190612bcd565b8814610e6c5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016107b9565b505050505050505050505050611000565b60ff85161580610e90575060ff85166001145b15610ecf57610ebc8760200151600181518110610eaf57610eaf612dc3565b6020026020010151611a1e565b9950610ec8818a612f36565b9850610f32565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016107b9565b505050505050610f96565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016107b9565b5080610fa181612e91565b915050610806565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016107b9565b9392505050565b6000828152600160205260409020541561104e57600082815260016020526040902054811461104957604051631549535560e01b815260040160405180910390fd5b6103c2565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e8d90039838361108d60206000898b612fa9565b61109691612e4f565b6110a3886020818c612fa9565b6040518663ffffffff1660e01b81526004016110c3959493929190612fd3565b600060405180830381600087803b1580156110dd57600080fd5b505af11580156110f1573d6000803e3d6000fd5b50505060009283525060016020526040909120555050565b600080600261111b6040850185612df9565b604051611129929190612e3f565b602060405180830381855afa158015611146573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906111699190613017565b9050600261117a6060850185612df9565b61119161118a6020880188612df9565b9050611b1c565b61119e6020880188612df9565b6111a86020611b1c565b876040516020016111bf9796959493929190613030565b60408051601f19818403018152908290526111d99161307d565b602060405180830381855afa1580156111f6573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906112199190613017565b915060005b6112288480612d7a565b905081101561132657600261123d8580612d7a565b8381811061124d5761124d612dc3565b905060200281019061125f919061308f565b6112699080612df9565b856112748880612d7a565b8681811061128457611284612dc3565b9050602002810190611296919061308f565b6112a4906020810190612df9565b6040516020016112b89594939291906130a5565b60408051601f19818403018152908290526112d29161307d565b602060405180830381855afa1580156112ef573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113129190613017565b92508061131e81612e91565b91505061121e565b5050919050565b60608182601f0110156113735760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016107b9565b8282840110156113b65760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016107b9565b818301845110156113fd5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107b9565b60608215801561141c5760405191506000825260208201604052611466565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561145557805183526020928301920161143d565b5050858452601f01601f1916604052505b50949350505050565b60606103b061147d83611b8b565b6060600080600061148d85611bde565b9194509250905060018160018111156114a8576114a861260f565b1461151b5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016107b9565b84516115278385612f36565b1461158f5760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016107b9565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816115a65790505093506000835b8651811015611694576000806116196040518060400160405280858c600001516115fd9190612bcd565b8152602001858c602001516116129190612f36565b9052611bde565b5091509150604051806040016040528083836116359190612f36565b8152602001848b6020015161164a9190612f36565b81525088858151811061165f5761165f612dc3565b6020908102919091010152611675600185612f36565b93506116818183612f36565b61168b9084612f36565b925050506115d3565b50845250919392505050565b606060008060006116b085611bde565b9194509250905060008160018111156116cb576116cb61260f565b1461173e5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016107b9565b6117488284612f36565b8551146117b45760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016107b9565b6117c3856020015184846122a1565b95945050505050565b6060816000036117f35750506040805180820190915260018152600360fc1b602082015290565b6000825b801561181d578161180781612e91565b92506118169050600a826130cd565b90506117f7565b6000826001600160401b0381111561183757611837612660565b6040519080825280601f01601f191660200182016040528015611861576020820181803683370190505b509050825b801561146657611877600a876130e1565b611882906030612f36565b60f81b82611891600184612bcd565b815181106118a1576118a1612dc3565b60200101906001600160f81b031916908160001a9053506118c3600a876130cd565b9550806118cf816130f5565b915050611866565b8051606090806001600160401b038111156118f4576118f4612660565b60405190808252806020026020018201604052801561193957816020015b60408051808201909152606080825260208201528152602001906001900390816119125790505b50915060005b8181101561132657604051806040016040528085838151811061196457611964612dc3565b6020026020010151815260200161199386848151811061198657611986612dc3565b602002602001015161146f565b8152508382815181106119a8576119a8612dc3565b602090810291909101015260010161193f565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015611a13578060011b82018184015160001a8060041c8253600f8116600183015350506001016119e5565b509295945050505050565b60606020826000015110611a3a57611a35826116a0565b6103b0565b6103b082612334565b60606103b0611a62836020015160008151811061069257610692612dc3565b6119bb565b606082518210611a8657506040805160208101909152600081526103b0565b61100083838486516106359190612bcd565b6000808251845110611aab578251611aae565b83515b90505b8082108015611b055750828281518110611acd57611acd612dc3565b602001015160f81c60f81b6001600160f81b031916848381518110611af457611af4612dc3565b01602001516001600160f81b031916145b15611b1557816001019150611ab1565b5092915050565b6060805b60808310611b5e578083607f1660801760f81b604051602001611b4492919061310c565b60408051601f198184030190525260079290921c91611b20565b808360f81b604051602001611b7492919061310c565b604051602081830303815290604052915050919050565b60408051808201909152600080825260208201526000825111611bc05760405162461bcd60e51b81526004016107b99061313b565b50604080518082019091528151815260209182019181019190915290565b600080600080846000015111611c065760405162461bcd60e51b81526004016107b99061313b565b6020840151805160001a607f8111611c2b57600060016000945094509450505061229a565b60b78111611d88576000611c40608083612bcd565b905080876000015111611cc05760405162461bcd60e51b815260206004820152604e60248201526000805160206131ac83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016107b9565b6001838101516001600160f81b0319169082141580611ced5750600160ff1b6001600160f81b0319821610155b611d755760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016107b9565b506001955093506000925061229a915050565b60bf8111611fc9576000611d9d60b783612bcd565b905080876000015111611e205760405162461bcd60e51b815260206004820152605160248201526000805160206131ac83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016107b9565b60018301516001600160f81b0319166000819003611ea75760405162461bcd60e51b815260206004820152604a60248201526000805160206131ac83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016107b9565b600184015160088302610100031c60378111611f2a5760405162461bcd60e51b815260206004820152604860248201526000805160206131ac83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016107b9565b611f348184612f36565b895111611fac5760405162461bcd60e51b815260206004820152604c60248201526000805160206131ac83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016107b9565b611fb7836001612f36565b975095506000945061229a9350505050565b60f7811161206b576000611fde60c083612bcd565b90508087600001511161205a5760405162461bcd60e51b815260206004820152604a60248201526000805160206131ac83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016107b9565b60019550935084925061229a915050565b600061207860f783612bcd565b9050808760000151116120f75760405162461bcd60e51b815260206004820152604d60248201526000805160206131ac83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016107b9565b60018301516001600160f81b031916600081900361217c5760405162461bcd60e51b815260206004820152604860248201526000805160206131ac83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016107b9565b600184015160088302610100031c603781116121fd5760405162461bcd60e51b815260206004820152604660248201526000805160206131ac83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016107b9565b6122078184612f36565b89511161227d5760405162461bcd60e51b815260206004820152604a60248201526000805160206131ac83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016107b9565b612288836001612f36565b975095506001945061229a9350505050565b9193909250565b6060816001600160401b038111156122bb576122bb612660565b6040519080825280601f01601f1916602001820160405280156122e5576020820181803683370190505b50905081156110005760006122fa8486612f36565b90506020820160005b8481101561231b578281015182820152602001612303565b8481111561232a576000858301525b5050509392505050565b60606103b08260200151600084600001516122a1565b60008083601f84011261235c57600080fd5b5081356001600160401b0381111561237357600080fd5b60208301915083602082850101111561039957600080fd5b6000806000604084860312156123a057600080fd5b8335925060208401356001600160401b038111156123bd57600080fd5b6123c98682870161234a565b9497909650939450505050565b60005b838110156123f15781810151838201526020016123d9565b838111156103c25750506000910152565b6000815180845261241a8160208601602086016123d6565b601f01601f19169290920160200192915050565b600060808201868352602060018060a01b038716818501526080604085015281865180845260a08601915060a08160051b870101935082880160005b8281101561249857609f19888703018452612486868351612402565b9550928401929084019060010161246a565b505050505082810360608401526124af8185612402565b979650505050505050565b6000604082840312156124cc57600080fd5b50919050565b600080600080606085870312156124e857600080fd5b8435935060208501356001600160401b038082111561250657600080fd5b6125128883890161234a565b9095509350604087013591508082111561252b57600080fd5b50612538878288016124ba565b91505092959194509250565b6000806020838503121561255757600080fd5b82356001600160401b0381111561256d57600080fd5b6125798582860161234a565b90969095509350505050565b82815260406020820152600061259e6040830184612402565b949350505050565b6000602082840312156125b857600080fd5b5035919050565b600080600080606085870312156125d557600080fd5b84356001600160401b038111156125eb57600080fd5b6125f78782880161234a565b90989097506020870135966040013595509350505050565b634e487b7160e01b600052602160045260246000fd5b602081016004831061264757634e487b7160e01b600052602160045260246000fd5b91905290565b6020815260006110006020830184612402565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171561269857612698612660565b60405290565b604051608081016001600160401b038111828210171561269857612698612660565b604051601f8201601f191681016001600160401b03811182821017156126e8576126e8612660565b604052919050565b600082601f83011261270157600080fd5b81356001600160401b0381111561271a5761271a612660565b61272d601f8201601f19166020016126c0565b81815284602083860101111561274257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561277557600080fd5b8435935060208501356001600160401b038082111561279357600080fd5b61279f888389016126f0565b945060408701359150808211156127b557600080fd5b6127c1888389016126f0565b9350606087013591508082111561252b57600080fd5b60006001600160401b038211156127f0576127f0612660565b5060051b60200190565b600082601f83011261280b57600080fd5b8135602061282061281b836127d7565b6126c0565b82815260059290921b8401810191818101908684111561283f57600080fd5b8286015b848110156128dd5780356001600160401b03808211156128635760008081fd5b908801906040828b03601f190181131561287d5760008081fd5b612885612676565b87840135838111156128975760008081fd5b6128a58d8a838801016126f0565b8252509083013590828211156128bb5760008081fd5b6128c98c89848701016126f0565b818901528652505050918301918301612843565b509695505050505050565b6000604082840312156128fa57600080fd5b612902612676565b905081356001600160401b038082111561291b57600080fd5b818401915084601f83011261292f57600080fd5b8135602061293f61281b836127d7565b82815260059290921b8401810191818101908884111561295e57600080fd5b8286015b84811015612a3f5780358681111561297a5760008081fd5b87016080818c03601f19018113156129925760008081fd5b61299a61269e565b86830135898111156129ac5760008081fd5b6129ba8e89838701016127fa565b8252506040830135898111156129d05760008081fd5b6129de8e89838701016126f0565b88830152506060808401358a8111156129f75760008081fd5b612a058f8a838801016126f0565b604084015250918301359189831115612a1e5760008081fd5b612a2c8e89858701016126f0565b9082015285525050918301918301612962565b50808752505080860135818601525050505092915050565b600082601f830112612a6857600080fd5b81356020612a7861281b836127d7565b82815260059290921b84018101918181019086841115612a9757600080fd5b8286015b848110156128dd5780356001600160401b03811115612aba5760008081fd5b612ac88986838b01016126f0565b845250918301918301612a9b565b80356001600160401b0381168114612aed57600080fd5b919050565b60008060008060008060c08789031215612b0b57600080fd5b86356001600160401b0380821115612b2257600080fd5b612b2e8a838b016128e8565b97506020890135915080821115612b4457600080fd5b612b508a838b01612a57565b965060408901359550612b6560608a01612ad6565b94506080890135915080821115612b7b57600080fd5b612b878a838b016126f0565b935060a0890135915080821115612b9d57600080fd5b50612baa89828a016126f0565b9150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b600082821015612bdf57612bdf612bb7565b500390565b600181811c90821680612bf857607f821691505b6020821081036124cc57634e487b7160e01b600052602260045260246000fd5b84815260006020608081840152612c326080840187612402565b8381036040850152612c448187612402565b905083810360608501526040810185516040835281815180845260608501915060608160051b8601019350858301925060005b81811015612d6557605f19868603018352835180516080808852815190880181905260a0600582901b89018101928b01919089019060005b81811015612d0257609f198b86030183528351805160408752612cd56040880182612402565b90508e82015191508681038f880152612cee8183612402565b96505050928c0192918c0191600101612caf565b50505050888201518782038a890152612d1b8282612402565b91505060408201518782036040890152612d358282612402565b915050606082015191508681036060880152612d518183612402565b965050509286019291860191600101612c77565b50505050948201519101525090949350505050565b6000808335601e19843603018112612d9157600080fd5b8301803591506001600160401b03821115612dab57600080fd5b6020019150600581901b360382131561039957600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112612def57600080fd5b9190910192915050565b6000808335601e19843603018112612e1057600080fd5b8301803591506001600160401b03821115612e2a57600080fd5b60200191503681900382131561039957600080fd5b8183823760009101908152919050565b803560208310156103b057600019602084900360031b1b1692915050565b805160208083015191908110156124cc5760001960209190910360031b1b16919050565b600060018201612ea357612ea3612bb7565b5060010190565b65636861696e2f60d01b815260008451612ecb8160068501602089016123d6565b6f2f73746f72656452656365697074732f60801b6006918401918201528451612efb8160168401602089016123d6565b6c2f72656365697074526f6f742f60981b601692909101918201528351612f298160238401602088016123d6565b0160230195945050505050565b60008219821115612f4957612f49612bb7565b500190565b634e487b7160e01b600052601260045260246000fd5b600060ff831680612f7757612f77612f4e565b8060ff84160691505092915050565b600060ff821660ff841680821015612fa057612fa0612bb7565b90039392505050565b60008085851115612fb957600080fd5b83861115612fc657600080fd5b5050820193919092039150565b85815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561302957600080fd5b5051919050565b86888237600087820160008152875161304d818360208c016123d6565b01858782376000908601908152845161306a8183602089016123d6565b0192835250506020019695505050505050565b60008251612def8184602087016123d6565b60008235603e19833603018112612def57600080fd5b8486823760008582018581528385602083013760009301602001928352509095945050505050565b6000826130dc576130dc612f4e565b500490565b6000826130f0576130f0612f4e565b500690565b60008161310457613104612bb7565b506000190190565b6000835161311e8184602088016123d6565b6001600160f81b0319939093169190920190815260010192915050565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a26469706673582212203d7749d100858e73989756dcc1439737ca4f5c3b6c36b7ae4c457b299577692a64736f6c634300080f0033"; + "0x60a06040523480156200001157600080fd5b50604051620034fc380380620034fc83398101604081905262000034916200006e565b6001600160a01b03821660805260006200004f8282620001fd565b505050620002c9565b634e487b7160e01b600052604160045260246000fd5b600080604083850312156200008257600080fd5b82516001600160a01b03811681146200009a57600080fd5b602084810151919350906001600160401b0380821115620000ba57600080fd5b818601915086601f830112620000cf57600080fd5b815181811115620000e457620000e462000058565b604051601f8201601f19908116603f011681019083821181831017156200010f576200010f62000058565b8160405282815289868487010111156200012857600080fd5b600093505b828410156200014c57848401860151818501870152928501926200012d565b828411156200015e5760008684830101525b8096505050505050509250929050565b600181811c908216806200018357607f821691505b602082108103620001a457634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620001f857600081815260208120601f850160051c81016020861015620001d35750805b601f850160051c820191505b81811015620001f457828155600101620001df565b5050505b505050565b81516001600160401b0381111562000219576200021962000058565b62000231816200022a84546200016e565b84620001aa565b602080601f831160018114620002695760008415620002505750858301515b600019600386901b1c1916600185901b178555620001f4565b600085815260208120601f198616915b828110156200029a5788860151825594840194600190910190840162000279565b5085821015620002b95787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051613211620002eb6000396000818160e9015261105901526132116000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c806349ff245e1161006657806349ff245e1461016557806357c1c5f414610178578063b3768f0d1461018d578063c2f0329f146101a2578063c67e15f7146101b557600080fd5b806325dc9f2b146100a35780632a6ded74146100cf5780632b7ac3f3146100e45780632cd78e771461012357806344c9af2814610144575b600080fd5b6100b66100b136600461238c565b6101d5565b6040516100c6949392919061242f565b60405180910390f35b6100e26100dd3660046124de565b610207565b005b61010b7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c6565b610136610131366004612550565b610220565b6040516100c6929190612591565b6101576101523660046125b6565b6103a1565b6040519081526020016100c6565b6100e26101733660046125cf565b6103b7565b610180600281565b6040516100c69190612635565b6101956103c9565b6040516100c6919061265d565b6100e26101b036600461276f565b610457565b6101576101c33660046125b6565b60016020526000908152604090205481565b6060600060608060606101e88787610220565b90955090506101f78882610619565b969a919950975094955050505050565b604051632974974360e01b815260040160405180910390fd5b60608060008080808080610236898b018b612b02565b955095509550955095509550306001600160a01b031663c2f0329f610277600189602001516102659190612bdd565b60009081526001602052604090205490565b60001b610318856000805461028b90612bf4565b80601f01602080910402602001604051908101604052809291908181526020018280546102b790612bf4565b80156103045780601f106102d957610100808354040283529160200191610304565b820191906000526020600020905b8154815290600101906020018083116102e757829003601f168201915b5050505050886001600160401b031661073c565b60408051602081018a9052016040516020818303038152906040528a6040518563ffffffff1660e01b81526004016103539493929190612c28565b60006040518083038186803b15801561036b57600080fd5b505afa15801561037f573d6000803e3d6000fd5b505050508161038f828787610773565b975097505050505050505b9250929050565b6000818152600160205260408120545b92915050565b6103c384848484611008565b50505050565b600080546103d690612bf4565b80601f016020809104026020016040519081016040528092919081815260200182805461040290612bf4565b801561044f5780601f106104245761010080835404028352916020019161044f565b820191906000526020600020905b81548152906001019060200180831161043257829003601f168201915b505050505081565b6104618180612d8a565b600081811061047257610472612dd3565b90506020028101906104849190612de9565b610492906020810190612e09565b6040516104a0929190612e4f565b60405180910390208380519060200120146104ce5760405163026a287560e51b815260040160405180910390fd5b6104d88180612d8a565b60008181106104e9576104e9612dd3565b90506020028101906104fb9190612de9565b610509906040810190612e09565b604051610517929190612e4f565b6040518091039020828051906020012014610545576040516310d9300f60e11b815260040160405180910390fd5b61057a6105528280612d8a565b600081811061056357610563612dd3565b90506020028101906105759190612de9565b61110a565b6105848280612d8a565b600181811061059557610595612dd3565b90506020028101906105a79190612de9565b6105b5906040810190612e09565b6105be91612e5f565b146105dc57604051636589f0e160e11b815260040160405180910390fd5b6105fa6105e98280612d8a565b600181811061056357610563612dd3565b84146103c3576040516392cb8fbb60e01b815260040160405180910390fd5b6000606080600061064061063b8660018089516106369190612bdd565b61132e565b611470565b9050600061067b61066a8360038151811061065d5761065d612dd3565b602002602001015161147e565b888151811061065d5761065d612dd3565b90506106a08160008151811061069357610693612dd3565b60200260200101516116a1565b6106a990612e7d565b60001c945060006106c68260018151811061065d5761065d612dd3565b90506106de8260028151811061069357610693612dd3565b935060005b81518110156107315761070182828151811061069357610693612dd3565b86828151811061071357610713612dd3565b6020026020010181905250808061072990612ea1565b9150506106e3565b505050509250925092565b60608383610749846117cd565b60405160200161075b93929190612eba565b60405160208183030381529060405290509392505050565b606060008451116107c35760405162461bcd60e51b81526020600482015260156024820152744d65726b6c65547269653a20656d707479206b657960581b60448201526064015b60405180910390fd5b60006107ce846118d8565b905060006107db866119bc565b90506000846040516020016107f291815260200190565b60405160208183030381529060405290506000805b8451811015610faa57600085828151811061082457610824612dd3565b6020026020010151905084518311156108965760405162461bcd60e51b815260206004820152602e60248201527f4d65726b6c65547269653a206b657920696e646578206578636565647320746f60448201526d0e8c2d840d6caf240d8cadccee8d60931b60648201526084016107ba565b8260000361093557805180516020918201206040516108e4926108be92910190815260200190565b604051602081830303815290604052858051602091820120825192909101919091201490565b6109305760405162461bcd60e51b815260206004820152601d60248201527f4d65726b6c65547269653a20696e76616c696420726f6f74206861736800000060448201526064016107ba565b610a2b565b8051516020116109bb578051805160209182012060405161095f926108be92910190815260200190565b6109305760405162461bcd60e51b815260206004820152602760248201527f4d65726b6c65547269653a20696e76616c6964206c6172676520696e7465726e6044820152660c2d840d0c2e6d60cb1b60648201526084016107ba565b805184516020808701919091208251919092012014610a2b5760405162461bcd60e51b815260206004820152602660248201527f4d65726b6c65547269653a20696e76616c696420696e7465726e616c206e6f646044820152650ca40d0c2e6d60d31b60648201526084016107ba565b610a3760106001612f46565b81602001515103610bd25784518303610b6a57610a64816020015160108151811061069357610693612dd3565b96506000875111610add5760405162461bcd60e51b815260206004820152603b60248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286272616e636829000000000060648201526084016107ba565b60018651610aeb9190612bdd565b8214610b5f5760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286272616e63682900000000000060648201526084016107ba565b505050505050611001565b6000858481518110610b7e57610b7e612dd3565b602001015160f81c60f81b60f81c9050600082602001518260ff1681518110610ba957610ba9612dd3565b60200260200101519050610bbc81611a1f565b9550610bc9600186612f46565b94505050610f97565b600281602001515103610f3e576000610bea82611a44565b9050600081600081518110610c0157610c01612dd3565b016020015160f81c90506000610c18600283612f74565b610c23906002612f96565b90506000610c34848360ff16611a68565b90506000610c428a89611a68565b90506000610c508383611a99565b905080835114610cc85760405162461bcd60e51b815260206004820152603a60248201527f4d65726b6c65547269653a20706174682072656d61696e646572206d7573742060448201527f736861726520616c6c206e6962626c65732077697468206b657900000000000060648201526084016107ba565b60ff851660021480610cdd575060ff85166003145b15610e7e5780825114610d585760405162461bcd60e51b815260206004820152603d60248201527f4d65726b6c65547269653a206b65792072656d61696e646572206d757374206260448201527f65206964656e746963616c20746f20706174682072656d61696e64657200000060648201526084016107ba565b610d72876020015160018151811061069357610693612dd3565b9c5060008d5111610deb5760405162461bcd60e51b815260206004820152603960248201527f4d65726b6c65547269653a2076616c7565206c656e677468206d75737420626560448201527f2067726561746572207468616e207a65726f20286c656166290000000000000060648201526084016107ba565b60018c51610df99190612bdd565b8814610e6d5760405162461bcd60e51b815260206004820152603860248201527f4d65726b6c65547269653a2076616c7565206e6f6465206d757374206265206c60448201527f617374206e6f646520696e2070726f6f6620286c65616629000000000000000060648201526084016107ba565b505050505050505050505050611001565b60ff85161580610e91575060ff85166001145b15610ed057610ebd8760200151600181518110610eb057610eb0612dd3565b6020026020010151611a1f565b9950610ec9818a612f46565b9850610f33565b60405162461bcd60e51b815260206004820152603260248201527f4d65726b6c65547269653a2072656365697665642061206e6f64652077697468604482015271040c2dc40eadcd6dcdeeedc40e0e4caccd2f60731b60648201526084016107ba565b505050505050610f97565b60405162461bcd60e51b815260206004820152602860248201527f4d65726b6c65547269653a20726563656976656420616e20756e706172736561604482015267626c65206e6f646560c01b60648201526084016107ba565b5080610fa281612ea1565b915050610807565b5060405162461bcd60e51b815260206004820152602560248201527f4d65726b6c65547269653a2072616e206f7574206f662070726f6f6620656c656044820152646d656e747360d81b60648201526084016107ba565b9392505050565b6000828152600160205260409020541561104f57600082815260016020526040902054811461104a57604051631549535560e01b815260040160405180910390fd5b6103c3565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001663e8d90039838361108e60206000898b612fb9565b61109791612e5f565b6110a4886020818c612fb9565b6040518663ffffffff1660e01b81526004016110c4959493929190612fe3565b600060405180830381600087803b1580156110de57600080fd5b505af11580156110f2573d6000803e3d6000fd5b50505060009283525060016020526040909120555050565b600080600261111c6040850185612e09565b60405161112a929190612e4f565b602060405180830381855afa158015611147573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061116a9190613027565b9050600261117b6060850185612e09565b61119261118b6020880188612e09565b9050611b1d565b61119f6020880188612e09565b6111a96020611b1d565b876040516020016111c09796959493929190613040565b60408051601f19818403018152908290526111da9161308d565b602060405180830381855afa1580156111f7573d6000803e3d6000fd5b5050506040513d601f19601f8201168201806040525081019061121a9190613027565b915060005b6112298480612d8a565b905081101561132757600261123e8580612d8a565b8381811061124e5761124e612dd3565b9050602002810190611260919061309f565b61126a9080612e09565b856112758880612d8a565b8681811061128557611285612dd3565b9050602002810190611297919061309f565b6112a5906020810190612e09565b6040516020016112b99594939291906130b5565b60408051601f19818403018152908290526112d39161308d565b602060405180830381855afa1580156112f0573d6000803e3d6000fd5b5050506040513d601f19601f820116820180604052508101906113139190613027565b92508061131f81612ea1565b91505061121f565b5050919050565b60608182601f0110156113745760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016107ba565b8282840110156113b75760405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b60448201526064016107ba565b818301845110156113fe5760405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b60448201526064016107ba565b60608215801561141d5760405191506000825260208201604052611467565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561145657805183526020928301920161143e565b5050858452601f01601f1916604052505b50949350505050565b60606103b161147e83611b8c565b6060600080600061148e85611bdf565b9194509250905060018160018111156114a9576114a961261f565b1461151c5760405162461bcd60e51b815260206004820152603860248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206c697374206973206e6f742061206c697374206974656d000000000000000060648201526084016107ba565b84516115288385612f46565b146115905760405162461bcd60e51b815260206004820152603260248201527f524c505265616465723a206c697374206974656d2068617320616e20696e76616044820152713634b2103230ba30903932b6b0b4b73232b960711b60648201526084016107ba565b604080516020808252610420820190925290816020015b60408051808201909152600080825260208201528152602001906001900390816115a75790505093506000835b86518110156116955760008061161a6040518060400160405280858c600001516115fe9190612bdd565b8152602001858c602001516116139190612f46565b9052611bdf565b5091509150604051806040016040528083836116369190612f46565b8152602001848b6020015161164b9190612f46565b81525088858151811061166057611660612dd3565b6020908102919091010152611676600185612f46565b93506116828183612f46565b61168c9084612f46565b925050506115d4565b50845250919392505050565b606060008060006116b185611bdf565b9194509250905060008160018111156116cc576116cc61261f565b1461173f5760405162461bcd60e51b815260206004820152603960248201527f524c505265616465723a206465636f646564206974656d207479706520666f7260448201527f206279746573206973206e6f7420612064617461206974656d0000000000000060648201526084016107ba565b6117498284612f46565b8551146117b55760405162461bcd60e51b815260206004820152603460248201527f524c505265616465723a2062797465732076616c756520636f6e7461696e732060448201527330b71034b73b30b634b2103932b6b0b4b73232b960611b60648201526084016107ba565b6117c4856020015184846122a2565b95945050505050565b6060816000036117f45750506040805180820190915260018152600360fc1b602082015290565b6000825b801561181e578161180881612ea1565b92506118179050600a826130dd565b90506117f8565b6000826001600160401b0381111561183857611838612670565b6040519080825280601f01601f191660200182016040528015611862576020820181803683370190505b509050825b801561146757611878600a876130f1565b611883906030612f46565b60f81b82611892600184612bdd565b815181106118a2576118a2612dd3565b60200101906001600160f81b031916908160001a9053506118c4600a876130dd565b9550806118d081613105565b915050611867565b8051606090806001600160401b038111156118f5576118f5612670565b60405190808252806020026020018201604052801561193a57816020015b60408051808201909152606080825260208201528152602001906001900390816119135790505b50915060005b8181101561132757604051806040016040528085838151811061196557611965612dd3565b6020026020010151815260200161199486848151811061198757611987612dd3565b6020026020010151611470565b8152508382815181106119a9576119a9612dd3565b6020908102919091010152600101611940565b606080604051905082518060011b603f8101601f1916830160405280835250602084016020830160005b83811015611a14578060011b82018184015160001a8060041c8253600f8116600183015350506001016119e6565b509295945050505050565b60606020826000015110611a3b57611a36826116a1565b6103b1565b6103b182612335565b60606103b1611a63836020015160008151811061069357610693612dd3565b6119bc565b606082518210611a8757506040805160208101909152600081526103b1565b61100183838486516106369190612bdd565b6000808251845110611aac578251611aaf565b83515b90505b8082108015611b065750828281518110611ace57611ace612dd3565b602001015160f81c60f81b6001600160f81b031916848381518110611af557611af5612dd3565b01602001516001600160f81b031916145b15611b1657816001019150611ab2565b5092915050565b6060805b60808310611b5f578083607f1660801760f81b604051602001611b4592919061311c565b60408051601f198184030190525260079290921c91611b21565b808360f81b604051602001611b7592919061311c565b604051602081830303815290604052915050919050565b60408051808201909152600080825260208201526000825111611bc15760405162461bcd60e51b81526004016107ba9061314b565b50604080518082019091528151815260209182019181019190915290565b600080600080846000015111611c075760405162461bcd60e51b81526004016107ba9061314b565b6020840151805160001a607f8111611c2c57600060016000945094509450505061229b565b60b78111611d89576000611c41608083612bdd565b905080876000015111611cc15760405162461bcd60e51b815260206004820152604e60248201526000805160206131bc83398151915260448201527f742062652067726561746572207468616e20737472696e67206c656e6774682060648201526d2873686f727420737472696e672960901b608482015260a4016107ba565b6001838101516001600160f81b0319169082141580611cee5750600160ff1b6001600160f81b0319821610155b611d765760405162461bcd60e51b815260206004820152604d60248201527f524c505265616465723a20696e76616c6964207072656669782c2073696e676c60448201527f652062797465203c203078383020617265206e6f74207072656669786564202860648201526c73686f727420737472696e672960981b608482015260a4016107ba565b506001955093506000925061229b915050565b60bf8111611fca576000611d9e60b783612bdd565b905080876000015111611e215760405162461bcd60e51b815260206004820152605160248201526000805160206131bc83398151915260448201527f74206265203e207468616e206c656e677468206f6620737472696e67206c656e60648201527067746820286c6f6e6720737472696e672960781b608482015260a4016107ba565b60018301516001600160f81b0319166000819003611ea85760405162461bcd60e51b815260206004820152604a60248201526000805160206131bc83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152696e6720737472696e672960b01b608482015260a4016107ba565b600184015160088302610100031c60378111611f2b5760405162461bcd60e51b815260206004820152604860248201526000805160206131bc83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e6760648201526720737472696e672960c01b608482015260a4016107ba565b611f358184612f46565b895111611fad5760405162461bcd60e51b815260206004820152604c60248201526000805160206131bc83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e677468202860648201526b6c6f6e6720737472696e672960a01b608482015260a4016107ba565b611fb8836001612f46565b975095506000945061229b9350505050565b60f7811161206c576000611fdf60c083612bdd565b90508087600001511161205b5760405162461bcd60e51b815260206004820152604a60248201526000805160206131bc83398151915260448201527f742062652067726561746572207468616e206c697374206c656e677468202873606482015269686f7274206c6973742960b01b608482015260a4016107ba565b60019550935084925061229b915050565b600061207960f783612bdd565b9050808760000151116120f85760405162461bcd60e51b815260206004820152604d60248201526000805160206131bc83398151915260448201527f74206265203e207468616e206c656e677468206f66206c697374206c656e677460648201526c6820286c6f6e67206c6973742960981b608482015260a4016107ba565b60018301516001600160f81b031916600081900361217d5760405162461bcd60e51b815260206004820152604860248201526000805160206131bc83398151915260448201527f74206e6f74206861766520616e79206c656164696e67207a65726f7320286c6f6064820152676e67206c6973742960c01b608482015260a4016107ba565b600184015160088302610100031c603781116121fe5760405162461bcd60e51b815260206004820152604660248201526000805160206131bc83398151915260448201527f742062652067726561746572207468616e20353520627974657320286c6f6e67606482015265206c6973742960d01b608482015260a4016107ba565b6122088184612f46565b89511161227e5760405162461bcd60e51b815260206004820152604a60248201526000805160206131bc83398151915260448201527f742062652067726561746572207468616e20746f74616c206c656e67746820286064820152696c6f6e67206c6973742960b01b608482015260a4016107ba565b612289836001612f46565b975095506001945061229b9350505050565b9193909250565b6060816001600160401b038111156122bc576122bc612670565b6040519080825280601f01601f1916602001820160405280156122e6576020820181803683370190505b50905081156110015760006122fb8486612f46565b90506020820160005b8481101561231c578281015182820152602001612304565b8481111561232b576000858301525b5050509392505050565b60606103b18260200151600084600001516122a2565b60008083601f84011261235d57600080fd5b5081356001600160401b0381111561237457600080fd5b60208301915083602082850101111561039a57600080fd5b6000806000604084860312156123a157600080fd5b8335925060208401356001600160401b038111156123be57600080fd5b6123ca8682870161234b565b9497909650939450505050565b60005b838110156123f25781810151838201526020016123da565b838111156103c35750506000910152565b6000815180845261241b8160208601602086016123d7565b601f01601f19169290920160200192915050565b6080815260006124426080830187612403565b6001600160a01b0386166020848101919091528382036040850152855180835282820190600581901b8401830188840160005b838110156124a357601f19878403018552612491838351612403565b94860194925090850190600101612475565b505086810360608801526124b78189612403565b9b9a5050505050505050505050565b6000604082840312156124d857600080fd5b50919050565b600080600080606085870312156124f457600080fd5b8435935060208501356001600160401b038082111561251257600080fd5b61251e8883890161234b565b9095509350604087013591508082111561253757600080fd5b50612544878288016124c6565b91505092959194509250565b6000806020838503121561256357600080fd5b82356001600160401b0381111561257957600080fd5b6125858582860161234b565b90969095509350505050565b6040815260006125a46040830185612403565b82810360208401526117c48185612403565b6000602082840312156125c857600080fd5b5035919050565b600080600080606085870312156125e557600080fd5b84356001600160401b038111156125fb57600080fd5b6126078782880161234b565b90989097506020870135966040013595509350505050565b634e487b7160e01b600052602160045260246000fd5b602081016004831061265757634e487b7160e01b600052602160045260246000fd5b91905290565b6020815260006110016020830184612403565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156126a8576126a8612670565b60405290565b604051608081016001600160401b03811182821017156126a8576126a8612670565b604051601f8201601f191681016001600160401b03811182821017156126f8576126f8612670565b604052919050565b600082601f83011261271157600080fd5b81356001600160401b0381111561272a5761272a612670565b61273d601f8201601f19166020016126d0565b81815284602083860101111561275257600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806080858703121561278557600080fd5b8435935060208501356001600160401b03808211156127a357600080fd5b6127af88838901612700565b945060408701359150808211156127c557600080fd5b6127d188838901612700565b9350606087013591508082111561253757600080fd5b60006001600160401b0382111561280057612800612670565b5060051b60200190565b600082601f83011261281b57600080fd5b8135602061283061282b836127e7565b6126d0565b82815260059290921b8401810191818101908684111561284f57600080fd5b8286015b848110156128ed5780356001600160401b03808211156128735760008081fd5b908801906040828b03601f190181131561288d5760008081fd5b612895612686565b87840135838111156128a75760008081fd5b6128b58d8a83880101612700565b8252509083013590828211156128cb5760008081fd5b6128d98c8984870101612700565b818901528652505050918301918301612853565b509695505050505050565b60006040828403121561290a57600080fd5b612912612686565b905081356001600160401b038082111561292b57600080fd5b818401915084601f83011261293f57600080fd5b8135602061294f61282b836127e7565b82815260059290921b8401810191818101908884111561296e57600080fd5b8286015b84811015612a4f5780358681111561298a5760008081fd5b87016080818c03601f19018113156129a25760008081fd5b6129aa6126ae565b86830135898111156129bc5760008081fd5b6129ca8e898387010161280a565b8252506040830135898111156129e05760008081fd5b6129ee8e8983870101612700565b88830152506060808401358a811115612a075760008081fd5b612a158f8a83880101612700565b604084015250918301359189831115612a2e5760008081fd5b612a3c8e8985870101612700565b9082015285525050918301918301612972565b50808752505080860135818601525050505092915050565b600082601f830112612a7857600080fd5b81356020612a8861282b836127e7565b82815260059290921b84018101918181019086841115612aa757600080fd5b8286015b848110156128ed5780356001600160401b03811115612aca5760008081fd5b612ad88986838b0101612700565b845250918301918301612aab565b80356001600160401b0381168114612afd57600080fd5b919050565b60008060008060008060c08789031215612b1b57600080fd5b86356001600160401b0380821115612b3257600080fd5b612b3e8a838b016128f8565b97506020890135915080821115612b5457600080fd5b612b608a838b01612a67565b965060408901359550612b7560608a01612ae6565b94506080890135915080821115612b8b57600080fd5b612b978a838b01612700565b935060a0890135915080821115612bad57600080fd5b50612bba89828a01612700565b9150509295509295509295565b634e487b7160e01b600052601160045260246000fd5b600082821015612bef57612bef612bc7565b500390565b600181811c90821680612c0857607f821691505b6020821081036124d857634e487b7160e01b600052602260045260246000fd5b84815260006020608081840152612c426080840187612403565b8381036040850152612c548187612403565b905083810360608501526040810185516040835281815180845260608501915060608160051b8601019350858301925060005b81811015612d7557605f19868603018352835180516080808852815190880181905260a0600582901b89018101928b01919089019060005b81811015612d1257609f198b86030183528351805160408752612ce56040880182612403565b90508e82015191508681038f880152612cfe8183612403565b96505050928c0192918c0191600101612cbf565b50505050888201518782038a890152612d2b8282612403565b91505060408201518782036040890152612d458282612403565b915050606082015191508681036060880152612d618183612403565b965050509286019291860191600101612c87565b50505050948201519101525090949350505050565b6000808335601e19843603018112612da157600080fd5b8301803591506001600160401b03821115612dbb57600080fd5b6020019150600581901b360382131561039a57600080fd5b634e487b7160e01b600052603260045260246000fd5b60008235607e19833603018112612dff57600080fd5b9190910192915050565b6000808335601e19843603018112612e2057600080fd5b8301803591506001600160401b03821115612e3a57600080fd5b60200191503681900382131561039a57600080fd5b8183823760009101908152919050565b803560208310156103b157600019602084900360031b1b1692915050565b805160208083015191908110156124d85760001960209190910360031b1b16919050565b600060018201612eb357612eb3612bc7565b5060010190565b65636861696e2f60d01b815260008451612edb8160068501602089016123d7565b6f2f73746f72656452656365697074732f60801b6006918401918201528451612f0b8160168401602089016123d7565b6c2f72656365697074526f6f742f60981b601692909101918201528351612f398160238401602088016123d7565b0160230195945050505050565b60008219821115612f5957612f59612bc7565b500190565b634e487b7160e01b600052601260045260246000fd5b600060ff831680612f8757612f87612f5e565b8060ff84160691505092915050565b600060ff821660ff841680821015612fb057612fb0612bc7565b90039392505050565b60008085851115612fc957600080fd5b83861115612fd657600080fd5b5050820193919092039150565b85815284602082015283604082015260806060820152816080820152818360a0830137600081830160a090810191909152601f909201601f19160101949350505050565b60006020828403121561303957600080fd5b5051919050565b86888237600087820160008152875161305d818360208c016123d7565b01858782376000908601908152845161307a8183602089016123d7565b0192835250506020019695505050505050565b60008251612dff8184602087016123d7565b60008235603e19833603018112612dff57600080fd5b8486823760008582018581528385602083013760009301602001928352509095945050505050565b6000826130ec576130ec612f5e565b500490565b60008261310057613100612f5e565b500690565b60008161311457613114612bc7565b506000190190565b6000835161312e8184602088016123d7565b6001600160f81b0319939093169190920190815260010192915050565b6020808252604a908201527f524c505265616465723a206c656e677468206f6620616e20524c50206974656d60408201527f206d7573742062652067726561746572207468616e207a65726f20746f206265606082015269206465636f6461626c6560b01b608082015260a0019056fe524c505265616465723a206c656e677468206f6620636f6e74656e74206d7573a2646970667358221220813b6d3b58bea4a7e2ddeee23329a3c7c04cc8eb312ce8f3c13cab7897e96dc264736f6c634300080f0033"; type CrossL2ProverConstructorParams = | [signer?: Signer] diff --git a/src/evm/contracts/factories/ICrossL2Prover__factory.ts b/src/evm/contracts/factories/ICrossL2Prover__factory.ts index 279fb7db..a8e0aded 100644 --- a/src/evm/contracts/factories/ICrossL2Prover__factory.ts +++ b/src/evm/contracts/factories/ICrossL2Prover__factory.ts @@ -82,8 +82,8 @@ const _abi = [ outputs: [ { name: "chainId", - type: "bytes32", - internalType: "bytes32", + type: "string", + internalType: "string", }, { name: "emittingContract", @@ -116,8 +116,8 @@ const _abi = [ outputs: [ { name: "srcChainId", - type: "bytes32", - internalType: "bytes32", + type: "string", + internalType: "string", }, { name: "receiptRLP", diff --git a/src/evm/contracts/factories/Venus__factory.ts b/src/evm/contracts/factories/Venus__factory.ts index 45da1085..2867357d 100644 --- a/src/evm/contracts/factories/Venus__factory.ts +++ b/src/evm/contracts/factories/Venus__factory.ts @@ -9,7 +9,6 @@ import { } from "ethers"; import type { Signer, - BytesLike, AddressLike, ContractDeployTransaction, ContractRunner, @@ -26,15 +25,10 @@ const _abi = [ type: "address", internalType: "contract ICrossL2Prover", }, - { - name: "_counterParty", - type: "address", - internalType: "address", - }, { name: "_chainId", - type: "bytes32", - internalType: "bytes32", + type: "string", + internalType: "string", }, ], stateMutability: "nonpayable", @@ -46,21 +40,8 @@ const _abi = [ outputs: [ { name: "", - type: "bytes32", - internalType: "bytes32", - }, - ], - stateMutability: "view", - }, - { - type: "function", - name: "counterParty", - inputs: [], - outputs: [ - { - name: "", - type: "address", - internalType: "address", + type: "string", + internalType: "string", }, ], stateMutability: "view", @@ -151,6 +132,11 @@ const _abi = [ type: "bytes", internalType: "bytes", }, + { + name: "expectedEmitter", + type: "address", + internalType: "address", + }, ], outputs: [], stateMutability: "nonpayable", @@ -161,9 +147,9 @@ const _abi = [ inputs: [ { name: "srcChainId", - type: "bytes32", + type: "string", indexed: false, - internalType: "bytes32", + internalType: "string", }, { name: "receiptRLP", @@ -270,7 +256,7 @@ const _abi = [ ] as const; const _bytecode = - "0x60e060405234801561001057600080fd5b50604051610e7b380380610e7b83398101604081905261002f91610089565b6001600160a01b03831661005657604051637169bd2b60e11b815260040160405180910390fd5b6001600160a01b03928316608052911660a05260c0526100cc565b6001600160a01b038116811461008657600080fd5b50565b60008060006060848603121561009e57600080fd5b83516100a981610071565b60208501519093506100ba81610071565b80925050604084015190509250925092565b60805160a05160c051610d586101236000396000818161011a015281816102e50152610517015260008181609c015261055601526000818160e00152818161016b0152818161024701526104790152610d586000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c8063932e6cb21161005b578063932e6cb2146101025780639a8a059214610115578063a17d42d41461014a578063e03d0aac1461015d57600080fd5b8063273533e1146100825780632c453bdf1461009757806332a8f30f146100db575b600080fd5b6100956100903660046106fd565b610166565b005b6100be7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b6100be7f000000000000000000000000000000000000000000000000000000000000000081565b6100956101103660046107ea565b61023f565b61013c7f000000000000000000000000000000000000000000000000000000000000000081565b6040519081526020016100d2565b610095610158366004610961565b610471565b61013c60005481565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632cd78e7785856040518363ffffffff1660e01b81526004016101b79291906109d6565b600060405180830381865afa1580156101d4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101fc9190810190610a67565b915091507ff771e200728f07a661e482ccfec772812dfe16ba618778746183c6622500118b8282604051610231929190610ada565b60405180910390a150505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166325dc9f2b8c8c8c6040518463ffffffff1660e01b815260040161029593929190610af3565b600060405180830381865afa1580156102b2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526102da9190810190610b16565b9350935093509350837f00000000000000000000000000000000000000000000000000000000000000001461032257604051632da6f64760e11b815260040160405180910390fd5b876001600160a01b0316836001600160a01b031614610354576040516304b5dc5f60e11b815260040160405180910390fd5b6103ad826040516020016103689190610c5f565b604051602081830303815290604052886040516020016103889190610c5f565b6040516020818303038152906040528051602091820120825192909101919091201490565b6103ca5760405163596128d160e01b815260040160405180910390fd5b61040a8187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061069e92505050565b6104275760405163596128d160e01b815260040160405180910390fd5b7fe683aa4424de0611da9ae18b5fc355ae68fc1dca14a14c5d7e2ad9ba3711d4468383888860405161045c9493929190610c79565b60405180910390a15050505050505050505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166325dc9f2b8888886040518463ffffffff1660e01b81526004016104c793929190610af3565b600060405180830381865afa1580156104e4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261050c9190810190610b16565b9350935093509350837f00000000000000000000000000000000000000000000000000000000000000001461055457604051632da6f64760e11b815260040160405180910390fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316146105a6576040516304b5dc5f60e11b815260040160405180910390fd5b7fc134cee5dddcc539de40a587edc2d37fb04e8ec090cb8dcf8ef0c9b23d41908d826000815181106105da576105da610cbb565b60200260200101516105eb90610cd1565b146106095760405163596128d160e01b815260040160405180910390fd5b60008260028151811061061e5761061e610cbb565b602002602001015161062f90610cd1565b90508060008190555060008280602001905181019061064e9190610cf8565b6040805184815267ffffffffffffffff831660208201529192507f777932fb4709c8bfb29f9190e22e536eaf00fd97a76a15a41b54e1b619fe5863910160405180910390a1505050505050505050565b8051602091820120825192909101919091201490565b60008083601f8401126106c657600080fd5b50813567ffffffffffffffff8111156106de57600080fd5b6020830191508360208285010111156106f657600080fd5b9250929050565b6000806020838503121561071057600080fd5b823567ffffffffffffffff81111561072757600080fd5b610733858286016106b4565b90969095509350505050565b6001600160a01b038116811461075457600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561079657610796610757565b604052919050565b600067ffffffffffffffff8211156107b8576107b8610757565b5060051b60200190565b600067ffffffffffffffff8211156107dc576107dc610757565b50601f01601f191660200190565b600080600080600080600060a0888a03121561080557600080fd5b8735965067ffffffffffffffff8060208a0135111561082357600080fd5b6108338a60208b01358b016106b4565b909750955061084560408a013561073f565b604089013594508060608a0135111561085d57600080fd5b606089013589018a601f82011261087357600080fd5b610885610880823561079e565b61076d565b81358082526020808301929160051b8401018d10156108a357600080fd5b602083015b6020843560051b8501018110156109285784813511156108c757600080fd5b8d603f8235860101126108d957600080fd5b60208135850101356108ed610880826107c2565b8181528f604083853589010101111561090557600080fd5b8160408435880101602083013760006020928201830152845292830192016108a8565b5095505050608089013581101561093e57600080fd5b5061094f8960808a01358a016106b4565b979a9699509497509295919491925050565b60008060006040848603121561097657600080fd5b83359250602084013567ffffffffffffffff81111561099457600080fd5b6109a0868287016106b4565b9497909650939450505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6020815260006109ea6020830184866109ad565b949350505050565b60005b83811015610a0d5781810151838201526020016109f5565b83811115610a1c576000848401525b50505050565b600082601f830112610a3357600080fd5b8151610a41610880826107c2565b818152846020838601011115610a5657600080fd5b6109ea8260208301602087016109f2565b60008060408385031215610a7a57600080fd5b82519150602083015167ffffffffffffffff811115610a9857600080fd5b610aa485828601610a22565b9150509250929050565b60008151808452610ac68160208601602086016109f2565b601f01601f19169290920160200192915050565b8281526040602082015260006109ea6040830184610aae565b838152604060208201526000610b0d6040830184866109ad565b95945050505050565b60008060008060808587031215610b2c57600080fd5b84519350602080860151610b3f8161073f565b604087015190945067ffffffffffffffff80821115610b5d57600080fd5b818801915088601f830112610b7157600080fd5b8151610b7f6108808261079e565b81815260059190911b8301840190848101908b831115610b9e57600080fd5b8585015b83811015610bd657805185811115610bba5760008081fd5b610bc88e89838a0101610a22565b845250918601918601610ba2565b5060608b01519097509450505080831115610bf057600080fd5b5050610bfe87828801610a22565b91505092959194509250565b600081518084526020808501808196508360051b8101915082860160005b85811015610c52578284038952610c40848351610aae565b98850198935090840190600101610c28565b5091979650505050505050565b602081526000610c726020830184610c0a565b9392505050565b6001600160a01b0385168152606060208201819052600090610c9d90830186610c0a565b8281036040840152610cb08185876109ad565b979650505050505050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015610cf2576000198160200360031b1b821691505b50919050565b600060208284031215610d0a57600080fd5b815167ffffffffffffffff81168114610c7257600080fdfea2646970667358221220aa3643edc35c1fb1fdd358b753eb135a8d5c13c180ea7422617271e1f098509864736f6c634300080f0033"; + "0x60a06040523480156200001157600080fd5b50604051620011a1380380620011a1833981016040819052620000349162000096565b6001600160a01b0382166200005c57604051637169bd2b60e11b815260040160405180910390fd5b6001600160a01b038216608052600162000077828262000225565b505050620002f1565b634e487b7160e01b600052604160045260246000fd5b60008060408385031215620000aa57600080fd5b82516001600160a01b0381168114620000c257600080fd5b602084810151919350906001600160401b0380821115620000e257600080fd5b818601915086601f830112620000f757600080fd5b8151818111156200010c576200010c62000080565b604051601f8201601f19908116603f0116810190838211818310171562000137576200013762000080565b8160405282815289868487010111156200015057600080fd5b600093505b8284101562000174578484018601518185018701529285019262000155565b82841115620001865760008684830101525b8096505050505050509250929050565b600181811c90821680620001ab57607f821691505b602082108103620001cc57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200022057600081815260208120601f850160051c81016020861015620001fb5750805b601f850160051c820191505b818110156200021c5782815560010162000207565b5050505b505050565b81516001600160401b0381111562000241576200024162000080565b620002598162000252845462000196565b84620001d2565b602080601f831160018114620002915760008415620002785750858301515b600019600386901b1c1916600185901b1785556200021c565b600085815260208120601f198616915b82811015620002c257888601518255948401946001909101908401620002a1565b5085821015620002e15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b608051610e80620003216000396000818160940152818161011a015281816103a701526104830152610e806000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c806319e819af14610067578063273533e11461007c57806332a8f30f1461008f578063932e6cb2146100d35780639a8a0592146100e6578063e03d0aac146100fb575b600080fd5b61007a61007536600461079f565b610112565b005b61007a61008a3660046107fe565b6103a2565b6100b67f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020015b60405180910390f35b61007a6100e13660046108d3565b61047b565b6100ee61069a565b6040516100ca9190610aa6565b61010460005481565b6040519081526020016100ca565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166325dc9f2b8989896040518463ffffffff1660e01b815260040161016893929190610ae9565b600060405180830381865afa158015610185573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526101ad9190810190610b59565b935093509350935061025a600180546101c590610c65565b80601f01602080910402602001604051908101604052809291908181526020018280546101f190610c65565b801561023e5780601f106102135761010080835404028352916020019161023e565b820191906000526020600020905b81548152906001019060200180831161022157829003601f168201915b5050505050858051602091820120825192909101919091201490565b61027757604051632da6f64760e11b815260040160405180910390fd5b846001600160a01b0316836001600160a01b0316146102a9576040516304b5dc5f60e11b815260040160405180910390fd5b7fc134cee5dddcc539de40a587edc2d37fb04e8ec090cb8dcf8ef0c9b23d41908d826000815181106102dd576102dd610c9f565b60200260200101516102ee90610cb5565b1461030c5760405163596128d160e01b815260040160405180910390fd5b60008260028151811061032157610321610c9f565b602002602001015161033290610cb5565b9050806000819055506000828060200190518101906103519190610cd9565b6040805184815267ffffffffffffffff831660208201529192507f777932fb4709c8bfb29f9190e22e536eaf00fd97a76a15a41b54e1b619fe5863910160405180910390a150505050505050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632cd78e7785856040518363ffffffff1660e01b81526004016103f3929190610d03565b600060405180830381865afa158015610410573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526104389190810190610d17565b915091507f4d68957cde09c265c835fd8796e533a4b8208f6f1ba94b0ac437ad860cfe9a4d828260405161046d929190610d7b565b60405180910390a150505050565b6000806000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166325dc9f2b8c8c8c6040518463ffffffff1660e01b81526004016104d193929190610ae9565b600060405180830381865afa1580156104ee573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526105169190810190610b59565b935093509350935061052e600180546101c590610c65565b61054b57604051632da6f64760e11b815260040160405180910390fd5b876001600160a01b0316836001600160a01b03161461057d576040516304b5dc5f60e11b815260040160405180910390fd5b6105d6826040516020016105919190610df5565b604051602081830303815290604052886040516020016105b19190610df5565b6040516020818303038152906040528051602091820120825192909101919091201490565b6105f35760405163596128d160e01b815260040160405180910390fd5b6106338187878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061072892505050565b6106505760405163596128d160e01b815260040160405180910390fd5b7fe683aa4424de0611da9ae18b5fc355ae68fc1dca14a14c5d7e2ad9ba3711d446838388886040516106859493929190610e08565b60405180910390a15050505050505050505050565b600180546106a790610c65565b80601f01602080910402602001604051908101604052809291908181526020018280546106d390610c65565b80156107205780601f106106f557610100808354040283529160200191610720565b820191906000526020600020905b81548152906001019060200180831161070357829003601f168201915b505050505081565b8051602091820120825192909101919091201490565b60008083601f84011261075057600080fd5b50813567ffffffffffffffff81111561076857600080fd5b60208301915083602082850101111561078057600080fd5b9250929050565b6001600160a01b038116811461079c57600080fd5b50565b600080600080606085870312156107b557600080fd5b84359350602085013567ffffffffffffffff8111156107d357600080fd5b6107df8782880161073e565b90945092505060408501356107f381610787565b939692955090935050565b6000806020838503121561081157600080fd5b823567ffffffffffffffff81111561082857600080fd5b6108348582860161073e565b90969095509350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561087f5761087f610840565b604052919050565b600067ffffffffffffffff8211156108a1576108a1610840565b5060051b60200190565b600067ffffffffffffffff8211156108c5576108c5610840565b50601f01601f191660200190565b600080600080600080600060a0888a0312156108ee57600080fd5b8735965067ffffffffffffffff8060208a0135111561090c57600080fd5b61091c8a60208b01358b0161073e565b909750955061092e60408a0135610787565b604089013594508060608a0135111561094657600080fd5b606089013589018a601f82011261095c57600080fd5b61096e6109698235610887565b610856565b81358082526020808301929160051b8401018d101561098c57600080fd5b602083015b6020843560051b850101811015610a115784813511156109b057600080fd5b8d603f8235860101126109c257600080fd5b60208135850101356109d6610969826108ab565b8181528f60408385358901010111156109ee57600080fd5b816040843588010160208301376000602092820183015284529283019201610991565b50955050506080890135811015610a2757600080fd5b50610a388960808a01358a0161073e565b979a9699509497509295919491925050565b60005b83811015610a65578181015183820152602001610a4d565b83811115610a74576000848401525b50505050565b60008151808452610a92816020860160208601610a4a565b601f01601f19169290920160200192915050565b602081526000610ab96020830184610a7a565b9392505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152604060208201526000610b03604083018486610ac0565b95945050505050565b600082601f830112610b1d57600080fd5b8151610b2b610969826108ab565b818152846020838601011115610b4057600080fd5b610b51826020830160208701610a4a565b949350505050565b60008060008060808587031215610b6f57600080fd5b845167ffffffffffffffff80821115610b8757600080fd5b610b9388838901610b0c565b95506020915081870151610ba681610787565b604088015190955081811115610bbb57600080fd5b8701601f81018913610bcc57600080fd5b8051610bda61096982610887565b81815260059190911b8201840190848101908b831115610bf957600080fd5b8584015b83811015610c3157805186811115610c155760008081fd5b610c238e8983890101610b0c565b845250918601918601610bfd565b5060608b0151909750945050505080821115610c4c57600080fd5b50610c5987828801610b0c565b91505092959194509250565b600181811c90821680610c7957607f821691505b602082108103610c9957634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015610c995760001960209190910360031b1b16919050565b600060208284031215610ceb57600080fd5b815167ffffffffffffffff81168114610ab957600080fd5b602081526000610b51602083018486610ac0565b60008060408385031215610d2a57600080fd5b825167ffffffffffffffff80821115610d4257600080fd5b610d4e86838701610b0c565b93506020850151915080821115610d6457600080fd5b50610d7185828601610b0c565b9150509250929050565b604081526000610d8e6040830185610a7a565b8281036020840152610b038185610a7a565b600081518084526020808501808196508360051b8101915082860160005b85811015610de8578284038952610dd6848351610a7a565b98850198935090840190600101610dbe565b5091979650505050505050565b602081526000610ab96020830184610da0565b6001600160a01b0385168152606060208201819052600090610e2c90830186610da0565b8281036040840152610e3f818587610ac0565b97965050505050505056fea2646970667358221220095ec052cb11a6643b3c7a7a50d457a96e550f952fb72bfe68a82e2fd585f7fa64736f6c634300080f0033"; type VenusConstructorParams = | [signer?: Signer] @@ -291,29 +277,17 @@ export class Venus__factory extends ContractFactory { override getDeployTransaction( _prover: AddressLike, - _counterParty: AddressLike, - _chainId: BytesLike, + _chainId: string, overrides?: NonPayableOverrides & { from?: string } ): Promise { - return super.getDeployTransaction( - _prover, - _counterParty, - _chainId, - overrides || {} - ); + return super.getDeployTransaction(_prover, _chainId, overrides || {}); } override deploy( _prover: AddressLike, - _counterParty: AddressLike, - _chainId: BytesLike, + _chainId: string, overrides?: NonPayableOverrides & { from?: string } ) { - return super.deploy( - _prover, - _counterParty, - _chainId, - overrides || {} - ) as Promise< + return super.deploy(_prover, _chainId, overrides || {}) as Promise< Venus & { deploymentTransaction(): ContractTransactionResponse; }