safe-react/safe-contracts/build/contracts/GnosisSafe.json

20048 lines
961 KiB
JSON
Raw Normal View History

2018-05-31 13:01:02 +00:00
{
"contractName": "GnosisSafe",
"abi": [
{
"constant": false,
"inputs": [
{
"name": "owner",
"type": "address"
},
{
"name": "_threshold",
"type": "uint256"
}
],
"name": "addOwnerWithThreshold",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
2018-08-20 07:59:16 +00:00
{
"constant": true,
"inputs": [],
2018-09-26 09:19:53 +00:00
"name": "DOMAIN_SEPARATOR_TYPEHASH",
2018-08-20 07:59:16 +00:00
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
2018-05-31 13:01:02 +00:00
{
"constant": true,
"inputs": [
{
"name": "owner",
"type": "address"
}
],
"name": "isOwner",
"outputs": [
{
"name": "",
"type": "bool"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
}
],
"name": "execTransactionFromModule",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
2018-10-05 15:26:48 +00:00
{
"constant": true,
"inputs": [
{
"name": "",
"type": "bytes32"
}
],
"name": "signedMessages",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
2018-05-31 13:01:02 +00:00
{
"constant": false,
"inputs": [
{
"name": "module",
"type": "address"
}
],
"name": "enableModule",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
2018-05-31 13:01:02 +00:00
{
"name": "_threshold",
"type": "uint256"
2018-05-31 13:01:02 +00:00
}
],
"name": "changeThreshold",
"outputs": [],
2018-05-31 13:01:02 +00:00
"payable": false,
"stateMutability": "nonpayable",
2018-05-31 13:01:02 +00:00
"type": "function"
},
2018-10-05 15:26:48 +00:00
{
"constant": true,
"inputs": [
{
"name": "",
"type": "address"
},
{
"name": "",
"type": "bytes32"
}
],
"name": "approvedHashes",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
2018-09-26 09:19:53 +00:00
{
"constant": false,
"inputs": [
{
"name": "_masterCopy",
"type": "address"
}
],
"name": "changeMasterCopy",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
2018-05-31 13:01:02 +00:00
{
"constant": true,
"inputs": [],
"name": "SENTINEL_MODULES",
"outputs": [
2018-05-31 13:01:02 +00:00
{
"name": "",
2018-05-31 13:01:02 +00:00
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
2018-05-31 13:01:02 +00:00
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "SENTINEL_OWNERS",
"outputs": [
{
"name": "",
"type": "address"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getOwners",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "NAME",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
2018-09-26 09:19:53 +00:00
{
"constant": true,
"inputs": [],
"name": "nonce",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
2018-05-31 13:01:02 +00:00
{
"constant": true,
"inputs": [],
"name": "getModules",
"outputs": [
{
"name": "",
"type": "address[]"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
2018-08-20 07:59:16 +00:00
{
"constant": true,
"inputs": [],
2018-09-26 09:19:53 +00:00
"name": "SAFE_MSG_TYPEHASH",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "SAFE_TX_TYPEHASH",
2018-08-20 07:59:16 +00:00
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
2018-05-31 13:01:02 +00:00
{
"constant": false,
"inputs": [
{
"name": "prevModule",
"type": "address"
},
{
"name": "module",
"type": "address"
}
],
"name": "disableModule",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "prevOwner",
"type": "address"
},
{
"name": "oldOwner",
"type": "address"
},
{
"name": "newOwner",
"type": "address"
}
],
"name": "swapOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [],
"name": "getThreshold",
"outputs": [
{
"name": "",
"type": "uint256"
2018-05-31 13:01:02 +00:00
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
2018-09-26 09:19:53 +00:00
{
"constant": true,
"inputs": [],
"name": "domainSeparator",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "prevOwner",
"type": "address"
},
{
"name": "owner",
"type": "address"
},
{
"name": "_threshold",
"type": "uint256"
}
],
"name": "removeOwner",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
2018-05-31 13:01:02 +00:00
{
"constant": true,
"inputs": [],
"name": "VERSION",
"outputs": [
{
"name": "",
"type": "string"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"payable": true,
"stateMutability": "payable",
"type": "fallback"
},
2018-09-26 09:19:53 +00:00
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "txHash",
"type": "bytes32"
}
],
"name": "ExecutionFailed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "owner",
"type": "address"
}
],
"name": "AddedOwner",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "owner",
"type": "address"
}
],
"name": "RemovedOwner",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "threshold",
"type": "uint256"
}
],
"name": "ChangedThreshold",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "module",
"type": "address"
}
],
"name": "EnabledModule",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "module",
"type": "address"
}
],
"name": "DisabledModule",
"type": "event"
},
2018-05-31 13:01:02 +00:00
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"name": "newContract",
"type": "address"
}
],
"name": "ContractCreation",
"type": "event"
},
{
"constant": false,
"inputs": [
{
"name": "_owners",
"type": "address[]"
},
{
"name": "_threshold",
"type": "uint256"
2018-05-31 13:01:02 +00:00
},
{
"name": "to",
"type": "address"
},
{
"name": "data",
"type": "bytes"
}
],
"name": "setup",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
2018-09-26 09:19:53 +00:00
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
},
{
"name": "safeTxGas",
"type": "uint256"
},
{
"name": "dataGas",
"type": "uint256"
},
{
"name": "gasPrice",
"type": "uint256"
},
{
"name": "gasToken",
"type": "address"
},
{
"name": "refundReceiver",
"type": "address"
},
{
"name": "signatures",
"type": "bytes"
}
],
"name": "execTransaction",
"outputs": [
{
"name": "success",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
}
],
"name": "requiredTxGas",
"outputs": [
{
"name": "",
"type": "uint256"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "hashToApprove",
"type": "bytes32"
}
],
"name": "approveHash",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_data",
"type": "bytes"
}
],
"name": "signMessage",
"outputs": [],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": false,
"inputs": [
{
"name": "_data",
"type": "bytes"
},
{
"name": "_signature",
"type": "bytes"
}
],
"name": "isValidSignature",
"outputs": [
{
"name": "isValid",
"type": "bool"
}
],
"payable": false,
"stateMutability": "nonpayable",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "message",
"type": "bytes"
}
],
"name": "getMessageHash",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
},
{
"name": "safeTxGas",
"type": "uint256"
},
{
"name": "dataGas",
"type": "uint256"
},
{
"name": "gasPrice",
"type": "uint256"
},
{
"name": "gasToken",
"type": "address"
},
{
"name": "refundReceiver",
"type": "address"
},
{
"name": "_nonce",
"type": "uint256"
}
],
"name": "encodeTransactionData",
"outputs": [
{
"name": "",
"type": "bytes"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
},
{
"constant": true,
"inputs": [
{
"name": "to",
"type": "address"
},
{
"name": "value",
"type": "uint256"
},
{
"name": "data",
"type": "bytes"
},
{
"name": "operation",
"type": "uint8"
},
{
"name": "safeTxGas",
"type": "uint256"
},
{
"name": "dataGas",
"type": "uint256"
},
{
"name": "gasPrice",
"type": "uint256"
},
{
"name": "gasToken",
"type": "address"
},
{
"name": "refundReceiver",
"type": "address"
},
{
"name": "_nonce",
"type": "uint256"
}
],
"name": "getTransactionHash",
"outputs": [
{
"name": "",
"type": "bytes32"
}
],
"payable": false,
"stateMutability": "view",
"type": "function"
}
],
2018-10-05 15:26:48 +00:00
"bytecode": "0x608060405234801561001057600080fd5b506154e4806100206000396000f300608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a1028c4146101985780630d582f131461021d5780630ec78d9e1461026a5780631db61b541461034057806320c13b0b146103735780632f54bf6e1461043a578063468721a7146104955780635ae6bd371461054d578063610b592514610592578063694e80c3146105d55780636a761202146106025780637d8329741461075e5780637de7edef146107c357806385a5affe1461080657806385e332cd1461086f5780638cff6355146108c6578063a0e67e2b1461091d578063a3f4df7e14610989578063affed0e014610a19578063b2494df314610a44578063c0856ffc14610ab0578063c4ca3a9c14610ae3578063ccafc38714610b97578063d4d9bdcd14610bca578063d8d11f7814610bfb578063e009cfde14610d1f578063e318b52b14610d82578063e75235b814610e05578063e86637db14610e30578063f698da2514610fb1578063f8dc5dd914610fe4578063ffa1ad7414611051575b005b3480156101a457600080fd5b506101ff600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506110e1565b60405180826000191660001916815260200191505060405180910390f35b34801561022957600080fd5b50610268600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611387565b005b34801561027657600080fd5b5061033e6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506117f0565b005b34801561034c57600080fd5b5061035561196e565b60405180826000191660001916815260200191505060405180910390f35b34801561037f57600080fd5b50610420600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611995565b604051808215151515815260200191505060405180910390f35b34801561044657600080fd5b5061047b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119eb565b604051808215151515815260200191505060405180910390f35b3480156104a157600080fd5b50610533600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611a6d565b604051808215151515815260200191505060405180910390f35b34801561055957600080fd5b5061057c6004803603810190808035600019169060200190929190505050611b99565b6040518082815260200191505060405180910390f35b34801561059e57600080fd5b506105d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb1565b005b3480156105e157600080fd5b5061060060048036038101908080359060200190929190505050611ff2565b005b34801561060e57600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061223d565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b506107ad600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506124e8565b6040518082815260200191505060405180910390f35b3480156107cf57600080fd5b50610804600480
"deployedBytecode": "0x608060405260043610610196576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a1028c4146101985780630d582f131461021d5780630ec78d9e1461026a5780631db61b541461034057806320c13b0b146103735780632f54bf6e1461043a578063468721a7146104955780635ae6bd371461054d578063610b592514610592578063694e80c3146105d55780636a761202146106025780637d8329741461075e5780637de7edef146107c357806385a5affe1461080657806385e332cd1461086f5780638cff6355146108c6578063a0e67e2b1461091d578063a3f4df7e14610989578063affed0e014610a19578063b2494df314610a44578063c0856ffc14610ab0578063c4ca3a9c14610ae3578063ccafc38714610b97578063d4d9bdcd14610bca578063d8d11f7814610bfb578063e009cfde14610d1f578063e318b52b14610d82578063e75235b814610e05578063e86637db14610e30578063f698da2514610fb1578063f8dc5dd914610fe4578063ffa1ad7414611051575b005b3480156101a457600080fd5b506101ff600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506110e1565b60405180826000191660001916815260200191505060405180910390f35b34801561022957600080fd5b50610268600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611387565b005b34801561027657600080fd5b5061033e6004803603810190808035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506117f0565b005b34801561034c57600080fd5b5061035561196e565b60405180826000191660001916815260200191505060405180910390f35b34801561037f57600080fd5b50610420600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611995565b604051808215151515815260200191505060405180910390f35b34801561044657600080fd5b5061047b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119eb565b604051808215151515815260200191505060405180910390f35b3480156104a157600080fd5b50610533600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611a6d565b604051808215151515815260200191505060405180910390f35b34801561055957600080fd5b5061057c6004803603810190808035600019169060200190929190505050611b99565b6040518082815260200191505060405180910390f35b34801561059e57600080fd5b506105d3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611bb1565b005b3480156105e157600080fd5b5061060060048036038101908080359060200190929190505050611ff2565b005b34801561060e57600080fd5b50610744600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061223d565b604051808215151515815260200191505060405180910390f35b34801561076a57600080fd5b506107ad600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080356000191690602001909291905050506124e8565b6040518082815260200191505060405180910390f35b3480156107cf57600080fd5b50610804600480360381019080803573ffffffffffffffffffffffffffffffffffffff
"sourceMap": "534:14254:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;534:14254:0;;;;;;;",
"deployedSourceMap": "534:14254:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11898:357;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11898:357:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2225:627:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2225:627:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2198:308:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2198:308:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;820:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;820:118:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11293:447;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11293:447:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5925:129:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5925:129:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2785:429:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2785:429:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1649:49:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1649:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1182:495:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1182:495:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;5357:441:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5357:441:6;;;;;;;;;;;;;;;;;;;;;;;;;;3493:1450:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3493:1450:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1809:69;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1809:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;10831:130:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10831:130:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;488:55:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:55:5;;;;;;;;;;;;;;;;;;;;;;;;;;;419:54:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;419:54:6;;;;;;;;;;;;;;;;;;;;;;;;;;;6136:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6136:458:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6136:458:6;;;;;;;;;;;;;;;;;646:43:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;646:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;646:43:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1490:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1490:20:0;;;;;;;;;;;;;;;;;;;;;;;3293:738:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3293:738:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3293:738:5;;;;;;;;;;;;;;;;;1329:110:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1329:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9652:572;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9652:572:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1148:109;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1148:109:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10468:201;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10468:201:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14289:497;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14289:497:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1938:511:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1938:511:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4345:823:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4345:823:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5804:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5804:115:6;;;;;;;;;;;;;;;;;;;;;;;12968:635:0;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12968:635:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
"source": "pragma solidity 0.4.24;\nimport \"./base/BaseSafe.sol\";\nimport \"./common/MasterCopy.sol\";\nimport \"./common/SignatureDecoder.sol\";\nimport \"./common/SecuredTokenTransfer.sol\";\nimport \"./interfaces/ISignatureValidator.sol\";\n\n/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - <stefan@gnosis.pm>\n/// @author Richard Meissner - <richard@gnosis.pm>\n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafe is MasterCopy, BaseSafe, SignatureDecoder, SecuredTokenTransfer, ISignatureValidator {\n\n string public constant NAME = \"Gnosis Safe\";\n string public constant VERSION = \"0.0.2\";\n\n //keccak256(\n // \"EIP712Domain(address verifyingContract)\"\n //);\n bytes32 public constant DOMAIN_SEPARATOR_TYPEHASH = 0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749;\n\n //keccak256(\n // \"SafeTx(address to,uint256 value,bytes data,uint8 operation,uint256 safeTxGas,uint256 dataGas,uint256 gasPrice,address gasToken,address refundReceiver,uint256 nonce)\"\n //);\n bytes32 public constant SAFE_TX_TYPEHASH = 0x14d461bc7412367e924637b363c7bf29b8f47e2f84869f4426e5633d8af47b20;\n\n //keccak256(\n // \"SafeMessage(bytes message)\"\n //);\n bytes32 public constant SAFE_MSG_TYPEHASH = 0x60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca;\n\n event ExecutionFailed(bytes32 txHash);\n\n uint256 public nonce;\n bytes32 public domainSeparator;\n // Mapping to keep track of all message hashes that have been approve by ALL REQUIRED owners\n mapping(bytes32 => uint256) public signedMessages;\n // Mapping to keep track of all hashes (message or transaction) that have been approve by ANY owners\n mapping(address => mapping(bytes32 => uint256)) public approvedHashes;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint256 _threshold, address to, bytes data)\n public\n {\n require(domainSeparator == 0, \"Domain Separator already set!\");\n domainSeparator = keccak256(abi.encode(DOMAIN_SEPARATOR_TYPEHASH, this));\n setupSafe(_owners, _threshold, to, data);\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction.\n /// Note: The fees are always transfered, even if the user transaction fails.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction and to pay the payment transfer\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin).\n /// @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})\n function execTransaction(\n address to,\n uint256 value,\n bytes data,\n Enum.Operation operation,\n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n address refundReceiver,\n bytes signatures\n )\n public\n returns (bool success)\n {\n uint256 startGas = gasleft();\n bytes memory txHashData = encodeTransactionData(\n to, value, data, operation, // Trans
2018-09-26 09:19:53 +00:00
"sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"ast": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"exportedSymbols": {
"GnosisSafe": [
692
]
},
"id": 693,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "0:23:0"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/base/BaseSafe.sol",
"file": "./base/BaseSafe.sol",
"id": 2,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 783,
"src": "24:29:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/MasterCopy.sol",
"file": "./common/MasterCopy.sol",
"id": 3,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 1694,
"src": "54:33:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SignatureDecoder.sol",
"file": "./common/SignatureDecoder.sol",
"id": 4,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 1792,
"src": "88:39:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SecuredTokenTransfer.sol",
"file": "./common/SecuredTokenTransfer.sol",
"id": 5,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 1719,
"src": "128:43:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ISignatureValidator.sol",
"file": "./interfaces/ISignatureValidator.sol",
"id": 6,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 1804,
"src": "172:46:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 7,
"name": "MasterCopy",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1693,
"src": "557:10:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_MasterCopy_$1693",
"typeString": "contract MasterCopy"
}
},
"id": 8,
"nodeType": "InheritanceSpecifier",
"src": "557:10:0"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 9,
"name": "BaseSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 782,
"src": "569:8:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_BaseSafe_$782",
"typeString": "contract BaseSafe"
}
},
"id": 10,
"nodeType": "InheritanceSpecifier",
"src": "569:8:0"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 11,
"name": "SignatureDecoder",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1791,
"src": "579:16:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SignatureDecoder_$1791",
"typeString": "contract SignatureDecoder"
}
},
"id": 12,
"nodeType": "InheritanceSpecifier",
"src": "579:16:0"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 13,
"name": "SecuredTokenTransfer",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1718,
"src": "597:20:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SecuredTokenTransfer_$1718",
"typeString": "contract SecuredTokenTransfer"
}
},
"id": 14,
"nodeType": "InheritanceSpecifier",
"src": "597:20:0"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 15,
"name": "ISignatureValidator",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1803,
"src": "619:19:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISignatureValidator_$1803",
"typeString": "contract ISignatureValidator"
}
},
"id": 16,
"nodeType": "InheritanceSpecifier",
"src": "619:19:0"
}
],
"contractDependencies": [
782,
892,
1212,
1652,
1666,
1693,
1718,
1735,
1791,
1803
],
"contractKind": "contract",
"documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - <stefan@gnosis.pm>\n @author Richard Meissner - <richard@gnosis.pm>\n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment",
"fullyImplemented": true,
"id": 692,
"linearizedBaseContracts": [
692,
1803,
1718,
1791,
782,
1652,
1212,
892,
1666,
1693,
1735
],
"name": "GnosisSafe",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 19,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "646:43:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string"
},
"typeName": {
"id": 17,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "646:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"argumentTypes": null,
"hexValue": "476e6f7369732053616665",
"id": 18,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "676:13:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63",
"typeString": "literal_string \"Gnosis Safe\""
},
"value": "Gnosis Safe"
},
"visibility": "public"
},
{
"constant": true,
"id": 22,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "695:40:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string"
},
"typeName": {
"id": 20,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "695:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e32",
"id": 21,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "728:7:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b30367effb941b728181f67f3bd24a38a4fff408ee7fb3b074425c9fb5e9be74",
"typeString": "literal_string \"0.0.2\""
},
"value": "0.0.2"
},
"visibility": "public"
},
{
"constant": true,
"id": 25,
"name": "DOMAIN_SEPARATOR_TYPEHASH",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "820:118:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 23,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "820:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307830333561666638336438363933376433356233326530346630646463366666343639323930656566326631623639326438613831356338393430346434373439",
"id": 24,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "872:66:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1517718281442037948617199096126532355110765202990829672390711201829802035017_by_1",
"typeString": "int_const 1517...(68 digits omitted)...5017"
},
"value": "0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749"
},
"visibility": "public"
},
{
"constant": true,
"id": 28,
"name": "SAFE_TX_TYPEHASH",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "1148:109:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 26,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1148:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307831346434363162633734313233363765393234363337623336336337626632396238663437653266383438363966343432366535363333643861663437623230",
"id": 27,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1191:66:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9421503099487675527562227662599058764916562750590033657944341861770225548064_by_1",
"typeString": "int_const 9421...(68 digits omitted)...8064"
},
"value": "0x14d461bc7412367e924637b363c7bf29b8f47e2f84869f4426e5633d8af47b20"
},
"visibility": "public"
},
{
"constant": true,
"id": 31,
"name": "SAFE_MSG_TYPEHASH",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "1329:110:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 29,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1329:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307836306233636266386234613232336436386436343162336236646466396132393865376633333731306366336433613964313134366235613631353066626361",
"id": 30,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1373:66:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_43739706848186989041152069077571617734008543096732098246335109361212071148490_by_1",
"typeString": "int_const 4373...(69 digits omitted)...8490"
},
"value": "0x60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca"
},
"visibility": "public"
},
{
"anonymous": false,
"documentation": null,
"id": 35,
"name": "ExecutionFailed",
"nodeType": "EventDefinition",
"parameters": {
"id": 34,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33,
"indexed": false,
"name": "txHash",
"nodeType": "VariableDeclaration",
"scope": 35,
2018-10-05 15:26:48 +00:00
"src": "1468:14:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 32,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1468:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "1467:16:0"
2018-09-26 09:19:53 +00:00
},
2018-10-05 15:26:48 +00:00
"src": "1446:38:0"
2018-09-26 09:19:53 +00:00
},
{
"constant": false,
"id": 37,
"name": "nonce",
"nodeType": "VariableDeclaration",
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "1490:20:0",
2018-09-26 09:19:53 +00:00
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 36,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1490:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 39,
"name": "domainSeparator",
"nodeType": "VariableDeclaration",
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "1516:30:0",
2018-09-26 09:19:53 +00:00
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 38,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1516:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 43,
2018-10-05 15:26:48 +00:00
"name": "signedMessages",
2018-09-26 09:19:53 +00:00
"nodeType": "VariableDeclaration",
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "1649:49:0",
2018-09-26 09:19:53 +00:00
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"typeName": {
"id": 42,
"keyType": {
"id": 40,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1657:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
2018-10-05 15:26:48 +00:00
"src": "1649:27:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"valueType": {
"id": 41,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1668:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"value": null,
2018-10-05 15:26:48 +00:00
"visibility": "public"
2018-09-26 09:19:53 +00:00
},
{
"constant": false,
"id": 49,
"name": "approvedHashes",
"nodeType": "VariableDeclaration",
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "1809:69:0",
2018-09-26 09:19:53 +00:00
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
},
"typeName": {
"id": 48,
"keyType": {
"id": 44,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1817:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
2018-10-05 15:26:48 +00:00
"src": "1809:47:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
},
"valueType": {
"id": 47,
"keyType": {
"id": 45,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1836:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
2018-10-05 15:26:48 +00:00
"src": "1828:27:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"valueType": {
"id": 46,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1847:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
}
},
"value": null,
2018-10-05 15:26:48 +00:00
"visibility": "public"
2018-09-26 09:19:53 +00:00
},
{
"body": {
"id": 85,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "2295:211:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"id": 64,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 62,
"name": "domainSeparator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
2018-10-05 15:26:48 +00:00
"src": "2313:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 63,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "2332:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "2313:20:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "446f6d61696e20536570617261746f7220616c72656164792073657421",
"id": 65,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "2335:31:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a2e1f2db9cd32eaa6a2caa3d6caa726a30dc0417d866440bfe13d6a6d030e5e2",
"typeString": "literal_string \"Domain Separator already set!\""
},
"value": "Domain Separator already set!"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_a2e1f2db9cd32eaa6a2caa3d6caa726a30dc0417d866440bfe13d6a6d030e5e2",
"typeString": "literal_string \"Domain Separator already set!\""
}
],
"id": 61,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "2305:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 66,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "2305:62:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 67,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "2305:62:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"id": 76,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 68,
"name": "domainSeparator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
2018-10-05 15:26:48 +00:00
"src": "2377:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 72,
"name": "DOMAIN_SEPARATOR_TYPEHASH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
2018-10-05 15:26:48 +00:00
"src": "2416:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 73,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4052,
"src": "2443:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$692",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_contract$_GnosisSafe_$692",
"typeString": "contract GnosisSafe"
}
],
"expression": {
"argumentTypes": null,
"id": 70,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "2405:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 71,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "2405:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 74,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "2405:43:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 69,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "2395:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 75,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "2395:54:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
2018-10-05 15:26:48 +00:00
"src": "2377:72:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 77,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "2377:72:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 79,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 52,
2018-10-05 15:26:48 +00:00
"src": "2469:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"id": 80,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 54,
2018-10-05 15:26:48 +00:00
"src": "2478:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 81,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
2018-10-05 15:26:48 +00:00
"src": "2490:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 82,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 58,
2018-10-05 15:26:48 +00:00
"src": "2494:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 78,
"name": "setupSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 781,
2018-10-05 15:26:48 +00:00
"src": "2459:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address[] memory,uint256,address,bytes memory)"
}
},
"id": 83,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "2459:40:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 84,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "2459:40:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.",
"id": 86,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 59,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 52,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 86,
2018-10-05 15:26:48 +00:00
"src": "2213:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 50,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "2213:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 51,
"length": null,
"nodeType": "ArrayTypeName",
2018-10-05 15:26:48 +00:00
"src": "2213:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 54,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 86,
2018-10-05 15:26:48 +00:00
"src": "2232:18:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 53,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "2232:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 56,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 86,
2018-10-05 15:26:48 +00:00
"src": "2252:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 55,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "2252:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 58,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 86,
2018-10-05 15:26:48 +00:00
"src": "2264:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 57,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "2264:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "2212:63:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 60,
"nodeType": "ParameterList",
"parameters": [],
2018-10-05 15:26:48 +00:00
"src": "2295:0:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "2198:308:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 197,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "3833:1110:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
112
],
"declarations": [
{
"constant": false,
"id": 112,
"name": "startGas",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3843:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 111,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3843:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 115,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 113,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "3862:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 114,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "3862:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "3843:28:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [
117
],
"declarations": [
{
"constant": false,
"id": 117,
"name": "txHashData",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3881:23:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 116,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3881:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 130,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 119,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 88,
2018-10-05 15:26:48 +00:00
"src": "3942:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 120,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 90,
2018-10-05 15:26:48 +00:00
"src": "3946:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 121,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 92,
2018-10-05 15:26:48 +00:00
"src": "3953:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 122,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
2018-10-05 15:26:48 +00:00
"src": "3959:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"id": 123,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
2018-10-05 15:26:48 +00:00
"src": "4002:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 124,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 98,
2018-10-05 15:26:48 +00:00
"src": "4013:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 125,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 100,
2018-10-05 15:26:48 +00:00
"src": "4022:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 126,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
2018-10-05 15:26:48 +00:00
"src": "4032:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 127,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 104,
2018-10-05 15:26:48 +00:00
"src": "4042:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 128,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
2018-10-05 15:26:48 +00:00
"src": "4086:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 118,
"name": "encodeTransactionData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 650,
2018-10-05 15:26:48 +00:00
"src": "3907:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$1658_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,address,uint256) view returns (bytes memory)"
}
},
"id": 129,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "3907:194:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "3881:220:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 134,
"name": "txHashData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
2018-10-05 15:26:48 +00:00
"src": "4145:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 133,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "4135:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 135,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4135:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 136,
"name": "txHashData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
2018-10-05 15:26:48 +00:00
"src": "4158:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 137,
"name": "signatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 106,
2018-10-05 15:26:48 +00:00
"src": "4170:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"hexValue": "74727565",
"id": 138,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4182:4:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 132,
"name": "checkSignatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 428,
2018-10-05 15:26:48 +00:00
"src": "4119:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bool_$",
"typeString": "function (bytes32,bytes memory,bytes memory,bool) returns (bool)"
}
},
"id": 139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4119:68:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "496e76616c6964207369676e6174757265732070726f7669646564",
"id": 140,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4189:29:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_85bcea44c930431ef19052d068cc504a81260341ae6c5ee84bb5a38ec55acf05",
"typeString": "literal_string \"Invalid signatures provided\""
},
"value": "Invalid signatures provided"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_85bcea44c930431ef19052d068cc504a81260341ae6c5ee84bb5a38ec55acf05",
"typeString": "literal_string \"Invalid signatures provided\""
}
],
"id": 131,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "4111:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 141,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4111:108:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 142,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4111:108:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"id": 144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
2018-10-05 15:26:48 +00:00
"src": "4280:7:0",
2018-09-26 09:19:53 +00:00
"subExpression": {
"argumentTypes": null,
"id": 143,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
2018-10-05 15:26:48 +00:00
"src": "4280:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 145,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4280:7:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 147,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "4305:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 148,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4305:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 149,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
2018-10-05 15:26:48 +00:00
"src": "4318:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "4305:22:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e",
"id": 151,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4329:44:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18",
"typeString": "literal_string \"Not enough gas to execute safe transaction\""
},
"value": "Not enough gas to execute safe transaction"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18",
"typeString": "literal_string \"Not enough gas to execute safe transaction\""
}
],
"id": 146,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "4297:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 152,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4297:77:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 153,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4297:77:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"id": 172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 154,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 109,
2018-10-05 15:26:48 +00:00
"src": "4491:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 156,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 88,
2018-10-05 15:26:48 +00:00
"src": "4509:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 157,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 90,
2018-10-05 15:26:48 +00:00
"src": "4513:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 158,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 92,
2018-10-05 15:26:48 +00:00
"src": "4520:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 159,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
2018-10-05 15:26:48 +00:00
"src": "4526:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 166,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 162,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 160,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
2018-10-05 15:26:48 +00:00
"src": "4537:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 161,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4550:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "4537:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 165,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 163,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 100,
2018-10-05 15:26:48 +00:00
"src": "4555:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 164,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4567:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "4555:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "4537:31:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"argumentTypes": null,
"id": 169,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
2018-10-05 15:26:48 +00:00
"src": "4583:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 170,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
2018-10-05 15:26:48 +00:00
"src": "4537:55:0",
2018-09-26 09:19:53 +00:00
"trueExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 167,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "4571:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 168,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4571:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 155,
"name": "execute",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 854,
2018-10-05 15:26:48 +00:00
"src": "4501:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$1658_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)"
}
},
"id": 171,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4501:92:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "4491:102:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 173,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4491:102:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"id": 175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
2018-10-05 15:26:48 +00:00
"src": "4607:8:0",
2018-09-26 09:19:53 +00:00
"subExpression": {
"argumentTypes": null,
"id": 174,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 109,
2018-10-05 15:26:48 +00:00
"src": "4608:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 183,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "4603:82:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 182,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "4617:68:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 178,
"name": "txHashData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
2018-10-05 15:26:48 +00:00
"src": "4662:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 177,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "4652:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 179,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4652:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 176,
"name": "ExecutionFailed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
2018-10-05 15:26:48 +00:00
"src": "4636:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
"typeString": "function (bytes32)"
}
},
"id": 180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4636:38:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 181,
"nodeType": "EmitStatement",
2018-10-05 15:26:48 +00:00
"src": "4631:43:0"
2018-09-26 09:19:53 +00:00
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 184,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 100,
2018-10-05 15:26:48 +00:00
"src": "4830:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 185,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4841:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "4830:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 196,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "4826:111:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 195,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "4844:93:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 188,
"name": "startGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 112,
2018-10-05 15:26:48 +00:00
"src": "4872:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 189,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 98,
2018-10-05 15:26:48 +00:00
"src": "4882:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 190,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 100,
2018-10-05 15:26:48 +00:00
"src": "4891:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 191,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
2018-10-05 15:26:48 +00:00
"src": "4901:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 192,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 104,
2018-10-05 15:26:48 +00:00
"src": "4911:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 187,
"name": "handlePayment",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 262,
2018-10-05 15:26:48 +00:00
"src": "4858:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$",
"typeString": "function (uint256,uint256,uint256,address,address)"
}
},
"id": 193,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4858:68:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 194,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4858:68:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
},
2018-10-05 15:26:48 +00:00
"documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction.\n Note: The fees are always transfered, even if the user transaction fails.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction and to pay the payment transfer\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin).\n @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})",
2018-09-26 09:19:53 +00:00
"id": 198,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "execTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 107,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 88,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3527:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 87,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3527:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 90,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3547:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 89,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3547:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 92,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3570:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 91,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3570:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 94,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3590:24:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
"typeName": {
"contractScope": null,
"id": 93,
"name": "Enum.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1658,
2018-10-05 15:26:48 +00:00
"src": "3590:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 96,
"name": "safeTxGas",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3624:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 95,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3624:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 98,
"name": "dataGas",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3651:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 97,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3651:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 100,
"name": "gasPrice",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3676:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 99,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3676:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 102,
"name": "gasToken",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3702:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 101,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3702:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 104,
"name": "refundReceiver",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3728:22:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 103,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3728:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 106,
"name": "signatures",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3760:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 105,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3760:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "3517:265:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 110,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 109,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3815:12:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 108,
"name": "bool",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3815:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "3814:14:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "3493:1450:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 261,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "5132:532:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
212
],
"declarations": [
{
"constant": false,
"id": 212,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5142:14:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 211,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5142:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 223,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 222,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 219,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 216,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 213,
"name": "gasUsed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 200,
2018-10-05 15:26:48 +00:00
"src": "5161:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 214,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "5171:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5171:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "5161:19:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 217,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
2018-10-05 15:26:48 +00:00
"src": "5160:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 218,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 202,
2018-10-05 15:26:48 +00:00
"src": "5184:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "5160:31:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 220,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
2018-10-05 15:26:48 +00:00
"src": "5159:33:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"id": 221,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 204,
2018-10-05 15:26:48 +00:00
"src": "5195:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "5159:44:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "5142:61:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [
225
],
"declarations": [
{
"constant": false,
"id": 225,
"name": "receiver",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5271:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 224,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5271:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 235,
"initialValue": {
"argumentTypes": null,
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 226,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 208,
2018-10-05 15:26:48 +00:00
"src": "5290:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 228,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "5316:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 227,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "5308:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 229,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5308:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "5290:28:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"argumentTypes": null,
"id": 233,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 208,
2018-10-05 15:26:48 +00:00
"src": "5333:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 234,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
2018-10-05 15:26:48 +00:00
"src": "5290:57:0",
2018-09-26 09:19:53 +00:00
"trueExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 231,
"name": "tx",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4027,
"src": "5321:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_transaction",
"typeString": "tx"
}
},
"id": 232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "origin",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "5321:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "5271:76:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 240,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 236,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 206,
2018-10-05 15:26:48 +00:00
"src": "5361:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 238,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "5381:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 237,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "5373:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 239,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5373:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "5361:22:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 259,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "5545:113:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 252,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 206,
2018-10-05 15:26:48 +00:00
"src": "5581:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 253,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
2018-10-05 15:26:48 +00:00
"src": "5591:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 254,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 212,
2018-10-05 15:26:48 +00:00
"src": "5601:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 251,
"name": "transferToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1717,
2018-10-05 15:26:48 +00:00
"src": "5567:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) returns (bool)"
}
},
"id": 255,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5567:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e",
"id": 256,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "5610:36:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4",
"typeString": "literal_string \"Could not pay gas costs with token\""
},
"value": "Could not pay gas costs with token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4",
"typeString": "literal_string \"Could not pay gas costs with token\""
}
],
"id": 250,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "5559:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 257,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5559:88:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 258,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "5559:88:0"
2018-09-26 09:19:53 +00:00
}
]
},
"id": 260,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "5357:301:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 249,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "5385:154:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 244,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 212,
2018-10-05 15:26:48 +00:00
"src": "5482:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 242,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
2018-10-05 15:26:48 +00:00
"src": "5468:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "send",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "5468:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) returns (bool)"
}
},
"id": 245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5468:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "436f756c64206e6f74207061792067617320636f7374732077697468206574686572",
"id": 246,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "5491:36:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e2a11e15f7be1214c1340779ad55027af8aa33aee6cb521776a28a0a44aea377",
"typeString": "literal_string \"Could not pay gas costs with ether\""
},
"value": "Could not pay gas costs with ether"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e2a11e15f7be1214c1340779ad55027af8aa33aee6cb521776a28a0a44aea377",
"typeString": "literal_string \"Could not pay gas costs with ether\""
}
],
"id": 241,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "5460:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 247,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5460:68:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 248,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "5460:68:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
},
"documentation": null,
"id": 262,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "handlePayment",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 209,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 200,
"name": "gasUsed",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "4981:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 199,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "4981:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 202,
"name": "dataGas",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5006:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 201,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5006:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 204,
"name": "gasPrice",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5031:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 203,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5031:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 206,
"name": "gasToken",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5057:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 205,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5057:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 208,
"name": "refundReceiver",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5083:22:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 207,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5083:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "4971:140:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 210,
"nodeType": "ParameterList",
"parameters": [],
2018-10-05 15:26:48 +00:00
"src": "5132:0:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "4949:715:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "private"
},
{
"body": {
"id": 427,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "6415:2326:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 280,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 275,
"name": "signatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 268,
2018-10-05 15:26:48 +00:00
"src": "6496:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "6496:17:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 279,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 277,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1242,
2018-10-05 15:26:48 +00:00
"src": "6516:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3635",
"id": 278,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6528:2:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_65_by_1",
"typeString": "int_const 65"
},
"value": "65"
},
2018-10-05 15:26:48 +00:00
"src": "6516:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "6496:34:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 284,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "6492:77:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 283,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "6532:37:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 281,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6553:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 274,
"id": 282,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "6546:12:0"
2018-09-26 09:19:53 +00:00
}
]
}
},
{
"assignments": [
286
],
"declarations": [
{
"constant": false,
"id": 286,
"name": "lastOwner",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6630:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 285,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6630:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 290,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 288,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6658:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "6650:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 289,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "6650:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6630:30:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 292,
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6670:20:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 291,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6670:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 293,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6670:20:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 295,
"name": "v",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6700:7:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 294,
"name": "uint8",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6700:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 296,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6700:7:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 298,
"name": "r",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6717:9:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 297,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6717:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 299,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6717:9:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 301,
"name": "s",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6736:9:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 300,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6736:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 302,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6736:9:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 304,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6755:9:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 303,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6755:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 305,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6755:9:0"
2018-09-26 09:19:53 +00:00
},
{
"body": {
"id": 423,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "6806:1908:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 324,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"id": 316,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 295,
2018-10-05 15:26:48 +00:00
"src": "6821:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 317,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
2018-10-05 15:26:48 +00:00
"src": "6824:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 318,
"name": "s",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 301,
2018-10-05 15:26:48 +00:00
"src": "6827:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 319,
"isConstant": false,
"isInlineArray": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "TupleExpression",
2018-10-05 15:26:48 +00:00
"src": "6820:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
"typeString": "tuple(uint8,bytes32,bytes32)"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 321,
"name": "signatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 268,
2018-10-05 15:26:48 +00:00
"src": "6847:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 322,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 304,
2018-10-05 15:26:48 +00:00
"src": "6859:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 320,
"name": "signatureSplit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1790,
2018-10-05 15:26:48 +00:00
"src": "6832:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$",
"typeString": "function (bytes memory,uint256) pure returns (uint8,bytes32,bytes32)"
}
},
"id": 323,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "6832:29:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
"typeString": "tuple(uint8,bytes32,bytes32)"
}
},
2018-10-05 15:26:48 +00:00
"src": "6820:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 325,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "6820:41:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 328,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 326,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 295,
2018-10-05 15:26:48 +00:00
"src": "6936:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 327,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6941:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "6936:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 352,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 295,
2018-10-05 15:26:48 +00:00
"src": "7691:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 353,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "7696:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
2018-10-05 15:26:48 +00:00
"src": "7691:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 403,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "8399:149:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 394,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8490:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 396,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 264,
2018-10-05 15:26:48 +00:00
"src": "8515:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 397,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 295,
2018-10-05 15:26:48 +00:00
"src": "8525:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 398,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
2018-10-05 15:26:48 +00:00
"src": "8528:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 399,
"name": "s",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 301,
2018-10-05 15:26:48 +00:00
"src": "8531:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 395,
"name": "ecrecover",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4007,
"src": "8505:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
}
},
"id": 400,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "8505:28:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8490:43:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 402,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "8490:43:0"
2018-09-26 09:19:53 +00:00
}
]
},
"id": 404,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "7687:861:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 393,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "7699:694:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 359,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 355,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "7812:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 357,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
2018-10-05 15:26:48 +00:00
"src": "7835:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 356,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "7827:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 358,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "7827:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "7812:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 360,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "7812:25:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 361,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4015,
"src": "8004:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "8004:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 363,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8018:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8004:26:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 371,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 365,
"name": "approvedHashes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
2018-10-05 15:26:48 +00:00
"src": "8034:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
}
},
"id": 367,
"indexExpression": {
"argumentTypes": null,
"id": 366,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8049:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8034:28:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 369,
"indexExpression": {
"argumentTypes": null,
"id": 368,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 264,
2018-10-05 15:26:48 +00:00
"src": "8063:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8034:38:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 370,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8076:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "8034:43:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "8004:73:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 376,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "8000:132:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 375,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "8079:53:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8108:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 274,
"id": 374,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "8101:12:0"
2018-09-26 09:19:53 +00:00
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 382,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 377,
"name": "consumeHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 270,
2018-10-05 15:26:48 +00:00
"src": "8253:11:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 381,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 378,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4015,
"src": "8268:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 379,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "8268:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 380,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8282:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8268:26:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "8253:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 392,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "8249:130:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 391,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "8296:83:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 389,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 383,
"name": "approvedHashes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
2018-10-05 15:26:48 +00:00
"src": "8318:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
}
},
"id": 386,
"indexExpression": {
"argumentTypes": null,
"id": 384,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8333:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8318:28:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 387,
"indexExpression": {
"argumentTypes": null,
"id": 385,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 264,
2018-10-05 15:26:48 +00:00
"src": "8347:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8318:38:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 388,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8359:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "8318:42:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 390,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "8318:42:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
}
},
"id": 405,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "6932:1616:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 351,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "6944:737:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 333,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 329,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "7061:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 331,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
2018-10-05 15:26:48 +00:00
"src": "7084:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 330,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "7076:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 332,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "7076:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "7061:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 334,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "7061:25:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 336,
"name": "contractSignature",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "7104:30:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 335,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "7104:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 337,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "7104:30:0"
2018-09-26 09:19:53 +00:00
},
{
"externalReferences": [
{
"contractSignature": {
"declaration": 336,
"isOffset": false,
"isSlot": false,
2018-10-05 15:26:48 +00:00
"src": "7394:17:0",
2018-09-26 09:19:53 +00:00
"valueSize": 1
}
},
{
"signatures": {
"declaration": 268,
"isOffset": false,
"isSlot": false,
2018-10-05 15:26:48 +00:00
"src": "7423:10:0",
2018-09-26 09:19:53 +00:00
"valueSize": 1
}
},
{
"s": {
"declaration": 301,
"isOffset": false,
"isSlot": false,
2018-10-05 15:26:48 +00:00
"src": "7435:1:0",
2018-09-26 09:19:53 +00:00
"valueSize": 1
}
}
],
"id": 338,
"nodeType": "InlineAssembly",
"operations": "{\n contractSignature := add(add(signatures, s), 0x20)\n}",
2018-10-05 15:26:48 +00:00
"src": "7224:257:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"id": 346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
2018-10-05 15:26:48 +00:00
"src": "7483:76:0",
2018-09-26 09:19:53 +00:00
"subExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 343,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 266,
2018-10-05 15:26:48 +00:00
"src": "7535:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 344,
"name": "contractSignature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 336,
2018-10-05 15:26:48 +00:00
"src": "7541:17:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 340,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "7504:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 339,
"name": "ISignatureValidator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1803,
2018-10-05 15:26:48 +00:00
"src": "7484:19:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ISignatureValidator_$1803_$",
"typeString": "type(contract ISignatureValidator)"
}
},
"id": 341,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "7484:33:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISignatureValidator_$1803",
"typeString": "contract ISignatureValidator"
}
},
"id": 342,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isValidSignature",
"nodeType": "MemberAccess",
"referencedDeclaration": 1802,
2018-10-05 15:26:48 +00:00
"src": "7484:50:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (bytes memory,bytes memory) external returns (bool)"
}
},
"id": 345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "7484:75:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 350,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "7479:135:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 349,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "7561:53:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 347,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "7590:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 274,
"id": 348,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "7583:12:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 414,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 408,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 406,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8565:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 407,
"name": "lastOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 286,
2018-10-05 15:26:48 +00:00
"src": "8581:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8565:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 413,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 409,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1238,
2018-10-05 15:26:48 +00:00
"src": "8594:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 411,
"indexExpression": {
"argumentTypes": null,
"id": 410,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8601:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8594:20:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 412,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8618:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "8594:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "8565:54:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 418,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "8561:105:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 417,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "8621:45:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 415,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8646:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 274,
"id": 416,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "8639:12:0"
2018-09-26 09:19:53 +00:00
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 421,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 419,
"name": "lastOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 286,
2018-10-05 15:26:48 +00:00
"src": "8679:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 420,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8691:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8679:24:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 422,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "8679:24:0"
2018-09-26 09:19:53 +00:00
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 312,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 310,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 304,
2018-10-05 15:26:48 +00:00
"src": "6786:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 311,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1242,
2018-10-05 15:26:48 +00:00
"src": "6790:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "6786:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 424,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 308,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 306,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 304,
2018-10-05 15:26:48 +00:00
"src": "6779:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 307,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6783:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "6779:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 309,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "6779:5:0"
2018-09-26 09:19:53 +00:00
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
2018-10-05 15:26:48 +00:00
"src": "6801:3:0",
2018-09-26 09:19:53 +00:00
"subExpression": {
"argumentTypes": null,
"id": 313,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 304,
2018-10-05 15:26:48 +00:00
"src": "6801:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 315,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "6801:3:0"
2018-09-26 09:19:53 +00:00
},
"nodeType": "ForStatement",
2018-10-05 15:26:48 +00:00
"src": "6774:1940:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 425,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8730:4:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 274,
"id": 426,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "8723:11:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Should return whether the signature provided is valid for the provided data, hash\n@param dataHash Hash of the data (could be either a message hash or transaction hash)\n@param data That should be signed (this is passed to an external validator contract)\n@param signatures Signature data that should be verified. Can be ECDSA signature, contract signature (EIP-1271) or approved hash.\n@param consumeHash Indicates that in case of an approved hash the storage can be freed to save gas\n@return a bool upon valid or invalid signature with corresponding _data",
"id": 428,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "checkSignatures",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 271,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 264,
"name": "dataHash",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6305:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 263,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6305:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 266,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6323:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 265,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6323:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 268,
"name": "signatures",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6335:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 267,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6335:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 270,
"name": "consumeHash",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6353:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 269,
"name": "bool",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6353:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "6304:66:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 274,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 273,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6405:4:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 272,
"name": "bool",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6405:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "6404:6:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "6280:2461:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 475,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "9804:420:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
444
],
"declarations": [
{
"constant": false,
"id": 444,
"name": "startGas",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9814:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 443,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9814:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 447,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 445,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "9833:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 446,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "9833:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "9814:28:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 450,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 430,
2018-10-05 15:26:48 +00:00
"src": "10004:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 451,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 432,
2018-10-05 15:26:48 +00:00
"src": "10008:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 452,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 434,
2018-10-05 15:26:48 +00:00
"src": "10015:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 453,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 436,
2018-10-05 15:26:48 +00:00
"src": "10021:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 454,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "10032:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 455,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10032:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 449,
"name": "execute",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 854,
2018-10-05 15:26:48 +00:00
"src": "9996:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$1658_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)"
}
},
"id": 456,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "9996:46:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 448,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4018,
"src": "9988:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 457,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "9988:55:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 458,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "9988:55:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [
460
],
"declarations": [
{
"constant": false,
"id": 460,
"name": "requiredGas",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "10053:19:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 459,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "10053:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 465,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 461,
"name": "startGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 444,
2018-10-05 15:26:48 +00:00
"src": "10075:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 462,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "10086:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 463,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10086:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "10075:20:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "10053:42:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 470,
"name": "requiredGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 460,
2018-10-05 15:26:48 +00:00
"src": "10203:11:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 468,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "10186:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 469,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "10186:16:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 471,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10186:29:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 467,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "10179:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": "string"
},
"id": 472,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10179:37:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
}
],
"id": 466,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4020,
4021
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4021,
"src": "10172:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 473,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10172:45:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 474,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "10172:45:0"
2018-09-26 09:19:53 +00:00
}
]
},
2018-10-05 15:26:48 +00:00
"documentation": "@dev Allows to estimate a Safe transaction.\n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).",
2018-09-26 09:19:53 +00:00
"id": 476,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 439,
"modifierName": {
"argumentTypes": null,
"id": 438,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1734,
2018-10-05 15:26:48 +00:00
"src": "9763:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
2018-10-05 15:26:48 +00:00
"src": "9763:10:0"
2018-09-26 09:19:53 +00:00
}
],
"name": "requiredTxGas",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 437,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 430,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9675:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 429,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9675:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 432,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9687:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 431,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9687:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 434,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9702:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 433,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9702:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 436,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9714:24:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
"typeName": {
"contractScope": null,
"id": 435,
"name": "Enum.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1658,
2018-10-05 15:26:48 +00:00
"src": "9714:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "9674:65:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 442,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 441,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9791:7:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 440,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9791:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "9790:9:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "9652:572:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 500,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "10531:138:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 487,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 482,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1238,
2018-10-05 15:26:48 +00:00
"src": "10549:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 485,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 483,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4015,
"src": "10556:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 484,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "10556:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "10549:18:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 486,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "10571:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "10549:23:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4f6e6c79206f776e6572732063616e20617070726f766520612068617368",
"id": 488,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "10574:32:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_60f21058f4a7689ef29853b3c9c17c9bf69856a949794649bb68878f00552475",
"typeString": "literal_string \"Only owners can approve a hash\""
},
"value": "Only owners can approve a hash"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_60f21058f4a7689ef29853b3c9c17c9bf69856a949794649bb68878f00552475",
"typeString": "literal_string \"Only owners can approve a hash\""
}
],
"id": 481,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "10541:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 489,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10541:66:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 490,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "10541:66:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"id": 498,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 491,
"name": "approvedHashes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
2018-10-05 15:26:48 +00:00
"src": "10617:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
}
},
"id": 495,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 492,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4015,
"src": "10632:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "10632:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "10617:26:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 496,
"indexExpression": {
"argumentTypes": null,
"id": 494,
"name": "hashToApprove",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 478,
2018-10-05 15:26:48 +00:00
"src": "10644:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "10617:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 497,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "10661:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
2018-10-05 15:26:48 +00:00
"src": "10617:45:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 499,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "10617:45:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Marks a hash as approved. This can be used to validate a hash that is used by a signature.\n@param hashToApprove The hash that should be marked as approved for signatures that are verified by this contract.",
"id": 501,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "approveHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 479,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 478,
"name": "hashToApprove",
"nodeType": "VariableDeclaration",
"scope": 501,
2018-10-05 15:26:48 +00:00
"src": "10489:21:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 477,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "10489:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "10488:23:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 480,
"nodeType": "ParameterList",
"parameters": [],
2018-10-05 15:26:48 +00:00
"src": "10531:0:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "10468:201:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 516,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "10903:58:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 514,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 508,
2018-10-05 15:26:48 +00:00
"name": "signedMessages",
2018-09-26 09:19:53 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
2018-10-05 15:26:48 +00:00
"src": "10913:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 512,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 510,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 503,
2018-10-05 15:26:48 +00:00
"src": "10943:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 509,
"name": "getMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 591,
2018-10-05 15:26:48 +00:00
"src": "10928:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) view returns (bytes32)"
}
},
"id": 511,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10928:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "10913:37:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 513,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "10953:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
2018-10-05 15:26:48 +00:00
"src": "10913:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 515,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "10913:41:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Marks a message as signed\n@param _data Arbitrary length data that should be marked as signed on the behalf of address(this)",
"id": 517,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 506,
"modifierName": {
"argumentTypes": null,
"id": 505,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1734,
2018-10-05 15:26:48 +00:00
"src": "10888:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
2018-10-05 15:26:48 +00:00
"src": "10888:10:0"
2018-09-26 09:19:53 +00:00
}
],
"name": "signMessage",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 504,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 503,
"name": "_data",
"nodeType": "VariableDeclaration",
"scope": 517,
2018-10-05 15:26:48 +00:00
"src": "10852:11:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 502,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "10852:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "10851:13:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 507,
"nodeType": "ParameterList",
"parameters": [],
2018-10-05 15:26:48 +00:00
"src": "10903:0:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "10831:130:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 556,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "11400:340:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
527
],
"declarations": [
{
"constant": false,
"id": 527,
"name": "messageHash",
"nodeType": "VariableDeclaration",
"scope": 557,
2018-10-05 15:26:48 +00:00
"src": "11410:19:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 526,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11410:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 531,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 529,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 519,
2018-10-05 15:26:48 +00:00
"src": "11447:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 528,
"name": "getMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 591,
2018-10-05 15:26:48 +00:00
"src": "11432:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) view returns (bytes32)"
}
},
"id": 530,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "11432:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "11410:43:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 532,
"name": "_signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 521,
2018-10-05 15:26:48 +00:00
"src": "11467:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "11467:17:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 534,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "11488:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "11467:22:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 554,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "11564:170:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 552,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 545,
"name": "isValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 524,
2018-10-05 15:26:48 +00:00
"src": "11659:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 547,
"name": "messageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 527,
2018-10-05 15:26:48 +00:00
"src": "11685:11:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 548,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 519,
2018-10-05 15:26:48 +00:00
"src": "11698:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 549,
"name": "_signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 521,
2018-10-05 15:26:48 +00:00
"src": "11705:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 550,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "11717:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 546,
"name": "checkSignatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 428,
2018-10-05 15:26:48 +00:00
"src": "11669:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bool_$",
"typeString": "function (bytes32,bytes memory,bytes memory,bool) returns (bool)"
}
},
"id": 551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "11669:54:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "11659:64:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 553,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "11659:64:0"
2018-09-26 09:19:53 +00:00
}
]
},
"id": 555,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "11463:271:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 544,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "11491:67:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 542,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 536,
"name": "isValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 524,
2018-10-05 15:26:48 +00:00
"src": "11505:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 541,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 537,
2018-10-05 15:26:48 +00:00
"name": "signedMessages",
2018-09-26 09:19:53 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
2018-10-05 15:26:48 +00:00
"src": "11515:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 539,
"indexExpression": {
"argumentTypes": null,
"id": 538,
"name": "messageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 527,
2018-10-05 15:26:48 +00:00
"src": "11530:11:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "11515:27:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 540,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "11546:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "11515:32:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "11505:42:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 543,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "11505:42:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
},
"documentation": "@dev Should return whether the signature provided is valid for the provided data\n@param _data Arbitrary length data signed on the behalf of address(this)\n@param _signature Signature byte array associated with _data\n@return a bool upon valid or invalid signature with corresponding _data",
"id": 557,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "isValidSignature",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 522,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 519,
"name": "_data",
"nodeType": "VariableDeclaration",
"scope": 557,
2018-10-05 15:26:48 +00:00
"src": "11319:11:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 518,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11319:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 521,
"name": "_signature",
"nodeType": "VariableDeclaration",
"scope": 557,
2018-10-05 15:26:48 +00:00
"src": "11332:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 520,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11332:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "11318:31:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 525,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 524,
"name": "isValid",
"nodeType": "VariableDeclaration",
"scope": 557,
2018-10-05 15:26:48 +00:00
"src": "11382:12:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 523,
"name": "bool",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11382:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "11381:14:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "11293:447:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": 1802,
"visibility": "public"
},
{
"body": {
"id": 590,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "12009:246:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
565
],
"declarations": [
{
"constant": false,
"id": 565,
"name": "safeMessageHash",
"nodeType": "VariableDeclaration",
"scope": 591,
2018-10-05 15:26:48 +00:00
"src": "12019:23:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 564,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "12019:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 575,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 569,
"name": "SAFE_MSG_TYPEHASH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31,
2018-10-05 15:26:48 +00:00
"src": "12079:17:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 571,
"name": "message",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
2018-10-05 15:26:48 +00:00
"src": "12108:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 570,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "12098:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 572,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12098:18:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 567,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "12068:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 568,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "12068:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12068:49:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 566,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "12045:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12045:82:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "12019:108:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30783139",
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "12189:4:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
},
"value": "0x19"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
}
],
"id": 579,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "12184:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 581,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12184:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 583,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "12201:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 582,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "12196:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12196:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"id": 585,
"name": "domainSeparator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
2018-10-05 15:26:48 +00:00
"src": "12205:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 586,
"name": "safeMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 565,
2018-10-05 15:26:48 +00:00
"src": "12222:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 577,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "12167:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 578,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "12167:16:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 587,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12167:71:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 576,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "12144:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 588,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12144:104:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 563,
"id": 589,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "12137:111:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Returns hash of a message that can be signed by owners.\n @param message Message that should be hashed\n @return Message hash.",
"id": 591,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getMessageHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 560,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 559,
"name": "message",
"nodeType": "VariableDeclaration",
"scope": 591,
2018-10-05 15:26:48 +00:00
"src": "11931:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 558,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11931:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "11921:29:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 563,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 562,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 591,
2018-10-05 15:26:48 +00:00
"src": "11996:7:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 561,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11996:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "11995:9:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "11898:357:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 649,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "13318:285:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
617
],
"declarations": [
{
"constant": false,
"id": 617,
"name": "safeTxHash",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13328:18:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 616,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13328:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 636,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 621,
"name": "SAFE_TX_TYPEHASH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 28,
2018-10-05 15:26:48 +00:00
"src": "13383:16:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 622,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 593,
2018-10-05 15:26:48 +00:00
"src": "13401:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 623,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 595,
2018-10-05 15:26:48 +00:00
"src": "13405:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 625,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 597,
2018-10-05 15:26:48 +00:00
"src": "13422:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 624,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "13412:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 626,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13412:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 627,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 599,
2018-10-05 15:26:48 +00:00
"src": "13429:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"id": 628,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 601,
2018-10-05 15:26:48 +00:00
"src": "13440:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 629,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 603,
2018-10-05 15:26:48 +00:00
"src": "13451:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 630,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 605,
2018-10-05 15:26:48 +00:00
"src": "13460:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 631,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 607,
2018-10-05 15:26:48 +00:00
"src": "13470:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 632,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 609,
2018-10-05 15:26:48 +00:00
"src": "13480:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 633,
"name": "_nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 611,
2018-10-05 15:26:48 +00:00
"src": "13496:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 619,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "13372:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 620,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "13372:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 634,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13372:131:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 618,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "13349:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 635,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13349:164:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "13328:185:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30783139",
"id": 640,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "13552:4:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
},
"value": "0x19"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
}
],
"id": 639,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "13547:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 641,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13547:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 643,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "13564:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 642,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "13559:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 644,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13559:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"id": 645,
"name": "domainSeparator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
2018-10-05 15:26:48 +00:00
"src": "13568:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 646,
"name": "safeTxHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 617,
2018-10-05 15:26:48 +00:00
"src": "13585:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 637,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "13530:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 638,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "13530:16:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 647,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13530:66:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"functionReturnParameters": 615,
"id": 648,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "13523:73:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Returns the bytes that are hashed to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin).\n @param _nonce Transaction nonce.\n @return Transaction hash bytes.",
"id": 650,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "encodeTransactionData",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 612,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 593,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13008:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 592,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13008:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 595,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13028:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 594,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13028:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 597,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13051:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 596,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13051:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 599,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13071:24:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
"typeName": {
"contractScope": null,
"id": 598,
"name": "Enum.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1658,
2018-10-05 15:26:48 +00:00
"src": "13071:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 601,
"name": "safeTxGas",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13105:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 600,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13105:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 603,
"name": "dataGas",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13132:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 602,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13132:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 605,
"name": "gasPrice",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13157:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 604,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13157:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 607,
"name": "gasToken",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13183:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 606,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13183:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 609,
"name": "refundReceiver",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13209:22:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 608,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13209:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 611,
"name": "_nonce",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13241:14:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 610,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13241:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "12998:263:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 615,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 614,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13307:5:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 613,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13307:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "13306:7:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "12968:635:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 690,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "14638:148:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 677,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 652,
2018-10-05 15:26:48 +00:00
"src": "14687:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 678,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 654,
2018-10-05 15:26:48 +00:00
"src": "14691:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 679,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 656,
2018-10-05 15:26:48 +00:00
"src": "14698:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 680,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 658,
2018-10-05 15:26:48 +00:00
"src": "14704:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"id": 681,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 660,
2018-10-05 15:26:48 +00:00
"src": "14715:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 682,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 662,
2018-10-05 15:26:48 +00:00
"src": "14726:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 683,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 664,
2018-10-05 15:26:48 +00:00
"src": "14735:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 684,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 666,
2018-10-05 15:26:48 +00:00
"src": "14745:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 685,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 668,
2018-10-05 15:26:48 +00:00
"src": "14755:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 686,
"name": "_nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
2018-10-05 15:26:48 +00:00
"src": "14771:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 676,
"name": "encodeTransactionData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 650,
2018-10-05 15:26:48 +00:00
"src": "14665:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$1658_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,address,uint256) view returns (bytes memory)"
}
},
"id": 687,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "14665:113:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 675,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "14655:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 688,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "14655:124:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"functionReturnParameters": 674,
"id": 689,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "14648:131:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin).\n @param _nonce Transaction nonce.\n @return Transaction hash.",
"id": 691,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getTransactionHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 671,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 652,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14326:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 651,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14326:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 654,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14346:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 653,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14346:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 656,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14369:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 655,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14369:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 658,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14389:24:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
"typeName": {
"contractScope": null,
"id": 657,
"name": "Enum.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1658,
2018-10-05 15:26:48 +00:00
"src": "14389:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 660,
"name": "safeTxGas",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14423:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 659,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14423:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 662,
"name": "dataGas",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14450:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 661,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14450:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 664,
"name": "gasPrice",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14475:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 663,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14475:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 666,
"name": "gasToken",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14501:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 665,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14501:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 668,
"name": "refundReceiver",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14527:22:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 667,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14527:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 670,
"name": "_nonce",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14559:14:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 669,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14559:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "14316:263:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 674,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 673,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14625:7:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 672,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14625:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "14624:9:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "14289:497:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
}
],
"scope": 693,
2018-10-05 15:26:48 +00:00
"src": "534:14254:0"
2018-09-26 09:19:53 +00:00
}
],
2018-10-05 15:26:48 +00:00
"src": "0:14789:0"
2018-09-26 09:19:53 +00:00
},
"legacyAST": {
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol",
"exportedSymbols": {
"GnosisSafe": [
692
]
},
"id": 693,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 1,
"literals": [
"solidity",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "0:23:0"
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/base/BaseSafe.sol",
"file": "./base/BaseSafe.sol",
"id": 2,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 783,
"src": "24:29:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/MasterCopy.sol",
"file": "./common/MasterCopy.sol",
"id": 3,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 1694,
"src": "54:33:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SignatureDecoder.sol",
"file": "./common/SignatureDecoder.sol",
"id": 4,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 1792,
"src": "88:39:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SecuredTokenTransfer.sol",
"file": "./common/SecuredTokenTransfer.sol",
"id": 5,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 1719,
"src": "128:43:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ISignatureValidator.sol",
"file": "./interfaces/ISignatureValidator.sol",
"id": 6,
"nodeType": "ImportDirective",
"scope": 693,
"sourceUnit": 1804,
"src": "172:46:0",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 7,
"name": "MasterCopy",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1693,
"src": "557:10:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_MasterCopy_$1693",
"typeString": "contract MasterCopy"
}
},
"id": 8,
"nodeType": "InheritanceSpecifier",
"src": "557:10:0"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 9,
"name": "BaseSafe",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 782,
"src": "569:8:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_BaseSafe_$782",
"typeString": "contract BaseSafe"
}
},
"id": 10,
"nodeType": "InheritanceSpecifier",
"src": "569:8:0"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 11,
"name": "SignatureDecoder",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1791,
"src": "579:16:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SignatureDecoder_$1791",
"typeString": "contract SignatureDecoder"
}
},
"id": 12,
"nodeType": "InheritanceSpecifier",
"src": "579:16:0"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 13,
"name": "SecuredTokenTransfer",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1718,
"src": "597:20:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SecuredTokenTransfer_$1718",
"typeString": "contract SecuredTokenTransfer"
}
},
"id": 14,
"nodeType": "InheritanceSpecifier",
"src": "597:20:0"
},
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 15,
"name": "ISignatureValidator",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1803,
"src": "619:19:0",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISignatureValidator_$1803",
"typeString": "contract ISignatureValidator"
}
},
"id": 16,
"nodeType": "InheritanceSpecifier",
"src": "619:19:0"
}
],
"contractDependencies": [
782,
892,
1212,
1652,
1666,
1693,
1718,
1735,
1791,
1803
],
"contractKind": "contract",
"documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - <stefan@gnosis.pm>\n @author Richard Meissner - <richard@gnosis.pm>\n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment",
"fullyImplemented": true,
"id": 692,
"linearizedBaseContracts": [
692,
1803,
1718,
1791,
782,
1652,
1212,
892,
1666,
1693,
1735
],
"name": "GnosisSafe",
"nodeType": "ContractDefinition",
"nodes": [
{
"constant": true,
"id": 19,
"name": "NAME",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "646:43:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string"
},
"typeName": {
"id": 17,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "646:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"argumentTypes": null,
"hexValue": "476e6f7369732053616665",
"id": 18,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "676:13:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63",
"typeString": "literal_string \"Gnosis Safe\""
},
"value": "Gnosis Safe"
},
"visibility": "public"
},
{
"constant": true,
"id": 22,
"name": "VERSION",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "695:40:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string"
},
"typeName": {
"id": 20,
"name": "string",
"nodeType": "ElementaryTypeName",
"src": "695:6:0",
"typeDescriptions": {
"typeIdentifier": "t_string_storage_ptr",
"typeString": "string"
}
},
"value": {
"argumentTypes": null,
"hexValue": "302e302e32",
"id": 21,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "728:7:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_b30367effb941b728181f67f3bd24a38a4fff408ee7fb3b074425c9fb5e9be74",
"typeString": "literal_string \"0.0.2\""
},
"value": "0.0.2"
},
"visibility": "public"
},
{
"constant": true,
"id": 25,
"name": "DOMAIN_SEPARATOR_TYPEHASH",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "820:118:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 23,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "820:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307830333561666638336438363933376433356233326530346630646463366666343639323930656566326631623639326438613831356338393430346434373439",
"id": 24,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "872:66:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1517718281442037948617199096126532355110765202990829672390711201829802035017_by_1",
"typeString": "int_const 1517...(68 digits omitted)...5017"
},
"value": "0x035aff83d86937d35b32e04f0ddc6ff469290eef2f1b692d8a815c89404d4749"
},
"visibility": "public"
},
{
"constant": true,
"id": 28,
"name": "SAFE_TX_TYPEHASH",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "1148:109:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 26,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1148:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307831346434363162633734313233363765393234363337623336336337626632396238663437653266383438363966343432366535363333643861663437623230",
"id": 27,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1191:66:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9421503099487675527562227662599058764916562750590033657944341861770225548064_by_1",
"typeString": "int_const 9421...(68 digits omitted)...8064"
},
"value": "0x14d461bc7412367e924637b363c7bf29b8f47e2f84869f4426e5633d8af47b20"
},
"visibility": "public"
},
{
"constant": true,
"id": 31,
"name": "SAFE_MSG_TYPEHASH",
"nodeType": "VariableDeclaration",
"scope": 692,
"src": "1329:110:0",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 29,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1329:7:0",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307836306233636266386234613232336436386436343162336236646466396132393865376633333731306366336433613964313134366235613631353066626361",
"id": 30,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "1373:66:0",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_43739706848186989041152069077571617734008543096732098246335109361212071148490_by_1",
"typeString": "int_const 4373...(69 digits omitted)...8490"
},
"value": "0x60b3cbf8b4a223d68d641b3b6ddf9a298e7f33710cf3d3a9d1146b5a6150fbca"
},
"visibility": "public"
},
{
"anonymous": false,
"documentation": null,
"id": 35,
"name": "ExecutionFailed",
"nodeType": "EventDefinition",
"parameters": {
"id": 34,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 33,
"indexed": false,
"name": "txHash",
"nodeType": "VariableDeclaration",
"scope": 35,
2018-10-05 15:26:48 +00:00
"src": "1468:14:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 32,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1468:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "1467:16:0"
2018-09-26 09:19:53 +00:00
},
2018-10-05 15:26:48 +00:00
"src": "1446:38:0"
2018-09-26 09:19:53 +00:00
},
{
"constant": false,
"id": 37,
"name": "nonce",
"nodeType": "VariableDeclaration",
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "1490:20:0",
2018-09-26 09:19:53 +00:00
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 36,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1490:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 39,
"name": "domainSeparator",
"nodeType": "VariableDeclaration",
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "1516:30:0",
2018-09-26 09:19:53 +00:00
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 38,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1516:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 43,
2018-10-05 15:26:48 +00:00
"name": "signedMessages",
2018-09-26 09:19:53 +00:00
"nodeType": "VariableDeclaration",
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "1649:49:0",
2018-09-26 09:19:53 +00:00
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"typeName": {
"id": 42,
"keyType": {
"id": 40,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1657:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
2018-10-05 15:26:48 +00:00
"src": "1649:27:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"valueType": {
"id": 41,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1668:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
"value": null,
2018-10-05 15:26:48 +00:00
"visibility": "public"
2018-09-26 09:19:53 +00:00
},
{
"constant": false,
"id": 49,
"name": "approvedHashes",
"nodeType": "VariableDeclaration",
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "1809:69:0",
2018-09-26 09:19:53 +00:00
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
},
"typeName": {
"id": 48,
"keyType": {
"id": 44,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1817:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
2018-10-05 15:26:48 +00:00
"src": "1809:47:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
},
"valueType": {
"id": 47,
"keyType": {
"id": 45,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1836:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
2018-10-05 15:26:48 +00:00
"src": "1828:27:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
},
"valueType": {
"id": 46,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "1847:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
}
},
"value": null,
2018-10-05 15:26:48 +00:00
"visibility": "public"
2018-09-26 09:19:53 +00:00
},
{
"body": {
"id": 85,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "2295:211:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"id": 64,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 62,
"name": "domainSeparator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
2018-10-05 15:26:48 +00:00
"src": "2313:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 63,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "2332:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "2313:20:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "446f6d61696e20536570617261746f7220616c72656164792073657421",
"id": 65,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "2335:31:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_a2e1f2db9cd32eaa6a2caa3d6caa726a30dc0417d866440bfe13d6a6d030e5e2",
"typeString": "literal_string \"Domain Separator already set!\""
},
"value": "Domain Separator already set!"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_a2e1f2db9cd32eaa6a2caa3d6caa726a30dc0417d866440bfe13d6a6d030e5e2",
"typeString": "literal_string \"Domain Separator already set!\""
}
],
"id": 61,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "2305:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 66,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "2305:62:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 67,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "2305:62:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"id": 76,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 68,
"name": "domainSeparator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
2018-10-05 15:26:48 +00:00
"src": "2377:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 72,
"name": "DOMAIN_SEPARATOR_TYPEHASH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 25,
2018-10-05 15:26:48 +00:00
"src": "2416:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 73,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4052,
"src": "2443:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_contract$_GnosisSafe_$692",
"typeString": "contract GnosisSafe"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_contract$_GnosisSafe_$692",
"typeString": "contract GnosisSafe"
}
],
"expression": {
"argumentTypes": null,
"id": 70,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "2405:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 71,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "2405:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 74,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "2405:43:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 69,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "2395:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 75,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "2395:54:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
2018-10-05 15:26:48 +00:00
"src": "2377:72:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 77,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "2377:72:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 79,
"name": "_owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 52,
2018-10-05 15:26:48 +00:00
"src": "2469:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"id": 80,
"name": "_threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 54,
2018-10-05 15:26:48 +00:00
"src": "2478:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 81,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 56,
2018-10-05 15:26:48 +00:00
"src": "2490:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 82,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 58,
2018-10-05 15:26:48 +00:00
"src": "2494:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 78,
"name": "setupSafe",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 781,
2018-10-05 15:26:48 +00:00
"src": "2459:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (address[] memory,uint256,address,bytes memory)"
}
},
"id": 83,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "2459:40:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 84,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "2459:40:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.",
"id": 86,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "setup",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 59,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 52,
"name": "_owners",
"nodeType": "VariableDeclaration",
"scope": 86,
2018-10-05 15:26:48 +00:00
"src": "2213:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 50,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "2213:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 51,
"length": null,
"nodeType": "ArrayTypeName",
2018-10-05 15:26:48 +00:00
"src": "2213:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 54,
"name": "_threshold",
"nodeType": "VariableDeclaration",
"scope": 86,
2018-10-05 15:26:48 +00:00
"src": "2232:18:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 53,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "2232:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 56,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 86,
2018-10-05 15:26:48 +00:00
"src": "2252:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 55,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "2252:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 58,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 86,
2018-10-05 15:26:48 +00:00
"src": "2264:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 57,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "2264:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "2212:63:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 60,
"nodeType": "ParameterList",
"parameters": [],
2018-10-05 15:26:48 +00:00
"src": "2295:0:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "2198:308:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 197,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "3833:1110:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
112
],
"declarations": [
{
"constant": false,
"id": 112,
"name": "startGas",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3843:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 111,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3843:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 115,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 113,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "3862:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 114,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "3862:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "3843:28:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [
117
],
"declarations": [
{
"constant": false,
"id": 117,
"name": "txHashData",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3881:23:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 116,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3881:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 130,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 119,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 88,
2018-10-05 15:26:48 +00:00
"src": "3942:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 120,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 90,
2018-10-05 15:26:48 +00:00
"src": "3946:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 121,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 92,
2018-10-05 15:26:48 +00:00
"src": "3953:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 122,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
2018-10-05 15:26:48 +00:00
"src": "3959:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"id": 123,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
2018-10-05 15:26:48 +00:00
"src": "4002:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 124,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 98,
2018-10-05 15:26:48 +00:00
"src": "4013:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 125,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 100,
2018-10-05 15:26:48 +00:00
"src": "4022:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 126,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
2018-10-05 15:26:48 +00:00
"src": "4032:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 127,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 104,
2018-10-05 15:26:48 +00:00
"src": "4042:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 128,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
2018-10-05 15:26:48 +00:00
"src": "4086:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 118,
"name": "encodeTransactionData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 650,
2018-10-05 15:26:48 +00:00
"src": "3907:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$1658_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,address,uint256) view returns (bytes memory)"
}
},
"id": 129,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "3907:194:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "3881:220:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 134,
"name": "txHashData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
2018-10-05 15:26:48 +00:00
"src": "4145:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 133,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "4135:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 135,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4135:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 136,
"name": "txHashData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
2018-10-05 15:26:48 +00:00
"src": "4158:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 137,
"name": "signatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 106,
2018-10-05 15:26:48 +00:00
"src": "4170:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"hexValue": "74727565",
"id": 138,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4182:4:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 132,
"name": "checkSignatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 428,
2018-10-05 15:26:48 +00:00
"src": "4119:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bool_$",
"typeString": "function (bytes32,bytes memory,bytes memory,bool) returns (bool)"
}
},
"id": 139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4119:68:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "496e76616c6964207369676e6174757265732070726f7669646564",
"id": 140,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4189:29:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_85bcea44c930431ef19052d068cc504a81260341ae6c5ee84bb5a38ec55acf05",
"typeString": "literal_string \"Invalid signatures provided\""
},
"value": "Invalid signatures provided"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_85bcea44c930431ef19052d068cc504a81260341ae6c5ee84bb5a38ec55acf05",
"typeString": "literal_string \"Invalid signatures provided\""
}
],
"id": 131,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "4111:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 141,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4111:108:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 142,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4111:108:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"id": 144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
2018-10-05 15:26:48 +00:00
"src": "4280:7:0",
2018-09-26 09:19:53 +00:00
"subExpression": {
"argumentTypes": null,
"id": 143,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 37,
2018-10-05 15:26:48 +00:00
"src": "4280:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 145,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4280:7:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 147,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "4305:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 148,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4305:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">=",
"rightExpression": {
"argumentTypes": null,
"id": 149,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
2018-10-05 15:26:48 +00:00
"src": "4318:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "4305:22:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e",
"id": 151,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4329:44:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18",
"typeString": "literal_string \"Not enough gas to execute safe transaction\""
},
"value": "Not enough gas to execute safe transaction"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18",
"typeString": "literal_string \"Not enough gas to execute safe transaction\""
}
],
"id": 146,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "4297:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 152,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4297:77:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 153,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4297:77:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"id": 172,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 154,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 109,
2018-10-05 15:26:48 +00:00
"src": "4491:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 156,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 88,
2018-10-05 15:26:48 +00:00
"src": "4509:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 157,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 90,
2018-10-05 15:26:48 +00:00
"src": "4513:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 158,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 92,
2018-10-05 15:26:48 +00:00
"src": "4520:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 159,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 94,
2018-10-05 15:26:48 +00:00
"src": "4526:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 166,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 162,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 160,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
2018-10-05 15:26:48 +00:00
"src": "4537:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 161,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4550:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "4537:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 165,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 163,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 100,
2018-10-05 15:26:48 +00:00
"src": "4555:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 164,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4567:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "4555:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "4537:31:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"argumentTypes": null,
"id": 169,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 96,
2018-10-05 15:26:48 +00:00
"src": "4583:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 170,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
2018-10-05 15:26:48 +00:00
"src": "4537:55:0",
2018-09-26 09:19:53 +00:00
"trueExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 167,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "4571:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 168,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4571:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 155,
"name": "execute",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 854,
2018-10-05 15:26:48 +00:00
"src": "4501:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$1658_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)"
}
},
"id": 171,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4501:92:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "4491:102:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 173,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4491:102:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"id": 175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
2018-10-05 15:26:48 +00:00
"src": "4607:8:0",
2018-09-26 09:19:53 +00:00
"subExpression": {
"argumentTypes": null,
"id": 174,
"name": "success",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 109,
2018-10-05 15:26:48 +00:00
"src": "4608:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 183,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "4603:82:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 182,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "4617:68:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 178,
"name": "txHashData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 117,
2018-10-05 15:26:48 +00:00
"src": "4662:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 177,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "4652:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 179,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4652:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 176,
"name": "ExecutionFailed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 35,
2018-10-05 15:26:48 +00:00
"src": "4636:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$returns$__$",
"typeString": "function (bytes32)"
}
},
"id": 180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4636:38:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 181,
"nodeType": "EmitStatement",
2018-10-05 15:26:48 +00:00
"src": "4631:43:0"
2018-09-26 09:19:53 +00:00
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 186,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 184,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 100,
2018-10-05 15:26:48 +00:00
"src": "4830:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 185,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "4841:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "4830:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 196,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "4826:111:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 195,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "4844:93:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 188,
"name": "startGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 112,
2018-10-05 15:26:48 +00:00
"src": "4872:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 189,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 98,
2018-10-05 15:26:48 +00:00
"src": "4882:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 190,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 100,
2018-10-05 15:26:48 +00:00
"src": "4891:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 191,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 102,
2018-10-05 15:26:48 +00:00
"src": "4901:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 192,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 104,
2018-10-05 15:26:48 +00:00
"src": "4911:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 187,
"name": "handlePayment",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 262,
2018-10-05 15:26:48 +00:00
"src": "4858:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$returns$__$",
"typeString": "function (uint256,uint256,uint256,address,address)"
}
},
"id": 193,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "4858:68:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 194,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "4858:68:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
},
2018-10-05 15:26:48 +00:00
"documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners and then pays the account that submitted the transaction.\n Note: The fees are always transfered, even if the user transaction fails.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction and to pay the payment transfer\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin).\n @param signatures Packed signature data ({bytes32 r}{bytes32 s}{uint8 v})",
2018-09-26 09:19:53 +00:00
"id": 198,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "execTransaction",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 107,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 88,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3527:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 87,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3527:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 90,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3547:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 89,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3547:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 92,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3570:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 91,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3570:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 94,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3590:24:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
"typeName": {
"contractScope": null,
"id": 93,
"name": "Enum.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1658,
2018-10-05 15:26:48 +00:00
"src": "3590:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 96,
"name": "safeTxGas",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3624:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 95,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3624:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 98,
"name": "dataGas",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3651:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 97,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3651:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 100,
"name": "gasPrice",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3676:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 99,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3676:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 102,
"name": "gasToken",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3702:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 101,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3702:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 104,
"name": "refundReceiver",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3728:22:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 103,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3728:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 106,
"name": "signatures",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3760:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 105,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3760:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "3517:265:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 110,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 109,
"name": "success",
"nodeType": "VariableDeclaration",
"scope": 198,
2018-10-05 15:26:48 +00:00
"src": "3815:12:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 108,
"name": "bool",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "3815:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "3814:14:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "3493:1450:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 261,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "5132:532:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
212
],
"declarations": [
{
"constant": false,
"id": 212,
"name": "amount",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5142:14:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 211,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5142:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 223,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 222,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 219,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 216,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 213,
"name": "gasUsed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 200,
2018-10-05 15:26:48 +00:00
"src": "5161:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 214,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "5171:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 215,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5171:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "5161:19:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 217,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
2018-10-05 15:26:48 +00:00
"src": "5160:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 218,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 202,
2018-10-05 15:26:48 +00:00
"src": "5184:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "5160:31:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 220,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
2018-10-05 15:26:48 +00:00
"src": "5159:33:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"id": 221,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 204,
2018-10-05 15:26:48 +00:00
"src": "5195:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "5159:44:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "5142:61:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [
225
],
"declarations": [
{
"constant": false,
"id": 225,
"name": "receiver",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5271:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 224,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5271:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 235,
"initialValue": {
"argumentTypes": null,
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 230,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 226,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 208,
2018-10-05 15:26:48 +00:00
"src": "5290:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 228,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "5316:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 227,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "5308:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 229,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5308:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "5290:28:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseExpression": {
"argumentTypes": null,
"id": 233,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 208,
2018-10-05 15:26:48 +00:00
"src": "5333:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 234,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "Conditional",
2018-10-05 15:26:48 +00:00
"src": "5290:57:0",
2018-09-26 09:19:53 +00:00
"trueExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 231,
"name": "tx",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4027,
"src": "5321:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_transaction",
"typeString": "tx"
}
},
"id": 232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "origin",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "5321:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "5271:76:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 240,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 236,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 206,
2018-10-05 15:26:48 +00:00
"src": "5361:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 238,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "5381:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 237,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "5373:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 239,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5373:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "5361:22:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 259,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "5545:113:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 252,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 206,
2018-10-05 15:26:48 +00:00
"src": "5581:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 253,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
2018-10-05 15:26:48 +00:00
"src": "5591:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 254,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 212,
2018-10-05 15:26:48 +00:00
"src": "5601:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 251,
"name": "transferToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1717,
2018-10-05 15:26:48 +00:00
"src": "5567:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) returns (bool)"
}
},
"id": 255,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5567:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e",
"id": 256,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "5610:36:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4",
"typeString": "literal_string \"Could not pay gas costs with token\""
},
"value": "Could not pay gas costs with token"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4",
"typeString": "literal_string \"Could not pay gas costs with token\""
}
],
"id": 250,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "5559:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 257,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5559:88:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 258,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "5559:88:0"
2018-09-26 09:19:53 +00:00
}
]
},
"id": 260,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "5357:301:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 249,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "5385:154:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 244,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 212,
2018-10-05 15:26:48 +00:00
"src": "5482:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 242,
"name": "receiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 225,
2018-10-05 15:26:48 +00:00
"src": "5468:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "send",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "5468:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_send_nonpayable$_t_uint256_$returns$_t_bool_$",
"typeString": "function (uint256) returns (bool)"
}
},
"id": 245,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5468:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "436f756c64206e6f74207061792067617320636f7374732077697468206574686572",
"id": 246,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "5491:36:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_e2a11e15f7be1214c1340779ad55027af8aa33aee6cb521776a28a0a44aea377",
"typeString": "literal_string \"Could not pay gas costs with ether\""
},
"value": "Could not pay gas costs with ether"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_e2a11e15f7be1214c1340779ad55027af8aa33aee6cb521776a28a0a44aea377",
"typeString": "literal_string \"Could not pay gas costs with ether\""
}
],
"id": 241,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "5460:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 247,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "5460:68:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 248,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "5460:68:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
},
"documentation": null,
"id": 262,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "handlePayment",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 209,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 200,
"name": "gasUsed",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "4981:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 199,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "4981:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 202,
"name": "dataGas",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5006:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 201,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5006:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 204,
"name": "gasPrice",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5031:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 203,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5031:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 206,
"name": "gasToken",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5057:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 205,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5057:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 208,
"name": "refundReceiver",
"nodeType": "VariableDeclaration",
"scope": 262,
2018-10-05 15:26:48 +00:00
"src": "5083:22:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 207,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "5083:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "4971:140:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 210,
"nodeType": "ParameterList",
"parameters": [],
2018-10-05 15:26:48 +00:00
"src": "5132:0:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "4949:715:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "private"
},
{
"body": {
"id": 427,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "6415:2326:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 280,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 275,
"name": "signatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 268,
2018-10-05 15:26:48 +00:00
"src": "6496:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 276,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "6496:17:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 279,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 277,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1242,
2018-10-05 15:26:48 +00:00
"src": "6516:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3635",
"id": 278,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6528:2:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_65_by_1",
"typeString": "int_const 65"
},
"value": "65"
},
2018-10-05 15:26:48 +00:00
"src": "6516:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "6496:34:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 284,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "6492:77:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 283,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "6532:37:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 281,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6553:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 274,
"id": 282,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "6546:12:0"
2018-09-26 09:19:53 +00:00
}
]
}
},
{
"assignments": [
286
],
"declarations": [
{
"constant": false,
"id": 286,
"name": "lastOwner",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6630:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 285,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6630:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 290,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 288,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6658:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
}
],
"id": 287,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "6650:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 289,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "6650:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6630:30:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 292,
"name": "currentOwner",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6670:20:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 291,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6670:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 293,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6670:20:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 295,
"name": "v",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6700:7:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 294,
"name": "uint8",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6700:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 296,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6700:7:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 298,
"name": "r",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6717:9:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 297,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6717:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 299,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6717:9:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 301,
"name": "s",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6736:9:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 300,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6736:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 302,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6736:9:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 304,
"name": "i",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6755:9:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 303,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6755:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 305,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "6755:9:0"
2018-09-26 09:19:53 +00:00
},
{
"body": {
"id": 423,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "6806:1908:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 324,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"id": 316,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 295,
2018-10-05 15:26:48 +00:00
"src": "6821:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 317,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
2018-10-05 15:26:48 +00:00
"src": "6824:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 318,
"name": "s",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 301,
2018-10-05 15:26:48 +00:00
"src": "6827:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"id": 319,
"isConstant": false,
"isInlineArray": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "TupleExpression",
2018-10-05 15:26:48 +00:00
"src": "6820:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
"typeString": "tuple(uint8,bytes32,bytes32)"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 321,
"name": "signatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 268,
2018-10-05 15:26:48 +00:00
"src": "6847:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 322,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 304,
2018-10-05 15:26:48 +00:00
"src": "6859:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 320,
"name": "signatureSplit",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1790,
2018-10-05 15:26:48 +00:00
"src": "6832:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_uint8_$_t_bytes32_$_t_bytes32_$",
"typeString": "function (bytes memory,uint256) pure returns (uint8,bytes32,bytes32)"
}
},
"id": 323,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "6832:29:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$_t_uint8_$_t_bytes32_$_t_bytes32_$",
"typeString": "tuple(uint8,bytes32,bytes32)"
}
},
2018-10-05 15:26:48 +00:00
"src": "6820:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 325,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "6820:41:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 328,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 326,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 295,
2018-10-05 15:26:48 +00:00
"src": "6936:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 327,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6941:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "6936:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 354,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 352,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 295,
2018-10-05 15:26:48 +00:00
"src": "7691:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 353,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "7696:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
2018-10-05 15:26:48 +00:00
"src": "7691:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 403,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "8399:149:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 401,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 394,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8490:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 396,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 264,
2018-10-05 15:26:48 +00:00
"src": "8515:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 397,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 295,
2018-10-05 15:26:48 +00:00
"src": "8525:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 398,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
2018-10-05 15:26:48 +00:00
"src": "8528:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 399,
"name": "s",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 301,
2018-10-05 15:26:48 +00:00
"src": "8531:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 395,
"name": "ecrecover",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4007,
"src": "8505:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
"typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
}
},
"id": 400,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "8505:28:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8490:43:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 402,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "8490:43:0"
2018-09-26 09:19:53 +00:00
}
]
},
"id": 404,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "7687:861:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 393,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "7699:694:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 359,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 355,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "7812:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 357,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
2018-10-05 15:26:48 +00:00
"src": "7835:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 356,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "7827:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 358,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "7827:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "7812:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 360,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "7812:25:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 372,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 364,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 361,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4015,
"src": "8004:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 362,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "8004:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 363,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8018:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8004:26:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 371,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 365,
"name": "approvedHashes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
2018-10-05 15:26:48 +00:00
"src": "8034:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
}
},
"id": 367,
"indexExpression": {
"argumentTypes": null,
"id": 366,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8049:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8034:28:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 369,
"indexExpression": {
"argumentTypes": null,
"id": 368,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 264,
2018-10-05 15:26:48 +00:00
"src": "8063:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8034:38:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 370,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8076:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "8034:43:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "8004:73:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 376,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "8000:132:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 375,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "8079:53:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 373,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8108:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 274,
"id": 374,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "8101:12:0"
2018-09-26 09:19:53 +00:00
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 382,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 377,
"name": "consumeHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 270,
2018-10-05 15:26:48 +00:00
"src": "8253:11:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "&&",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 381,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 378,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4015,
"src": "8268:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 379,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "8268:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 380,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8282:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8268:26:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "8253:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 392,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "8249:130:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 391,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "8296:83:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 389,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 383,
"name": "approvedHashes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
2018-10-05 15:26:48 +00:00
"src": "8318:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
}
},
"id": 386,
"indexExpression": {
"argumentTypes": null,
"id": 384,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8333:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8318:28:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 387,
"indexExpression": {
"argumentTypes": null,
"id": 385,
"name": "dataHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 264,
2018-10-05 15:26:48 +00:00
"src": "8347:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8318:38:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 388,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8359:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "8318:42:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 390,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "8318:42:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
}
},
"id": 405,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "6932:1616:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 351,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "6944:737:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 333,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 329,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "7061:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 331,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 298,
2018-10-05 15:26:48 +00:00
"src": "7084:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"id": 330,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "7076:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": "address"
},
"id": 332,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "7076:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "7061:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 334,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "7061:25:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [],
"declarations": [
{
"constant": false,
"id": 336,
"name": "contractSignature",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "7104:30:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 335,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "7104:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 337,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "7104:30:0"
2018-09-26 09:19:53 +00:00
},
{
"externalReferences": [
{
"contractSignature": {
"declaration": 336,
"isOffset": false,
"isSlot": false,
2018-10-05 15:26:48 +00:00
"src": "7394:17:0",
2018-09-26 09:19:53 +00:00
"valueSize": 1
}
},
{
"signatures": {
"declaration": 268,
"isOffset": false,
"isSlot": false,
2018-10-05 15:26:48 +00:00
"src": "7423:10:0",
2018-09-26 09:19:53 +00:00
"valueSize": 1
}
},
{
"s": {
"declaration": 301,
"isOffset": false,
"isSlot": false,
2018-10-05 15:26:48 +00:00
"src": "7435:1:0",
2018-09-26 09:19:53 +00:00
"valueSize": 1
}
}
],
"id": 338,
"nodeType": "InlineAssembly",
"operations": "{\n contractSignature := add(add(signatures, s), 0x20)\n}",
2018-10-05 15:26:48 +00:00
"src": "7224:257:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"id": 346,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
2018-10-05 15:26:48 +00:00
"src": "7483:76:0",
2018-09-26 09:19:53 +00:00
"subExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 343,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 266,
2018-10-05 15:26:48 +00:00
"src": "7535:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 344,
"name": "contractSignature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 336,
2018-10-05 15:26:48 +00:00
"src": "7541:17:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 340,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "7504:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 339,
"name": "ISignatureValidator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1803,
2018-10-05 15:26:48 +00:00
"src": "7484:19:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ISignatureValidator_$1803_$",
"typeString": "type(contract ISignatureValidator)"
}
},
"id": 341,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "7484:33:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_contract$_ISignatureValidator_$1803",
"typeString": "contract ISignatureValidator"
}
},
"id": 342,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "isValidSignature",
"nodeType": "MemberAccess",
"referencedDeclaration": 1802,
2018-10-05 15:26:48 +00:00
"src": "7484:50:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_bool_$",
"typeString": "function (bytes memory,bytes memory) external returns (bool)"
}
},
"id": 345,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "7484:75:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 350,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "7479:135:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 349,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "7561:53:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 347,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "7590:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 274,
"id": 348,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "7583:12:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
}
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 414,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 408,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 406,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8565:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 407,
"name": "lastOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 286,
2018-10-05 15:26:48 +00:00
"src": "8581:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8565:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 413,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 409,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1238,
2018-10-05 15:26:48 +00:00
"src": "8594:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 411,
"indexExpression": {
"argumentTypes": null,
"id": 410,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8601:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "8594:20:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 412,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8618:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "8594:25:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "8565:54:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 418,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "8561:105:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 417,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "8621:45:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 415,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8646:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
},
"functionReturnParameters": 274,
"id": 416,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "8639:12:0"
2018-09-26 09:19:53 +00:00
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 421,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 419,
"name": "lastOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 286,
2018-10-05 15:26:48 +00:00
"src": "8679:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 420,
"name": "currentOwner",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 292,
2018-10-05 15:26:48 +00:00
"src": "8691:12:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
2018-10-05 15:26:48 +00:00
"src": "8679:24:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 422,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "8679:24:0"
2018-09-26 09:19:53 +00:00
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 312,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 310,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 304,
2018-10-05 15:26:48 +00:00
"src": "6786:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 311,
"name": "threshold",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1242,
2018-10-05 15:26:48 +00:00
"src": "6790:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "6786:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 424,
"initializationExpression": {
"expression": {
"argumentTypes": null,
"id": 308,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 306,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 304,
2018-10-05 15:26:48 +00:00
"src": "6779:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 307,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "6783:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "6779:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 309,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "6779:5:0"
2018-09-26 09:19:53 +00:00
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 314,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
2018-10-05 15:26:48 +00:00
"src": "6801:3:0",
2018-09-26 09:19:53 +00:00
"subExpression": {
"argumentTypes": null,
"id": 313,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 304,
2018-10-05 15:26:48 +00:00
"src": "6801:1:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 315,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "6801:3:0"
2018-09-26 09:19:53 +00:00
},
"nodeType": "ForStatement",
2018-10-05 15:26:48 +00:00
"src": "6774:1940:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 425,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "8730:4:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"functionReturnParameters": 274,
"id": 426,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "8723:11:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Should return whether the signature provided is valid for the provided data, hash\n@param dataHash Hash of the data (could be either a message hash or transaction hash)\n@param data That should be signed (this is passed to an external validator contract)\n@param signatures Signature data that should be verified. Can be ECDSA signature, contract signature (EIP-1271) or approved hash.\n@param consumeHash Indicates that in case of an approved hash the storage can be freed to save gas\n@return a bool upon valid or invalid signature with corresponding _data",
"id": 428,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "checkSignatures",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 271,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 264,
"name": "dataHash",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6305:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 263,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6305:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 266,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6323:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 265,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6323:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 268,
"name": "signatures",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6335:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 267,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6335:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 270,
"name": "consumeHash",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6353:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 269,
"name": "bool",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6353:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "6304:66:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 274,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 273,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 428,
2018-10-05 15:26:48 +00:00
"src": "6405:4:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 272,
"name": "bool",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "6405:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "6404:6:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "6280:2461:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 475,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "9804:420:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
444
],
"declarations": [
{
"constant": false,
"id": 444,
"name": "startGas",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9814:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 443,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9814:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 447,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 445,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "9833:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 446,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "9833:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "9814:28:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 450,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 430,
2018-10-05 15:26:48 +00:00
"src": "10004:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 451,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 432,
2018-10-05 15:26:48 +00:00
"src": "10008:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 452,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 434,
2018-10-05 15:26:48 +00:00
"src": "10015:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 453,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 436,
2018-10-05 15:26:48 +00:00
"src": "10021:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 454,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "10032:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 455,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10032:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 449,
"name": "execute",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 854,
2018-10-05 15:26:48 +00:00
"src": "9996:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$1658_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)"
}
},
"id": 456,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "9996:46:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 448,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4018,
"src": "9988:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 457,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "9988:55:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 458,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "9988:55:0"
2018-09-26 09:19:53 +00:00
},
{
"assignments": [
460
],
"declarations": [
{
"constant": false,
"id": 460,
"name": "requiredGas",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "10053:19:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 459,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "10053:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 465,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 464,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 461,
"name": "startGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 444,
2018-10-05 15:26:48 +00:00
"src": "10075:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"id": 462,
"name": "gasleft",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4008,
"src": "10086:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$",
"typeString": "function () view returns (uint256)"
}
},
"id": 463,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10086:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
2018-10-05 15:26:48 +00:00
"src": "10075:20:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "10053:42:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 470,
"name": "requiredGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 460,
2018-10-05 15:26:48 +00:00
"src": "10203:11:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 468,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "10186:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 469,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "10186:16:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 471,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10186:29:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 467,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "10179:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_string_storage_ptr_$",
"typeString": "type(string storage pointer)"
},
"typeName": "string"
},
"id": 472,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10179:37:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_string_memory",
"typeString": "string memory"
}
],
"id": 466,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4020,
4021
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4021,
"src": "10172:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 473,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10172:45:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 474,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "10172:45:0"
2018-09-26 09:19:53 +00:00
}
]
},
2018-10-05 15:26:48 +00:00
"documentation": "@dev Allows to estimate a Safe transaction.\n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).",
2018-09-26 09:19:53 +00:00
"id": 476,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 439,
"modifierName": {
"argumentTypes": null,
"id": 438,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1734,
2018-10-05 15:26:48 +00:00
"src": "9763:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
2018-10-05 15:26:48 +00:00
"src": "9763:10:0"
2018-09-26 09:19:53 +00:00
}
],
"name": "requiredTxGas",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 437,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 430,
"name": "to",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9675:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 429,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9675:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 432,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9687:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 431,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9687:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 434,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9702:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 433,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9702:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 436,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9714:24:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
"typeName": {
"contractScope": null,
"id": 435,
"name": "Enum.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1658,
2018-10-05 15:26:48 +00:00
"src": "9714:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "9674:65:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 442,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 441,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 476,
2018-10-05 15:26:48 +00:00
"src": "9791:7:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 440,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "9791:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "9790:9:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "9652:572:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 500,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "10531:138:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 487,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 482,
"name": "owners",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1238,
2018-10-05 15:26:48 +00:00
"src": "10549:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_address_$",
"typeString": "mapping(address => address)"
}
},
"id": 485,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 483,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4015,
"src": "10556:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 484,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "10556:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "10549:18:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 486,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "10571:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "10549:23:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "4f6e6c79206f776e6572732063616e20617070726f766520612068617368",
"id": 488,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "10574:32:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_60f21058f4a7689ef29853b3c9c17c9bf69856a949794649bb68878f00552475",
"typeString": "literal_string \"Only owners can approve a hash\""
},
"value": "Only owners can approve a hash"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_60f21058f4a7689ef29853b3c9c17c9bf69856a949794649bb68878f00552475",
"typeString": "literal_string \"Only owners can approve a hash\""
}
],
"id": 481,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
2018-10-05 15:26:48 +00:00
4018,
4019
2018-09-26 09:19:53 +00:00
],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4019,
"src": "10541:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 489,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10541:66:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 490,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "10541:66:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"id": 498,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 491,
"name": "approvedHashes",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 49,
2018-10-05 15:26:48 +00:00
"src": "10617:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_uint256_$_$",
"typeString": "mapping(address => mapping(bytes32 => uint256))"
}
},
"id": 495,
"indexExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 492,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4015,
"src": "10632:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "10632:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "10617:26:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 496,
"indexExpression": {
"argumentTypes": null,
"id": 494,
"name": "hashToApprove",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 478,
2018-10-05 15:26:48 +00:00
"src": "10644:13:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "10617:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 497,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "10661:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
2018-10-05 15:26:48 +00:00
"src": "10617:45:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 499,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "10617:45:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Marks a hash as approved. This can be used to validate a hash that is used by a signature.\n@param hashToApprove The hash that should be marked as approved for signatures that are verified by this contract.",
"id": 501,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "approveHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 479,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 478,
"name": "hashToApprove",
"nodeType": "VariableDeclaration",
"scope": 501,
2018-10-05 15:26:48 +00:00
"src": "10489:21:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 477,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "10489:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "10488:23:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 480,
"nodeType": "ParameterList",
"parameters": [],
2018-10-05 15:26:48 +00:00
"src": "10531:0:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "10468:201:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 516,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "10903:58:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 514,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 508,
2018-10-05 15:26:48 +00:00
"name": "signedMessages",
2018-09-26 09:19:53 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
2018-10-05 15:26:48 +00:00
"src": "10913:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 512,
"indexExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 510,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 503,
2018-10-05 15:26:48 +00:00
"src": "10943:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 509,
"name": "getMessageHash",
2018-08-20 07:59:16 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-09-26 09:19:53 +00:00
"referencedDeclaration": 591,
2018-10-05 15:26:48 +00:00
"src": "10928:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) view returns (bytes32)"
}
},
"id": 511,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "10928:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "10913:37:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "31",
"id": 513,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "10953:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
2018-10-05 15:26:48 +00:00
"src": "10913:41:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 515,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "10913:41:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Marks a message as signed\n@param _data Arbitrary length data that should be marked as signed on the behalf of address(this)",
"id": 517,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [
{
"arguments": null,
"id": 506,
"modifierName": {
"argumentTypes": null,
"id": 505,
"name": "authorized",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1734,
2018-10-05 15:26:48 +00:00
"src": "10888:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
2018-10-05 15:26:48 +00:00
"src": "10888:10:0"
2018-09-26 09:19:53 +00:00
}
],
"name": "signMessage",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 504,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 503,
"name": "_data",
"nodeType": "VariableDeclaration",
"scope": 517,
2018-10-05 15:26:48 +00:00
"src": "10852:11:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 502,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "10852:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "10851:13:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 507,
"nodeType": "ParameterList",
"parameters": [],
2018-10-05 15:26:48 +00:00
"src": "10903:0:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "10831:130:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 556,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "11400:340:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
527
],
"declarations": [
{
"constant": false,
"id": 527,
"name": "messageHash",
"nodeType": "VariableDeclaration",
"scope": 557,
2018-10-05 15:26:48 +00:00
"src": "11410:19:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 526,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11410:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 531,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 529,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 519,
2018-10-05 15:26:48 +00:00
"src": "11447:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 528,
"name": "getMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 591,
2018-10-05 15:26:48 +00:00
"src": "11432:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) view returns (bytes32)"
}
},
"id": 530,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "11432:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "11410:43:0"
2018-09-26 09:19:53 +00:00
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 532,
"name": "_signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 521,
2018-10-05 15:26:48 +00:00
"src": "11467:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "11467:17:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 534,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "11488:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "11467:22:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 554,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "11564:170:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 552,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 545,
"name": "isValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 524,
2018-10-05 15:26:48 +00:00
"src": "11659:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 547,
"name": "messageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 527,
2018-10-05 15:26:48 +00:00
"src": "11685:11:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 548,
"name": "_data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 519,
2018-10-05 15:26:48 +00:00
"src": "11698:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 549,
"name": "_signature",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 521,
2018-10-05 15:26:48 +00:00
"src": "11705:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"hexValue": "66616c7365",
"id": 550,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "11717:5:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "false"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 546,
"name": "checkSignatures",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 428,
2018-10-05 15:26:48 +00:00
"src": "11669:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$_t_bool_$returns$_t_bool_$",
"typeString": "function (bytes32,bytes memory,bytes memory,bool) returns (bool)"
}
},
"id": 551,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "11669:54:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "11659:64:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 553,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "11659:64:0"
2018-09-26 09:19:53 +00:00
}
]
},
"id": 555,
"nodeType": "IfStatement",
2018-10-05 15:26:48 +00:00
"src": "11463:271:0",
2018-09-26 09:19:53 +00:00
"trueBody": {
"id": 544,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "11491:67:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 542,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 536,
"name": "isValid",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 524,
2018-10-05 15:26:48 +00:00
"src": "11505:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 541,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 537,
2018-10-05 15:26:48 +00:00
"name": "signedMessages",
2018-09-26 09:19:53 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 43,
2018-10-05 15:26:48 +00:00
"src": "11515:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_uint256_$",
"typeString": "mapping(bytes32 => uint256)"
}
},
"id": 539,
"indexExpression": {
"argumentTypes": null,
"id": 538,
"name": "messageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 527,
2018-10-05 15:26:48 +00:00
"src": "11530:11:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
2018-10-05 15:26:48 +00:00
"src": "11515:27:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 540,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "11546:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
2018-10-05 15:26:48 +00:00
"src": "11515:32:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
2018-10-05 15:26:48 +00:00
"src": "11505:42:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bool",
"typeString": "bool"
2018-08-20 07:59:16 +00:00
}
},
2018-09-26 09:19:53 +00:00
"id": 543,
"nodeType": "ExpressionStatement",
2018-10-05 15:26:48 +00:00
"src": "11505:42:0"
2018-09-26 09:19:53 +00:00
}
]
}
}
]
},
"documentation": "@dev Should return whether the signature provided is valid for the provided data\n@param _data Arbitrary length data signed on the behalf of address(this)\n@param _signature Signature byte array associated with _data\n@return a bool upon valid or invalid signature with corresponding _data",
"id": 557,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "isValidSignature",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 522,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 519,
"name": "_data",
"nodeType": "VariableDeclaration",
"scope": 557,
2018-10-05 15:26:48 +00:00
"src": "11319:11:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 518,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11319:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 521,
"name": "_signature",
"nodeType": "VariableDeclaration",
"scope": 557,
2018-10-05 15:26:48 +00:00
"src": "11332:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 520,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11332:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "11318:31:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 525,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 524,
"name": "isValid",
"nodeType": "VariableDeclaration",
"scope": 557,
2018-10-05 15:26:48 +00:00
"src": "11382:12:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 523,
"name": "bool",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11382:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "11381:14:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "11293:447:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "nonpayable",
"superFunction": 1802,
"visibility": "public"
},
{
"body": {
"id": 590,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "12009:246:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
565
],
"declarations": [
{
"constant": false,
"id": 565,
"name": "safeMessageHash",
"nodeType": "VariableDeclaration",
"scope": 591,
2018-10-05 15:26:48 +00:00
"src": "12019:23:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 564,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "12019:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 575,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 569,
"name": "SAFE_MSG_TYPEHASH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 31,
2018-10-05 15:26:48 +00:00
"src": "12079:17:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 571,
"name": "message",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 559,
2018-10-05 15:26:48 +00:00
"src": "12108:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 570,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "12098:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 572,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12098:18:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 567,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "12068:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 568,
2018-08-20 07:59:16 +00:00
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
2018-09-26 09:19:53 +00:00
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "12068:10:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
2018-08-20 07:59:16 +00:00
},
2018-09-26 09:19:53 +00:00
"id": 573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12068:49:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
2018-08-20 07:59:16 +00:00
}
2018-09-26 09:19:53 +00:00
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 566,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "12045:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
}
},
"id": 574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12045:82:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "12019:108:0"
2018-09-26 09:19:53 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
2018-08-20 07:59:16 +00:00
{
"argumentTypes": null,
2018-09-26 09:19:53 +00:00
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30783139",
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "12189:4:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
},
"value": "0x19"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
}
],
"id": 579,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "12184:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 581,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12184:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 583,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "12201:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 582,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "12196:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 584,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12196:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"id": 585,
"name": "domainSeparator",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 39,
2018-10-05 15:26:48 +00:00
"src": "12205:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 586,
"name": "safeMessageHash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 565,
2018-10-05 15:26:48 +00:00
"src": "12222:15:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 577,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "12167:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 578,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "12167:16:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 587,
2018-08-20 07:59:16 +00:00
"isConstant": false,
"isLValue": false,
2018-09-26 09:19:53 +00:00
"isPure": false,
"kind": "functionCall",
2018-08-20 07:59:16 +00:00
"lValueRequested": false,
2018-09-26 09:19:53 +00:00
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12167:71:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
2018-08-20 07:59:16 +00:00
}
],
"expression": {
"argumentTypes": [
{
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
2018-08-20 07:59:16 +00:00
}
],
2018-09-26 09:19:53 +00:00
"id": 576,
"name": "keccak256",
2018-08-20 07:59:16 +00:00
"nodeType": "Identifier",
2018-09-26 09:19:53 +00:00
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "12144:9:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
2018-08-20 07:59:16 +00:00
}
},
2018-09-26 09:19:53 +00:00
"id": 588,
2018-08-20 07:59:16 +00:00
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "12144:104:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-08-20 07:59:16 +00:00
}
},
2018-09-26 09:19:53 +00:00
"functionReturnParameters": 563,
"id": 589,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "12137:111:0"
2018-09-26 09:19:53 +00:00
}
]
},
"documentation": "@dev Returns hash of a message that can be signed by owners.\n @param message Message that should be hashed\n @return Message hash.",
"id": 591,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": true,
"modifiers": [],
"name": "getMessageHash",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 560,
"nodeType": "ParameterList",
"parameters": [
2018-08-20 07:59:16 +00:00
{
2018-09-26 09:19:53 +00:00
"constant": false,
"id": 559,
"name": "message",
"nodeType": "VariableDeclaration",
"scope": 591,
2018-10-05 15:26:48 +00:00
"src": "11931:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 558,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11931:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "11921:29:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 563,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 562,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 591,
2018-10-05 15:26:48 +00:00
"src": "11996:7:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 561,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "11996:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "11995:9:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "11898:357:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 649,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "13318:285:0",
2018-09-26 09:19:53 +00:00
"statements": [
{
"assignments": [
617
],
"declarations": [
{
"constant": false,
"id": 617,
"name": "safeTxHash",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13328:18:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-09-26 09:19:53 +00:00
},
"typeName": {
"id": 616,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13328:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 636,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 621,
"name": "SAFE_TX_TYPEHASH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 28,
2018-10-05 15:26:48 +00:00
"src": "13383:16:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-08-20 07:59:16 +00:00
}
2018-09-26 09:19:53 +00:00
},
{
"argumentTypes": null,
"id": 622,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 593,
2018-10-05 15:26:48 +00:00
"src": "13401:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 623,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 595,
2018-10-05 15:26:48 +00:00
"src": "13405:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"arguments": [
2018-08-20 07:59:16 +00:00
{
2018-09-26 09:19:53 +00:00
"argumentTypes": null,
"id": 625,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 597,
2018-10-05 15:26:48 +00:00
"src": "13422:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
2018-08-20 07:59:16 +00:00
}
],
"expression": {
2018-09-26 09:19:53 +00:00
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 624,
"name": "keccak256",
2018-08-20 07:59:16 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "13412:9:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
2018-08-20 07:59:16 +00:00
}
},
2018-09-26 09:19:53 +00:00
"id": 626,
2018-08-20 07:59:16 +00:00
"isConstant": false,
"isLValue": false,
2018-09-26 09:19:53 +00:00
"isPure": false,
"kind": "functionCall",
2018-08-20 07:59:16 +00:00
"lValueRequested": false,
2018-09-26 09:19:53 +00:00
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13412:15:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-08-20 07:59:16 +00:00
}
},
{
2018-09-26 09:19:53 +00:00
"argumentTypes": null,
"id": 627,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 599,
2018-10-05 15:26:48 +00:00
"src": "13429:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"id": 628,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 601,
2018-10-05 15:26:48 +00:00
"src": "13440:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 629,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 603,
2018-10-05 15:26:48 +00:00
"src": "13451:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 630,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 605,
2018-10-05 15:26:48 +00:00
"src": "13460:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 631,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 607,
2018-10-05 15:26:48 +00:00
"src": "13470:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 632,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 609,
2018-10-05 15:26:48 +00:00
"src": "13480:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 633,
"name": "_nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 611,
2018-10-05 15:26:48 +00:00
"src": "13496:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 619,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "13372:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 620,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encode",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "13372:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 634,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13372:131:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
2018-05-31 13:01:02 +00:00
}
}
],
"expression": {
"argumentTypes": [
{
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
2018-05-31 13:01:02 +00:00
}
],
2018-09-26 09:19:53 +00:00
"id": 618,
"name": "keccak256",
2018-05-31 13:01:02 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "13349:9:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
2018-05-31 13:01:02 +00:00
}
},
2018-09-26 09:19:53 +00:00
"id": 635,
2018-05-31 13:01:02 +00:00
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13349:164:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-05-31 13:01:02 +00:00
}
},
2018-09-26 09:19:53 +00:00
"nodeType": "VariableDeclarationStatement",
2018-10-05 15:26:48 +00:00
"src": "13328:185:0"
2018-05-31 13:01:02 +00:00
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
2018-09-26 09:19:53 +00:00
"arguments": [
{
"argumentTypes": null,
"hexValue": "30783139",
"id": 640,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "13552:4:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
},
"value": "0x19"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_25_by_1",
"typeString": "int_const 25"
}
],
"id": 639,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "13547:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 641,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13547:10:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 643,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
2018-10-05 15:26:48 +00:00
"src": "13564:1:0",
2018-09-26 09:19:53 +00:00
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
}
],
"id": 642,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
2018-10-05 15:26:48 +00:00
"src": "13559:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes1_$",
"typeString": "type(bytes1)"
},
"typeName": "byte"
},
"id": 644,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13559:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
}
},
{
"argumentTypes": null,
"id": 645,
"name": "domainSeparator",
2018-05-31 13:01:02 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-09-26 09:19:53 +00:00
"referencedDeclaration": 39,
2018-10-05 15:26:48 +00:00
"src": "13568:15:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-05-31 13:01:02 +00:00
}
},
{
"argumentTypes": null,
2018-09-26 09:19:53 +00:00
"id": 646,
"name": "safeTxHash",
2018-05-31 13:01:02 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-09-26 09:19:53 +00:00
"referencedDeclaration": 617,
2018-10-05 15:26:48 +00:00
"src": "13585:10:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-05-31 13:01:02 +00:00
}
}
],
"expression": {
"argumentTypes": [
{
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
2018-05-31 13:01:02 +00:00
},
{
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes1",
"typeString": "bytes1"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-05-31 13:01:02 +00:00
}
],
2018-09-26 09:19:53 +00:00
"expression": {
"argumentTypes": null,
"id": 637,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4002,
"src": "13530:3:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 638,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
2018-10-05 15:26:48 +00:00
"src": "13530:16:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
2018-05-31 13:01:02 +00:00
}
},
2018-09-26 09:19:53 +00:00
"id": 647,
2018-05-31 13:01:02 +00:00
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "13530:66:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
2018-05-31 13:01:02 +00:00
}
},
2018-09-26 09:19:53 +00:00
"functionReturnParameters": 615,
"id": 648,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "13523:73:0"
2018-05-31 13:01:02 +00:00
}
]
},
2018-09-26 09:19:53 +00:00
"documentation": "@dev Returns the bytes that are hashed to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin).\n @param _nonce Transaction nonce.\n @return Transaction hash bytes.",
"id": 650,
2018-05-31 13:01:02 +00:00
"implemented": true,
"isConstructor": false,
2018-09-26 09:19:53 +00:00
"isDeclaredConst": true,
2018-05-31 13:01:02 +00:00
"modifiers": [],
2018-09-26 09:19:53 +00:00
"name": "encodeTransactionData",
2018-05-31 13:01:02 +00:00
"nodeType": "FunctionDefinition",
"parameters": {
2018-09-26 09:19:53 +00:00
"id": 612,
2018-05-31 13:01:02 +00:00
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
2018-09-26 09:19:53 +00:00
"id": 593,
"name": "to",
2018-05-31 13:01:02 +00:00
"nodeType": "VariableDeclaration",
2018-09-26 09:19:53 +00:00
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13008:10:0",
2018-05-31 13:01:02 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_address",
"typeString": "address"
2018-05-31 13:01:02 +00:00
},
"typeName": {
2018-09-26 09:19:53 +00:00
"id": 592,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13008:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 595,
"name": "value",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13028:13:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 594,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13028:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 597,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13051:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 596,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13051:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 599,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13071:24:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
"typeName": {
"contractScope": null,
"id": 598,
"name": "Enum.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1658,
2018-10-05 15:26:48 +00:00
"src": "13071:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 601,
"name": "safeTxGas",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13105:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 600,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13105:7:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-05-31 13:01:02 +00:00
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
2018-09-26 09:19:53 +00:00
"id": 603,
"name": "dataGas",
2018-05-31 13:01:02 +00:00
"nodeType": "VariableDeclaration",
2018-09-26 09:19:53 +00:00
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13132:15:0",
2018-05-31 13:01:02 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-05-31 13:01:02 +00:00
},
"typeName": {
2018-09-26 09:19:53 +00:00
"id": 602,
"name": "uint256",
2018-05-31 13:01:02 +00:00
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13132:7:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-05-31 13:01:02 +00:00
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
2018-09-26 09:19:53 +00:00
"id": 605,
"name": "gasPrice",
2018-05-31 13:01:02 +00:00
"nodeType": "VariableDeclaration",
2018-09-26 09:19:53 +00:00
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13157:16:0",
2018-05-31 13:01:02 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-05-31 13:01:02 +00:00
},
"typeName": {
2018-09-26 09:19:53 +00:00
"id": 604,
"name": "uint256",
2018-05-31 13:01:02 +00:00
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13157:7:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-05-31 13:01:02 +00:00
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
2018-09-26 09:19:53 +00:00
"id": 607,
"name": "gasToken",
2018-05-31 13:01:02 +00:00
"nodeType": "VariableDeclaration",
2018-09-26 09:19:53 +00:00
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13183:16:0",
2018-05-31 13:01:02 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_address",
"typeString": "address"
2018-05-31 13:01:02 +00:00
},
"typeName": {
2018-09-26 09:19:53 +00:00
"id": 606,
"name": "address",
2018-05-31 13:01:02 +00:00
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13183:7:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_address",
"typeString": "address"
2018-05-31 13:01:02 +00:00
}
},
"value": null,
"visibility": "internal"
2018-09-26 09:19:53 +00:00
},
2018-05-31 13:01:02 +00:00
{
2018-09-26 09:19:53 +00:00
"constant": false,
"id": 609,
"name": "refundReceiver",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13209:22:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 608,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13209:7:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_address",
"typeString": "address"
2018-08-20 07:59:16 +00:00
}
},
2018-09-26 09:19:53 +00:00
"value": null,
"visibility": "internal"
2018-08-20 07:59:16 +00:00
},
{
2018-09-26 09:19:53 +00:00
"constant": false,
"id": 611,
"name": "_nonce",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13241:14:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 610,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13241:7:0",
2018-08-20 07:59:16 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-08-20 07:59:16 +00:00
}
},
2018-09-26 09:19:53 +00:00
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "12998:263:0"
2018-09-26 09:19:53 +00:00
},
"payable": false,
"returnParameters": {
"id": 615,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 614,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 650,
2018-10-05 15:26:48 +00:00
"src": "13307:5:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 613,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "13307:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "13306:7:0"
2018-09-26 09:19:53 +00:00
},
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "12968:635:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "view",
"superFunction": null,
"visibility": "public"
},
{
"body": {
"id": 690,
"nodeType": "Block",
2018-10-05 15:26:48 +00:00
"src": "14638:148:0",
2018-09-26 09:19:53 +00:00
"statements": [
2018-08-20 07:59:16 +00:00
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
2018-09-26 09:19:53 +00:00
"arguments": [
{
"argumentTypes": null,
"id": 677,
"name": "to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 652,
2018-10-05 15:26:48 +00:00
"src": "14687:2:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 678,
"name": "value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 654,
2018-10-05 15:26:48 +00:00
"src": "14691:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 679,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 656,
2018-10-05 15:26:48 +00:00
"src": "14698:4:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
{
"argumentTypes": null,
"id": 680,
"name": "operation",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 658,
2018-10-05 15:26:48 +00:00
"src": "14704:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
{
"argumentTypes": null,
"id": 681,
"name": "safeTxGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 660,
2018-10-05 15:26:48 +00:00
"src": "14715:9:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 682,
"name": "dataGas",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 662,
2018-10-05 15:26:48 +00:00
"src": "14726:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 683,
"name": "gasPrice",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 664,
2018-10-05 15:26:48 +00:00
"src": "14735:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 684,
"name": "gasToken",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 666,
2018-10-05 15:26:48 +00:00
"src": "14745:8:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 685,
"name": "refundReceiver",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 668,
2018-10-05 15:26:48 +00:00
"src": "14755:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 686,
"name": "_nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 670,
2018-10-05 15:26:48 +00:00
"src": "14771:6:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
},
{
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 676,
"name": "encodeTransactionData",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 650,
2018-10-05 15:26:48 +00:00
"src": "14665:21:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$1658_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_address_$_t_uint256_$returns$_t_bytes_memory_ptr_$",
"typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,address,uint256) view returns (bytes memory)"
}
2018-05-31 13:01:02 +00:00
},
2018-09-26 09:19:53 +00:00
"id": 687,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "14665:113:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
2018-09-26 09:19:53 +00:00
"id": 675,
"name": "keccak256",
2018-05-31 13:01:02 +00:00
"nodeType": "Identifier",
"overloadedDeclarations": [],
2018-10-05 15:26:48 +00:00
"referencedDeclaration": 4009,
"src": "14655:9:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$",
"typeString": "function () pure returns (bytes32)"
2018-05-31 13:01:02 +00:00
}
},
2018-09-26 09:19:53 +00:00
"id": 688,
2018-05-31 13:01:02 +00:00
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
2018-10-05 15:26:48 +00:00
"src": "14655:124:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
2018-05-31 13:01:02 +00:00
}
},
2018-09-26 09:19:53 +00:00
"functionReturnParameters": 674,
"id": 689,
"nodeType": "Return",
2018-10-05 15:26:48 +00:00
"src": "14648:131:0"
2018-05-31 13:01:02 +00:00
}
]
},
2018-09-26 09:19:53 +00:00
"documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param refundReceiver Address of receiver of gas payment (or 0 if tx.origin).\n @param _nonce Transaction nonce.\n @return Transaction hash.",
"id": 691,
2018-05-31 13:01:02 +00:00
"implemented": true,
"isConstructor": false,
2018-09-26 09:19:53 +00:00
"isDeclaredConst": true,
2018-05-31 13:01:02 +00:00
"modifiers": [],
2018-09-26 09:19:53 +00:00
"name": "getTransactionHash",
2018-05-31 13:01:02 +00:00
"nodeType": "FunctionDefinition",
"parameters": {
2018-09-26 09:19:53 +00:00
"id": 671,
2018-05-31 13:01:02 +00:00
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
2018-09-26 09:19:53 +00:00
"id": 652,
"name": "to",
2018-05-31 13:01:02 +00:00
"nodeType": "VariableDeclaration",
2018-09-26 09:19:53 +00:00
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14326:10:0",
2018-05-31 13:01:02 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_address",
"typeString": "address"
2018-05-31 13:01:02 +00:00
},
"typeName": {
2018-09-26 09:19:53 +00:00
"id": 651,
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14326:7:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_address",
"typeString": "address"
2018-05-31 13:01:02 +00:00
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
2018-09-26 09:19:53 +00:00
"id": 654,
"name": "value",
2018-05-31 13:01:02 +00:00
"nodeType": "VariableDeclaration",
2018-09-26 09:19:53 +00:00
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14346:13:0",
2018-05-31 13:01:02 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-05-31 13:01:02 +00:00
},
"typeName": {
2018-09-26 09:19:53 +00:00
"id": 653,
"name": "uint256",
2018-05-31 13:01:02 +00:00
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14346:7:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-05-31 13:01:02 +00:00
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
2018-09-26 09:19:53 +00:00
"id": 656,
"name": "data",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14369:10:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 655,
"name": "bytes",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14369:5:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 658,
"name": "operation",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14389:24:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
},
"typeName": {
"contractScope": null,
"id": 657,
"name": "Enum.Operation",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 1658,
2018-10-05 15:26:48 +00:00
"src": "14389:14:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_enum$_Operation_$1658",
"typeString": "enum Enum.Operation"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 660,
"name": "safeTxGas",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14423:17:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 659,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14423:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 662,
"name": "dataGas",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14450:15:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 661,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14450:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 664,
"name": "gasPrice",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14475:16:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 663,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14475:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 666,
"name": "gasToken",
2018-05-31 13:01:02 +00:00
"nodeType": "VariableDeclaration",
2018-09-26 09:19:53 +00:00
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14501:16:0",
2018-05-31 13:01:02 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
2018-09-26 09:19:53 +00:00
"id": 665,
2018-05-31 13:01:02 +00:00
"name": "address",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14501:7:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
2018-09-26 09:19:53 +00:00
"id": 668,
"name": "refundReceiver",
2018-05-31 13:01:02 +00:00
"nodeType": "VariableDeclaration",
2018-09-26 09:19:53 +00:00
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14527:22:0",
2018-05-31 13:01:02 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_address",
"typeString": "address"
2018-05-31 13:01:02 +00:00
},
"typeName": {
2018-09-26 09:19:53 +00:00
"id": 667,
"name": "address",
2018-05-31 13:01:02 +00:00
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14527:7:0",
2018-05-31 13:01:02 +00:00
"typeDescriptions": {
2018-09-26 09:19:53 +00:00
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 670,
"name": "_nonce",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14559:14:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 669,
"name": "uint256",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14559:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
2018-05-31 13:01:02 +00:00
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "14316:263:0"
2018-05-31 13:01:02 +00:00
},
"payable": false,
"returnParameters": {
2018-09-26 09:19:53 +00:00
"id": 674,
2018-05-31 13:01:02 +00:00
"nodeType": "ParameterList",
2018-09-26 09:19:53 +00:00
"parameters": [
{
"constant": false,
"id": 673,
"name": "",
"nodeType": "VariableDeclaration",
"scope": 691,
2018-10-05 15:26:48 +00:00
"src": "14625:7:0",
2018-09-26 09:19:53 +00:00
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 672,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
2018-10-05 15:26:48 +00:00
"src": "14625:7:0",
2018-09-26 09:19:53 +00:00
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
2018-10-05 15:26:48 +00:00
"src": "14624:9:0"
2018-05-31 13:01:02 +00:00
},
2018-09-26 09:19:53 +00:00
"scope": 692,
2018-10-05 15:26:48 +00:00
"src": "14289:497:0",
2018-09-26 09:19:53 +00:00
"stateMutability": "view",
2018-05-31 13:01:02 +00:00
"superFunction": null,
"visibility": "public"
}
],
2018-09-26 09:19:53 +00:00
"scope": 693,
2018-10-05 15:26:48 +00:00
"src": "534:14254:0"
2018-05-31 13:01:02 +00:00
}
],
2018-10-05 15:26:48 +00:00
"src": "0:14789:0"
2018-05-31 13:01:02 +00:00
},
"compiler": {
"name": "solc",
"version": "0.4.24+commit.e67f0147.Emscripten.clang"
},
2018-09-26 09:19:53 +00:00
"networks": {
"4": {
"events": {},
"links": {},
2018-10-05 15:26:48 +00:00
"address": "0x1d0fbe91e6f0c8506b70a9659b3b9f962d25bfa1",
"transactionHash": "0xa1b4d6790c09394af1233b0ae788b1d92f58be265e6baa815930e502393f0eaa"
},
"1538739975997": {
"events": {},
"links": {},
"address": "0x254dffcd3277c0b1660f6d42efbb754edababc2b",
"transactionHash": "0x515bd2920d6d65a280f2456bc1a7e2f38eeccd5995708dfb55bb1871875ae37d"
2018-09-26 09:19:53 +00:00
}
},
2018-06-29 11:23:01 +00:00
"schemaVersion": "2.0.0",
2018-10-05 15:26:48 +00:00
"updatedAt": "2018-10-05T14:43:41.464Z"
2018-05-31 13:01:02 +00:00
}