@0xcert/ethereum-gateway-contracts
Version:
Smart contracts used by the gateway on the Ethereum blockchain.
1,049 lines • 58.4 kB
JSON
{
"ActionsGateway": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
}
],
"name": "Cancel",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
}
],
"name": "Perform",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "_proxy",
"type": "address"
}
],
"name": "ProxyChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "SetAbilities",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_proxy",
"type": "address"
},
{
"internalType": "enum ActionsGateway.ActionKind",
"name": "_kind",
"type": "uint8"
}
],
"name": "addProxy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "addressToAbility",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address[]",
"name": "signers",
"type": "address[]"
},
{
"components": [
{
"internalType": "uint32",
"name": "proxyId",
"type": "uint32"
},
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"internalType": "struct ActionsGateway.ActionData[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiration",
"type": "uint256"
}
],
"internalType": "struct ActionsGateway.OrderData",
"name": "_data",
"type": "tuple"
}
],
"name": "cancel",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address[]",
"name": "signers",
"type": "address[]"
},
{
"components": [
{
"internalType": "uint32",
"name": "proxyId",
"type": "uint32"
},
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"internalType": "struct ActionsGateway.ActionData[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiration",
"type": "uint256"
}
],
"internalType": "struct ActionsGateway.OrderData",
"name": "_orderData",
"type": "tuple"
}
],
"name": "getOrderDataClaim",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "grantAbilities",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "isAble",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_signer",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum ActionsGateway.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct ActionsGateway.SignatureData",
"name": "_signature",
"type": "tuple"
}
],
"name": "isValidSignature",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "orderCancelled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "orderPerformed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address[]",
"name": "signers",
"type": "address[]"
},
{
"components": [
{
"internalType": "uint32",
"name": "proxyId",
"type": "uint32"
},
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"internalType": "struct ActionsGateway.ActionData[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiration",
"type": "uint256"
}
],
"internalType": "struct ActionsGateway.OrderData",
"name": "_data",
"type": "tuple"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum ActionsGateway.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct ActionsGateway.SignatureData[]",
"name": "_signatures",
"type": "tuple[]"
}
],
"name": "perform",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proxies",
"outputs": [
{
"internalType": "address",
"name": "proxyAddress",
"type": "address"
},
{
"internalType": "enum ActionsGateway.ActionKind",
"name": "kind",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum ActionsGateway.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct ActionsGateway.SignatureData",
"name": "_signature",
"type": "tuple"
}
],
"name": "recoverSigner",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "_index",
"type": "uint256"
}
],
"name": "removeProxy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "revokeAbilities",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "setAbilities",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
}
],
"evm": {
"bytecode": {
"object": "608060405234801561001057600080fd5b50336000908152602081905260409020600f90556128c5806100336000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c80638fa76d8d11610097578063b6865c4d11610066578063b6865c4d1461020b578063ba00a3301461021e578063d981e73614610231578063f394b6df14610244576100f5565b80638fa76d8d146101a4578063a34e6721146101b7578063abd90f85146101d7578063b438bae1146101f8576100f5565b80633ab7d841116100d35780633ab7d8411461013557806345a32c86146101485780635889bf5e146101715780635f2aa50314610191576100f5565b80630ab319e8146100fa57806315ec3b8b1461010f57806338a9bfcd14610122575b600080fd5b61010d61010836600461231c565b610257565b005b61010d61011d36600461231c565b610325565b61010d6101303660046123ab565b6103da565b61010d610143366004612367565b610528565b61015b610156366004612264565b61061e565b6040516101689190612709565b60405180910390f35b61018461017f366004612367565b610630565b60405161016891906126fe565b61015b61019f3660046123ab565b610645565b6101846101b23660046122a3565b61076b565b6101ca6101c536600461237f565b610794565b60405161016891906125c5565b6101ea6101e5366004612367565b61091d565b604051610168929190612650565b61010d6102063660046123e6565b610952565b61010d6102193660046122e1565b610cdb565b61018461022c36600461231c565b610e42565b61018461023f366004612367565b610ea7565b61010d61025236600461231c565b610ebc565b60408051808201909152600681526518189b98181960d11b6020820152600190610285565b60405180910390fd5b503360009081526020818152604091829020548251808401909352600683526530313730303160d01b91830191909152821682146102d65760405162461bcd60e51b815260040161027c9190612730565b506001600160a01b038316600081815260208190526040808220805486179081905590519092917fd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b9091a3505050565b60408051808201825260068082526518189b98181960d11b6020928301523360009081528083528390205483518085019094529083526530313730303160d01b9183019190915260019190821682146103915760405162461bcd60e51b815260040161027c9190612730565b506001600160a01b038316600081815260208190526040808220859055518492917fd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b9091a3505050565b6000805b82515160ff82161015610445578251805133919060ff841690811061041357634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b031614156104335760019150610445565b8061043d8161282b565b9150506103de565b50604080518082019091526006815265060626a6060760d31b6020820152816104815760405162461bcd60e51b815260040161027c9190612730565b50600061048d83610645565b600081815260036020908152604091829020548251808401909352600683526530313530303760d01b918301919091529192509060ff16156104e25760405162461bcd60e51b815260040161027c9190612730565b50600081815260026020526040808220805460ff191660011790555182917fe8d9861dbc9c663ed3accd261bbe2fe01e0d3d9e5f51fa38523b265c7757a93a91a2505050565b60408051808201825260068082526518189b98181960d11b6020928301523360009081528083528390205483518085019094529083526530313730303160d01b9183019190915260109190821682146105945760405162461bcd60e51b815260040161027c9190612730565b506000600183815481106105b857634e487b7160e01b600052603260045260246000fd5b6000918252602082200180546001600160a01b0319166001600160a01b03939093169290921790915560405183917f8edda873a8ad561ecebeb71ceb3ae6bcb70c2b76a3fcb869859895c4d4fc74169161061291906125c5565b60405180910390a25050565b60006020819052908152604090205481565b60026020526000908152604090205460ff1681565b600080805b83602001515181101561072657818460200151828151811061067c57634e487b7160e01b600052603260045260246000fd5b602002602001015160000151856020015183815181106106ac57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151866020015184815181106106dc57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001516040516020016106fb9493929190612511565b604051602081830303815290604052805190602001209150808061071e90612810565b91505061064a565b50308360000151828560400151866060015160405160200161074c9594939291906124ab565b604051602081830303815290604052805190602001209150505b919050565b60006107778383610794565b6001600160a01b0316846001600160a01b03161490509392505050565b600080826060015160028111156107bb57634e487b7160e01b600052602160045260246000fd5b1415610849576001836040516020016107d49190612563565b60405160208183030381529060405280519060200120836040015184600001518560200151604051600081526020016040526040516108169493929190612712565b6020604051602081039080840390855afa158015610838573d6000803e3d6000fd5b505050602060405103519050610917565b60018260600151600281111561086f57634e487b7160e01b600052602160045260246000fd5b1415610888576001836040516020016107d49190612594565b6002826060015160028111156108ae57634e487b7160e01b600052602160045260246000fd5b14156108e357600183836040015184600001518560200151604051600081526020016040526040516108169493929190612712565b604080518082018252600681526530313530303160d01b6020820152905162461bcd60e51b815261027c9190600401612730565b92915050565b6001818154811061092d57600080fd5b6000918252602090912001546001600160a01b0381169150600160a01b900460ff1682565b42826060015111604051806040016040528060068152602001650c0c4d4c0c0d60d21b815250906109965760405162461bcd60e51b815260040161027c9190612730565b5060006109a283610645565b9050600060018460000151516109b891906127c9565b90506000806001600160a01b0316856000015183815181106109ea57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b03161415610a8f578351821415610a11575033610a45565b610a4283858481518110610a3557634e487b7160e01b600052603260045260246000fd5b6020026020010151610794565b90505b8085600001518381518110610a6a57634e487b7160e01b600052603260045260246000fd5b60200260200101906001600160a01b031690816001600160a01b031681525050610b20565b8351821415610b12578451805133919084908110610abd57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316146040518060400160405280600681526020016530313530303360d01b81525090610b0c5760405162461bcd60e51b815260040161027c9190612730565b50610b20565b610b1d6001836127b1565b91505b60005b828160ff161015610be157610b9186600001518260ff1681518110610b5857634e487b7160e01b600052603260045260246000fd5b602002602001015185878460ff1681518110610b8457634e487b7160e01b600052603260045260246000fd5b602002602001015161076b565b6040518060400160405280600681526020016530313530303560d01b81525090610bce5760405162461bcd60e51b815260040161027c9190612730565b5080610bd98161282b565b915050610b23565b50600083815260026020908152604091829020548251808401909352600683526518189a98181b60d11b9183019190915260ff1615610c335760405162461bcd60e51b815260040161027c9190612730565b50600083815260036020908152604091829020548251808401909352600683526530313530303760d01b9183019190915260ff1615610c855760405162461bcd60e51b815260040161027c9190612730565b506000838152600360205260409020805460ff19166001179055610ca98582610f78565b60405183907fa4be90ab47bcea0c591eaa7dd28b8ba0329e7ebddac48c5f2ca9fed68d08cf0890600090a25050505050565b60408051808201825260068082526518189b98181960d11b6020928301523360009081528083528390205483518085019094529083526530313730303160d01b918301919091526010919082168214610d475760405162461bcd60e51b815260040161027c9190612730565b5060016040518060400160405280856001600160a01b03168152602001846004811115610d8457634e487b7160e01b600052602160045260246000fd5b9052815460018101835560009283526020928390208251910180546001600160a01b0319166001600160a01b0390921691909117808255928201519192909190829060ff60a01b1916600160a01b836004811115610df257634e487b7160e01b600052602160045260246000fd5b02179055505060018054610e0692506127c9565b7f8edda873a8ad561ecebeb71ceb3ae6bcb70c2b76a3fcb869859895c4d4fc741684604051610e3591906125c5565b60405180910390a2505050565b60008082116040518060400160405280600681526020016518189b98181960d11b81525090610e845760405162461bcd60e51b815260040161027c9190612730565b50506001600160a01b039190911660009081526020819052604090205481161490565b60036020526000908152604090205460ff1681565b60408051808201825260068082526518189b98181960d11b6020928301523360009081528083528390205483518085019094529083526530313730303160d01b918301919091526001919082168214610f285760405162461bcd60e51b815260040161027c9190612730565b506001600160a01b03831660008181526020819052604080822080548619169081905590519092917fd1d59d2d212a435434e7a4a4676427610dfe2b6268b01e541d280d65bf3d6b9091a3505050565b60005b826020015151811015611f795760006001600160a01b0316600184602001518381518110610fb957634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff1681548110610fe957634e487b7160e01b600052603260045260246000fd5b6000918252602091829020015460408051808201909152600681526518189a98181960d11b9281019290925290916001600160a01b0390911614156110415760405162461bcd60e51b815260040161027c9190612730565b50600060018460200151838151811061106a57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff168154811061109a57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600160a01b900460ff1660048111156110cf57634e487b7160e01b600052602160045260246000fd5b14156113c357826020015181815181106110f957634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b031663ba00a3308460000151611155605560ff168760200151868151811061114457634e487b7160e01b600052603260045260246000fd5b602002602001015160400151611f7e565b60ff168151811061117657634e487b7160e01b600052603260045260246000fd5b60200260200101516102006040518363ffffffff1660e01b815260040161119e92919061268b565b60206040518083038186803b1580156111b657600080fd5b505afa1580156111ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ee9190612347565b6040518060400160405280600681526020016530313530303960d01b8152509061122b5760405162461bcd60e51b815260040161027c9190612730565b50600061125a605460ff168560200151848151811061114457634e487b7160e01b600052603260045260246000fd5b90506001600160a01b03811661126d5750815b60018460200151838151811061129357634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff16815481106112c357634e487b7160e01b600052603260045260246000fd5b600091825260209182902001549085015180516001600160a01b03909216916346009b0e91908590811061130757634e487b7160e01b600052603260045260246000fd5b60200260200101516020015183611340604060ff168960200151888151811061114457634e487b7160e01b600052603260045260246000fd5b61136c602060ff168a60200151898151811061114457634e487b7160e01b600052603260045260246000fd5b6040518563ffffffff1660e01b815260040161138b9493929190612627565b600060405180830381600087803b1580156113a557600080fd5b505af11580156113b9573d6000803e3d6000fd5b5050505050611f67565b600180846020015183815181106113ea57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff168154811061141a57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600160a01b900460ff16600481111561144f57634e487b7160e01b600052602160045260246000fd5b14156116205760008360000151611488603560ff168660200151858151811061114457634e487b7160e01b600052603260045260246000fd5b60ff16815181106114a957634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006114e1603460ff168660200151858151811061114457634e487b7160e01b600052603260045260246000fd5b90506001600160a01b0381166114f45750825b60018560200151848151811061151a57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff168154811061154a57634e487b7160e01b600052603260045260246000fd5b600091825260209182902001549086015180516001600160a01b039092169163239aee0691908690811061158e57634e487b7160e01b600052603260045260246000fd5b60200260200101516020015184846115c8602060ff168b602001518a8151811061114457634e487b7160e01b600052603260045260246000fd5b6040518563ffffffff1660e01b81526004016115e794939291906125d9565b600060405180830381600087803b15801561160157600080fd5b505af1158015611615573d6000803e3d6000fd5b505050505050611f67565b600260018460200151838151811061164857634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff168154811061167857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600160a01b900460ff1660048111156116ad57634e487b7160e01b600052602160045260246000fd5b141561194c57826020015181815181106116d757634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b031663ba00a3308460000151611722604160ff168760200151868151811061114457634e487b7160e01b600052603260045260246000fd5b60ff168151811061174357634e487b7160e01b600052603260045260246000fd5b60200260200101516104006040518363ffffffff1660e01b815260040161176b92919061268b565b60206040518083038186803b15801561178357600080fd5b505afa158015611797573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bb9190612347565b6040518060400160405280600681526020016503031353031360d41b815250906117f85760405162461bcd60e51b815260040161027c9190612730565b5060018360200151828151811061181f57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff168154811061184f57634e487b7160e01b600052603260045260246000fd5b600091825260209182902001549084015180516001600160a01b039092169163760f9d8691908490811061189357634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516118cb604060ff168760200151868151811061114457634e487b7160e01b600052603260045260246000fd5b6118f7602060ff168860200151878151811061114457634e487b7160e01b600052603260045260246000fd5b6040518463ffffffff1660e01b8152600401611915939291906126c1565b600060405180830381600087803b15801561192f57600080fd5b505af1158015611943573d6000803e3d6000fd5b50505050611f67565b600360018460200151838151811061197457634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff16815481106119a457634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600160a01b900460ff1660048111156119d957634e487b7160e01b600052602160045260246000fd5b1415611c565782602001518181518110611a0357634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b031663ba00a3308460000151611a4e603560ff168760200151868151811061114457634e487b7160e01b600052603260045260246000fd5b60ff1681518110611a6f57634e487b7160e01b600052603260045260246000fd5b602002602001015160026040518363ffffffff1660e01b8152600401611a969291906126e2565b60206040518083038186803b158015611aae57600080fd5b505afa158015611ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae69190612347565b6040518060400160405280600681526020016530313530313160d01b81525090611b235760405162461bcd60e51b815260040161027c9190612730565b506000611b52603460ff168560200151848151811061114457634e487b7160e01b600052603260045260246000fd5b90506001600160a01b038116611b655750815b600184602001518381518110611b8b57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff1681548110611bbb57634e487b7160e01b600052603260045260246000fd5b600091825260209182902001549085015180516001600160a01b03909216916319f02ceb919085908110611bff57634e487b7160e01b600052603260045260246000fd5b60200260200101516020015183611c38602060ff168960200151888151811061114457634e487b7160e01b600052603260045260246000fd5b6040518463ffffffff1660e01b815260040161138b93929190612603565b6004600184602001518381518110611c7e57634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff1681548110611cae57634e487b7160e01b600052603260045260246000fd5b600091825260209091200154600160a01b900460ff166004811115611ce357634e487b7160e01b600052602160045260246000fd5b1415611f67576000611d17602060ff168560200151848151811061114457634e487b7160e01b600052603260045260246000fd5b905083602001518281518110611d3d57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160a01b0316636352211e826040518263ffffffff1660e01b8152600401611d749190612709565b60206040518083038186803b158015611d8c57600080fd5b505afa158015611da0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dc49190612287565b6001600160a01b03168460000151611dfe602160ff168760200151868151811061114457634e487b7160e01b600052603260045260246000fd5b60ff1681518110611e1f57634e487b7160e01b600052603260045260246000fd5b60200260200101516001600160a01b0316146040518060400160405280600681526020016518189a98189960d11b81525090611e6e5760405162461bcd60e51b815260040161027c9190612730565b50600184602001518381518110611e9557634e487b7160e01b600052603260045260246000fd5b60200260200101516000015163ffffffff1681548110611ec557634e487b7160e01b600052603260045260246000fd5b600091825260209182902001549085015180516001600160a01b039092169163a24835d1919085908110611f0957634e487b7160e01b600052603260045260246000fd5b602002602001015160200151836040518363ffffffff1660e01b8152600401611f339291906126a8565b600060405180830381600087803b158015611f4d57600080fd5b505af1158015611f61573d6000803e3d6000fd5b50505050505b80611f7181612810565b915050610f7b565b505050565b015190565b803561076681612877565b600082601f830112611f9e578081fd5b81356020611fb3611fae8361278d565b612763565b8281528181019085830183850287018401881015611fcf578586fd5b855b85811015611ff6578135611fe481612877565b84529284019290840190600101611fd1565b5090979650505050505050565b600082601f830112612013578081fd5b81356020612023611fae8361278d565b82815281810190858301855b85811015611ff65781358801606080601f19838d0301121561204f578889fd5b6040805182810167ffffffffffffffff828210818311171561207357612073612861565b908352848a01359063ffffffff8216821461208c578c8dfd5b81835261209a848701611f83565b838c01529385013593808511156120af578c8dfd5b50506120bf8d8a858701016120da565b9181019190915286525050928401929084019060010161202f565b600082601f8301126120ea578081fd5b813567ffffffffffffffff81111561210457612104612861565b612117601f8201601f1916602001612763565b81815284602083860101111561212b578283fd5b816020850160208301379081016020019190915292915050565b600060808284031215612156578081fd5b6040516080810167ffffffffffffffff828210818311171561217a5761217a612861565b81604052829350843591508082111561219257600080fd5b61219e86838701611f8e565b835260208501359150808211156121b457600080fd5b506121c185828601612003565b60208301525060408301356040820152606083013560608201525092915050565b6000608082840312156121f3578081fd5b6040516080810181811067ffffffffffffffff8211171561221657612216612861565b80604052508091508235815260208301356020820152604083013560ff8116811461224057600080fd5b604082015260608301356003811061225757600080fd5b6060919091015292915050565b600060208284031215612275578081fd5b813561228081612877565b9392505050565b600060208284031215612298578081fd5b815161228081612877565b600080600060c084860312156122b7578182fd5b83356122c281612877565b9250602084013591506122d885604086016121e2565b90509250925092565b600080604083850312156122f3578182fd5b82356122fe81612877565b9150602083013560058110612311578182fd5b809150509250929050565b6000806040838503121561232e578182fd5b823561233981612877565b946020939093013593505050565b600060208284031215612358578081fd5b81518015158114612280578182fd5b600060208284031215612378578081fd5b5035919050565b60008060a08385031215612391578182fd5b823591506123a284602085016121e2565b90509250929050565b6000602082840312156123bc578081fd5b813567ffffffffffffffff8111156123d2578182fd5b6123de84828501612145565b949350505050565b600080604083850312156123f8578182fd5b823567ffffffffffffffff8082111561240f578384fd5b61241b86838701612145565b9350602091508185013581811115612431578384fd5b85019050601f81018613612443578283fd5b8035612451611fae8261278d565b818152838101908385016080808502860187018b101561246f578788fd5b8795505b8486101561249b576124858b836121e2565b8452600195909501949286019290810190612473565b5096999098509650505050505050565b60006bffffffffffffffffffffffff198760601b1682526014820186516020808901845b838110156124f45781516001600160a01b0316855293820193908201906001016124cf565b505096825250948501939093525060408301525060600192915050565b600085825263ffffffff60e01b8560e01b1660208301526bffffffffffffffffffffffff198460601b16602483015282516125538160388501602087016127e0565b9190910160380195945050505050565b7f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152601c810191909152603c0190565b7f19457468657265756d205369676e6564204d6573736167653a0a2000000000008152601b810191909152603b0190565b6001600160a01b0391909116815260200190565b6001600160a01b039485168152928416602084015292166040820152606081019190915260800190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b0383168152604081016005831061267e57634e487b7160e01b600052602160045260246000fd5b8260208301529392505050565b6001600160a01b0392909216825261ffff16602082015260400190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0392909216825260ff16602082015260400190565b901515815260200190565b90815260200190565b93845260ff9290921660208401526040830152606082015260800190565b600060208252825180602084015261274f8160408501602087016127e0565b601f01601f19169190910160400192915050565b60405181810167ffffffffffffffff8111828210171561278557612785612861565b604052919050565b600067ffffffffffffffff8211156127a7576127a7612861565b5060209081020190565b600082198211156127c4576127c461284b565b500190565b6000828210156127db576127db61284b565b500390565b60005b838110156127fb5781810151838201526020016127e3565b8381111561280a576000848401525b50505050565b60006000198214156128245761282461284b565b5060010190565b600060ff821660ff8114156128425761284261284b565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b038116811461288c57600080fd5b5056fea2646970667358221220cc8bd5cb4747b97ae2ff237ca54b41006174aa291cc95b01e4b28828d91bfd5f64736f6c63430008000033"
},
"methodIdentifiers": {
"addProxy(address,uint8)": "b6865c4d",
"addressToAbility(address)": "45a32c86",
"cancel((address[],(uint32,address,bytes)[],uint256,uint256))": "38a9bfcd",
"getOrderDataClaim((address[],(uint32,address,bytes)[],uint256,uint256))": "5f2aa503",
"grantAbilities(address,uint256)": "0ab319e8",
"isAble(address,uint256)": "ba00a330",
"isValidSignature(address,bytes32,(bytes32,bytes32,uint8,uint8))": "8fa76d8d",
"orderCancelled(bytes32)": "5889bf5e",
"orderPerformed(bytes32)": "d981e736",
"perform((address[],(uint32,address,bytes)[],uint256,uint256),(bytes32,bytes32,uint8,uint8)[])": "b438bae1",
"proxies(uint256)": "abd90f85",
"recoverSigner(bytes32,(bytes32,bytes32,uint8,uint8))": "a34e6721",
"removeProxy(uint256)": "3ab7d841",
"revokeAbilities(address,uint256)": "f394b6df",
"setAbilities(address,uint256)": "15ec3b8b"
}
},
"metadata": {
"compiler": {
"version": "0.8.0+commit.c7dfd78e"
},
"language": "Solidity",
"output": {
"abi": [
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
}
],
"name": "Cancel",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
}
],
"name": "Perform",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "uint256",
"name": "_index",
"type": "uint256"
},
{
"indexed": false,
"internalType": "address",
"name": "_proxy",
"type": "address"
}
],
"name": "ProxyChange",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"indexed": true,
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "SetAbilities",
"type": "event"
},
{
"inputs": [
{
"internalType": "address",
"name": "_proxy",
"type": "address"
},
{
"internalType": "enum ActionsGateway.ActionKind",
"name": "_kind",
"type": "uint8"
}
],
"name": "addProxy",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"name": "addressToAbility",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address[]",
"name": "signers",
"type": "address[]"
},
{
"components": [
{
"internalType": "uint32",
"name": "proxyId",
"type": "uint32"
},
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"internalType": "struct ActionsGateway.ActionData[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiration",
"type": "uint256"
}
],
"internalType": "struct ActionsGateway.OrderData",
"name": "_data",
"type": "tuple"
}
],
"name": "cancel",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address[]",
"name": "signers",
"type": "address[]"
},
{
"components": [
{
"internalType": "uint32",
"name": "proxyId",
"type": "uint32"
},
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"internalType": "struct ActionsGateway.ActionData[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiration",
"type": "uint256"
}
],
"internalType": "struct ActionsGateway.OrderData",
"name": "_orderData",
"type": "tuple"
}
],
"name": "getOrderDataClaim",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "grantAbilities",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_target",
"type": "address"
},
{
"internalType": "uint256",
"name": "_abilities",
"type": "uint256"
}
],
"name": "isAble",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "_signer",
"type": "address"
},
{
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum ActionsGateway.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct ActionsGateway.SignatureData",
"name": "_signature",
"type": "tuple"
}
],
"name": "isValidSignature",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "pure",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "orderCancelled",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "orderPerformed",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"components": [
{
"internalType": "address[]",
"name": "signers",
"type": "address[]"
},
{
"components": [
{
"internalType": "uint32",
"name": "proxyId",
"type": "uint32"
},
{
"internalType": "address",
"name": "contractAddress",
"type": "address"
},
{
"internalType": "bytes",
"name": "params",
"type": "bytes"
}
],
"internalType": "struct ActionsGateway.ActionData[]",
"name": "actions",
"type": "tuple[]"
},
{
"internalType": "uint256",
"name": "seed",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "expiration",
"type": "uint256"
}
],
"internalType": "struct ActionsGateway.OrderData",
"name": "_data",
"type": "tuple"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum ActionsGateway.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct ActionsGateway.SignatureData[]",
"name": "_signatures",
"type": "tuple[]"
}
],
"name": "perform",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"name": "proxies",
"outputs": [
{
"internalType": "address",
"name": "proxyAddress",
"type": "address"
},
{
"internalType": "enum ActionsGateway.ActionKind",
"name": "kind",
"type": "uint8"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "_claim",
"type": "bytes32"
},
{
"components": [
{
"internalType": "bytes32",
"name": "r",
"type": "bytes32"
},
{
"internalType": "bytes32",
"name": "s",
"type": "bytes32"
},
{
"internalType": "uint8",
"name": "v",
"type": "uint8"
},
{
"internalType": "enum ActionsGateway.SignatureKind",
"name": "kind",
"type": "uint8"
}
],
"internalType": "struct Actio