From c8565a0ee2802e2a2c7b2e9217fd434035c20b1f Mon Sep 17 00:00:00 2001 From: Kevin Halliday Date: Mon, 6 Jan 2025 14:04:41 -0500 Subject: [PATCH] chore(contracts/solve): rename call destChainId to chainId (#2748) Rename call.destChainId to call.chainId A call has a chain id. "dest" does not add useful meaning. issue: none --- contracts/bindings/solveinbox.go | 12 ++++++------ contracts/bindings/solveoutbox.go | 12 ++++++------ contracts/solve/src/Solve.sol | 10 +++++----- contracts/solve/src/SolveInbox.sol | 4 ++-- contracts/solve/src/SolveOutbox.sol | 2 +- contracts/solve/test/InboxBase.sol | 2 +- contracts/solve/test/Inbox_claim.t.sol | 4 ++-- contracts/solve/test/Inbox_markFulfilled.t.sol | 10 +++++----- contracts/solve/test/Inbox_request.t.sol | 8 ++++---- contracts/solve/test/Outbox_fulfill.t.sol | 8 ++++---- e2e/solve/devapp/deposits.go | 8 ++++---- solver/app/procdeps.go | 2 +- solver/app/targets.go | 4 ++-- 13 files changed, 43 insertions(+), 43 deletions(-) diff --git a/contracts/bindings/solveinbox.go b/contracts/bindings/solveinbox.go index 88fb08d97..0d68c8a10 100644 --- a/contracts/bindings/solveinbox.go +++ b/contracts/bindings/solveinbox.go @@ -31,10 +31,10 @@ var ( // SolveCall is an auto generated low-level Go binding around an user-defined struct. type SolveCall struct { - DestChainId uint64 - Target common.Address - Value *big.Int - Data []byte + ChainId uint64 + Target common.Address + Value *big.Int + Data []byte } // SolveDeposit is an auto generated low-level Go binding around an user-defined struct. @@ -69,8 +69,8 @@ type SolveTokenDeposit struct { // SolveInboxMetaData contains all meta data concerning the SolveInbox contract. var SolveInboxMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"accept\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancel\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancelOwnershipHandover\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"claim\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeOwnershipHandover\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"defaultConfLevel\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deployedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestRequestByStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structSolve.Request\",\"components\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"acceptedBy\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.Deposit[]\",\"components\":[{\"name\":\"isNative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"history\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.StatusUpdate[]\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"timestamp\",\"type\":\"uint40\",\"internalType\":\"uint40\"}]}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRequest\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structSolve.Request\",\"components\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"acceptedBy\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.Deposit[]\",\"components\":[{\"name\":\"isNative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"history\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.StatusUpdate[]\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"timestamp\",\"type\":\"uint40\",\"internalType\":\"uint40\"}]}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUpdateHistory\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.StatusUpdate[]\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"timestamp\",\"type\":\"uint40\",\"internalType\":\"uint40\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"hasAllRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasAnyRole\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solver_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"omni_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"outbox_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"markFulfilled\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"omni\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"result\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownershipHandoverExpiresAt\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"reject\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reason\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"renounceRoles\",\"inputs\":[{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"request\",\"inputs\":[{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.TokenDeposit[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"requestOwnershipHandover\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"revokeRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"rolesOf\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Accepted\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"by\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Claimed\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"by\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structSolve.Deposit[]\",\"components\":[{\"name\":\"isNative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultConfLevelSet\",\"inputs\":[{\"name\":\"conf\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Fulfilled\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"callHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"creditedTo\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OmniPortalSet\",\"inputs\":[{\"name\":\"omni\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipHandoverCanceled\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipHandoverRequested\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"oldOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Rejected\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"by\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"reason\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Requested\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"call\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structSolve.Deposit[]\",\"components\":[{\"name\":\"isNative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RolesUpdated\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDeposit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRecipient\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewOwnerIsZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoHandoverRequest\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAccepted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotFulfilled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotOutbox\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotPendingOrRejected\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Reentrancy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unauthorized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongCallHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongSourceChain\",\"inputs\":[]}]", - Bin: "0x60a06040523480156200001157600080fd5b5063ffffffff60643b1615620000975760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200007f575060408051601f3d908101601f191682019092526200007c9181019062000110565b60015b6200008e57436080526200009c565b6080526200009c565b436080525b620000a6620000ac565b6200012a565b63409feecd1980546001811615620000cc5763f92ee8a96000526004601cfd5b8160c01c808260011c146200010b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6000602082840312156200012357600080fd5b5051919050565b6080516129f462000146600039600061044001526129f46000f3fe6080604052600436106101815760003560e01c80637667fd69116100d1578063e4725ba11161008a578063f2fde38b11610064578063f2fde38b14610475578063f8c8765e14610488578063fb1e61ca146104a8578063fee81cf4146104c857600080fd5b8063e4725ba11461040e578063eae4c19f1461042e578063f04e283e1461046257600080fd5b80637667fd69146103555780638da5cb5b1461038257806396c144f01461039b578063c4d252f5146103bb578063db3ea553146103db578063e17771c8146103fb57600080fd5b8063337ffe201161013e578063514e62fc11610118578063514e62fc146102db57806354d1f13d14610312578063715018a61461031a57806374eeb8471461032257600080fd5b8063337ffe201461027057806339acf9f1146102905780634a4ee7b1146102c857600080fd5b8063183a4f6e146101865780631c10893f1461019b5780631cd64df4146101ae57806325692962146101fa5780632cea64e8146102025780632de948071461022f575b600080fd5b61019961019436600461209b565b6104fb565b005b6101996101a93660046120c9565b610508565b3480156101ba57600080fd5b506101e56101c93660046120c9565b638b78c6d8600c90815260009290925260209091205481161490565b60405190151581526020015b60405180910390f35b61019961051e565b34801561020e57600080fd5b5061022261021d36600461209b565b61056d565b6040516101f1919061214f565b34801561023b57600080fd5b5061026261024a366004612198565b638b78c6d8600c908152600091909152602090205490565b6040519081526020016101f1565b34801561027c57600080fd5b5061019961028b3660046121bc565b61061d565b34801561029c57600080fd5b506000546102b0906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b6101996102d63660046120c9565b6108e7565b3480156102e757600080fd5b506101e56102f63660046120c9565b638b78c6d8600c90815260009290925260209091205416151590565b6101996108f9565b610199610935565b34801561032e57600080fd5b5060005461034390600160a01b900460ff1681565b60405160ff90911681526020016101f1565b34801561036157600080fd5b506103756103703660046121de565b610949565b6040516101f19190612314565b34801561038e57600080fd5b50638b78c6d819546102b0565b3480156103a757600080fd5b506101996103b63660046123b7565b610c10565b3480156103c757600080fd5b506101996103d636600461209b565b610e52565b3480156103e757600080fd5b506101996103f63660046123e7565b6110a5565b610262610409366004612412565b611221565b34801561041a57600080fd5b5061019961042936600461209b565b611393565b34801561043a57600080fd5b506102627f000000000000000000000000000000000000000000000000000000000000000081565b610199610470366004612198565b61151d565b610199610483366004612198565b61155a565b34801561049457600080fd5b506101996104a33660046124b3565b611581565b3480156104b457600080fd5b506103756104c336600461209b565b61162d565b3480156104d457600080fd5b506102626104e3366004612198565b63389a75e1600c908152600091909152602090205490565b61050533826118a2565b50565b6105106118ae565b61051a82826118c9565b5050565b60006202a3006001600160401b03164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b606060046000838152602001908152602001600020600701805480602002602001604051908101604052809291908181526020016000905b8282101561061257600084815260209020604080518082019091529083018054829060ff1660068111156105db576105db6120f5565b60068111156105ec576105ec6120f5565b81529054610100900464ffffffffff1660209182015290825260019290920191016105a5565b505050509050919050565b60005460408051631799380760e11b815281516001600160a01b0390931692632f32700e926004808401939192918290030181865afa158015610664573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610688919061253a565b8051600180546020909301516001600160a01b0316600160401b026001600160e01b03199093166001600160401b039092169190911791909117905568929eee149b4bd21268543090036106e45763ab143c066000526004601cfd5b3068929eee149b4bd212685560008281526004602052604090206002600182015460ff166006811115610719576107196120f5565b146107375760405163029d79a560e41b815260040160405180910390fd5b600354600154600160401b90046001600160a01b0390811691161461076f5760405163bda8fc9560e01b815260040160405180910390fd5b60038101546001546001600160401b039081169116146107a257604051633687f39960e21b815260040160405180910390fd5b6107b08346836003016118d5565b82146107cf57604051631c6060ab60e11b815260040160405180910390fd5b60018181018054600560ff1991821681179092556040805180820190915291825264ffffffffff42166020808401919091526007850180548086018255600091825291902083519101805493949093919284921690836006811115610836576108366120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff00199091161790556005600081815291527f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d84905560028201546040516001600160a01b0390911691849186917f7898a125e0970666c80e00bbf2e7041d84dfe5bbe6bcf562ce53d540fd6cd89191a450503868929eee149b4bd212685550600180546001600160e01b0319169055565b6108ef6118ae565b61051a82826118a2565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b61093d6118ae565b610947600061190b565b565b610951612010565b600460006005600085600681111561096b5761096b6120f5565b600681111561097c5761097c6120f5565b81526020019081526020016000205481526020019081526020016000206040518060e0016040529081600082015481526020016001820160009054906101000a900460ff1660068111156109d2576109d26120f5565b60068111156109e3576109e36120f5565b815260018201546001600160a01b0361010090910481166020808401919091526002840154821660408085019190915280516080810182526003860180546001600160401b0381168352600160401b90049094169281019290925260048501549082015260058401805460609485019492939284019190610a6390612598565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8f90612598565b8015610adc5780601f10610ab157610100808354040283529160200191610adc565b820191906000526020600020905b815481529060010190602001808311610abf57829003601f168201915b505050505081525050815260200160068201805480602002602001604051908101604052809291908181526020016000905b82821015610b685760008481526020908190206040805160608101825260028602909201805460ff81161515845261010090046001600160a01b031683850152600190810154918301919091529083529092019101610b0e565b50505050815260200160078201805480602002602001604051908101604052809291908181526020016000905b82821015610c0257600084815260209020604080518082019091529083018054829060ff166006811115610bcb57610bcb6120f5565b6006811115610bdc57610bdc6120f5565b81529054610100900464ffffffffff166020918201529082526001929092019101610b95565b505050915250909392505050565b3068929eee149b4bd212685403610c2f5763ab143c066000526004601cfd5b3068929eee149b4bd212685560008281526004602052604090206005600182015460ff166006811115610c6457610c646120f5565b14610c82576040516303de361f60e11b815260040160405180910390fd5b60028101546001600160a01b03163314610cae576040516282b42960e81b815260040160405180910390fd5b60018181018054600660ff1991821681179092556040805180820190915282815264ffffffffff421660208083019190915260078601805480870182556000918252919020825191018054929590949193859316918490811115610d1457610d146120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff001990911617905560066000818152600583527f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac51886905590830180546040805182860281018601909152818152610df2948794919392919084015b82821015610de95760008481526020908190206040805160608101825260028602909201805460ff81161515845261010090046001600160a01b031683850152600190810154918301919091529083529092019101610d8f565b50505050611949565b816001600160a01b0316336001600160a01b0316847f1291cec4ea55732527f1ae8ff3e53def0dbe1feb99c094983449e59cdce4674b84600601604051610e39919061262b565b60405180910390a4503868929eee149b4bd21268555050565b3068929eee149b4bd212685403610e715763ab143c066000526004601cfd5b3068929eee149b4bd2126855600081815260046020526040902060018082015460ff166006811115610ea557610ea56120f5565b14158015610ecc57506003600182015460ff166006811115610ec957610ec96120f5565b14155b15610eea57604051631fa4148760e21b815260040160405180910390fd5b600181015461010090046001600160a01b03163314610f1b576040516282b42960e81b815260040160405180910390fd5b60018181018054600460ff1991821681179092556040805180820190915291825264ffffffffff42166020808401919091526007850180548086018255600091825291902083519101805493949093919284921690836006811115610f8257610f826120f5565b0217905550602091820151815465ffffffffff00191661010064ffffffffff90921682021790915560046000908152600583527f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d58590556001840154600685018054604080518288028101880190915281815261106a966001600160a01b0396909404959095169493919290919084018215610de95760008481526020908190206040805160608101825260028602909201805460ff81161515845261010090046001600160a01b031683850152600190810154918301919091529083529092019101610d8f565b60405182907fb66b13449e4bb2c30749a37f3081f1988fcee5ff5d98ce740b354d4e2d94409590600090a2503868929eee149b4bd212685550565b60016110b081611a9b565b3068929eee149b4bd2126854036110cf5763ab143c066000526004601cfd5b3068929eee149b4bd2126855600083815260046020526040902060018082015460ff166006811115611103576111036120f5565b1461112157604051633ee3282d60e11b815260040160405180910390fd5b60018181018054600360ff1991821681179092556040805180820190915291825264ffffffffff42166020808401919091526007850180548086018255600091825291902083519101805493949093919284921690836006811115611188576111886120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff00199091161790556003600090815260059091527fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc085905560405160ff851691339187917f21f84ee3a6e9bc7c10f855f8c9829e22c613861cef10add09eccdbc88df9f59f91a4503868929eee149b4bd2126855505050565b60003068929eee149b4bd2126854036112425763ab143c066000526004601cfd5b3068929eee149b4bd212685560006112606040860160208701612198565b6001600160a01b0316036112875760405163574b16a760e11b815260040160405180910390fd5b611294602085018561263e565b6001600160401b03166000036112bd5760405163574b16a760e11b815260040160405180910390fd5b6112ca606085018561265b565b90506000036112ec5760405163574b16a760e11b815260040160405180910390fd5b811580156112f8575034155b1561131657604051630558800760e21b815260040160405180910390fd5b600061132433868686611ac1565b600181015481546040519293506101009091046001600160a01b0316917f3622a563ce1f96b477fa827bf0b60be8aee346b515754f3645f4d7a2ef5d4b2990611376906003860190600687019061276d565b60405180910390a3543868929eee149b4bd2126855949350505050565b600161139e81611a9b565b3068929eee149b4bd2126854036113bd5763ab143c066000526004601cfd5b3068929eee149b4bd2126855600082815260046020526040902060018082015460ff1660068111156113f1576113f16120f5565b1461140f57604051633ee3282d60e11b815260040160405180910390fd5b60018181018054600260ff19918216811790925581840180546001600160a01b031916331790556040805180820190915291825264ffffffffff42166020808401919091526007850180548086018255600091825291902083519101805493949093919284921690836006811115611489576114896120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff00199091161790556002600090815260059091527f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a849055604051339185917f9deed34441ca75bb2dbbe101d2201930f40e18a9ce521c77fbdca6690a8999679190a3503868929eee149b4bd21268555050565b6115256118ae565b63389a75e1600c52806000526020600c20805442111561154d57636f5e88186000526004601cfd5b600090556105058161190b565b6115626118ae565b8060601b61157857637448fbae6000526004601cfd5b6105058161190b565b63409feecd1980546003825580156115b85760018160011c14303b106115af5763f92ee8a96000526004601cfd5b818160ff1b1b91505b506115c285611e0c565b6115cd8460016118c9565b6115d683611e48565b600380546001600160a01b0319166001600160a01b0384161790558015611626576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050565b611635612010565b600082815260046020908152604091829020825160e08101909352805483526001810154909183019060ff166006811115611672576116726120f5565b6006811115611683576116836120f5565b815260018201546001600160a01b0361010090910481166020808401919091526002840154821660408085019190915280516080810182526003860180546001600160401b0381168352600160401b9004909416928101929092526004850154908201526005840180546060948501949293928401919061170390612598565b80601f016020809104026020016040519081016040528092919081815260200182805461172f90612598565b801561177c5780601f106117515761010080835404028352916020019161177c565b820191906000526020600020905b81548152906001019060200180831161175f57829003601f168201915b505050505081525050815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156118085760008481526020908190206040805160608101825260028602909201805460ff81161515845261010090046001600160a01b0316838501526001908101549183019190915290835290920191016117ae565b50505050815260200160078201805480602002602001604051908101604052809291908181526020016000905b82821015610c0257600084815260209020604080518082019091529083018054829060ff16600681111561186b5761186b6120f5565b600681111561187c5761187c6120f5565b81529054610100900464ffffffffff166020918201529082526001929092019101611835565b61051a82826000611eeb565b638b78c6d819543314610947576382b429006000526004601cfd5b61051a82826001611eeb565b60008383836040516020016118ec93929190612792565b6040516020818303038152906040528051906020012090509392505050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b6001600160a01b03821661197057604051634e46966960e11b815260040160405180910390fd5b60005b8151811015611a965781818151811061198e5761198e6127ba565b60200260200101516000015115611a36576000836001600160a01b03168383815181106119bd576119bd6127ba565b60200260200101516040015160405160006040518083038185875af1925050503d8060008114611a09576040519150601f19603f3d011682016040523d82523d6000602084013e611a0e565b606091505b5050905080611a30576040516312171d8360e31b815260040160405180910390fd5b50611a8e565b611a8e83838381518110611a4c57611a4c6127ba565b602002602001015160400151848481518110611a6a57611a6a6127ba565b6020026020010151602001516001600160a01b0316611f449092919063ffffffff16565b600101611973565b505050565b638b78c6d8600c5233600052806020600c205416610505576382b429006000526004601cfd5b600080611acc611f94565b6000818152600460205260409020818155600180820180546001600160a81b0319166101006001600160a01b038c1602179091179055925090508460038301611b1582826128df565b50506040805180820190915260018082524264ffffffffff16602080840191909152600785018054808401825560009182529190208351910180549092839160ff191690836006811115611b6b57611b6b6120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff00199091161790556001600052600590527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b8190553415611c3f57604080516060810182526001808252600060208084018281523495850195865260068801805480860182559084529190922093516002909102909301805491516001600160a81b0319909216931515610100600160a81b031916939093176101006001600160a01b039092169190910217825591519101555b60005b83811015611e0257848482818110611c5c57611c5c6127ba565b90506040020160200135600003611c8657604051635972996f60e11b815260040160405180910390fd5b6000858583818110611c9a57611c9a6127ba565b611cb09260206040909202019081019150612198565b6001600160a01b031603611cd757604051635972996f60e11b815260040160405180910390fd5b826006016040518060600160405280600015158152602001878785818110611d0157611d016127ba565b611d179260206040909202019081019150612198565b6001600160a01b03168152602001878785818110611d3757611d376127ba565b60206040918202939093018301359093525083546001818101865560009586529482902084516002909202018054928501516001600160a01b031661010002610100600160a81b0319921515929092166001600160a81b031990931692909217178155910151910155611dfa3330878785818110611db757611db76127ba565b90506040020160200135888886818110611dd357611dd36127ba565b611de99260206040909202019081019150612198565b6001600160a01b0316929190611fb2565b600101611c42565b5050949350505050565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6001600160a01b038116611e975760405162461bcd60e51b8152602060048201526012602482015271584170703a206e6f207a65726f206f6d6e6960701b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f79162c8d053a07e70cdc1ccc536f0440b571f8508377d2bef51094fadab98f479060200160405180910390a150565b638b78c6d8600c52826000526020600c20805483811783611f0d575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3505050505050565b816014528060345263a9059cbb60601b60005260206000604460106000875af18060016000511416611f8957803d853b151710611f89576390b8ec186000526004601cfd5b506000603452505050565b6002805460009182611fa583612997565b9091555050600254919050565b60405181606052826040528360601b602c526323b872dd60601b600c52602060006064601c6000895af1806001600051141661200157803d873b15171061200157637939f4246000526004601cfd5b50600060605260405250505050565b6040805160e0810190915260008082526020820190815260200160006001600160a01b0316815260200160006001600160a01b03168152602001612087604051806080016040528060006001600160401b0316815260200160006001600160a01b0316815260200160008152602001606081525090565b815260200160608152602001606081525090565b6000602082840312156120ad57600080fd5b5035919050565b6001600160a01b038116811461050557600080fd5b600080604083850312156120dc57600080fd5b82356120e7816120b4565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6007811061212957634e487b7160e01b600052602160045260246000fd5b9052565b61213882825161210b565b60209081015164ffffffffff169082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561218c5761217e83855161212d565b93850193925060010161216b565b50909695505050505050565b6000602082840312156121aa57600080fd5b81356121b5816120b4565b9392505050565b600080604083850312156121cf57600080fd5b50508035926020909101359150565b6000602082840312156121f057600080fd5b8135600781106121b557600080fd5b6001600160401b0381511682526000602060018060a01b03602084015116602085015260408301516040850152606083015160806060860152805180608087015260005b8181101561225f5782810184015187820160a001528301612243565b50600060a0828801015260a0601f19601f830116870101935050505092915050565b60008151808452602080850194506020840160005b838110156122d3578151805115158852838101516001600160a01b0316848901526040908101519088015260609096019590820190600101612296565b509495945050505050565b60008151808452602080850194506020840160005b838110156122d35761230687835161212d565b9650908201906001016122f3565b602081528151602082015260006020830151612333604084018261210b565b5060408301516001600160a01b039081166060848101919091528401511660808084019190915283015160e060a08401526123726101008401826121ff565b905060a0840151601f19808584030160c08601526123908383612281565b925060c08601519150808584030160e0860152506123ae82826122de565b95945050505050565b600080604083850312156123ca57600080fd5b8235915060208301356123dc816120b4565b809150509250929050565b600080604083850312156123fa57600080fd5b82359150602083013560ff811681146123dc57600080fd5b60008060006040848603121561242757600080fd5b83356001600160401b038082111561243e57600080fd5b908501906080828803121561245257600080fd5b9093506020850135908082111561246857600080fd5b818601915086601f83011261247c57600080fd5b81358181111561248b57600080fd5b8760208260061b85010111156124a057600080fd5b6020830194508093505050509250925092565b600080600080608085870312156124c957600080fd5b84356124d4816120b4565b935060208501356124e4816120b4565b925060408501356124f4816120b4565b91506060850135612504816120b4565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038116811461050557600080fd5b60006040828403121561254c57600080fd5b604051604081018181106001600160401b038211171561256e5761256e61250f565b604052825161257c81612525565b8152602083015161258c816120b4565b60208201529392505050565b600181811c908216806125ac57607f821691505b6020821081036125cc57634e487b7160e01b600052602260045260246000fd5b50919050565b600081548084526020808501945083600052602060002060005b838110156122d357815460ff81161515885260081c6001600160a01b0316838801526001808301546040890152606090970196600290920191016125ec565b6020815260006121b560208301846125d2565b60006020828403121561265057600080fd5b81356121b581612525565b6000808335601e1984360301811261267257600080fd5b8301803591506001600160401b0382111561268c57600080fd5b6020019150368190038213156126a157600080fd5b9250929050565b600081546001600160401b0381168452602060018060a01b038260401c16602086015260019150600184015460408601526002840160806060870152600081546126f181612598565b8060808a015260a06001831660008114612712576001811461272e5761275e565b60ff19841660a08c015260a083151560051b8c0101945061275e565b85600052602060002060005b848110156127555781548d820185015290890190880161273a565b8c0160a0019550505b50929998505050505050505050565b60408152600061278060408301856126a8565b82810360208401526123ae81856125d2565b8381526001600160401b03831660208201526060604082015260006123ae60608301846126a8565b634e487b7160e01b600052603260045260246000fd5b601f821115611a96576000816000526020600020601f850160051c810160208610156127f95750805b601f850160051c820191505b8181101561281857828155600101612805565b505050505050565b6001600160401b038311156128375761283761250f565b61284b836128458354612598565b836127d0565b6000601f84116001811461287f57600085156128675750838201355b600019600387901b1c1916600186901b178355611626565b600083815260209020601f19861690835b828110156128b05786850135825560209485019460019092019101612890565b50868210156128cd5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81356128ea81612525565b6001600160401b0380821691508254826001600160401b031982161784556020850135612916816120b4565b6001600160e01b031991909116909217604092831b68010000000000000000600160e01b031617835590830135600183015560608301359036849003601e1901821261296157600080fd5b9083019081358181111561297457600080fd5b60208301925080360383131561298957600080fd5b611626818460028701612820565b6000600182016129b757634e487b7160e01b600052601160045260246000fd5b506001019056fea26469706673582212205e61012bfe7362676d0bac29def48229efdc267990dfcee018252104d80bb85064736f6c63430008180033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"accept\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancel\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"cancelOwnershipHandover\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"claim\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"to\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"completeOwnershipHandover\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"defaultConfLevel\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deployedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getLatestRequestByStatus\",\"inputs\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structSolve.Request\",\"components\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"acceptedBy\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.Deposit[]\",\"components\":[{\"name\":\"isNative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"history\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.StatusUpdate[]\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"timestamp\",\"type\":\"uint40\",\"internalType\":\"uint40\"}]}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getRequest\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"structSolve.Request\",\"components\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"from\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"acceptedBy\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.Deposit[]\",\"components\":[{\"name\":\"isNative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"name\":\"history\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.StatusUpdate[]\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"timestamp\",\"type\":\"uint40\",\"internalType\":\"uint40\"}]}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"getUpdateHistory\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.StatusUpdate[]\",\"components\":[{\"name\":\"status\",\"type\":\"uint8\",\"internalType\":\"enumSolve.Status\"},{\"name\":\"timestamp\",\"type\":\"uint40\",\"internalType\":\"uint40\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"hasAllRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasAnyRole\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solver_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"omni_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"outbox_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"markFulfilled\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"callHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"omni\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"result\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownershipHandoverExpiresAt\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"reject\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"reason\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"renounceRoles\",\"inputs\":[{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"request\",\"inputs\":[{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.TokenDeposit[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"requestOwnershipHandover\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"revokeRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"rolesOf\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"Accepted\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"by\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Claimed\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"by\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"to\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structSolve.Deposit[]\",\"components\":[{\"name\":\"isNative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultConfLevelSet\",\"inputs\":[{\"name\":\"conf\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Fulfilled\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"callHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"creditedTo\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OmniPortalSet\",\"inputs\":[{\"name\":\"omni\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipHandoverCanceled\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipHandoverRequested\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"oldOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Rejected\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"by\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"reason\",\"type\":\"uint8\",\"indexed\":true,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Requested\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"from\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"call\",\"type\":\"tuple\",\"indexed\":false,\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"deposits\",\"type\":\"tuple[]\",\"indexed\":false,\"internalType\":\"structSolve.Deposit[]\",\"components\":[{\"name\":\"isNative\",\"type\":\"bool\",\"internalType\":\"bool\"},{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Reverted\",\"inputs\":[{\"name\":\"id\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RolesUpdated\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidCall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidDeposit\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRecipient\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewOwnerIsZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoDeposits\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoHandoverRequest\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotAccepted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotFulfilled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotOutbox\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotPending\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotPendingOrRejected\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Reentrancy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unauthorized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongCallHash\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongSourceChain\",\"inputs\":[]}]", + Bin: "0x60a06040523480156200001157600080fd5b5063ffffffff60643b1615620000975760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200007f575060408051601f3d908101601f191682019092526200007c9181019062000110565b60015b6200008e57436080526200009c565b6080526200009c565b436080525b620000a6620000ac565b6200012a565b63409feecd1980546001811615620000cc5763f92ee8a96000526004601cfd5b8160c01c808260011c146200010b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6000602082840312156200012357600080fd5b5051919050565b6080516129f462000146600039600061044001526129f46000f3fe6080604052600436106101815760003560e01c80637667fd69116100d1578063e4725ba11161008a578063f2fde38b11610064578063f2fde38b14610475578063f8c8765e14610488578063fb1e61ca146104a8578063fee81cf4146104c857600080fd5b8063e4725ba11461040e578063eae4c19f1461042e578063f04e283e1461046257600080fd5b80637667fd69146103555780638da5cb5b1461038257806396c144f01461039b578063c4d252f5146103bb578063db3ea553146103db578063e17771c8146103fb57600080fd5b8063337ffe201161013e578063514e62fc11610118578063514e62fc146102db57806354d1f13d14610312578063715018a61461031a57806374eeb8471461032257600080fd5b8063337ffe201461027057806339acf9f1146102905780634a4ee7b1146102c857600080fd5b8063183a4f6e146101865780631c10893f1461019b5780631cd64df4146101ae57806325692962146101fa5780632cea64e8146102025780632de948071461022f575b600080fd5b61019961019436600461209b565b6104fb565b005b6101996101a93660046120c9565b610508565b3480156101ba57600080fd5b506101e56101c93660046120c9565b638b78c6d8600c90815260009290925260209091205481161490565b60405190151581526020015b60405180910390f35b61019961051e565b34801561020e57600080fd5b5061022261021d36600461209b565b61056d565b6040516101f1919061214f565b34801561023b57600080fd5b5061026261024a366004612198565b638b78c6d8600c908152600091909152602090205490565b6040519081526020016101f1565b34801561027c57600080fd5b5061019961028b3660046121bc565b61061d565b34801561029c57600080fd5b506000546102b0906001600160a01b031681565b6040516001600160a01b0390911681526020016101f1565b6101996102d63660046120c9565b6108e7565b3480156102e757600080fd5b506101e56102f63660046120c9565b638b78c6d8600c90815260009290925260209091205416151590565b6101996108f9565b610199610935565b34801561032e57600080fd5b5060005461034390600160a01b900460ff1681565b60405160ff90911681526020016101f1565b34801561036157600080fd5b506103756103703660046121de565b610949565b6040516101f19190612314565b34801561038e57600080fd5b50638b78c6d819546102b0565b3480156103a757600080fd5b506101996103b63660046123b7565b610c10565b3480156103c757600080fd5b506101996103d636600461209b565b610e52565b3480156103e757600080fd5b506101996103f63660046123e7565b6110a5565b610262610409366004612412565b611221565b34801561041a57600080fd5b5061019961042936600461209b565b611393565b34801561043a57600080fd5b506102627f000000000000000000000000000000000000000000000000000000000000000081565b610199610470366004612198565b61151d565b610199610483366004612198565b61155a565b34801561049457600080fd5b506101996104a33660046124b3565b611581565b3480156104b457600080fd5b506103756104c336600461209b565b61162d565b3480156104d457600080fd5b506102626104e3366004612198565b63389a75e1600c908152600091909152602090205490565b61050533826118a2565b50565b6105106118ae565b61051a82826118c9565b5050565b60006202a3006001600160401b03164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b606060046000838152602001908152602001600020600701805480602002602001604051908101604052809291908181526020016000905b8282101561061257600084815260209020604080518082019091529083018054829060ff1660068111156105db576105db6120f5565b60068111156105ec576105ec6120f5565b81529054610100900464ffffffffff1660209182015290825260019290920191016105a5565b505050509050919050565b60005460408051631799380760e11b815281516001600160a01b0390931692632f32700e926004808401939192918290030181865afa158015610664573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610688919061253a565b8051600180546020909301516001600160a01b0316600160401b026001600160e01b03199093166001600160401b039092169190911791909117905568929eee149b4bd21268543090036106e45763ab143c066000526004601cfd5b3068929eee149b4bd212685560008281526004602052604090206002600182015460ff166006811115610719576107196120f5565b146107375760405163029d79a560e41b815260040160405180910390fd5b600354600154600160401b90046001600160a01b0390811691161461076f5760405163bda8fc9560e01b815260040160405180910390fd5b60038101546001546001600160401b039081169116146107a257604051633687f39960e21b815260040160405180910390fd5b6107b08346836003016118d5565b82146107cf57604051631c6060ab60e11b815260040160405180910390fd5b60018181018054600560ff1991821681179092556040805180820190915291825264ffffffffff42166020808401919091526007850180548086018255600091825291902083519101805493949093919284921690836006811115610836576108366120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff00199091161790556005600081815291527f458b30c2d72bfd2c6317304a4594ecbafe5f729d3111b65fdc3a33bd48e5432d84905560028201546040516001600160a01b0390911691849186917f7898a125e0970666c80e00bbf2e7041d84dfe5bbe6bcf562ce53d540fd6cd89191a450503868929eee149b4bd212685550600180546001600160e01b0319169055565b6108ef6118ae565b61051a82826118a2565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b61093d6118ae565b610947600061190b565b565b610951612010565b600460006005600085600681111561096b5761096b6120f5565b600681111561097c5761097c6120f5565b81526020019081526020016000205481526020019081526020016000206040518060e0016040529081600082015481526020016001820160009054906101000a900460ff1660068111156109d2576109d26120f5565b60068111156109e3576109e36120f5565b815260018201546001600160a01b0361010090910481166020808401919091526002840154821660408085019190915280516080810182526003860180546001600160401b0381168352600160401b90049094169281019290925260048501549082015260058401805460609485019492939284019190610a6390612598565b80601f0160208091040260200160405190810160405280929190818152602001828054610a8f90612598565b8015610adc5780601f10610ab157610100808354040283529160200191610adc565b820191906000526020600020905b815481529060010190602001808311610abf57829003601f168201915b505050505081525050815260200160068201805480602002602001604051908101604052809291908181526020016000905b82821015610b685760008481526020908190206040805160608101825260028602909201805460ff81161515845261010090046001600160a01b031683850152600190810154918301919091529083529092019101610b0e565b50505050815260200160078201805480602002602001604051908101604052809291908181526020016000905b82821015610c0257600084815260209020604080518082019091529083018054829060ff166006811115610bcb57610bcb6120f5565b6006811115610bdc57610bdc6120f5565b81529054610100900464ffffffffff166020918201529082526001929092019101610b95565b505050915250909392505050565b3068929eee149b4bd212685403610c2f5763ab143c066000526004601cfd5b3068929eee149b4bd212685560008281526004602052604090206005600182015460ff166006811115610c6457610c646120f5565b14610c82576040516303de361f60e11b815260040160405180910390fd5b60028101546001600160a01b03163314610cae576040516282b42960e81b815260040160405180910390fd5b60018181018054600660ff1991821681179092556040805180820190915282815264ffffffffff421660208083019190915260078601805480870182556000918252919020825191018054929590949193859316918490811115610d1457610d146120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff001990911617905560066000818152600583527f069400f22b28c6c362558d92f66163cec5671cba50b61abd2eecfcd0eaeac51886905590830180546040805182860281018601909152818152610df2948794919392919084015b82821015610de95760008481526020908190206040805160608101825260028602909201805460ff81161515845261010090046001600160a01b031683850152600190810154918301919091529083529092019101610d8f565b50505050611949565b816001600160a01b0316336001600160a01b0316847f1291cec4ea55732527f1ae8ff3e53def0dbe1feb99c094983449e59cdce4674b84600601604051610e39919061262b565b60405180910390a4503868929eee149b4bd21268555050565b3068929eee149b4bd212685403610e715763ab143c066000526004601cfd5b3068929eee149b4bd2126855600081815260046020526040902060018082015460ff166006811115610ea557610ea56120f5565b14158015610ecc57506003600182015460ff166006811115610ec957610ec96120f5565b14155b15610eea57604051631fa4148760e21b815260040160405180910390fd5b600181015461010090046001600160a01b03163314610f1b576040516282b42960e81b815260040160405180910390fd5b60018181018054600460ff1991821681179092556040805180820190915291825264ffffffffff42166020808401919091526007850180548086018255600091825291902083519101805493949093919284921690836006811115610f8257610f826120f5565b0217905550602091820151815465ffffffffff00191661010064ffffffffff90921682021790915560046000908152600583527f3eec716f11ba9e820c81ca75eb978ffb45831ef8b7a53e5e422c26008e1ca6d58590556001840154600685018054604080518288028101880190915281815261106a966001600160a01b0396909404959095169493919290919084018215610de95760008481526020908190206040805160608101825260028602909201805460ff81161515845261010090046001600160a01b031683850152600190810154918301919091529083529092019101610d8f565b60405182907fb66b13449e4bb2c30749a37f3081f1988fcee5ff5d98ce740b354d4e2d94409590600090a2503868929eee149b4bd212685550565b60016110b081611a9b565b3068929eee149b4bd2126854036110cf5763ab143c066000526004601cfd5b3068929eee149b4bd2126855600083815260046020526040902060018082015460ff166006811115611103576111036120f5565b1461112157604051633ee3282d60e11b815260040160405180910390fd5b60018181018054600360ff1991821681179092556040805180820190915291825264ffffffffff42166020808401919091526007850180548086018255600091825291902083519101805493949093919284921690836006811115611188576111886120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff00199091161790556003600090815260059091527fa9bc9a3a348c357ba16b37005d7e6b3236198c0e939f4af8c5f19b8deeb8ebc085905560405160ff851691339187917f21f84ee3a6e9bc7c10f855f8c9829e22c613861cef10add09eccdbc88df9f59f91a4503868929eee149b4bd2126855505050565b60003068929eee149b4bd2126854036112425763ab143c066000526004601cfd5b3068929eee149b4bd212685560006112606040860160208701612198565b6001600160a01b0316036112875760405163574b16a760e11b815260040160405180910390fd5b611294602085018561263e565b6001600160401b03166000036112bd5760405163574b16a760e11b815260040160405180910390fd5b6112ca606085018561265b565b90506000036112ec5760405163574b16a760e11b815260040160405180910390fd5b811580156112f8575034155b1561131657604051630558800760e21b815260040160405180910390fd5b600061132433868686611ac1565b600181015481546040519293506101009091046001600160a01b0316917f3622a563ce1f96b477fa827bf0b60be8aee346b515754f3645f4d7a2ef5d4b2990611376906003860190600687019061276d565b60405180910390a3543868929eee149b4bd2126855949350505050565b600161139e81611a9b565b3068929eee149b4bd2126854036113bd5763ab143c066000526004601cfd5b3068929eee149b4bd2126855600082815260046020526040902060018082015460ff1660068111156113f1576113f16120f5565b1461140f57604051633ee3282d60e11b815260040160405180910390fd5b60018181018054600260ff19918216811790925581840180546001600160a01b031916331790556040805180820190915291825264ffffffffff42166020808401919091526007850180548086018255600091825291902083519101805493949093919284921690836006811115611489576114896120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff00199091161790556002600090815260059091527f89832631fb3c3307a103ba2c84ab569c64d6182a18893dcd163f0f1c2090733a849055604051339185917f9deed34441ca75bb2dbbe101d2201930f40e18a9ce521c77fbdca6690a8999679190a3503868929eee149b4bd21268555050565b6115256118ae565b63389a75e1600c52806000526020600c20805442111561154d57636f5e88186000526004601cfd5b600090556105058161190b565b6115626118ae565b8060601b61157857637448fbae6000526004601cfd5b6105058161190b565b63409feecd1980546003825580156115b85760018160011c14303b106115af5763f92ee8a96000526004601cfd5b818160ff1b1b91505b506115c285611e0c565b6115cd8460016118c9565b6115d683611e48565b600380546001600160a01b0319166001600160a01b0384161790558015611626576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050565b611635612010565b600082815260046020908152604091829020825160e08101909352805483526001810154909183019060ff166006811115611672576116726120f5565b6006811115611683576116836120f5565b815260018201546001600160a01b0361010090910481166020808401919091526002840154821660408085019190915280516080810182526003860180546001600160401b0381168352600160401b9004909416928101929092526004850154908201526005840180546060948501949293928401919061170390612598565b80601f016020809104026020016040519081016040528092919081815260200182805461172f90612598565b801561177c5780601f106117515761010080835404028352916020019161177c565b820191906000526020600020905b81548152906001019060200180831161175f57829003601f168201915b505050505081525050815260200160068201805480602002602001604051908101604052809291908181526020016000905b828210156118085760008481526020908190206040805160608101825260028602909201805460ff81161515845261010090046001600160a01b0316838501526001908101549183019190915290835290920191016117ae565b50505050815260200160078201805480602002602001604051908101604052809291908181526020016000905b82821015610c0257600084815260209020604080518082019091529083018054829060ff16600681111561186b5761186b6120f5565b600681111561187c5761187c6120f5565b81529054610100900464ffffffffff166020918201529082526001929092019101611835565b61051a82826000611eeb565b638b78c6d819543314610947576382b429006000526004601cfd5b61051a82826001611eeb565b60008383836040516020016118ec93929190612792565b6040516020818303038152906040528051906020012090509392505050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b6001600160a01b03821661197057604051634e46966960e11b815260040160405180910390fd5b60005b8151811015611a965781818151811061198e5761198e6127ba565b60200260200101516000015115611a36576000836001600160a01b03168383815181106119bd576119bd6127ba565b60200260200101516040015160405160006040518083038185875af1925050503d8060008114611a09576040519150601f19603f3d011682016040523d82523d6000602084013e611a0e565b606091505b5050905080611a30576040516312171d8360e31b815260040160405180910390fd5b50611a8e565b611a8e83838381518110611a4c57611a4c6127ba565b602002602001015160400151848481518110611a6a57611a6a6127ba565b6020026020010151602001516001600160a01b0316611f449092919063ffffffff16565b600101611973565b505050565b638b78c6d8600c5233600052806020600c205416610505576382b429006000526004601cfd5b600080611acc611f94565b6000818152600460205260409020818155600180820180546001600160a81b0319166101006001600160a01b038c1602179091179055925090508460038301611b1582826128df565b50506040805180820190915260018082524264ffffffffff16602080840191909152600785018054808401825560009182529190208351910180549092839160ff191690836006811115611b6b57611b6b6120f5565b0217905550602091820151815464ffffffffff9091166101000265ffffffffff00199091161790556001600052600590527f1471eb6eb2c5e789fc3de43f8ce62938c7d1836ec861730447e2ada8fd81017b8190553415611c3f57604080516060810182526001808252600060208084018281523495850195865260068801805480860182559084529190922093516002909102909301805491516001600160a81b0319909216931515610100600160a81b031916939093176101006001600160a01b039092169190910217825591519101555b60005b83811015611e0257848482818110611c5c57611c5c6127ba565b90506040020160200135600003611c8657604051635972996f60e11b815260040160405180910390fd5b6000858583818110611c9a57611c9a6127ba565b611cb09260206040909202019081019150612198565b6001600160a01b031603611cd757604051635972996f60e11b815260040160405180910390fd5b826006016040518060600160405280600015158152602001878785818110611d0157611d016127ba565b611d179260206040909202019081019150612198565b6001600160a01b03168152602001878785818110611d3757611d376127ba565b60206040918202939093018301359093525083546001818101865560009586529482902084516002909202018054928501516001600160a01b031661010002610100600160a81b0319921515929092166001600160a81b031990931692909217178155910151910155611dfa3330878785818110611db757611db76127ba565b90506040020160200135888886818110611dd357611dd36127ba565b611de99260206040909202019081019150612198565b6001600160a01b0316929190611fb2565b600101611c42565b5050949350505050565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6001600160a01b038116611e975760405162461bcd60e51b8152602060048201526012602482015271584170703a206e6f207a65726f206f6d6e6960701b604482015260640160405180910390fd5b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f79162c8d053a07e70cdc1ccc536f0440b571f8508377d2bef51094fadab98f479060200160405180910390a150565b638b78c6d8600c52826000526020600c20805483811783611f0d575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3505050505050565b816014528060345263a9059cbb60601b60005260206000604460106000875af18060016000511416611f8957803d853b151710611f89576390b8ec186000526004601cfd5b506000603452505050565b6002805460009182611fa583612997565b9091555050600254919050565b60405181606052826040528360601b602c526323b872dd60601b600c52602060006064601c6000895af1806001600051141661200157803d873b15171061200157637939f4246000526004601cfd5b50600060605260405250505050565b6040805160e0810190915260008082526020820190815260200160006001600160a01b0316815260200160006001600160a01b03168152602001612087604051806080016040528060006001600160401b0316815260200160006001600160a01b0316815260200160008152602001606081525090565b815260200160608152602001606081525090565b6000602082840312156120ad57600080fd5b5035919050565b6001600160a01b038116811461050557600080fd5b600080604083850312156120dc57600080fd5b82356120e7816120b4565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6007811061212957634e487b7160e01b600052602160045260246000fd5b9052565b61213882825161210b565b60209081015164ffffffffff169082015260400190565b6020808252825182820181905260009190848201906040850190845b8181101561218c5761217e83855161212d565b93850193925060010161216b565b50909695505050505050565b6000602082840312156121aa57600080fd5b81356121b5816120b4565b9392505050565b600080604083850312156121cf57600080fd5b50508035926020909101359150565b6000602082840312156121f057600080fd5b8135600781106121b557600080fd5b6001600160401b0381511682526000602060018060a01b03602084015116602085015260408301516040850152606083015160806060860152805180608087015260005b8181101561225f5782810184015187820160a001528301612243565b50600060a0828801015260a0601f19601f830116870101935050505092915050565b60008151808452602080850194506020840160005b838110156122d3578151805115158852838101516001600160a01b0316848901526040908101519088015260609096019590820190600101612296565b509495945050505050565b60008151808452602080850194506020840160005b838110156122d35761230687835161212d565b9650908201906001016122f3565b602081528151602082015260006020830151612333604084018261210b565b5060408301516001600160a01b039081166060848101919091528401511660808084019190915283015160e060a08401526123726101008401826121ff565b905060a0840151601f19808584030160c08601526123908383612281565b925060c08601519150808584030160e0860152506123ae82826122de565b95945050505050565b600080604083850312156123ca57600080fd5b8235915060208301356123dc816120b4565b809150509250929050565b600080604083850312156123fa57600080fd5b82359150602083013560ff811681146123dc57600080fd5b60008060006040848603121561242757600080fd5b83356001600160401b038082111561243e57600080fd5b908501906080828803121561245257600080fd5b9093506020850135908082111561246857600080fd5b818601915086601f83011261247c57600080fd5b81358181111561248b57600080fd5b8760208260061b85010111156124a057600080fd5b6020830194508093505050509250925092565b600080600080608085870312156124c957600080fd5b84356124d4816120b4565b935060208501356124e4816120b4565b925060408501356124f4816120b4565b91506060850135612504816120b4565b939692955090935050565b634e487b7160e01b600052604160045260246000fd5b6001600160401b038116811461050557600080fd5b60006040828403121561254c57600080fd5b604051604081018181106001600160401b038211171561256e5761256e61250f565b604052825161257c81612525565b8152602083015161258c816120b4565b60208201529392505050565b600181811c908216806125ac57607f821691505b6020821081036125cc57634e487b7160e01b600052602260045260246000fd5b50919050565b600081548084526020808501945083600052602060002060005b838110156122d357815460ff81161515885260081c6001600160a01b0316838801526001808301546040890152606090970196600290920191016125ec565b6020815260006121b560208301846125d2565b60006020828403121561265057600080fd5b81356121b581612525565b6000808335601e1984360301811261267257600080fd5b8301803591506001600160401b0382111561268c57600080fd5b6020019150368190038213156126a157600080fd5b9250929050565b600081546001600160401b0381168452602060018060a01b038260401c16602086015260019150600184015460408601526002840160806060870152600081546126f181612598565b8060808a015260a06001831660008114612712576001811461272e5761275e565b60ff19841660a08c015260a083151560051b8c0101945061275e565b85600052602060002060005b848110156127555781548d820185015290890190880161273a565b8c0160a0019550505b50929998505050505050505050565b60408152600061278060408301856126a8565b82810360208401526123ae81856125d2565b8381526001600160401b03831660208201526060604082015260006123ae60608301846126a8565b634e487b7160e01b600052603260045260246000fd5b601f821115611a96576000816000526020600020601f850160051c810160208610156127f95750805b601f850160051c820191505b8181101561281857828155600101612805565b505050505050565b6001600160401b038311156128375761283761250f565b61284b836128458354612598565b836127d0565b6000601f84116001811461287f57600085156128675750838201355b600019600387901b1c1916600186901b178355611626565b600083815260209020601f19861690835b828110156128b05786850135825560209485019460019092019101612890565b50868210156128cd5760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81356128ea81612525565b6001600160401b0380821691508254826001600160401b031982161784556020850135612916816120b4565b6001600160e01b031991909116909217604092831b68010000000000000000600160e01b031617835590830135600183015560608301359036849003601e1901821261296157600080fd5b9083019081358181111561297457600080fd5b60208301925080360383131561298957600080fd5b611626818460028701612820565b6000600182016129b757634e487b7160e01b600052601160045260246000fd5b506001019056fea264697066735822122088f245bc5512a3c33052ae9f80926cd1cc44600fc8bd94cb4d2cddccbf64bba164736f6c63430008180033", } // SolveInboxABI is the input ABI used to generate the binding from. diff --git a/contracts/bindings/solveoutbox.go b/contracts/bindings/solveoutbox.go index 43a3fa685..aaec8d04c 100644 --- a/contracts/bindings/solveoutbox.go +++ b/contracts/bindings/solveoutbox.go @@ -32,10 +32,10 @@ var ( // SolveCall is an auto generated low-level Go binding around an user-defined struct. // autocommented by commenttypes.go // type SolveCall struct { -// DestChainId uint64 -// Target common.Address -// Value *big.Int -// Data []byte +// ChainId uint64 +// Target common.Address +// Value *big.Int +// Data []byte // } // SolveTokenPrereq is an auto generated low-level Go binding around an user-defined struct. @@ -47,8 +47,8 @@ type SolveTokenPrereq struct { // SolveOutboxMetaData contains all meta data concerning the SolveOutbox contract. var SolveOutboxMetaData = &bind.MetaData{ - ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowedCalls\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelOwnershipHandover\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"completeOwnershipHandover\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"defaultConfLevel\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deployedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"didFulfill\",\"inputs\":[{\"name\":\"srcReqId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"fulfill\",\"inputs\":[{\"name\":\"srcReqId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"destChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"prereqs\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.TokenPrereq[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"fulfillFee\",\"inputs\":[{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"fulfilledCalls\",\"inputs\":[{\"name\":\"callHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"fulfilled\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"hasAllRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasAnyRole\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solver_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"omni_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"inbox_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"omni\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"result\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownershipHandoverExpiresAt\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"renounceRoles\",\"inputs\":[{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"requestOwnershipHandover\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"revokeRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"rolesOf\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setAllowedCall\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"allowed\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AllowedCallSet\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":true,\"internalType\":\"bytes4\"},{\"name\":\"allowed\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultConfLevelSet\",\"inputs\":[{\"name\":\"conf\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Fulfilled\",\"inputs\":[{\"name\":\"reqId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"callHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"solvedBy\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OmniPortalSet\",\"inputs\":[{\"name\":\"omni\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipHandoverCanceled\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipHandoverRequested\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"oldOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RolesUpdated\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AreadyFulfilled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallNotAllowed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectPrereqs\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFee\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewOwnerIsZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoHandoverRequest\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Reentrancy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unauthorized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongDestChain\",\"inputs\":[]}]", - Bin: "0x60a06040523480156200001157600080fd5b5063ffffffff60643b1615620000975760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200007f575060408051601f3d908101601f191682019092526200007c9181019062000110565b60015b6200008e57436080526200009c565b6080526200009c565b436080525b620000a6620000ac565b6200012a565b63409feecd1980546001811615620000cc5763f92ee8a96000526004601cfd5b8160c01c808260011c146200010b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6000602082840312156200012357600080fd5b5051919050565b60805161162e6200014660003960006103d0015261162e6000f3fe6080604052600436106101405760003560e01c80635ba15647116100b6578063cb01a09a1161006f578063cb01a09a146103ab578063eae4c19f146103be578063f04e283e146103f2578063f2fde38b14610405578063f8c8765e14610418578063fee81cf41461043857600080fd5b80635ba15647146102cc5780635db9cbe4146102ec578063715018a61461031c57806374eeb847146103245780638da5cb5b14610357578063b23ade801461037057600080fd5b80632b370b67116101085780632b370b67146101ef5780632de948071461020f57806339acf9f1146102425780634a4ee7b11461027a578063514e62fc1461028d57806354d1f13d146102c457600080fd5b8063183a4f6e14610145578063188a97aa1461015a5780631c10893f1461018d5780631cd64df4146101a057806325692962146101e7575b600080fd5b6101586101533660046110a1565b61046b565b005b34801561016657600080fd5b5061017a6101753660046110d7565b610478565b6040519081526020015b60405180910390f35b61015861019b366004611110565b6104cf565b3480156101ac57600080fd5b506101d76101bb366004611110565b638b78c6d8600c90815260009290925260209091205481161490565b6040519015158152602001610184565b6101586104e5565b3480156101fb57600080fd5b5061015861020a366004611152565b610535565b34801561021b57600080fd5b5061017a61022a36600461119e565b638b78c6d8600c908152600091909152602090205490565b34801561024e57600080fd5b50600054610262906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b610158610288366004611110565b6105b4565b34801561029957600080fd5b506101d76102a8366004611110565b638b78c6d8600c90815260009290925260209091205416151590565b6101586105c6565b3480156102d857600080fd5b506101d76102e73660046111d1565b610602565b3480156102f857600080fd5b506101d76103073660046110a1565b60046020526000908152604090205460ff1681565b61015861062f565b34801561033057600080fd5b5060005461034590600160a01b900460ff1681565b60405160ff9091168152602001610184565b34801561036357600080fd5b50638b78c6d81954610262565b34801561037c57600080fd5b506101d761038b366004611228565b600360209081526000928352604080842090915290825290205460ff1681565b6101586103b936600461125b565b610643565b3480156103ca57600080fd5b5061017a7f000000000000000000000000000000000000000000000000000000000000000081565b61015861040036600461119e565b610af4565b61015861041336600461119e565b610b31565b34801561042457600080fd5b5061015861043336600461130d565b610b58565b34801561044457600080fd5b5061017a61045336600461119e565b63389a75e1600c908152600091909152602090205490565b6104753382610c04565b50565b6040516000196024820181905260448201526000906104c990839060640160408051601f198184030181529190526020810180516001600160e01b031663019bfff160e51b1790526201e848610c10565b92915050565b6104d7610c8e565b6104e18282610ca9565b5050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b61053d610c8e565b6001600160a01b03831660008181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f4a2dc3dabd793cd88cb7b56ba4aa70196892e5b996fc72f4f3d45e20343d305b910160405180910390a3505050565b6105bc610c8e565b6104e18282610c04565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b600060046000610613868686610cb5565b815260208101919091526040016000205460ff16949350505050565b610637610c8e565b6106416000610ceb565b565b600161064e81610d29565b3068929eee149b4bd21268540361066d5763ab143c066000526004601cfd5b3068929eee149b4bd21268554661068760208601866110d7565b67ffffffffffffffff16146106af5760405163fd24301760e01b815260040160405180910390fd5b600360006106c3604087016020880161119e565b6001600160a01b0316815260208101919091526040016000908120906106ec6060870187611361565b6106f5916113af565b6001600160e01b031916815260208101919091526040016000205460ff16610730576040516315dace2d60e21b815260040160405180910390fd5b600061073d878787610cb5565b60008181526004602052604090205490915060ff161561077057604051630c4a31a760e01b815260040160405180910390fd5b6000818152600460205260408120805460ff191660011790558367ffffffffffffffff8111156107a2576107a26113df565b6040519080825280602002602001820160405280156107cb578160200160208202803683370190505b50905060005b8481101561091557610814308787848181106107ef576107ef6113f5565b610805926020606090920201908101915061119e565b6001600160a01b031690610d4f565b828281518110610826576108266113f5565b60200260200101818152505061088c3330888885818110610849576108496113f5565b90506060020160400135898986818110610865576108656113f5565b61087b926020606090920201908101915061119e565b6001600160a01b0316929190610d7b565b61090d8686838181106108a1576108a16113f5565b90506060020160200160208101906108b9919061119e565b8787848181106108cb576108cb6113f5565b905060600201604001358888858181106108e7576108e76113f5565b6108fd926020606090920201908101915061119e565b6001600160a01b03169190610dd9565b6001016107d1565b506000610928604088016020890161119e565b6001600160a01b0316604088013561094360608a018a611361565b60405161095192919061140b565b60006040518083038185875af1925050503d806000811461098e576040519150601f19603f3d011682016040523d82523d6000602084013e610993565b606091505b50509050806109b557604051633204506f60e01b815260040160405180910390fd5b60005b85811015610a16578281815181106109d2576109d26113f5565b60200260200101516109f0308989858181106107ef576107ef6113f5565b14610a0e5760405163903c78cd60e01b815260040160405180910390fd5b6001016109b8565b50604051602481018a90526044810184905260009060640160408051601f198184030181529190526020810180516001600160e01b031663019bfff160e51b179052600254909150600090610a7d908b906004906001600160a01b0316856201e848610e29565b905080610a8e60408b01353461141b565b1015610aac5760405162976f7560e21b815260040160405180910390fd5b604051339086908d907f7898a125e0970666c80e00bbf2e7041d84dfe5bbe6bcf562ce53d540fd6cd89190600090a450505050503868929eee149b4bd2126855505050505050565b610afc610c8e565b63389a75e1600c52806000526020600c208054421115610b2457636f5e88186000526004601cfd5b6000905561047581610ceb565b610b39610c8e565b8060601b610b4f57637448fbae6000526004601cfd5b61047581610ceb565b63409feecd198054600382558015610b8f5760018160011c14303b10610b865763f92ee8a96000526004601cfd5b818160ff1b1b91505b50610b9985610f6d565b610ba4846001610ca9565b610bad83610fa9565b600280546001600160a01b0319166001600160a01b0384161790558015610bfd576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050565b6104e182826000611048565b60008054604051632376548f60e21b81526001600160a01b0390911690638dd9523c90610c4590879087908790600401611482565b602060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8691906114b9565b949350505050565b638b78c6d819543314610641576382b429006000526004601cfd5b6104e182826001611048565b6000838383604051602001610ccc939291906114fb565b6040516020818303038152906040528051906020012090509392505050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b638b78c6d8600c5233600052806020600c205416610475576382b429006000526004601cfd5b6000816014526370a0823160601b60005260208060246010865afa601f3d111660205102905092915050565b60405181606052826040528360601b602c526323b872dd60601b600c52602060006064601c6000895af18060016000511416610dca57803d873b151710610dca57637939f4246000526004601cfd5b50600060605260405250505050565b816014528060345263095ea7b360601b60005260206000604460106000875af18060016000511416610e1e57803d853b151710610e1e57633e3f8f736000526004601cfd5b506000603452505050565b60008054604051632376548f60e21b815282916001600160a01b031690638dd9523c90610e5e908a9088908890600401611482565b602060405180830381865afa158015610e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f91906114b9565b905080471015610ef65760405162461bcd60e51b815260206004820152601860248201527f584170703a20696e73756666696369656e742066756e6473000000000000000060448201526064015b60405180910390fd5b60005460405163c21dda4f60e01b81526001600160a01b039091169063c21dda4f908390610f30908b908b908b908b908b906004016115a8565b6000604051808303818588803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b50939a9950505050505050505050565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6001600160a01b038116610ff45760405162461bcd60e51b8152602060048201526012602482015271584170703a206e6f207a65726f206f6d6e6960701b6044820152606401610eed565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f79162c8d053a07e70cdc1ccc536f0440b571f8508377d2bef51094fadab98f479060200160405180910390a150565b638b78c6d8600c52826000526020600c2080548381178361106a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3505050505050565b6000602082840312156110b357600080fd5b5035919050565b803567ffffffffffffffff811681146110d257600080fd5b919050565b6000602082840312156110e957600080fd5b6110f2826110ba565b9392505050565b80356001600160a01b03811681146110d257600080fd5b6000806040838503121561112357600080fd5b61112c836110f9565b946020939093013593505050565b80356001600160e01b0319811681146110d257600080fd5b60008060006060848603121561116757600080fd5b611170846110f9565b925061117e6020850161113a565b91506040840135801515811461119357600080fd5b809150509250925092565b6000602082840312156111b057600080fd5b6110f2826110f9565b6000608082840312156111cb57600080fd5b50919050565b6000806000606084860312156111e657600080fd5b833592506111f6602085016110ba565b9150604084013567ffffffffffffffff81111561121257600080fd5b61121e868287016111b9565b9150509250925092565b6000806040838503121561123b57600080fd5b611244836110f9565b91506112526020840161113a565b90509250929050565b60008060008060006080868803121561127357600080fd5b85359450611283602087016110ba565b9350604086013567ffffffffffffffff808211156112a057600080fd5b6112ac89838a016111b9565b945060608801359150808211156112c257600080fd5b818801915088601f8301126112d657600080fd5b8135818111156112e557600080fd5b8960206060830285010111156112fa57600080fd5b9699959850939650602001949392505050565b6000806000806080858703121561132357600080fd5b61132c856110f9565b935061133a602086016110f9565b9250611348604086016110f9565b9150611356606086016110f9565b905092959194509250565b6000808335601e1984360301811261137857600080fd5b83018035915067ffffffffffffffff82111561139357600080fd5b6020019150368190038213156113a857600080fd5b9250929050565b6001600160e01b031981358181169160048510156113d75780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b818103818111156104c957634e487b7160e01b600052601160045260246000fd5b6000815180845260005b8181101561146257602081850181015186830182015201611446565b506000602082860101526020601f19601f83011685010191505092915050565b600067ffffffffffffffff8086168352606060208401526114a6606084018661143c565b9150808416604084015250949350505050565b6000602082840312156114cb57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152600067ffffffffffffffff80851660208401526060604084015280611522856110ba565b1660608401526001600160a01b0361153c602086016110f9565b166080840152604084013560a08401526060840135601e1985360301811261156357600080fd5b84016020810190358281111561157857600080fd5b80360382131561158757600080fd5b608060c086015261159c60e0860182846114d2565b98975050505050505050565b600067ffffffffffffffff808816835260ff8716602084015260018060a01b038616604084015260a060608401526115e360a084018661143c565b9150808416608084015250969550505050505056fea26469706673582212201f0dc24569eb7f5ab8f67bc1dbec88cf18edee14e52f544fb2dd9cc1d81ed4e864736f6c63430008180033", + ABI: "[{\"type\":\"constructor\",\"inputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"allowedCalls\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"cancelOwnershipHandover\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"completeOwnershipHandover\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"defaultConfLevel\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint8\",\"internalType\":\"uint8\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"deployedAt\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"didFulfill\",\"inputs\":[{\"name\":\"srcReqId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"fulfill\",\"inputs\":[{\"name\":\"srcReqId\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"call\",\"type\":\"tuple\",\"internalType\":\"structSolve.Call\",\"components\":[{\"name\":\"chainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"value\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"data\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]},{\"name\":\"prereqs\",\"type\":\"tuple[]\",\"internalType\":\"structSolve.TokenPrereq[]\",\"components\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"spender\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"fulfillFee\",\"inputs\":[{\"name\":\"srcChainId\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"fulfilledCalls\",\"inputs\":[{\"name\":\"callHash\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"fulfilled\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"grantRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"hasAllRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"hasAnyRole\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initialize\",\"inputs\":[{\"name\":\"owner_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"solver_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"omni_\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"inbox_\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"omni\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contractIOmniPortal\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"owner\",\"inputs\":[],\"outputs\":[{\"name\":\"result\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ownershipHandoverExpiresAt\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"result\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"renounceOwnership\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"renounceRoles\",\"inputs\":[{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"requestOwnershipHandover\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"revokeRoles\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"rolesOf\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"roles\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"setAllowedCall\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"},{\"name\":\"allowed\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"transferOwnership\",\"inputs\":[{\"name\":\"newOwner\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[],\"stateMutability\":\"payable\"},{\"type\":\"event\",\"name\":\"AllowedCallSet\",\"inputs\":[{\"name\":\"target\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"selector\",\"type\":\"bytes4\",\"indexed\":true,\"internalType\":\"bytes4\"},{\"name\":\"allowed\",\"type\":\"bool\",\"indexed\":false,\"internalType\":\"bool\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"DefaultConfLevelSet\",\"inputs\":[{\"name\":\"conf\",\"type\":\"uint8\",\"indexed\":false,\"internalType\":\"uint8\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Fulfilled\",\"inputs\":[{\"name\":\"reqId\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"callHash\",\"type\":\"bytes32\",\"indexed\":true,\"internalType\":\"bytes32\"},{\"name\":\"solvedBy\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"Initialized\",\"inputs\":[{\"name\":\"version\",\"type\":\"uint64\",\"indexed\":false,\"internalType\":\"uint64\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OmniPortalSet\",\"inputs\":[{\"name\":\"omni\",\"type\":\"address\",\"indexed\":false,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipHandoverCanceled\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipHandoverRequested\",\"inputs\":[{\"name\":\"pendingOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"inputs\":[{\"name\":\"oldOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"newOwner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"RolesUpdated\",\"inputs\":[{\"name\":\"user\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"roles\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AlreadyInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AreadyFulfilled\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CallNotAllowed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"IncorrectPrereqs\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InsufficientFee\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidInitialization\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NewOwnerIsZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NoHandoverRequest\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotInitializing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Reentrancy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Unauthorized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"WrongDestChain\",\"inputs\":[]}]", + Bin: "0x60a06040523480156200001157600080fd5b5063ffffffff60643b1615620000975760646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156200007f575060408051601f3d908101601f191682019092526200007c9181019062000110565b60015b6200008e57436080526200009c565b6080526200009c565b436080525b620000a6620000ac565b6200012a565b63409feecd1980546001811615620000cc5763f92ee8a96000526004601cfd5b8160c01c808260011c146200010b578060011b8355806020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b505050565b6000602082840312156200012357600080fd5b5051919050565b60805161162e6200014660003960006103d0015261162e6000f3fe6080604052600436106101405760003560e01c80635ba15647116100b6578063cb01a09a1161006f578063cb01a09a146103ab578063eae4c19f146103be578063f04e283e146103f2578063f2fde38b14610405578063f8c8765e14610418578063fee81cf41461043857600080fd5b80635ba15647146102cc5780635db9cbe4146102ec578063715018a61461031c57806374eeb847146103245780638da5cb5b14610357578063b23ade801461037057600080fd5b80632b370b67116101085780632b370b67146101ef5780632de948071461020f57806339acf9f1146102425780634a4ee7b11461027a578063514e62fc1461028d57806354d1f13d146102c457600080fd5b8063183a4f6e14610145578063188a97aa1461015a5780631c10893f1461018d5780631cd64df4146101a057806325692962146101e7575b600080fd5b6101586101533660046110a1565b61046b565b005b34801561016657600080fd5b5061017a6101753660046110d7565b610478565b6040519081526020015b60405180910390f35b61015861019b366004611110565b6104cf565b3480156101ac57600080fd5b506101d76101bb366004611110565b638b78c6d8600c90815260009290925260209091205481161490565b6040519015158152602001610184565b6101586104e5565b3480156101fb57600080fd5b5061015861020a366004611152565b610535565b34801561021b57600080fd5b5061017a61022a36600461119e565b638b78c6d8600c908152600091909152602090205490565b34801561024e57600080fd5b50600054610262906001600160a01b031681565b6040516001600160a01b039091168152602001610184565b610158610288366004611110565b6105b4565b34801561029957600080fd5b506101d76102a8366004611110565b638b78c6d8600c90815260009290925260209091205416151590565b6101586105c6565b3480156102d857600080fd5b506101d76102e73660046111d1565b610602565b3480156102f857600080fd5b506101d76103073660046110a1565b60046020526000908152604090205460ff1681565b61015861062f565b34801561033057600080fd5b5060005461034590600160a01b900460ff1681565b60405160ff9091168152602001610184565b34801561036357600080fd5b50638b78c6d81954610262565b34801561037c57600080fd5b506101d761038b366004611228565b600360209081526000928352604080842090915290825290205460ff1681565b6101586103b936600461125b565b610643565b3480156103ca57600080fd5b5061017a7f000000000000000000000000000000000000000000000000000000000000000081565b61015861040036600461119e565b610af4565b61015861041336600461119e565b610b31565b34801561042457600080fd5b5061015861043336600461130d565b610b58565b34801561044457600080fd5b5061017a61045336600461119e565b63389a75e1600c908152600091909152602090205490565b6104753382610c04565b50565b6040516000196024820181905260448201526000906104c990839060640160408051601f198184030181529190526020810180516001600160e01b031663019bfff160e51b1790526201e848610c10565b92915050565b6104d7610c8e565b6104e18282610ca9565b5050565b60006202a30067ffffffffffffffff164201905063389a75e1600c5233600052806020600c2055337fdbf36a107da19e49527a7176a1babf963b4b0ff8cde35ee35d6cd8f1f9ac7e1d600080a250565b61053d610c8e565b6001600160a01b03831660008181526003602090815260408083206001600160e01b0319871680855290835292819020805460ff191686151590811790915590519081529192917f4a2dc3dabd793cd88cb7b56ba4aa70196892e5b996fc72f4f3d45e20343d305b910160405180910390a3505050565b6105bc610c8e565b6104e18282610c04565b63389a75e1600c523360005260006020600c2055337ffa7b8eab7da67f412cc9575ed43464468f9bfbae89d1675917346ca6d8fe3c92600080a2565b600060046000610613868686610cb5565b815260208101919091526040016000205460ff16949350505050565b610637610c8e565b6106416000610ceb565b565b600161064e81610d29565b3068929eee149b4bd21268540361066d5763ab143c066000526004601cfd5b3068929eee149b4bd21268554661068760208601866110d7565b67ffffffffffffffff16146106af5760405163fd24301760e01b815260040160405180910390fd5b600360006106c3604087016020880161119e565b6001600160a01b0316815260208101919091526040016000908120906106ec6060870187611361565b6106f5916113af565b6001600160e01b031916815260208101919091526040016000205460ff16610730576040516315dace2d60e21b815260040160405180910390fd5b600061073d878787610cb5565b60008181526004602052604090205490915060ff161561077057604051630c4a31a760e01b815260040160405180910390fd5b6000818152600460205260408120805460ff191660011790558367ffffffffffffffff8111156107a2576107a26113df565b6040519080825280602002602001820160405280156107cb578160200160208202803683370190505b50905060005b8481101561091557610814308787848181106107ef576107ef6113f5565b610805926020606090920201908101915061119e565b6001600160a01b031690610d4f565b828281518110610826576108266113f5565b60200260200101818152505061088c3330888885818110610849576108496113f5565b90506060020160400135898986818110610865576108656113f5565b61087b926020606090920201908101915061119e565b6001600160a01b0316929190610d7b565b61090d8686838181106108a1576108a16113f5565b90506060020160200160208101906108b9919061119e565b8787848181106108cb576108cb6113f5565b905060600201604001358888858181106108e7576108e76113f5565b6108fd926020606090920201908101915061119e565b6001600160a01b03169190610dd9565b6001016107d1565b506000610928604088016020890161119e565b6001600160a01b0316604088013561094360608a018a611361565b60405161095192919061140b565b60006040518083038185875af1925050503d806000811461098e576040519150601f19603f3d011682016040523d82523d6000602084013e610993565b606091505b50509050806109b557604051633204506f60e01b815260040160405180910390fd5b60005b85811015610a16578281815181106109d2576109d26113f5565b60200260200101516109f0308989858181106107ef576107ef6113f5565b14610a0e5760405163903c78cd60e01b815260040160405180910390fd5b6001016109b8565b50604051602481018a90526044810184905260009060640160408051601f198184030181529190526020810180516001600160e01b031663019bfff160e51b179052600254909150600090610a7d908b906004906001600160a01b0316856201e848610e29565b905080610a8e60408b01353461141b565b1015610aac5760405162976f7560e21b815260040160405180910390fd5b604051339086908d907f7898a125e0970666c80e00bbf2e7041d84dfe5bbe6bcf562ce53d540fd6cd89190600090a450505050503868929eee149b4bd2126855505050505050565b610afc610c8e565b63389a75e1600c52806000526020600c208054421115610b2457636f5e88186000526004601cfd5b6000905561047581610ceb565b610b39610c8e565b8060601b610b4f57637448fbae6000526004601cfd5b61047581610ceb565b63409feecd198054600382558015610b8f5760018160011c14303b10610b865763f92ee8a96000526004601cfd5b818160ff1b1b91505b50610b9985610f6d565b610ba4846001610ca9565b610bad83610fa9565b600280546001600160a01b0319166001600160a01b0384161790558015610bfd576002815560016020527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2602080a15b5050505050565b6104e182826000611048565b60008054604051632376548f60e21b81526001600160a01b0390911690638dd9523c90610c4590879087908790600401611482565b602060405180830381865afa158015610c62573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8691906114b9565b949350505050565b638b78c6d819543314610641576382b429006000526004601cfd5b6104e182826001611048565b6000838383604051602001610ccc939291906114fb565b6040516020818303038152906040528051906020012090509392505050565b638b78c6d81980546001600160a01b039092169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a355565b638b78c6d8600c5233600052806020600c205416610475576382b429006000526004601cfd5b6000816014526370a0823160601b60005260208060246010865afa601f3d111660205102905092915050565b60405181606052826040528360601b602c526323b872dd60601b600c52602060006064601c6000895af18060016000511416610dca57803d873b151710610dca57637939f4246000526004601cfd5b50600060605260405250505050565b816014528060345263095ea7b360601b60005260206000604460106000875af18060016000511416610e1e57803d853b151710610e1e57633e3f8f736000526004601cfd5b506000603452505050565b60008054604051632376548f60e21b815282916001600160a01b031690638dd9523c90610e5e908a9088908890600401611482565b602060405180830381865afa158015610e7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9f91906114b9565b905080471015610ef65760405162461bcd60e51b815260206004820152601860248201527f584170703a20696e73756666696369656e742066756e6473000000000000000060448201526064015b60405180910390fd5b60005460405163c21dda4f60e01b81526001600160a01b039091169063c21dda4f908390610f30908b908b908b908b908b906004016115a8565b6000604051808303818588803b158015610f4957600080fd5b505af1158015610f5d573d6000803e3d6000fd5b50939a9950505050505050505050565b6001600160a01b0316638b78c6d8198190558060007f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a350565b6001600160a01b038116610ff45760405162461bcd60e51b8152602060048201526012602482015271584170703a206e6f207a65726f206f6d6e6960701b6044820152606401610eed565b600080546001600160a01b0319166001600160a01b0383169081179091556040519081527f79162c8d053a07e70cdc1ccc536f0440b571f8508377d2bef51094fadab98f479060200160405180910390a150565b638b78c6d8600c52826000526020600c2080548381178361106a575080841681185b80835580600c5160601c7f715ad5ce61fc9595c7b415289d59cf203f23a94fa06f04af7e489a0a76e1fe26600080a3505050505050565b6000602082840312156110b357600080fd5b5035919050565b803567ffffffffffffffff811681146110d257600080fd5b919050565b6000602082840312156110e957600080fd5b6110f2826110ba565b9392505050565b80356001600160a01b03811681146110d257600080fd5b6000806040838503121561112357600080fd5b61112c836110f9565b946020939093013593505050565b80356001600160e01b0319811681146110d257600080fd5b60008060006060848603121561116757600080fd5b611170846110f9565b925061117e6020850161113a565b91506040840135801515811461119357600080fd5b809150509250925092565b6000602082840312156111b057600080fd5b6110f2826110f9565b6000608082840312156111cb57600080fd5b50919050565b6000806000606084860312156111e657600080fd5b833592506111f6602085016110ba565b9150604084013567ffffffffffffffff81111561121257600080fd5b61121e868287016111b9565b9150509250925092565b6000806040838503121561123b57600080fd5b611244836110f9565b91506112526020840161113a565b90509250929050565b60008060008060006080868803121561127357600080fd5b85359450611283602087016110ba565b9350604086013567ffffffffffffffff808211156112a057600080fd5b6112ac89838a016111b9565b945060608801359150808211156112c257600080fd5b818801915088601f8301126112d657600080fd5b8135818111156112e557600080fd5b8960206060830285010111156112fa57600080fd5b9699959850939650602001949392505050565b6000806000806080858703121561132357600080fd5b61132c856110f9565b935061133a602086016110f9565b9250611348604086016110f9565b9150611356606086016110f9565b905092959194509250565b6000808335601e1984360301811261137857600080fd5b83018035915067ffffffffffffffff82111561139357600080fd5b6020019150368190038213156113a857600080fd5b9250929050565b6001600160e01b031981358181169160048510156113d75780818660040360031b1b83161692505b505092915050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b8183823760009101908152919050565b818103818111156104c957634e487b7160e01b600052601160045260246000fd5b6000815180845260005b8181101561146257602081850181015186830182015201611446565b506000602082860101526020601f19601f83011685010191505092915050565b600067ffffffffffffffff8086168352606060208401526114a6606084018661143c565b9150808416604084015250949350505050565b6000602082840312156114cb57600080fd5b5051919050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b838152600067ffffffffffffffff80851660208401526060604084015280611522856110ba565b1660608401526001600160a01b0361153c602086016110f9565b166080840152604084013560a08401526060840135601e1985360301811261156357600080fd5b84016020810190358281111561157857600080fd5b80360382131561158757600080fd5b608060c086015261159c60e0860182846114d2565b98975050505050505050565b600067ffffffffffffffff808816835260ff8716602084015260018060a01b038616604084015260a060608401526115e360a084018661143c565b9150808416608084015250969550505050505056fea26469706673582212208d8560574a5d7a6ae20e8808e9ce003254233a31056b4149e069cfbfa97e27b964736f6c63430008180033", } // SolveOutboxABI is the input ABI used to generate the binding from. diff --git a/contracts/solve/src/Solve.sol b/contracts/solve/src/Solve.sol index 16dc466b8..4be2b1a66 100644 --- a/contracts/solve/src/Solve.sol +++ b/contracts/solve/src/Solve.sol @@ -48,13 +48,13 @@ library Solve { /** * @notice Details of a call to be executed on another chain. - * @param destChainId ID of the destination chain. - * @param value Amount of native currency to send with the call. - * @param target Address of the target contract on the destination chain. - * @param data Encoded data to be sent with the call. + * @param chainId ID of chain on which the call should be executed. + * @param value Amount of native currency to send with the call. + * @param target Address of the target contract on the destination chain. + * @param data Encoded data to be sent with the call. */ struct Call { - uint64 destChainId; + uint64 chainId; address target; uint256 value; bytes data; diff --git a/contracts/solve/src/SolveInbox.sol b/contracts/solve/src/SolveInbox.sol index 686e28ba1..224486705 100644 --- a/contracts/solve/src/SolveInbox.sol +++ b/contracts/solve/src/SolveInbox.sol @@ -114,7 +114,7 @@ contract SolveInbox is OwnableRoles, ReentrancyGuard, Initializable, DeployedAt, returns (bytes32 id) { if (call.target == address(0)) revert InvalidCall(); - if (call.destChainId == 0) revert InvalidCall(); + if (call.chainId == 0) revert InvalidCall(); if (call.data.length == 0) revert InvalidCall(); if (deposits.length == 0 && msg.value == 0) revert NoDeposits(); @@ -189,7 +189,7 @@ contract SolveInbox is OwnableRoles, ReentrancyGuard, Initializable, DeployedAt, Solve.Request storage req = _requests[id]; if (req.status != Solve.Status.Accepted) revert NotAccepted(); if (xmsg.sender != _outbox) revert NotOutbox(); - if (xmsg.sourceChainId != req.call.destChainId) revert WrongSourceChain(); + if (xmsg.sourceChainId != req.call.chainId) revert WrongSourceChain(); // Ensure reported call hash matches requested call hash if (callHash != _callHash(id, uint64(block.chainid), req.call)) revert WrongCallHash(); diff --git a/contracts/solve/src/SolveOutbox.sol b/contracts/solve/src/SolveOutbox.sol index 6e4745f05..b1b3c8ca5 100644 --- a/contracts/solve/src/SolveOutbox.sol +++ b/contracts/solve/src/SolveOutbox.sol @@ -129,7 +129,7 @@ contract SolveOutbox is OwnableRoles, ReentrancyGuard, Initializable, DeployedAt Solve.Call calldata call, Solve.TokenPrereq[] calldata prereqs ) external payable onlyRoles(SOLVER) nonReentrant { - if (call.destChainId != block.chainid) revert WrongDestChain(); + if (call.chainId != block.chainid) revert WrongDestChain(); if (!allowedCalls[call.target][bytes4(call.data)]) revert CallNotAllowed(); // If the call has already been fulfilled, revert. Else, mark fulfilled diff --git a/contracts/solve/test/InboxBase.sol b/contracts/solve/test/InboxBase.sol index fc064d18c..f0a3be641 100644 --- a/contracts/solve/test/InboxBase.sol +++ b/contracts/solve/test/InboxBase.sol @@ -41,7 +41,7 @@ contract InboxBase is Test { function randCall() internal returns (Solve.Call memory) { uint256 rand = vm.randomUint(1, 1000); return Solve.Call({ - destChainId: uint64(rand), + chainId: uint64(rand), value: rand * 1 ether, target: address(uint160(rand)), data: abi.encode("data", rand) diff --git a/contracts/solve/test/Inbox_claim.t.sol b/contracts/solve/test/Inbox_claim.t.sol index 6e8ee3aa8..3658bd6db 100644 --- a/contracts/solve/test/Inbox_claim.t.sol +++ b/contracts/solve/test/Inbox_claim.t.sol @@ -39,7 +39,7 @@ contract SolveInbox_claim_Test is InboxBase { // mark fulfilled portal.mockXCall({ - sourceChainId: call.destChainId, + sourceChainId: call.chainId, sender: address(outbox), data: abi.encodeCall(inbox.markFulfilled, (id, callHash(id, call))), to: address(inbox) @@ -163,7 +163,7 @@ contract SolveInbox_claim_Test is InboxBase { // mark fulfilled portal.mockXCall({ - sourceChainId: call.destChainId, + sourceChainId: call.chainId, sender: address(outbox), data: abi.encodeCall(inbox.markFulfilled, (id, callHash(id, call))), to: address(inbox) diff --git a/contracts/solve/test/Inbox_markFulfilled.t.sol b/contracts/solve/test/Inbox_markFulfilled.t.sol index 24340350d..9b70797e3 100644 --- a/contracts/solve/test/Inbox_markFulfilled.t.sol +++ b/contracts/solve/test/Inbox_markFulfilled.t.sol @@ -29,16 +29,16 @@ contract SolveInbox_markFulfilled_Test is InboxBase { // must be xcall from outbox vm.expectRevert(SolveInbox.NotOutbox.selector); portal.mockXCall({ - sourceChainId: call.destChainId, + sourceChainId: call.chainId, sender: address(1234), // not outbox data: abi.encodeCall(inbox.markFulfilled, (id, callHash(id, call))), to: address(inbox) }); - // must be xcall from call.destChainId + // must be xcall from call.chainId vm.expectRevert(SolveInbox.WrongSourceChain.selector); portal.mockXCall({ - sourceChainId: 1234, // not call.destChainId + sourceChainId: 1234, // not call.chainId sender: address(outbox), data: abi.encodeCall(inbox.markFulfilled, (id, callHash(id, call))), to: address(inbox) @@ -47,7 +47,7 @@ contract SolveInbox_markFulfilled_Test is InboxBase { // must have correct call hash vm.expectRevert(SolveInbox.WrongCallHash.selector); portal.mockXCall({ - sourceChainId: call.destChainId, + sourceChainId: call.chainId, sender: address(outbox), data: abi.encodeCall(inbox.markFulfilled, (id, bytes32(uint256(1234)))), // not correct call hash to: address(inbox) @@ -72,7 +72,7 @@ contract SolveInbox_markFulfilled_Test is InboxBase { vm.expectEmit(address(inbox)); emit ISolveInbox.Fulfilled(id, callHash(id, call), solver); portal.mockXCall({ - sourceChainId: call.destChainId, + sourceChainId: call.chainId, sender: address(outbox), data: abi.encodeCall(inbox.markFulfilled, (id, callHash(id, call))), to: address(inbox) diff --git a/contracts/solve/test/Inbox_request.t.sol b/contracts/solve/test/Inbox_request.t.sol index 91038617e..15a160ae2 100644 --- a/contracts/solve/test/Inbox_request.t.sol +++ b/contracts/solve/test/Inbox_request.t.sol @@ -13,7 +13,7 @@ import { InboxBase } from "./InboxBase.sol"; contract SolveInbox_request_Test is InboxBase { /// @dev Test all revert conditions for SolveInbox.request(...) function test_request_reverts() public prankUser { - Solve.Call memory call = Solve.Call({ destChainId: 0, value: 0, target: address(0), data: bytes("") }); + Solve.Call memory call = Solve.Call({ chainId: 0, value: 0, target: address(0), data: bytes("") }); Solve.TokenDeposit[] memory deposits = new Solve.TokenDeposit[](0); // needs call.target @@ -21,10 +21,10 @@ contract SolveInbox_request_Test is InboxBase { inbox.request(call, deposits); call.target = address(1); - // needs destChainId + // needs chainId vm.expectRevert(SolveInbox.InvalidCall.selector); inbox.request(call, deposits); - call.destChainId = 1; + call.chainId = 1; // needs data vm.expectRevert(SolveInbox.InvalidCall.selector); @@ -224,7 +224,7 @@ contract SolveInbox_request_Test is InboxBase { assertEq(req.id, status == Solve.Status.Invalid ? bytes32(0) : id, "_assertNewRequest : req.id"); assertEq(req.from, from, "_assertNewRequest : req.from"); assertEq(req.call.target, call.target, "_assertNewRequest : req.call.target"); - assertEq(req.call.destChainId, call.destChainId, "_assertNewRequest : req.call.destChainId"); + assertEq(req.call.chainId, call.chainId, "_assertNewRequest : req.call.chainId"); assertEq(req.call.value, call.value, "_assertNewRequest : req.call.value"); assertEq(req.call.data, call.data, "_assertNewRequest : req.call.data"); diff --git a/contracts/solve/test/Outbox_fulfill.t.sol b/contracts/solve/test/Outbox_fulfill.t.sol index 79013c697..a5ccd3096 100644 --- a/contracts/solve/test/Outbox_fulfill.t.sol +++ b/contracts/solve/test/Outbox_fulfill.t.sol @@ -74,10 +74,10 @@ contract SolveOutbox_fulfill_test is Test { vm.startPrank(solver); // only correct dest chain - vm.chainId(call.destChainId + 1); + vm.chainId(call.chainId + 1); vm.expectRevert(SolveOutbox.WrongDestChain.selector); outbox.fulfill(srcReqId, srcChainId, call, new Solve.TokenPrereq[](0)); - vm.chainId(call.destChainId); + vm.chainId(call.chainId); // only allowed calls Solve.Call memory notAllowed = randCall(); @@ -154,7 +154,7 @@ contract SolveOutbox_fulfill_test is Test { /// @dev Returns a call to deposit into a vault. function vaultCall(address vault, address onBehalfOf, uint256 amount) internal view returns (Solve.Call memory) { bytes memory data = abi.encodeCall(MockVault.deposit, (onBehalfOf, amount)); - return Solve.Call({ destChainId: uint64(block.chainid), target: vault, value: 0, data: data }); + return Solve.Call({ chainId: uint64(block.chainid), target: vault, value: 0, data: data }); } /// @dev Returns expected OmniPortal.xcall Inbox.markFulfilled calldata @@ -179,7 +179,7 @@ contract SolveOutbox_fulfill_test is Test { function randCall() internal returns (Solve.Call memory) { uint256 rand = vm.randomUint(1, 1000); return Solve.Call({ - destChainId: uint64(block.chainid), + chainId: uint64(block.chainid), value: rand * 1 ether, target: address(uint160(rand)), data: abi.encode("data", rand) diff --git a/e2e/solve/devapp/deposits.go b/e2e/solve/devapp/deposits.go index 68320a4ae..3260612ce 100644 --- a/e2e/solve/devapp/deposits.go +++ b/e2e/solve/devapp/deposits.go @@ -313,10 +313,10 @@ func requestAtInbox(ctx context.Context, app App, backend *ethbackend.Backend, a } call := bindings.SolveCall{ - DestChainId: app.L1.ChainID, - Target: app.L1Vault, - Value: new(big.Int), // 0 native - Data: data, + ChainId: app.L1.ChainID, + Target: app.L1Vault, + Value: new(big.Int), // 0 native + Data: data, } for _, opt := range opts { diff --git a/solver/app/procdeps.go b/solver/app/procdeps.go index 7a6a2ee17..44ad74aeb 100644 --- a/solver/app/procdeps.go +++ b/solver/app/procdeps.go @@ -77,7 +77,7 @@ func newFulfiller( solverAddr, outboxAddr common.Address, ) func(ctx context.Context, srcChainID uint64, req bindings.SolveRequest) error { return func(ctx context.Context, srcChainID uint64, req bindings.SolveRequest) error { - destChainID := req.Call.DestChainId // Fulfilling happens on destination chain + destChainID := req.Call.ChainId // Fulfilling happens on destination chain outbox, ok := outboxContracts[destChainID] if !ok { return errors.New("unknown chain") diff --git a/solver/app/targets.go b/solver/app/targets.go index 1447eecca..d7f034404 100644 --- a/solver/app/targets.go +++ b/solver/app/targets.go @@ -23,7 +23,7 @@ func getTarget(network netconf.ID, call bindings.SolveCall) (types.Target, error var resp *types.Target for _, target := range targets { - if target.ChainID() == call.DestChainId && target.Address() == call.Target { + if target.ChainID() == call.ChainId && target.Address() == call.Target { if resp != nil { return nil, errors.New("multiple targets found [BUG]") } @@ -32,7 +32,7 @@ func getTarget(network netconf.ID, call bindings.SolveCall) (types.Target, error } if resp == nil { - return nil, errors.New("no target found", "dest_chain_id", call.DestChainId, "target_address", call.Target) + return nil, errors.New("no target found", "chain_id", call.ChainId, "target_address", call.Target) } return *resp, nil