2018-05-31 13:01:02 +00:00
{
"contractName" : "GnosisSafePersonalEdition" ,
"abi" : [
{
"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"
} ,
{
"constant" : false ,
"inputs" : [
{
"name" : "module" ,
"type" : "address"
}
] ,
"name" : "enableModule" ,
"outputs" : [ ] ,
"payable" : false ,
"stateMutability" : "nonpayable" ,
"type" : "function"
} ,
{
"constant" : false ,
"inputs" : [
{
"name" : "_masterCopy" ,
"type" : "address"
}
] ,
"name" : "changeMasterCopy" ,
"outputs" : [ ] ,
"payable" : false ,
"stateMutability" : "nonpayable" ,
"type" : "function"
} ,
{
"constant" : true ,
"inputs" : [ ] ,
"name" : "SENTINEL_MODULES" ,
"outputs" : [
{
"name" : "" ,
"type" : "address"
}
] ,
"payable" : false ,
"stateMutability" : "view" ,
"type" : "function"
} ,
{
"constant" : false ,
"inputs" : [
{
"name" : "prevOwner" ,
"type" : "address"
} ,
{
"name" : "owner" ,
"type" : "address"
} ,
{
"name" : "_threshold" ,
"type" : "uint8"
}
] ,
"name" : "removeOwner" ,
"outputs" : [ ] ,
"payable" : false ,
"stateMutability" : "nonpayable" ,
"type" : "function"
} ,
{
"constant" : true ,
"inputs" : [ ] ,
"name" : "SENTINEL_OWNERS" ,
"outputs" : [
{
"name" : "" ,
"type" : "address"
}
] ,
"payable" : false ,
"stateMutability" : "view" ,
"type" : "function"
} ,
{
"constant" : false ,
"inputs" : [
{
"name" : "_owners" ,
"type" : "address[]"
} ,
{
"name" : "_threshold" ,
"type" : "uint8"
} ,
{
"name" : "to" ,
"type" : "address"
} ,
{
"name" : "data" ,
"type" : "bytes"
}
] ,
"name" : "setup" ,
"outputs" : [ ] ,
"payable" : false ,
"stateMutability" : "nonpayable" ,
"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"
} ,
{
"constant" : true ,
"inputs" : [ ] ,
"name" : "nonce" ,
"outputs" : [
{
"name" : "" ,
"type" : "uint256"
}
] ,
"payable" : false ,
"stateMutability" : "view" ,
"type" : "function"
} ,
{
"constant" : true ,
"inputs" : [ ] ,
"name" : "getModules" ,
"outputs" : [
{
"name" : "" ,
"type" : "address[]"
}
] ,
"payable" : false ,
"stateMutability" : "view" ,
"type" : "function"
} ,
{
"constant" : false ,
"inputs" : [
{
"name" : "_threshold" ,
"type" : "uint8"
}
] ,
"name" : "changeThreshold" ,
"outputs" : [ ] ,
"payable" : false ,
"stateMutability" : "nonpayable" ,
"type" : "function"
} ,
{
"constant" : false ,
"inputs" : [
{
"name" : "owner" ,
"type" : "address"
} ,
{
"name" : "_threshold" ,
"type" : "uint8"
}
] ,
"name" : "addOwnerWithThreshold" ,
"outputs" : [ ] ,
"payable" : false ,
"stateMutability" : "nonpayable" ,
"type" : "function"
} ,
{
"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" : "uint8"
}
] ,
"payable" : false ,
"stateMutability" : "view" ,
"type" : "function"
} ,
{
"constant" : true ,
"inputs" : [ ] ,
"name" : "VERSION" ,
"outputs" : [
{
"name" : "" ,
"type" : "string"
}
] ,
"payable" : false ,
"stateMutability" : "view" ,
"type" : "function"
} ,
{
"payable" : true ,
"stateMutability" : "payable" ,
"type" : "fallback"
} ,
{
"anonymous" : false ,
"inputs" : [ ] ,
"name" : "ExecutionFailed" ,
"type" : "event"
} ,
{
"anonymous" : false ,
"inputs" : [
{
"indexed" : false ,
"name" : "newContract" ,
"type" : "address"
}
] ,
"name" : "ContractCreation" ,
"type" : "event"
} ,
{
"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" : "v" ,
"type" : "uint8[]"
} ,
{
"name" : "r" ,
"type" : "bytes32[]"
} ,
{
"name" : "s" ,
"type" : "bytes32[]"
}
] ,
"name" : "execAndPayTransaction" ,
"outputs" : [ ] ,
"payable" : false ,
"stateMutability" : "nonpayable" ,
"type" : "function"
} ,
{
"constant" : true ,
"inputs" : [
{
"name" : "executionGas" ,
"type" : "uint256"
} ,
{
"name" : "dataGas" ,
"type" : "uint256"
}
] ,
"name" : "totalGasCosts" ,
"outputs" : [
{
"name" : "" ,
"type" : "uint256"
}
] ,
"payable" : false ,
"stateMutability" : "pure" ,
"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" : 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" : "_nonce" ,
"type" : "uint256"
}
] ,
"name" : "getTransactionHash" ,
"outputs" : [
{
"name" : "" ,
"type" : "bytes32"
}
] ,
"payable" : false ,
"stateMutability" : "view" ,
"type" : "function"
}
] ,
"bytecode" : " 0 x 608060405234801561001057600080 f d 5 b 50613 e e 5806100206000396000 f 300608060405260043610610128576000357 c 0 100000000000000000000000000000000000000000000000000000000900463 f f f f f f f f 16806314148 a f 21461012 a 5780632 f 54 b f 6e146102 d 1578063468721 a 71461032 c 578063610 b 5925146103e45780637 d e 7 e d e f 1461042757806385e332 c d 1461046 a 57806386040 a a 9146104 c 15780638 c f f 635514610531578063 a 0 4222e114610588578063 a 0e67 e 2 b 14610661578063 a 3 f 4 d f 7e146106 c d 578063 a d 8 a 0 4501461075 d 578063 a f f e d 0e0146107 a 8578063 b 2494 d f 3146107 d 3578063 b 7 f 3358 d 1461083 f 578063 b 91 a 667 f 1461086 f 578063 b a 0 8 e a 24146108 b f 578063 c 4 c a 3 a 9 c 146109 c 3578063e009 c f d e 14610 a 77578063e318 b 52 b 14610 a d a 578063e75235 b 814610 b 5 d 578063 f f a 1 a d 7414610 b 8e575 b 0 0 5 b 34801561013657600080 f d 5 b 506102 c f 600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16906020019092919080359060200190929190803590602001908201803590602001908080601 f 0 160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560 f f 169060200190929190803590602001909291908035906020019092919080359060200190929190803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610 c 1e565 b 0 0 5 b 3480156102 d d 57600080 f d 5 b 50610312600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190505050610 f 5 f 565 b 604051808215151515815260200191505060405180910390 f 35 b 34801561033857600080 f d 5 b 506103 c a 600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16906020019092919080359060200190929190803590602001908201803590602001908080601 f 0 160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560 f f 169060200190929190505050610 f e 1565 b 604051808215151515815260200191505060405180910390 f 35 b 3480156103 f 0 57600080 f d 5 b 50610425600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16906020019092919050505061110 d 565 b 0 0 5 b 34801561043357600080 f d 5 b 50610468600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 1690602001909291905050506114 e b 565 b 0 0 5 b 34801561047657600080 f d 5 b 5061047 f 6116 a c 565 b 604051808273 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 1673 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16815260200191505060405180910390 f 35 b 3480156104 c d 57600080 f d 5 b 5061052 f 600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190803560 f f 1690602001909291905050506116 b 1565 b 0 0 5 b 34801561053 d 57600080 f d 5 b 50610546611 a e 4565 b 604051808273 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 1673 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16815260200191505060405180910390 f 35 b 34801561059457600080 f d 5 b 5061065 f 60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560 f f 169060200190929190803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190803590602001908201803590602001908080601 f 0 160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611 a e 9565 b 0 0 5 b 34801561066 d 57600080 f d 5 b 50610676611 b 0 3565 b 6040518080602001828103825283818151815260200191508051906020019060200280838360005 b 838110156106 b 957808201518184015260208101905061069e565 b 505050509050019250505060405180910390 f 35 b 3480156106 d 957600080 f d 5 b 506106e2611 c 9e565 b 6040518080602001828103825283818151815260200191508051906020019080838360005 b 83811015610722578082015181840152602081019050610707565 b 50505050905090810190601 f 16801561074 f 5780820380516001836020036101000 a 0 31916815260200191505 b 509250505060405180910390 f 35 b 34801561076957600080 f d 5 b 506107926004803603810190808035906020019092919080359060200190929190505050611 c d 7565 b 6040518082815260200191505060405180910390 f 35 b 3480156107 b 457600080 f d 5 b 506107 b d 611 c e c 565 b 6040518082815260200191505060405180910390 f 35 b 348015
"deployedBytecode" : " 0 x 608060405260043610610128576000357 c 0 100000000000000000000000000000000000000000000000000000000900463 f f f f f f f f 16806314148 a f 21461012 a 5780632 f 54 b f 6e146102 d 1578063468721 a 71461032 c 578063610 b 5925146103e45780637 d e 7 e d e f 1461042757806385e332 c d 1461046 a 57806386040 a a 9146104 c 15780638 c f f 635514610531578063 a 0 4222e114610588578063 a 0e67 e 2 b 14610661578063 a 3 f 4 d f 7e146106 c d 578063 a d 8 a 0 4501461075 d 578063 a f f e d 0e0146107 a 8578063 b 2494 d f 3146107 d 3578063 b 7 f 3358 d 1461083 f 578063 b 91 a 667 f 1461086 f 578063 b a 0 8 e a 24146108 b f 578063 c 4 c a 3 a 9 c 146109 c 3578063e009 c f d e 14610 a 77578063e318 b 52 b 14610 a d a 578063e75235 b 814610 b 5 d 578063 f f a 1 a d 7414610 b 8e575 b 0 0 5 b 34801561013657600080 f d 5 b 506102 c f 600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16906020019092919080359060200190929190803590602001908201803590602001908080601 f 0 160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560 f f 169060200190929190803590602001909291908035906020019092919080359060200190929190803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610 c 1e565 b 0 0 5 b 3480156102 d d 57600080 f d 5 b 50610312600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190505050610 f 5 f 565 b 604051808215151515815260200191505060405180910390 f 35 b 34801561033857600080 f d 5 b 506103 c a 600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16906020019092919080359060200190929190803590602001908201803590602001908080601 f 0 160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560 f f 169060200190929190505050610 f e 1565 b 604051808215151515815260200191505060405180910390 f 35 b 3480156103 f 0 57600080 f d 5 b 50610425600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16906020019092919050505061110 d 565 b 0 0 5 b 34801561043357600080 f d 5 b 50610468600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 1690602001909291905050506114 e b 565 b 0 0 5 b 34801561047657600080 f d 5 b 5061047 f 6116 a c 565 b 604051808273 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 1673 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16815260200191505060405180910390 f 35 b 3480156104 c d 57600080 f d 5 b 5061052 f 600480360381019080803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190803560 f f 1690602001909291905050506116 b 1565 b 0 0 5 b 34801561053 d 57600080 f d 5 b 50610546611 a e 4565 b 604051808273 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 1673 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 16815260200191505060405180910390 f 35 b 34801561059457600080 f d 5 b 5061065 f 60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560 f f 169060200190929190803573 f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f f 169060200190929190803590602001908201803590602001908080601 f 0 160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611 a e 9565 b 0 0 5 b 34801561066 d 57600080 f d 5 b 50610676611 b 0 3565 b 6040518080602001828103825283818151815260200191508051906020019060200280838360005 b 838110156106 b 957808201518184015260208101905061069e565 b 505050509050019250505060405180910390 f 35 b 3480156106 d 957600080 f d 5 b 506106e2611 c 9e565 b 6040518080602001828103825283818151815260200191508051906020019080838360005 b 83811015610722578082015181840152602081019050610707565 b 50505050905090810190601 f 16801561074 f 5780820380516001836020036101000 a 0 31916815260200191505 b 509250505060405180910390 f 35 b 34801561076957600080 f d 5 b 506107926004803603810190808035906020019092919080359060200190929190505050611 c d 7565 b 6040518082815260200191505060405180910390 f 35 b 3480156107 b 457600080 f d 5 b 506107 b d 611 c e c 565 b 6040518082815260200191505060405180910390 f 35 b 3480156107 d f 57600080 f d 5 b 506107e8611 c f 2565 b 60405180806020018281
"sourceMap" : "449:6475:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:6475:3;;;;;;;" ,
"deployedSourceMap" : " 449 : 6475 : 3 : - ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 1660 : 1451 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 1660 : 1451 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 5374 : 129 : 9 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 5374 : 129 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 2710 : 429 : 8 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 2710 : 429 : 8 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 1311 : 459 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 1311 : 459 : 8 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 626 : 248 : 5 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 626 : 248 : 5 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 499 : 55 : 8 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 499 : 55 : 8 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 3024 : 672 : 9 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 3024 : 672 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 287 : 54 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 287 : 54 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 693 : 301 : 2 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 693 : 301 : 2 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 5585 : 458 : 9 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 5585 : 458 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 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 ; 5585 : 458 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 517 : 60 : 3 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 517 : 60 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 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 ; 517 : 60 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 3543 : 209 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 3543 : 209 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 779 : 20 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 779 : 20 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 4663 : 738 : 8 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 4663 : 738 : 8 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 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 ; 4663 : 738 : 8 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 4852 : 397 : 9 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 4852 : 397 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 2089 : 593 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 2089 : 593 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 6422 : 500 : 3 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 6422 : 500 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 4670 : 523 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 4670 : 523 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 2031 : 343 : 8 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 2031 : 343 : 8 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 4030 : 633 : 9 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 4030 : 633 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 5255 : 113 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 5255 : 113 : 9 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 583 : 40 : 3 ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 30 : 1 ; 27 ; 20 : 12 ; 5 : 2 ; 583 : 40 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 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 ; 583 : 40 : 3 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 1660 : 1451 ; 1994 : 16 ; 2611 ; 2688 : 14 ; 2013 : 9 ; 1994 : 28 ; ; 2032 : 113 ; 2042 : 93 ; 2061 : 2 ; 2065 : 5 ; 2072 : 4 ; 2078 : 9 ; 2089 ; 2100 : 7 ; 2109 : 8 ; 2119 ; 2129 : 5 ; ; 2042 : 18 ; : 93 : : i ; : : : - ; 2137 : 1 ; 2140 ; 2143 ; 2032 : 9 ; : 113 : : i ; : : : - ; 2206 : 5 ; ; : 7 ; ; ; ; ; ; ; ; ; ; ; ; ; 2264 : 9 ; 737 : 5 ; 2231 : 9 ; : 29 ; : 42 ; ; 2223 : 97 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 2335 : 46 ; 2343 : 2 ; 2347 : 5 ; 2354 : 4 ; 2360 : 9 ; 2371 ; 2335 : 7 ; : 46 : : i ; : : : - ; 2334 : 47 ; 2330 : 100 ; ; ; 2402 : 17 ; ; ; ; ; ; ; ; ; ; 2330 : 100 ; 2594 : 1 ; 2583 : 8 ; : 12 ; 2579 : 524 ; ; ; 2630 : 44 ; 2655 : 9 ; 2644 : 8 ; : 20 ; 2666 : 7 ; 2630 : 13 ; : 44 : : i ; : : : - ; 2611 : 63 ; ; 2716 : 8 ; 2705 ; : 19 ; 2688 : 36 ; ; 2762 : 1 ; 2742 : 22 ; ; : 8 ; : 22 ; ; ; 2738 : 355 ; ; ; 2851 : 9 ; : 18 ; ; : 26 ; 2870 : 6 ; 2851 : 26 ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; 8 : 9 : -1 ; 5 : 2 ; ; ; 45 : 16 ; 42 : 1 ; 39 ; 24
"source" : "pragma solidity 0.4.24;\nimport \"./interfaces/ERC20Token.sol\";\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - 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 GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\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.\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 v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execAndPayTransaction(\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 uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas, \"Not enough gas to execute safe transaction\");\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(amount);\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(ERC20Token(gasToken).transfer(tx.origin, amount), \"Could not pay gas costs with token\" ) ; \ n } \ n } \ n } \ n \ n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @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.)
"sourcePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol" ,
"ast" : {
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol" ,
"exportedSymbols" : {
"GnosisSafePersonalEdition" : [
401
]
} ,
"id" : 402 ,
"nodeType" : "SourceUnit" ,
"nodes" : [
{
"id" : 65 ,
"literals" : [
"solidity" ,
"0.4" ,
".24"
] ,
"nodeType" : "PragmaDirective" ,
"src" : "0:23:3"
} ,
{
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol" ,
"file" : "./interfaces/ERC20Token.sol" ,
"id" : 66 ,
"nodeType" : "ImportDirective" ,
"scope" : 402 ,
"sourceUnit" : 1721 ,
"src" : "24:37:3" ,
"symbolAliases" : [ ] ,
"unitAlias" : ""
} ,
{
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol" ,
"file" : "./GnosisSafe.sol" ,
"id" : 67 ,
"nodeType" : "ImportDirective" ,
"scope" : 402 ,
"sourceUnit" : 64 ,
"src" : "62:26:3" ,
"symbolAliases" : [ ] ,
"unitAlias" : ""
} ,
{
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol" ,
"file" : "./MasterCopy.sol" ,
"id" : 68 ,
"nodeType" : "ImportDirective" ,
"scope" : 402 ,
"sourceUnit" : 663 ,
"src" : "89:26:3" ,
"symbolAliases" : [ ] ,
"unitAlias" : ""
} ,
{
"baseContracts" : [
{
"arguments" : null ,
"baseName" : {
"contractScope" : null ,
"id" : 69 ,
"name" : "MasterCopy" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 662 ,
"src" : "487:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_contract$_MasterCopy_$662" ,
"typeString" : "contract MasterCopy"
}
} ,
"id" : 70 ,
"nodeType" : "InheritanceSpecifier" ,
"src" : "487:10:3"
} ,
{
"arguments" : null ,
"baseName" : {
"contractScope" : null ,
"id" : 71 ,
"name" : "GnosisSafe" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 63 ,
"src" : "499:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_contract$_GnosisSafe_$63" ,
"typeString" : "contract GnosisSafe"
}
} ,
"id" : 72 ,
"nodeType" : "InheritanceSpecifier" ,
"src" : "499:10:3"
}
] ,
"contractDependencies" : [
63 ,
662 ,
1118 ,
1504 ,
1654
] ,
"contractKind" : "contract" ,
"documentation" : "@title Gnosis Safe Personal Edition - 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" : 401 ,
"linearizedBaseContracts" : [
401 ,
63 ,
1504 ,
1118 ,
662 ,
1654
] ,
"name" : "GnosisSafePersonalEdition" ,
"nodeType" : "ContractDefinition" ,
"nodes" : [
{
"constant" : true ,
"id" : 75 ,
"name" : "NAME" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "517:60:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_memory" ,
"typeString" : "string"
} ,
"typeName" : {
"id" : 73 ,
"name" : "string" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "517:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_storage_ptr" ,
"typeString" : "string"
}
} ,
"value" : {
"argumentTypes" : null ,
"hexValue" : "476e6f736973205361666520506572736f6e616c2045646974696f6e" ,
"id" : 74 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "547:30:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154" ,
"typeString" : "literal_string \"Gnosis Safe Personal Edition\""
} ,
"value" : "Gnosis Safe Personal Edition"
} ,
"visibility" : "public"
} ,
{
"constant" : true ,
"id" : 78 ,
"name" : "VERSION" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "583:40:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_memory" ,
"typeString" : "string"
} ,
"typeName" : {
"id" : 76 ,
"name" : "string" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "583:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_storage_ptr" ,
"typeString" : "string"
}
} ,
"value" : {
"argumentTypes" : null ,
"hexValue" : "302e302e31" ,
"id" : 77 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "616:7:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885" ,
"typeString" : "literal_string \"0.0.1\""
} ,
"value" : "0.0.1"
} ,
"visibility" : "public"
} ,
{
"constant" : true ,
"id" : 81 ,
"name" : "BASE_TX_GAS_COSTS" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "634:51:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 79 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "634:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : {
"argumentTypes" : null ,
"hexValue" : "3231303030" ,
"id" : 80 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "680:5:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_21000_by_1" ,
"typeString" : "int_const 21000"
} ,
"value" : "21000"
} ,
"visibility" : "internal"
} ,
{
"constant" : true ,
"id" : 84 ,
"name" : "PAYMENT_GAS_COSTS" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "691:51:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 82 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "691:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : {
"argumentTypes" : null ,
"hexValue" : "3131303030" ,
"id" : 83 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "737:5:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_11000_by_1" ,
"typeString" : "int_const 11000"
} ,
"value" : "11000"
} ,
"visibility" : "internal"
} ,
{
"anonymous" : false ,
"documentation" : null ,
"id" : 86 ,
"name" : "ExecutionFailed" ,
"nodeType" : "EventDefinition" ,
"parameters" : {
"id" : 85 ,
"nodeType" : "ParameterList" ,
"parameters" : [ ] ,
"src" : "770:2:3"
} ,
"src" : "749:24:3"
} ,
{
"constant" : false ,
"id" : 88 ,
"name" : "nonce" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "779:20:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 87 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "779:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "public"
} ,
{
"body" : {
"id" : 213 ,
"nodeType" : "Block" ,
"src" : "1984:1127:3" ,
"statements" : [
{
"assignments" : [
117
] ,
"declarations" : [
{
"constant" : false ,
"id" : 117 ,
"name" : "startGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1994:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 116 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1994:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 120 ,
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 118 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "2013:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 119 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2013:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "1994:28:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 123 ,
"name" : "to" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 90 ,
"src" : "2061:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 124 ,
"name" : "value" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 92 ,
"src" : "2065:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 125 ,
"name" : "data" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 94 ,
"src" : "2072:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 126 ,
"name" : "operation" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 96 ,
"src" : "2078:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
{
"argumentTypes" : null ,
"id" : 127 ,
"name" : "safeTxGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 98 ,
"src" : "2089:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 128 ,
"name" : "dataGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 100 ,
"src" : "2100:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 129 ,
"name" : "gasPrice" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 102 ,
"src" : "2109:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 130 ,
"name" : "gasToken" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 104 ,
"src" : "2119:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 131 ,
"name" : "nonce" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 88 ,
"src" : "2129:5:3" ,
"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_$29" ,
"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_uint256" ,
"typeString" : "uint256"
}
] ,
"id" : 122 ,
"name" : "getTransactionHash" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 400 ,
"src" : "2042:18:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$" ,
"typeString" : "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,uint256) view returns (bytes32)"
}
} ,
"id" : 132 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2042:93:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
"id" : 133 ,
"name" : "v" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 107 ,
"src" : "2137:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[] memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 134 ,
"name" : "r" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 110 ,
"src" : "2140:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 135 ,
"name" : "s" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 113 ,
"src" : "2143:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
{
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[] memory"
} ,
{
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
} ,
{
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
] ,
"id" : 121 ,
"name" : "checkHash" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 354 ,
"src" : "2032:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$" ,
"typeString" : "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view"
}
} ,
"id" : 136 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2032:113:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 137 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2032:113:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"id" : 139 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "UnaryOperation" ,
"operator" : "++" ,
"prefix" : false ,
"src" : "2206:7:3" ,
"subExpression" : {
"argumentTypes" : null ,
"id" : 138 ,
"name" : "nonce" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 88 ,
"src" : "2206:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"id" : 140 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2206:7:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 147 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 145 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 142 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "2231:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 143 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2231:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "-" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 144 ,
"name" : "PAYMENT_GAS_COSTS" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 84 ,
"src" : "2243:17:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "2231:29:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : ">=" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 146 ,
"name" : "safeTxGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 98 ,
"src" : "2264:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "2231:42:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
{
"argumentTypes" : null ,
"hexValue" : "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e" ,
"id" : 148 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "2275:44:3" ,
"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" : 141 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2658 ,
"src" : "2223:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (bool,string memory) pure"
}
} ,
"id" : 149 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2223:97:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 150 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2223:97:3"
} ,
{
"condition" : {
"argumentTypes" : null ,
"id" : 158 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "UnaryOperation" ,
"operator" : "!" ,
"prefix" : true ,
"src" : "2334:47:3" ,
"subExpression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 152 ,
"name" : "to" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 90 ,
"src" : "2343:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 153 ,
"name" : "value" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 92 ,
"src" : "2347:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 154 ,
"name" : "data" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 94 ,
"src" : "2354:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 155 ,
"name" : "operation" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 96 ,
"src" : "2360:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
{
"argumentTypes" : null ,
"id" : 156 ,
"name" : "safeTxGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 98 ,
"src" : "2371:9:3" ,
"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_$29" ,
"typeString" : "enum Enum.Operation"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"id" : 151 ,
"name" : "execute" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1007 ,
"src" : "2335:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$" ,
"typeString" : "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)"
}
} ,
"id" : 157 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2335:46:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"falseBody" : null ,
"id" : 163 ,
"nodeType" : "IfStatement" ,
"src" : "2330:100:3" ,
"trueBody" : {
"id" : 162 ,
"nodeType" : "Block" ,
"src" : "2383:47:3" ,
"statements" : [
{
"eventCall" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 159 ,
"name" : "ExecutionFailed" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 86 ,
"src" : "2402:15:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_event_nonpayable$__$returns$__$" ,
"typeString" : "function ()"
}
} ,
"id" : 160 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2402:17:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 161 ,
"nodeType" : "EmitStatement" ,
"src" : "2397:22:3"
}
]
}
} ,
{
"condition" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 166 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 164 ,
"name" : "gasPrice" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 102 ,
"src" : "2583:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : ">" ,
"rightExpression" : {
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 165 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "2594:1:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_0_by_1" ,
"typeString" : "int_const 0"
} ,
"value" : "0"
} ,
"src" : "2583:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"falseBody" : null ,
"id" : 212 ,
"nodeType" : "IfStatement" ,
"src" : "2579:524:3" ,
"trueBody" : {
"id" : 211 ,
"nodeType" : "Block" ,
"src" : "2597:506:3" ,
"statements" : [
{
"assignments" : [
168
] ,
"declarations" : [
{
"constant" : false ,
"id" : 168 ,
"name" : "gasCosts" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "2611:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 167 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "2611:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 176 ,
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 173 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 170 ,
"name" : "startGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 117 ,
"src" : "2644:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "-" ,
"rightExpression" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 171 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "2655:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 172 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2655:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "2644:20:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 174 ,
"name" : "dataGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 100 ,
"src" : "2666:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"id" : 169 ,
"name" : "totalGasCosts" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 232 ,
"src" : "2630:13:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$" ,
"typeString" : "function (uint256,uint256) pure returns (uint256)"
}
} ,
"id" : 175 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2630:44:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "2611:63:3"
} ,
{
"assignments" : [
178
] ,
"declarations" : [
{
"constant" : false ,
"id" : 178 ,
"name" : "amount" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "2688:14:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 177 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "2688:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 182 ,
"initialValue" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 181 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 179 ,
"name" : "gasCosts" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 168 ,
"src" : "2705:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "*" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 180 ,
"name" : "gasPrice" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 102 ,
"src" : "2716:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "2705:19:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "2688:36:3"
} ,
{
"condition" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"id" : 187 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 183 ,
"name" : "gasToken" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 104 ,
"src" : "2742:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "==" ,
"rightExpression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 185 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "2762:1:3" ,
"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" : 184 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "2754:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_address_$" ,
"typeString" : "type(address)"
} ,
"typeName" : "address"
} ,
"id" : 186 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2754:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"src" : "2742:22:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"falseBody" : {
"id" : 209 ,
"nodeType" : "Block" ,
"src" : "2898:195:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"expression" : {
"argumentTypes" : null ,
"id" : 202 ,
"name" : "tx" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2666 ,
"src" : "3021:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_magic_transaction" ,
"typeString" : "tx"
}
} ,
"id" : 203 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"memberName" : "origin" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "3021:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 204 ,
"name" : "amount" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 178 ,
"src" : "3032:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 199 ,
"name" : "gasToken" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 104 ,
"src" : "3002:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
] ,
"id" : 198 ,
"name" : "ERC20Token" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1720 ,
"src" : "2991:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_contract$_ERC20Token_$1720_$" ,
"typeString" : "type(contract ERC20Token)"
}
} ,
"id" : 200 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2991:20:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_contract$_ERC20Token_$1720" ,
"typeString" : "contract ERC20Token"
}
} ,
"id" : 201 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"memberName" : "transfer" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : 1674 ,
"src" : "2991:29:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$" ,
"typeString" : "function (address,uint256) external returns (bool)"
}
} ,
"id" : 205 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2991:48:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
{
"argumentTypes" : null ,
"hexValue" : "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e" ,
"id" : 206 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "3041:36:3" ,
"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" : 197 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2658 ,
"src" : "2983:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (bool,string memory) pure"
}
} ,
"id" : 207 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2983:95:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 208 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2983:95:3"
}
]
} ,
"id" : 210 ,
"nodeType" : "IfStatement" ,
"src" : "2738:355:3" ,
"trueBody" : {
"id" : 196 ,
"nodeType" : "Block" ,
"src" : "2766:126:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 193 ,
"name" : "amount" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 178 ,
"src" : "2870:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
"expression" : {
"argumentTypes" : null ,
"id" : 188 ,
"name" : "tx" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2666 ,
"src" : "2851:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_magic_transaction" ,
"typeString" : "tx"
}
} ,
"id" : 191 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"memberName" : "origin" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "2851:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"id" : 192 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"memberName" : "transfer" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "2851:18:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_transfer_nonpayable$_t_uint256_$returns$__$" ,
"typeString" : "function (uint256)"
}
} ,
"id" : 194 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2851:26:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 195 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2851:26:3"
}
]
}
}
]
}
}
]
} ,
"documentation" : "@dev Allows to execute a Safe transaction confirmed by required number of owners.\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.\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 v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses." ,
"id" : 214 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : false ,
"modifiers" : [ ] ,
"name" : "execAndPayTransaction" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 114 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 90 ,
"name" : "to" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1700:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 89 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1700:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 92 ,
"name" : "value" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1721:13:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 91 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1721:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 94 ,
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1745:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
"id" : 93 ,
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1745:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 96 ,
"name" : "operation" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1766:24:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
} ,
"typeName" : {
"contractScope" : null ,
"id" : 95 ,
"name" : "Enum.Operation" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 29 ,
"src" : "1766:14:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 98 ,
"name" : "safeTxGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1801:17:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 97 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1801:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 100 ,
"name" : "dataGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1828:15:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 99 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1828:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 102 ,
"name" : "gasPrice" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1853:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 101 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1853:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 104 ,
"name" : "gasToken" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1879:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 103 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1879:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 107 ,
"name" : "v" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1905:9:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[]"
} ,
"typeName" : {
"baseType" : {
"id" : 105 ,
"name" : "uint8" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1905:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"id" : 106 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "1905:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_storage_ptr" ,
"typeString" : "uint8[]"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 110 ,
"name" : "r" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1925:11:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[]"
} ,
"typeName" : {
"baseType" : {
"id" : 108 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1925:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"id" : 109 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "1925:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_storage_ptr" ,
"typeString" : "bytes32[]"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 113 ,
"name" : "s" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1947:11:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[]"
} ,
"typeName" : {
"baseType" : {
"id" : 111 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1947:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"id" : 112 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "1947:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_storage_ptr" ,
"typeString" : "bytes32[]"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "1690:274:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 115 ,
"nodeType" : "ParameterList" ,
"parameters" : [ ] ,
"src" : "1984:0:3"
} ,
"scope" : 401 ,
"src" : "1660:1451:3" ,
"stateMutability" : "nonpayable" ,
"superFunction" : null ,
"visibility" : "public"
} ,
{
"body" : {
"id" : 231 ,
"nodeType" : "Block" ,
"src" : "3666:86:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 229 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 227 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 225 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 223 ,
"name" : "executionGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 216 ,
"src" : "3683:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "+" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 224 ,
"name" : "dataGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 218 ,
"src" : "3698:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "3683:22:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "+" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 226 ,
"name" : "PAYMENT_GAS_COSTS" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 84 ,
"src" : "3708:17:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "3683:42:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "+" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 228 ,
"name" : "BASE_TX_GAS_COSTS" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 81 ,
"src" : "3728:17:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "3683:62:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"functionReturnParameters" : 222 ,
"id" : 230 ,
"nodeType" : "Return" ,
"src" : "3676:69:3"
}
]
} ,
"documentation" : "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data)." ,
"id" : 232 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "totalGasCosts" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 219 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 216 ,
"name" : "executionGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 232 ,
"src" : "3566:20:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 215 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "3566:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 218 ,
"name" : "dataGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 232 ,
"src" : "3588:15:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 217 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "3588:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "3565:39:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 222 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 221 ,
"name" : "" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 232 ,
"src" : "3652:7:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 220 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "3652:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "3651:9:3"
} ,
"scope" : 401 ,
"src" : "3543:209:3" ,
"stateMutability" : "pure" ,
"superFunction" : null ,
"visibility" : "public"
} ,
{
"body" : {
"id" : 279 ,
"nodeType" : "Block" ,
"src" : "4822:371:3" ,
"statements" : [
{
"assignments" : [
248
] ,
"declarations" : [
{
"constant" : false ,
"id" : 248 ,
"name" : "startGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4832:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 247 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4832:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 251 ,
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 249 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "4851:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 250 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "4851:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "4832:28:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 254 ,
"name" : "to" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 234 ,
"src" : "4973:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 255 ,
"name" : "value" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 236 ,
"src" : "4977:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 256 ,
"name" : "data" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 238 ,
"src" : "4984:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 257 ,
"name" : "operation" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 240 ,
"src" : "4990:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
{
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 258 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "5001:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 259 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5001:9:3" ,
"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_$29" ,
"typeString" : "enum Enum.Operation"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"id" : 253 ,
"name" : "execute" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1007 ,
"src" : "4965:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$" ,
"typeString" : "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)"
}
} ,
"id" : 260 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "4965:46:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
] ,
"id" : 252 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2657 ,
"src" : "4957:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$returns$__$" ,
"typeString" : "function (bool) pure"
}
} ,
"id" : 261 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "4957:55:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 262 ,
"nodeType" : "ExpressionStatement" ,
"src" : "4957:55:3"
} ,
{
"assignments" : [
264
] ,
"declarations" : [
{
"constant" : false ,
"id" : 264 ,
"name" : "requiredGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "5022:19:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 263 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5022:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 269 ,
"initialValue" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 268 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 265 ,
"name" : "startGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 248 ,
"src" : "5044:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "-" ,
"rightExpression" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 266 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "5055:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 267 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5055:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "5044:20:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "5022:42:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 274 ,
"name" : "requiredGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 264 ,
"src" : "5172:11:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
"id" : 272 ,
"name" : "abi" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2641 ,
"src" : "5155:3:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_magic_abi" ,
"typeString" : "abi"
}
} ,
"id" : 273 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"memberName" : "encodePacked" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "5155:16:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$" ,
"typeString" : "function () pure returns (bytes memory)"
}
} ,
"id" : 275 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5155:29:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
] ,
"id" : 271 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "5148:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_string_storage_ptr_$" ,
"typeString" : "type(string storage pointer)"
} ,
"typeName" : "string"
} ,
"id" : 276 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5148:37:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_memory" ,
"typeString" : "string memory"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_string_memory" ,
"typeString" : "string memory"
}
] ,
"id" : 270 ,
"name" : "revert" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2659 ,
2660
] ,
"referencedDeclaration" : 2660 ,
"src" : "5141:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_revert_pure$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (string memory) pure"
}
} ,
"id" : 277 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5141:45:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 278 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5141:45:3"
}
]
} ,
"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 `execAndPayTransaction`\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)." ,
"id" : 280 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : false ,
"modifiers" : [
{
"arguments" : null ,
"id" : 243 ,
"modifierName" : {
"argumentTypes" : null ,
"id" : 242 ,
"name" : "authorized" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1653 ,
"src" : "4781:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_modifier$__$" ,
"typeString" : "modifier ()"
}
} ,
"nodeType" : "ModifierInvocation" ,
"src" : "4781:10:3"
}
] ,
"name" : "requiredTxGas" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 241 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 234 ,
"name" : "to" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4693:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 233 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4693:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 236 ,
"name" : "value" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4705:13:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 235 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4705:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 238 ,
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4720:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
"id" : 237 ,
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4720:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 240 ,
"name" : "operation" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4732:24:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
} ,
"typeName" : {
"contractScope" : null ,
"id" : 239 ,
"name" : "Enum.Operation" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 29 ,
"src" : "4732:14:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "4692:65:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 246 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 245 ,
"name" : "" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4809:7:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 244 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4809:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "4808:9:3"
} ,
"scope" : 401 ,
"src" : "4670:523:3" ,
"stateMutability" : "nonpayable" ,
"superFunction" : null ,
"visibility" : "public"
} ,
{
"body" : {
"id" : 353 ,
"nodeType" : "Block" ,
"src" : "5303:519:3" ,
"statements" : [
{
"assignments" : [
295
] ,
"declarations" : [
{
"constant" : false ,
"id" : 295 ,
"name" : "lastOwner" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5365:17:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 294 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5365:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 299 ,
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 297 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "5393:1:3" ,
"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" : 296 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "5385:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_address_$" ,
"typeString" : "type(address)"
} ,
"typeName" : "address"
} ,
"id" : 298 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5385:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "5365:30:3"
} ,
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
"id" : 301 ,
"name" : "currentOwner" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5405:20:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 300 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5405:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 302 ,
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "5405:20:3"
} ,
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
"id" : 304 ,
"name" : "i" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5435:9:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 303 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5435:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 305 ,
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "5435:9:3"
} ,
{
"body" : {
"id" : 351 ,
"nodeType" : "Block" ,
"src" : "5528:288:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"id" : 329 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftHandSide" : {
"argumentTypes" : null ,
"id" : 316 ,
"name" : "currentOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 301 ,
"src" : "5542:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "Assignment" ,
"operator" : "=" ,
"rightHandSide" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 318 ,
"name" : "hash" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 282 ,
"src" : "5567:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
"baseExpression" : {
"argumentTypes" : null ,
"id" : 319 ,
"name" : "v" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 285 ,
"src" : "5573:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[] memory"
}
} ,
"id" : 321 ,
"indexExpression" : {
"argumentTypes" : null ,
"id" : 320 ,
"name" : "i" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 304 ,
"src" : "5575:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"isConstant" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "IndexAccess" ,
"src" : "5573:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
{
"argumentTypes" : null ,
"baseExpression" : {
"argumentTypes" : null ,
"id" : 322 ,
"name" : "r" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 288 ,
"src" : "5579:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
} ,
"id" : 324 ,
"indexExpression" : {
"argumentTypes" : null ,
"id" : 323 ,
"name" : "i" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 304 ,
"src" : "5581:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"isConstant" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "IndexAccess" ,
"src" : "5579:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
"baseExpression" : {
"argumentTypes" : null ,
"id" : 325 ,
"name" : "s" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 291 ,
"src" : "5585:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
} ,
"id" : 327 ,
"indexExpression" : {
"argumentTypes" : null ,
"id" : 326 ,
"name" : "i" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 304 ,
"src" : "5587:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"isConstant" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "IndexAccess" ,
"src" : "5585:4:3" ,
"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" : 317 ,
"name" : "ecrecover" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2646 ,
"src" : "5557:9:3" ,
"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" : 328 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5557:33:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"src" : "5542:48:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"id" : 330 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5542:48:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"id" : 336 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"baseExpression" : {
"argumentTypes" : null ,
"id" : 332 ,
"name" : "owners" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1132 ,
"src" : "5612:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_mapping$_t_address_$_t_address_$" ,
"typeString" : "mapping(address => address)"
}
} ,
"id" : 334 ,
"indexExpression" : {
"argumentTypes" : null ,
"id" : 333 ,
"name" : "currentOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 301 ,
"src" : "5619:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"isConstant" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "IndexAccess" ,
"src" : "5612:20:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "!=" ,
"rightExpression" : {
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 335 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "5636:1:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_0_by_1" ,
"typeString" : "int_const 0"
} ,
"value" : "0"
} ,
"src" : "5612:25:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
{
"argumentTypes" : null ,
"hexValue" : "5369676e6174757265206e6f742070726f7669646564206279206f776e6572" ,
"id" : 337 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "5639:33:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9" ,
"typeString" : "literal_string \"Signature not provided by owner\""
} ,
"value" : "Signature not provided by owner"
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
} ,
{
"typeIdentifier" : "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9" ,
"typeString" : "literal_string \"Signature not provided by owner\""
}
] ,
"id" : 331 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2658 ,
"src" : "5604:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (bool,string memory) pure"
}
} ,
"id" : 338 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5604:69:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 339 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5604:69:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"id" : 343 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 341 ,
"name" : "currentOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 301 ,
"src" : "5695:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : ">" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 342 ,
"name" : "lastOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 295 ,
"src" : "5710:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"src" : "5695:24:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
{
"argumentTypes" : null ,
"hexValue" : "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373" ,
"id" : 344 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "5721:45:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235" ,
"typeString" : "literal_string \"Signatures are not ordered by owner address\""
} ,
"value" : "Signatures are not ordered by owner address"
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
} ,
{
"typeIdentifier" : "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235" ,
"typeString" : "literal_string \"Signatures are not ordered by owner address\""
}
] ,
"id" : 340 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2658 ,
"src" : "5687:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (bool,string memory) pure"
}
} ,
"id" : 345 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5687:80:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 346 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5687:80:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"id" : 349 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftHandSide" : {
"argumentTypes" : null ,
"id" : 347 ,
"name" : "lastOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 295 ,
"src" : "5781:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "Assignment" ,
"operator" : "=" ,
"rightHandSide" : {
"argumentTypes" : null ,
"id" : 348 ,
"name" : "currentOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 301 ,
"src" : "5793:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"src" : "5781:24:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"id" : 350 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5781:24:3"
}
]
} ,
"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 ,
"src" : "5508:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "<" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 311 ,
"name" : "threshold" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1136 ,
"src" : "5512:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"src" : "5508:13:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"id" : 352 ,
"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 ,
"src" : "5501:1:3" ,
"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" ,
"src" : "5505:1:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_0_by_1" ,
"typeString" : "int_const 0"
} ,
"value" : "0"
} ,
"src" : "5501:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"id" : 309 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5501:5:3"
} ,
"loopExpression" : {
"expression" : {
"argumentTypes" : null ,
"id" : 314 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "UnaryOperation" ,
"operator" : "++" ,
"prefix" : false ,
"src" : "5523:3:3" ,
"subExpression" : {
"argumentTypes" : null ,
"id" : 313 ,
"name" : "i" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 304 ,
"src" : "5523:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"id" : 315 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5523:3:3"
} ,
"nodeType" : "ForStatement" ,
"src" : "5496:320:3"
}
]
} ,
"documentation" : null ,
"id" : 354 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "checkHash" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 292 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 282 ,
"name" : "hash" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5218:12:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
"id" : 281 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5218:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 285 ,
"name" : "v" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5232:9:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[]"
} ,
"typeName" : {
"baseType" : {
"id" : 283 ,
"name" : "uint8" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5232:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"id" : 284 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "5232:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_storage_ptr" ,
"typeString" : "uint8[]"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 288 ,
"name" : "r" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5243:11:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[]"
} ,
"typeName" : {
"baseType" : {
"id" : 286 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5243:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"id" : 287 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "5243:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_storage_ptr" ,
"typeString" : "bytes32[]"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 291 ,
"name" : "s" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5256:11:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[]"
} ,
"typeName" : {
"baseType" : {
"id" : 289 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5256:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"id" : 290 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "5256:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_storage_ptr" ,
"typeString" : "bytes32[]"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "5217:51:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 293 ,
"nodeType" : "ParameterList" ,
"parameters" : [ ] ,
"src" : "5303:0:3"
} ,
"scope" : 401 ,
"src" : "5199:623:3" ,
"stateMutability" : "view" ,
"superFunction" : null ,
"visibility" : "internal"
} ,
{
"body" : {
"id" : 399 ,
"nodeType" : "Block" ,
"src" : "6746:176:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "30783139" ,
"id" : 381 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "6808:4:3" ,
"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" : 380 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "6803:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_bytes1_$" ,
"typeString" : "type(bytes1)"
} ,
"typeName" : "byte"
} ,
"id" : 382 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "6803:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes1" ,
"typeString" : "bytes1"
}
} ,
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 384 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "6820:1:3" ,
"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" : 383 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "6815:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_bytes1_$" ,
"typeString" : "type(bytes1)"
} ,
"typeName" : "byte"
} ,
"id" : 385 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "6815:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes1" ,
"typeString" : "bytes1"
}
} ,
{
"argumentTypes" : null ,
"id" : 386 ,
"name" : "this" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2687 ,
"src" : "6824:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_contract$_GnosisSafePersonalEdition_$401" ,
"typeString" : "contract GnosisSafePersonalEdition"
}
} ,
{
"argumentTypes" : null ,
"id" : 387 ,
"name" : "to" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 356 ,
"src" : "6830:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 388 ,
"name" : "value" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 358 ,
"src" : "6834:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 389 ,
"name" : "data" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 360 ,
"src" : "6841:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 390 ,
"name" : "operation" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 362 ,
"src" : "6847:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
{
"argumentTypes" : null ,
"id" : 391 ,
"name" : "safeTxGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 364 ,
"src" : "6858:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 392 ,
"name" : "dataGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 366 ,
"src" : "6869:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 393 ,
"name" : "gasPrice" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 368 ,
"src" : "6878:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 394 ,
"name" : "gasToken" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 370 ,
"src" : "6888:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 395 ,
"name" : "_nonce" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 372 ,
"src" : "6898:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes1" ,
"typeString" : "bytes1"
} ,
{
"typeIdentifier" : "t_bytes1" ,
"typeString" : "bytes1"
} ,
{
"typeIdentifier" : "t_contract$_GnosisSafePersonalEdition_$401" ,
"typeString" : "contract GnosisSafePersonalEdition"
} ,
{
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
{
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
} ,
{
"typeIdentifier" : "t_enum$_Operation_$29" ,
"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_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
"id" : 378 ,
"name" : "abi" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2641 ,
"src" : "6786:3:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_magic_abi" ,
"typeString" : "abi"
}
} ,
"id" : 379 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"memberName" : "encodePacked" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "6786:16:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$" ,
"typeString" : "function () pure returns (bytes memory)"
}
} ,
"id" : 396 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "6786:119:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
] ,
"id" : 377 ,
"name" : "keccak256" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2648 ,
"src" : "6763:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_sha3_pure$__$returns$_t_bytes32_$" ,
"typeString" : "function () pure returns (bytes32)"
}
} ,
"id" : 397 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "6763:152:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"functionReturnParameters" : 376 ,
"id" : 398 ,
"nodeType" : "Return" ,
"src" : "6756:159:3"
}
]
} ,
"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 _nonce Transaction nonce.\n @return Transaction hash." ,
"id" : 400 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "getTransactionHash" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 373 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 356 ,
"name" : "to" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6459:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 355 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6459:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 358 ,
"name" : "value" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6480:13:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 357 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6480:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 360 ,
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6504:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
"id" : 359 ,
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6504:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 362 ,
"name" : "operation" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6525:24:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
} ,
"typeName" : {
"contractScope" : null ,
"id" : 361 ,
"name" : "Enum.Operation" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 29 ,
"src" : "6525:14:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 364 ,
"name" : "safeTxGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6560:17:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 363 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6560:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 366 ,
"name" : "dataGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6588:15:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 365 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6588:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 368 ,
"name" : "gasPrice" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6614:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 367 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6614:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 370 ,
"name" : "gasToken" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6641:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 369 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6641:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 372 ,
"name" : "_nonce" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6667:14:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 371 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6667:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "6449:238:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 376 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 375 ,
"name" : "" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6733:7:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
"id" : 374 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6733:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "6732:9:3"
} ,
"scope" : 401 ,
"src" : "6422:500:3" ,
"stateMutability" : "view" ,
"superFunction" : null ,
"visibility" : "public"
}
] ,
"scope" : 402 ,
"src" : "449:6475:3"
}
] ,
"src" : "0:6925:3"
} ,
"legacyAST" : {
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol" ,
"exportedSymbols" : {
"GnosisSafePersonalEdition" : [
401
]
} ,
"id" : 402 ,
"nodeType" : "SourceUnit" ,
"nodes" : [
{
"id" : 65 ,
"literals" : [
"solidity" ,
"0.4" ,
".24"
] ,
"nodeType" : "PragmaDirective" ,
"src" : "0:23:3"
} ,
{
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol" ,
"file" : "./interfaces/ERC20Token.sol" ,
"id" : 66 ,
"nodeType" : "ImportDirective" ,
"scope" : 402 ,
"sourceUnit" : 1721 ,
"src" : "24:37:3" ,
"symbolAliases" : [ ] ,
"unitAlias" : ""
} ,
{
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol" ,
"file" : "./GnosisSafe.sol" ,
"id" : 67 ,
"nodeType" : "ImportDirective" ,
"scope" : 402 ,
"sourceUnit" : 64 ,
"src" : "62:26:3" ,
"symbolAliases" : [ ] ,
"unitAlias" : ""
} ,
{
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol" ,
"file" : "./MasterCopy.sol" ,
"id" : 68 ,
"nodeType" : "ImportDirective" ,
"scope" : 402 ,
"sourceUnit" : 663 ,
"src" : "89:26:3" ,
"symbolAliases" : [ ] ,
"unitAlias" : ""
} ,
{
"baseContracts" : [
{
"arguments" : null ,
"baseName" : {
"contractScope" : null ,
"id" : 69 ,
"name" : "MasterCopy" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 662 ,
"src" : "487:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_contract$_MasterCopy_$662" ,
"typeString" : "contract MasterCopy"
}
} ,
"id" : 70 ,
"nodeType" : "InheritanceSpecifier" ,
"src" : "487:10:3"
} ,
{
"arguments" : null ,
"baseName" : {
"contractScope" : null ,
"id" : 71 ,
"name" : "GnosisSafe" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 63 ,
"src" : "499:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_contract$_GnosisSafe_$63" ,
"typeString" : "contract GnosisSafe"
}
} ,
"id" : 72 ,
"nodeType" : "InheritanceSpecifier" ,
"src" : "499:10:3"
}
] ,
"contractDependencies" : [
63 ,
662 ,
1118 ,
1504 ,
1654
] ,
"contractKind" : "contract" ,
"documentation" : "@title Gnosis Safe Personal Edition - 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" : 401 ,
"linearizedBaseContracts" : [
401 ,
63 ,
1504 ,
1118 ,
662 ,
1654
] ,
"name" : "GnosisSafePersonalEdition" ,
"nodeType" : "ContractDefinition" ,
"nodes" : [
{
"constant" : true ,
"id" : 75 ,
"name" : "NAME" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "517:60:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_memory" ,
"typeString" : "string"
} ,
"typeName" : {
"id" : 73 ,
"name" : "string" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "517:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_storage_ptr" ,
"typeString" : "string"
}
} ,
"value" : {
"argumentTypes" : null ,
"hexValue" : "476e6f736973205361666520506572736f6e616c2045646974696f6e" ,
"id" : 74 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "547:30:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154" ,
"typeString" : "literal_string \"Gnosis Safe Personal Edition\""
} ,
"value" : "Gnosis Safe Personal Edition"
} ,
"visibility" : "public"
} ,
{
"constant" : true ,
"id" : 78 ,
"name" : "VERSION" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "583:40:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_memory" ,
"typeString" : "string"
} ,
"typeName" : {
"id" : 76 ,
"name" : "string" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "583:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_storage_ptr" ,
"typeString" : "string"
}
} ,
"value" : {
"argumentTypes" : null ,
"hexValue" : "302e302e31" ,
"id" : 77 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "616:7:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885" ,
"typeString" : "literal_string \"0.0.1\""
} ,
"value" : "0.0.1"
} ,
"visibility" : "public"
} ,
{
"constant" : true ,
"id" : 81 ,
"name" : "BASE_TX_GAS_COSTS" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "634:51:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 79 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "634:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : {
"argumentTypes" : null ,
"hexValue" : "3231303030" ,
"id" : 80 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "680:5:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_21000_by_1" ,
"typeString" : "int_const 21000"
} ,
"value" : "21000"
} ,
"visibility" : "internal"
} ,
{
"constant" : true ,
"id" : 84 ,
"name" : "PAYMENT_GAS_COSTS" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "691:51:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 82 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "691:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : {
"argumentTypes" : null ,
"hexValue" : "3131303030" ,
"id" : 83 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "737:5:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_11000_by_1" ,
"typeString" : "int_const 11000"
} ,
"value" : "11000"
} ,
"visibility" : "internal"
} ,
{
"anonymous" : false ,
"documentation" : null ,
"id" : 86 ,
"name" : "ExecutionFailed" ,
"nodeType" : "EventDefinition" ,
"parameters" : {
"id" : 85 ,
"nodeType" : "ParameterList" ,
"parameters" : [ ] ,
"src" : "770:2:3"
} ,
"src" : "749:24:3"
} ,
{
"constant" : false ,
"id" : 88 ,
"name" : "nonce" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 401 ,
"src" : "779:20:3" ,
"stateVariable" : true ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 87 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "779:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "public"
} ,
{
"body" : {
"id" : 213 ,
"nodeType" : "Block" ,
"src" : "1984:1127:3" ,
"statements" : [
{
"assignments" : [
117
] ,
"declarations" : [
{
"constant" : false ,
"id" : 117 ,
"name" : "startGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1994:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 116 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1994:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 120 ,
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 118 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "2013:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 119 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2013:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "1994:28:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 123 ,
"name" : "to" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 90 ,
"src" : "2061:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 124 ,
"name" : "value" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 92 ,
"src" : "2065:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 125 ,
"name" : "data" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 94 ,
"src" : "2072:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 126 ,
"name" : "operation" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 96 ,
"src" : "2078:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
{
"argumentTypes" : null ,
"id" : 127 ,
"name" : "safeTxGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 98 ,
"src" : "2089:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 128 ,
"name" : "dataGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 100 ,
"src" : "2100:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 129 ,
"name" : "gasPrice" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 102 ,
"src" : "2109:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 130 ,
"name" : "gasToken" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 104 ,
"src" : "2119:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 131 ,
"name" : "nonce" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 88 ,
"src" : "2129:5:3" ,
"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_$29" ,
"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_uint256" ,
"typeString" : "uint256"
}
] ,
"id" : 122 ,
"name" : "getTransactionHash" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 400 ,
"src" : "2042:18:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$" ,
"typeString" : "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,uint256) view returns (bytes32)"
}
} ,
"id" : 132 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2042:93:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
"id" : 133 ,
"name" : "v" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 107 ,
"src" : "2137:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[] memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 134 ,
"name" : "r" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 110 ,
"src" : "2140:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 135 ,
"name" : "s" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 113 ,
"src" : "2143:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
{
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[] memory"
} ,
{
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
} ,
{
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
] ,
"id" : 121 ,
"name" : "checkHash" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 354 ,
"src" : "2032:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$" ,
"typeString" : "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view"
}
} ,
"id" : 136 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2032:113:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 137 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2032:113:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"id" : 139 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "UnaryOperation" ,
"operator" : "++" ,
"prefix" : false ,
"src" : "2206:7:3" ,
"subExpression" : {
"argumentTypes" : null ,
"id" : 138 ,
"name" : "nonce" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 88 ,
"src" : "2206:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"id" : 140 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2206:7:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 147 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 145 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 142 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "2231:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 143 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2231:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "-" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 144 ,
"name" : "PAYMENT_GAS_COSTS" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 84 ,
"src" : "2243:17:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "2231:29:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : ">=" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 146 ,
"name" : "safeTxGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 98 ,
"src" : "2264:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "2231:42:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
{
"argumentTypes" : null ,
"hexValue" : "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e" ,
"id" : 148 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "2275:44:3" ,
"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" : 141 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2658 ,
"src" : "2223:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (bool,string memory) pure"
}
} ,
"id" : 149 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2223:97:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 150 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2223:97:3"
} ,
{
"condition" : {
"argumentTypes" : null ,
"id" : 158 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "UnaryOperation" ,
"operator" : "!" ,
"prefix" : true ,
"src" : "2334:47:3" ,
"subExpression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 152 ,
"name" : "to" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 90 ,
"src" : "2343:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 153 ,
"name" : "value" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 92 ,
"src" : "2347:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 154 ,
"name" : "data" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 94 ,
"src" : "2354:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 155 ,
"name" : "operation" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 96 ,
"src" : "2360:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
{
"argumentTypes" : null ,
"id" : 156 ,
"name" : "safeTxGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 98 ,
"src" : "2371:9:3" ,
"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_$29" ,
"typeString" : "enum Enum.Operation"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"id" : 151 ,
"name" : "execute" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1007 ,
"src" : "2335:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$" ,
"typeString" : "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)"
}
} ,
"id" : 157 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2335:46:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"falseBody" : null ,
"id" : 163 ,
"nodeType" : "IfStatement" ,
"src" : "2330:100:3" ,
"trueBody" : {
"id" : 162 ,
"nodeType" : "Block" ,
"src" : "2383:47:3" ,
"statements" : [
{
"eventCall" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 159 ,
"name" : "ExecutionFailed" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 86 ,
"src" : "2402:15:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_event_nonpayable$__$returns$__$" ,
"typeString" : "function ()"
}
} ,
"id" : 160 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2402:17:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 161 ,
"nodeType" : "EmitStatement" ,
"src" : "2397:22:3"
}
]
}
} ,
{
"condition" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 166 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 164 ,
"name" : "gasPrice" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 102 ,
"src" : "2583:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : ">" ,
"rightExpression" : {
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 165 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "2594:1:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_0_by_1" ,
"typeString" : "int_const 0"
} ,
"value" : "0"
} ,
"src" : "2583:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"falseBody" : null ,
"id" : 212 ,
"nodeType" : "IfStatement" ,
"src" : "2579:524:3" ,
"trueBody" : {
"id" : 211 ,
"nodeType" : "Block" ,
"src" : "2597:506:3" ,
"statements" : [
{
"assignments" : [
168
] ,
"declarations" : [
{
"constant" : false ,
"id" : 168 ,
"name" : "gasCosts" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "2611:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 167 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "2611:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 176 ,
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 173 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 170 ,
"name" : "startGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 117 ,
"src" : "2644:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "-" ,
"rightExpression" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 171 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "2655:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 172 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2655:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "2644:20:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 174 ,
"name" : "dataGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 100 ,
"src" : "2666:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"id" : 169 ,
"name" : "totalGasCosts" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 232 ,
"src" : "2630:13:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$" ,
"typeString" : "function (uint256,uint256) pure returns (uint256)"
}
} ,
"id" : 175 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2630:44:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "2611:63:3"
} ,
{
"assignments" : [
178
] ,
"declarations" : [
{
"constant" : false ,
"id" : 178 ,
"name" : "amount" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "2688:14:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 177 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "2688:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 182 ,
"initialValue" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 181 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 179 ,
"name" : "gasCosts" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 168 ,
"src" : "2705:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "*" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 180 ,
"name" : "gasPrice" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 102 ,
"src" : "2716:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "2705:19:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "2688:36:3"
} ,
{
"condition" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"id" : 187 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 183 ,
"name" : "gasToken" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 104 ,
"src" : "2742:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "==" ,
"rightExpression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 185 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "2762:1:3" ,
"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" : 184 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "2754:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_address_$" ,
"typeString" : "type(address)"
} ,
"typeName" : "address"
} ,
"id" : 186 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2754:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"src" : "2742:22:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"falseBody" : {
"id" : 209 ,
"nodeType" : "Block" ,
"src" : "2898:195:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"expression" : {
"argumentTypes" : null ,
"id" : 202 ,
"name" : "tx" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2666 ,
"src" : "3021:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_magic_transaction" ,
"typeString" : "tx"
}
} ,
"id" : 203 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"memberName" : "origin" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "3021:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 204 ,
"name" : "amount" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 178 ,
"src" : "3032:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 199 ,
"name" : "gasToken" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 104 ,
"src" : "3002:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
] ,
"id" : 198 ,
"name" : "ERC20Token" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1720 ,
"src" : "2991:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_contract$_ERC20Token_$1720_$" ,
"typeString" : "type(contract ERC20Token)"
}
} ,
"id" : 200 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2991:20:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_contract$_ERC20Token_$1720" ,
"typeString" : "contract ERC20Token"
}
} ,
"id" : 201 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"memberName" : "transfer" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : 1674 ,
"src" : "2991:29:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$" ,
"typeString" : "function (address,uint256) external returns (bool)"
}
} ,
"id" : 205 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2991:48:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
{
"argumentTypes" : null ,
"hexValue" : "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e" ,
"id" : 206 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "3041:36:3" ,
"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" : 197 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2658 ,
"src" : "2983:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (bool,string memory) pure"
}
} ,
"id" : 207 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2983:95:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 208 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2983:95:3"
}
]
} ,
"id" : 210 ,
"nodeType" : "IfStatement" ,
"src" : "2738:355:3" ,
"trueBody" : {
"id" : 196 ,
"nodeType" : "Block" ,
"src" : "2766:126:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 193 ,
"name" : "amount" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 178 ,
"src" : "2870:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
"expression" : {
"argumentTypes" : null ,
"id" : 188 ,
"name" : "tx" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2666 ,
"src" : "2851:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_magic_transaction" ,
"typeString" : "tx"
}
} ,
"id" : 191 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"memberName" : "origin" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "2851:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"id" : 192 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"memberName" : "transfer" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "2851:18:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_transfer_nonpayable$_t_uint256_$returns$__$" ,
"typeString" : "function (uint256)"
}
} ,
"id" : 194 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "2851:26:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 195 ,
"nodeType" : "ExpressionStatement" ,
"src" : "2851:26:3"
}
]
}
}
]
}
}
]
} ,
"documentation" : "@dev Allows to execute a Safe transaction confirmed by required number of owners.\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.\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 v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses." ,
"id" : 214 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : false ,
"modifiers" : [ ] ,
"name" : "execAndPayTransaction" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 114 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 90 ,
"name" : "to" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1700:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 89 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1700:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 92 ,
"name" : "value" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1721:13:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 91 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1721:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 94 ,
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1745:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
"id" : 93 ,
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1745:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 96 ,
"name" : "operation" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1766:24:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
} ,
"typeName" : {
"contractScope" : null ,
"id" : 95 ,
"name" : "Enum.Operation" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 29 ,
"src" : "1766:14:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 98 ,
"name" : "safeTxGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1801:17:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 97 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1801:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 100 ,
"name" : "dataGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1828:15:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 99 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1828:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 102 ,
"name" : "gasPrice" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1853:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 101 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1853:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 104 ,
"name" : "gasToken" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1879:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 103 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1879:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 107 ,
"name" : "v" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1905:9:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[]"
} ,
"typeName" : {
"baseType" : {
"id" : 105 ,
"name" : "uint8" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1905:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"id" : 106 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "1905:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_storage_ptr" ,
"typeString" : "uint8[]"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 110 ,
"name" : "r" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1925:11:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[]"
} ,
"typeName" : {
"baseType" : {
"id" : 108 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1925:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"id" : 109 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "1925:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_storage_ptr" ,
"typeString" : "bytes32[]"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 113 ,
"name" : "s" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 214 ,
"src" : "1947:11:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[]"
} ,
"typeName" : {
"baseType" : {
"id" : 111 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "1947:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"id" : 112 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "1947:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_storage_ptr" ,
"typeString" : "bytes32[]"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "1690:274:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 115 ,
"nodeType" : "ParameterList" ,
"parameters" : [ ] ,
"src" : "1984:0:3"
} ,
"scope" : 401 ,
"src" : "1660:1451:3" ,
"stateMutability" : "nonpayable" ,
"superFunction" : null ,
"visibility" : "public"
} ,
{
"body" : {
"id" : 231 ,
"nodeType" : "Block" ,
"src" : "3666:86:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 229 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 227 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 225 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 223 ,
"name" : "executionGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 216 ,
"src" : "3683:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "+" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 224 ,
"name" : "dataGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 218 ,
"src" : "3698:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "3683:22:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "+" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 226 ,
"name" : "PAYMENT_GAS_COSTS" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 84 ,
"src" : "3708:17:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "3683:42:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "+" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 228 ,
"name" : "BASE_TX_GAS_COSTS" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 81 ,
"src" : "3728:17:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "3683:62:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"functionReturnParameters" : 222 ,
"id" : 230 ,
"nodeType" : "Return" ,
"src" : "3676:69:3"
}
]
} ,
"documentation" : "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data)." ,
"id" : 232 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "totalGasCosts" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 219 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 216 ,
"name" : "executionGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 232 ,
"src" : "3566:20:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 215 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "3566:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 218 ,
"name" : "dataGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 232 ,
"src" : "3588:15:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 217 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "3588:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "3565:39:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 222 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 221 ,
"name" : "" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 232 ,
"src" : "3652:7:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 220 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "3652:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "3651:9:3"
} ,
"scope" : 401 ,
"src" : "3543:209:3" ,
"stateMutability" : "pure" ,
"superFunction" : null ,
"visibility" : "public"
} ,
{
"body" : {
"id" : 279 ,
"nodeType" : "Block" ,
"src" : "4822:371:3" ,
"statements" : [
{
"assignments" : [
248
] ,
"declarations" : [
{
"constant" : false ,
"id" : 248 ,
"name" : "startGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4832:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 247 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4832:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 251 ,
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 249 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "4851:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 250 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "4851:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "4832:28:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 254 ,
"name" : "to" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 234 ,
"src" : "4973:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 255 ,
"name" : "value" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 236 ,
"src" : "4977:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 256 ,
"name" : "data" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 238 ,
"src" : "4984:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 257 ,
"name" : "operation" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 240 ,
"src" : "4990:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
{
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 258 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "5001:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 259 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5001:9:3" ,
"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_$29" ,
"typeString" : "enum Enum.Operation"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"id" : 253 ,
"name" : "execute" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1007 ,
"src" : "4965:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$" ,
"typeString" : "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)"
}
} ,
"id" : 260 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "4965:46:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
] ,
"id" : 252 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2657 ,
"src" : "4957:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$returns$__$" ,
"typeString" : "function (bool) pure"
}
} ,
"id" : 261 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "4957:55:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 262 ,
"nodeType" : "ExpressionStatement" ,
"src" : "4957:55:3"
} ,
{
"assignments" : [
264
] ,
"declarations" : [
{
"constant" : false ,
"id" : 264 ,
"name" : "requiredGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "5022:19:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 263 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5022:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 269 ,
"initialValue" : {
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"id" : 268 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 265 ,
"name" : "startGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 248 ,
"src" : "5044:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "-" ,
"rightExpression" : {
"argumentTypes" : null ,
"arguments" : [ ] ,
"expression" : {
"argumentTypes" : [ ] ,
"id" : 266 ,
"name" : "gasleft" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2647 ,
"src" : "5055:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_gasleft_view$__$returns$_t_uint256_$" ,
"typeString" : "function () view returns (uint256)"
}
} ,
"id" : 267 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5055:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"src" : "5044:20:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "5022:42:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 274 ,
"name" : "requiredGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 264 ,
"src" : "5172:11:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
"id" : 272 ,
"name" : "abi" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2641 ,
"src" : "5155:3:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_magic_abi" ,
"typeString" : "abi"
}
} ,
"id" : 273 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"memberName" : "encodePacked" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "5155:16:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$" ,
"typeString" : "function () pure returns (bytes memory)"
}
} ,
"id" : 275 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5155:29:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
] ,
"id" : 271 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "5148:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_string_storage_ptr_$" ,
"typeString" : "type(string storage pointer)"
} ,
"typeName" : "string"
} ,
"id" : 276 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5148:37:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_string_memory" ,
"typeString" : "string memory"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_string_memory" ,
"typeString" : "string memory"
}
] ,
"id" : 270 ,
"name" : "revert" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2659 ,
2660
] ,
"referencedDeclaration" : 2660 ,
"src" : "5141:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_revert_pure$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (string memory) pure"
}
} ,
"id" : 277 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5141:45:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 278 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5141:45:3"
}
]
} ,
"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 `execAndPayTransaction`\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)." ,
"id" : 280 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : false ,
"modifiers" : [
{
"arguments" : null ,
"id" : 243 ,
"modifierName" : {
"argumentTypes" : null ,
"id" : 242 ,
"name" : "authorized" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1653 ,
"src" : "4781:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_modifier$__$" ,
"typeString" : "modifier ()"
}
} ,
"nodeType" : "ModifierInvocation" ,
"src" : "4781:10:3"
}
] ,
"name" : "requiredTxGas" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 241 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 234 ,
"name" : "to" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4693:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 233 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4693:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 236 ,
"name" : "value" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4705:13:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 235 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4705:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 238 ,
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4720:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
"id" : 237 ,
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4720:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 240 ,
"name" : "operation" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4732:24:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
} ,
"typeName" : {
"contractScope" : null ,
"id" : 239 ,
"name" : "Enum.Operation" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 29 ,
"src" : "4732:14:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "4692:65:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 246 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 245 ,
"name" : "" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 280 ,
"src" : "4809:7:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 244 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "4809:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "4808:9:3"
} ,
"scope" : 401 ,
"src" : "4670:523:3" ,
"stateMutability" : "nonpayable" ,
"superFunction" : null ,
"visibility" : "public"
} ,
{
"body" : {
"id" : 353 ,
"nodeType" : "Block" ,
"src" : "5303:519:3" ,
"statements" : [
{
"assignments" : [
295
] ,
"declarations" : [
{
"constant" : false ,
"id" : 295 ,
"name" : "lastOwner" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5365:17:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 294 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5365:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 299 ,
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 297 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "5393:1:3" ,
"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" : 296 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "5385:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_address_$" ,
"typeString" : "type(address)"
} ,
"typeName" : "address"
} ,
"id" : 298 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5385:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "5365:30:3"
} ,
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
"id" : 301 ,
"name" : "currentOwner" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5405:20:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 300 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5405:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 302 ,
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "5405:20:3"
} ,
{
"assignments" : [ ] ,
"declarations" : [
{
"constant" : false ,
"id" : 304 ,
"name" : "i" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5435:9:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 303 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5435:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"id" : 305 ,
"initialValue" : null ,
"nodeType" : "VariableDeclarationStatement" ,
"src" : "5435:9:3"
} ,
{
"body" : {
"id" : 351 ,
"nodeType" : "Block" ,
"src" : "5528:288:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"id" : 329 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftHandSide" : {
"argumentTypes" : null ,
"id" : 316 ,
"name" : "currentOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 301 ,
"src" : "5542:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "Assignment" ,
"operator" : "=" ,
"rightHandSide" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"id" : 318 ,
"name" : "hash" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 282 ,
"src" : "5567:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
"baseExpression" : {
"argumentTypes" : null ,
"id" : 319 ,
"name" : "v" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 285 ,
"src" : "5573:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[] memory"
}
} ,
"id" : 321 ,
"indexExpression" : {
"argumentTypes" : null ,
"id" : 320 ,
"name" : "i" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 304 ,
"src" : "5575:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"isConstant" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "IndexAccess" ,
"src" : "5573:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
{
"argumentTypes" : null ,
"baseExpression" : {
"argumentTypes" : null ,
"id" : 322 ,
"name" : "r" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 288 ,
"src" : "5579:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
} ,
"id" : 324 ,
"indexExpression" : {
"argumentTypes" : null ,
"id" : 323 ,
"name" : "i" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 304 ,
"src" : "5581:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"isConstant" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "IndexAccess" ,
"src" : "5579:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
{
"argumentTypes" : null ,
"baseExpression" : {
"argumentTypes" : null ,
"id" : 325 ,
"name" : "s" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 291 ,
"src" : "5585:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[] memory"
}
} ,
"id" : 327 ,
"indexExpression" : {
"argumentTypes" : null ,
"id" : 326 ,
"name" : "i" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 304 ,
"src" : "5587:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"isConstant" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "IndexAccess" ,
"src" : "5585:4:3" ,
"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" : 317 ,
"name" : "ecrecover" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2646 ,
"src" : "5557:9:3" ,
"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" : 328 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5557:33:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"src" : "5542:48:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"id" : 330 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5542:48:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"id" : 336 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"baseExpression" : {
"argumentTypes" : null ,
"id" : 332 ,
"name" : "owners" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1132 ,
"src" : "5612:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_mapping$_t_address_$_t_address_$" ,
"typeString" : "mapping(address => address)"
}
} ,
"id" : 334 ,
"indexExpression" : {
"argumentTypes" : null ,
"id" : 333 ,
"name" : "currentOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 301 ,
"src" : "5619:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"isConstant" : false ,
"isLValue" : true ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "IndexAccess" ,
"src" : "5612:20:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "!=" ,
"rightExpression" : {
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 335 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "5636:1:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_0_by_1" ,
"typeString" : "int_const 0"
} ,
"value" : "0"
} ,
"src" : "5612:25:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
{
"argumentTypes" : null ,
"hexValue" : "5369676e6174757265206e6f742070726f7669646564206279206f776e6572" ,
"id" : 337 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "5639:33:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9" ,
"typeString" : "literal_string \"Signature not provided by owner\""
} ,
"value" : "Signature not provided by owner"
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
} ,
{
"typeIdentifier" : "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9" ,
"typeString" : "literal_string \"Signature not provided by owner\""
}
] ,
"id" : 331 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2658 ,
"src" : "5604:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (bool,string memory) pure"
}
} ,
"id" : 338 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5604:69:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 339 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5604:69:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"commonType" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"id" : 343 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftExpression" : {
"argumentTypes" : null ,
"id" : 341 ,
"name" : "currentOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 301 ,
"src" : "5695:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : ">" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 342 ,
"name" : "lastOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 295 ,
"src" : "5710:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"src" : "5695:24:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
{
"argumentTypes" : null ,
"hexValue" : "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373" ,
"id" : 344 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "5721:45:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235" ,
"typeString" : "literal_string \"Signatures are not ordered by owner address\""
} ,
"value" : "Signatures are not ordered by owner address"
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
} ,
{
"typeIdentifier" : "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235" ,
"typeString" : "literal_string \"Signatures are not ordered by owner address\""
}
] ,
"id" : 340 ,
"name" : "require" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [
2657 ,
2658
] ,
"referencedDeclaration" : 2658 ,
"src" : "5687:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$" ,
"typeString" : "function (bool,string memory) pure"
}
} ,
"id" : 345 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "5687:80:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_tuple$__$" ,
"typeString" : "tuple()"
}
} ,
"id" : 346 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5687:80:3"
} ,
{
"expression" : {
"argumentTypes" : null ,
"id" : 349 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"leftHandSide" : {
"argumentTypes" : null ,
"id" : 347 ,
"name" : "lastOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 295 ,
"src" : "5781:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"nodeType" : "Assignment" ,
"operator" : "=" ,
"rightHandSide" : {
"argumentTypes" : null ,
"id" : 348 ,
"name" : "currentOwner" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 301 ,
"src" : "5793:12:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"src" : "5781:24:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"id" : 350 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5781:24:3"
}
]
} ,
"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 ,
"src" : "5508:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"nodeType" : "BinaryOperation" ,
"operator" : "<" ,
"rightExpression" : {
"argumentTypes" : null ,
"id" : 311 ,
"name" : "threshold" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 1136 ,
"src" : "5512:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"src" : "5508:13:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"id" : 352 ,
"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 ,
"src" : "5501:1:3" ,
"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" ,
"src" : "5505:1:3" ,
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_rational_0_by_1" ,
"typeString" : "int_const 0"
} ,
"value" : "0"
} ,
"src" : "5501:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"id" : 309 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5501:5:3"
} ,
"loopExpression" : {
"expression" : {
"argumentTypes" : null ,
"id" : 314 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"lValueRequested" : false ,
"nodeType" : "UnaryOperation" ,
"operator" : "++" ,
"prefix" : false ,
"src" : "5523:3:3" ,
"subExpression" : {
"argumentTypes" : null ,
"id" : 313 ,
"name" : "i" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 304 ,
"src" : "5523:1:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"id" : 315 ,
"nodeType" : "ExpressionStatement" ,
"src" : "5523:3:3"
} ,
"nodeType" : "ForStatement" ,
"src" : "5496:320:3"
}
]
} ,
"documentation" : null ,
"id" : 354 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "checkHash" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 292 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 282 ,
"name" : "hash" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5218:12:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
"id" : 281 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5218:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 285 ,
"name" : "v" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5232:9:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_memory_ptr" ,
"typeString" : "uint8[]"
} ,
"typeName" : {
"baseType" : {
"id" : 283 ,
"name" : "uint8" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5232:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint8" ,
"typeString" : "uint8"
}
} ,
"id" : 284 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "5232:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_uint8_$dyn_storage_ptr" ,
"typeString" : "uint8[]"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 288 ,
"name" : "r" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5243:11:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[]"
} ,
"typeName" : {
"baseType" : {
"id" : 286 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5243:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"id" : 287 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "5243:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_storage_ptr" ,
"typeString" : "bytes32[]"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 291 ,
"name" : "s" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 354 ,
"src" : "5256:11:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_memory_ptr" ,
"typeString" : "bytes32[]"
} ,
"typeName" : {
"baseType" : {
"id" : 289 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "5256:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"id" : 290 ,
"length" : null ,
"nodeType" : "ArrayTypeName" ,
"src" : "5256:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_array$_t_bytes32_$dyn_storage_ptr" ,
"typeString" : "bytes32[]"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "5217:51:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 293 ,
"nodeType" : "ParameterList" ,
"parameters" : [ ] ,
"src" : "5303:0:3"
} ,
"scope" : 401 ,
"src" : "5199:623:3" ,
"stateMutability" : "view" ,
"superFunction" : null ,
"visibility" : "internal"
} ,
{
"body" : {
"id" : 399 ,
"nodeType" : "Block" ,
"src" : "6746:176:3" ,
"statements" : [
{
"expression" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "30783139" ,
"id" : 381 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "6808:4:3" ,
"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" : 380 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "6803:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_bytes1_$" ,
"typeString" : "type(bytes1)"
} ,
"typeName" : "byte"
} ,
"id" : 382 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "6803:10:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes1" ,
"typeString" : "bytes1"
}
} ,
{
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "30" ,
"id" : 384 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "number" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
"src" : "6820:1:3" ,
"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" : 383 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"nodeType" : "ElementaryTypeNameExpression" ,
"src" : "6815:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_type$_t_bytes1_$" ,
"typeString" : "type(bytes1)"
} ,
"typeName" : "byte"
} ,
"id" : 385 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "typeConversion" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "6815:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes1" ,
"typeString" : "bytes1"
}
} ,
{
"argumentTypes" : null ,
"id" : 386 ,
"name" : "this" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2687 ,
"src" : "6824:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_contract$_GnosisSafePersonalEdition_$401" ,
"typeString" : "contract GnosisSafePersonalEdition"
}
} ,
{
"argumentTypes" : null ,
"id" : 387 ,
"name" : "to" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 356 ,
"src" : "6830:2:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 388 ,
"name" : "value" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 358 ,
"src" : "6834:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 389 ,
"name" : "data" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 360 ,
"src" : "6841:4:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
{
"argumentTypes" : null ,
"id" : 390 ,
"name" : "operation" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 362 ,
"src" : "6847:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
{
"argumentTypes" : null ,
"id" : 391 ,
"name" : "safeTxGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 364 ,
"src" : "6858:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 392 ,
"name" : "dataGas" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 366 ,
"src" : "6869:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 393 ,
"name" : "gasPrice" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 368 ,
"src" : "6878:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
{
"argumentTypes" : null ,
"id" : 394 ,
"name" : "gasToken" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 370 ,
"src" : "6888:8:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
"id" : 395 ,
"name" : "_nonce" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 372 ,
"src" : "6898:6:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes1" ,
"typeString" : "bytes1"
} ,
{
"typeIdentifier" : "t_bytes1" ,
"typeString" : "bytes1"
} ,
{
"typeIdentifier" : "t_contract$_GnosisSafePersonalEdition_$401" ,
"typeString" : "contract GnosisSafePersonalEdition"
} ,
{
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
{
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
} ,
{
"typeIdentifier" : "t_enum$_Operation_$29" ,
"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_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
"id" : 378 ,
"name" : "abi" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2641 ,
"src" : "6786:3:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_magic_abi" ,
"typeString" : "abi"
}
} ,
"id" : 379 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"memberName" : "encodePacked" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
"src" : "6786:16:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$" ,
"typeString" : "function () pure returns (bytes memory)"
}
} ,
"id" : 396 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "6786:119:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
] ,
"id" : 377 ,
"name" : "keccak256" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
"referencedDeclaration" : 2648 ,
"src" : "6763:9:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_function_sha3_pure$__$returns$_t_bytes32_$" ,
"typeString" : "function () pure returns (bytes32)"
}
} ,
"id" : 397 ,
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
"src" : "6763:152:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"functionReturnParameters" : 376 ,
"id" : 398 ,
"nodeType" : "Return" ,
"src" : "6756:159:3"
}
]
} ,
"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 _nonce Transaction nonce.\n @return Transaction hash." ,
"id" : 400 ,
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : true ,
"modifiers" : [ ] ,
"name" : "getTransactionHash" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
"id" : 373 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 356 ,
"name" : "to" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6459:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 355 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6459:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 358 ,
"name" : "value" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6480:13:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 357 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6480:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 360 ,
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6504:10:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
"id" : 359 ,
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6504:5:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 362 ,
"name" : "operation" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6525:24:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
} ,
"typeName" : {
"contractScope" : null ,
"id" : 361 ,
"name" : "Enum.Operation" ,
"nodeType" : "UserDefinedTypeName" ,
"referencedDeclaration" : 29 ,
"src" : "6525:14:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_enum$_Operation_$29" ,
"typeString" : "enum Enum.Operation"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 364 ,
"name" : "safeTxGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6560:17:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 363 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6560:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 366 ,
"name" : "dataGas" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6588:15:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 365 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6588:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 368 ,
"name" : "gasPrice" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6614:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 367 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6614:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 370 ,
"name" : "gasToken" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6641:16:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
"id" : 369 ,
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6641:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
"id" : 372 ,
"name" : "_nonce" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6667:14:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
"id" : 371 ,
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6667:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "6449:238:3"
} ,
"payable" : false ,
"returnParameters" : {
"id" : 376 ,
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
"id" : 375 ,
"name" : "" ,
"nodeType" : "VariableDeclaration" ,
"scope" : 400 ,
"src" : "6733:7:3" ,
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
} ,
"typeName" : {
"id" : 374 ,
"name" : "bytes32" ,
"nodeType" : "ElementaryTypeName" ,
"src" : "6733:7:3" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes32" ,
"typeString" : "bytes32"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
"src" : "6732:9:3"
} ,
"scope" : 401 ,
"src" : "6422:500:3" ,
"stateMutability" : "view" ,
"superFunction" : null ,
"visibility" : "public"
}
] ,
"scope" : 402 ,
"src" : "449:6475:3"
}
] ,
"src" : "0:6925:3"
} ,
"compiler" : {
"name" : "solc" ,
"version" : "0.4.24+commit.e67f0147.Emscripten.clang"
} ,
"networks" : {
"4" : {
"events" : { } ,
"links" : { } ,
"address" : "0xd07b0b778cb265e61886c6a037ad0a1ccd605f13" ,
"transactionHash" : "0xf3b9f8c0358d81f3f4d600ad6bd4d01725c1b82c6e8d3a5d5cbf00bf3ab7f935"
} ,
"1527420696956" : {
"events" : { } ,
"links" : { } ,
"address" : "0x177c7d89d62a0d8bdab4a0a8a5e7225370fd1486" ,
"transactionHash" : "0x67117c1452ee2f4b904621b6f30790ff998d1f1a72f11c6b71ef47e3dd254724"
} ,
"1527678155804" : {
"events" : { } ,
"links" : { } ,
"address" : "0x4dbf7fe3ee192b4ea00005c0a7219e4ca19971d6" ,
"transactionHash" : "0xbbf11bb9369aeb027629ec2279e2be554fee6c522da76160a6b535d25d966b1e"
2018-06-04 11:08:12 +00:00
} ,
"1528109761438" : {
"events" : { } ,
"links" : { } ,
"address" : "0x8c55b458a53e8c6e9efa7f54e7be9ca76b43dd9b" ,
"transactionHash" : "0x67117c1452ee2f4b904621b6f30790ff998d1f1a72f11c6b71ef47e3dd254724"
2018-06-07 06:18:40 +00:00
} ,
"1528296677763" : {
"events" : { } ,
"links" : { } ,
"address" : "0xc3d42147f9b51c9749d3362e8b9ee6cb94861778" ,
"transactionHash" : "0x67117c1452ee2f4b904621b6f30790ff998d1f1a72f11c6b71ef47e3dd254724"
2018-05-31 13:01:02 +00:00
}
} ,
"schemaVersion" : "2.0.0" ,
2018-06-07 06:18:40 +00:00
"updatedAt" : "2018-06-06T14:51:43.672Z"
2018-05-31 13:01:02 +00:00
}