2018-06-28 17:13:59 +00:00
{
"contractName" : "SecuredTokenTransfer" ,
"abi" : [ ] ,
"bytecode" : "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a723058203704d691dd103c6cda573e69dcd48a2de4d0edf672da44096a50180687c79a770029" ,
"deployedBytecode" : "0x6080604052600080fd00a165627a7a723058203704d691dd103c6cda573e69dcd48a2de4d0edf672da44096a50180687c79a770029" ,
2018-06-29 11:23:01 +00:00
"sourceMap" : "133:1051:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;133:1051:15;;;;;;;" ,
"deployedSourceMap" : "133:1051:15:-;;;;;" ,
2018-06-28 17:13:59 +00:00
"source" : "pragma solidity 0.4.24;\n\n\n/// @title SecuredTokenTransfer - Secure token transfer\n/// @author Richard Meissner - <richard@gnosis.pm>\ncontract SecuredTokenTransfer {\n\n /// @dev Transfers a token and returns if it was a success\n /// @param token Token that should be transferred\n /// @param receiver Receiver to whom the token should be transferred\n /// @param amount The amount of tokens that should be transferred\n function transferToken (\n address token, \n address receiver,\n uint256 amount\n )\n internal\n returns (bool transferred)\n {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", receiver, amount);\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let success := call(sub(gas, 10000), token, 0, add(data, 0x20), mload(data), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n switch returndatasize \n case 0 { transferred := success }\n case 0x20 { transferred := iszero(or(iszero(success), iszero(mload(ptr)))) }\n default { transferred := 0 }\n }\n }\n}\n" ,
"sourcePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol" ,
"ast" : {
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol" ,
"exportedSymbols" : {
"SecuredTokenTransfer" : [
2018-08-20 07:59:16 +00:00
1748
2018-06-28 17:13:59 +00:00
]
} ,
2018-08-20 07:59:16 +00:00
"id" : 1749 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "SourceUnit" ,
"nodes" : [
{
2018-08-20 07:59:16 +00:00
"id" : 1725 ,
2018-06-28 17:13:59 +00:00
"literals" : [
"solidity" ,
"0.4" ,
".24"
] ,
"nodeType" : "PragmaDirective" ,
2018-06-29 11:23:01 +00:00
"src" : "0:23:15"
2018-06-28 17:13:59 +00:00
} ,
{
"baseContracts" : [ ] ,
"contractDependencies" : [ ] ,
"contractKind" : "contract" ,
"documentation" : "@title SecuredTokenTransfer - Secure token transfer\n @author Richard Meissner - <richard@gnosis.pm>" ,
"fullyImplemented" : true ,
2018-08-20 07:59:16 +00:00
"id" : 1748 ,
2018-06-28 17:13:59 +00:00
"linearizedBaseContracts" : [
2018-08-20 07:59:16 +00:00
1748
2018-06-28 17:13:59 +00:00
] ,
"name" : "SecuredTokenTransfer" ,
"nodeType" : "ContractDefinition" ,
"nodes" : [
{
"body" : {
2018-08-20 07:59:16 +00:00
"id" : 1746 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "Block" ,
2018-06-29 11:23:01 +00:00
"src" : "590:592:15" ,
2018-06-28 17:13:59 +00:00
"statements" : [
{
"assignments" : [
2018-08-20 07:59:16 +00:00
1737
2018-06-28 17:13:59 +00:00
] ,
"declarations" : [
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1737 ,
2018-06-28 17:13:59 +00:00
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "600:17:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "memory" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1736 ,
2018-06-28 17:13:59 +00:00
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "600:5:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-08-20 07:59:16 +00:00
"id" : 1744 ,
2018-06-28 17:13:59 +00:00
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "7472616e7366657228616464726573732c75696e7432353629" ,
2018-08-20 07:59:16 +00:00
"id" : 1740 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
2018-06-29 11:23:01 +00:00
"src" : "644:27:15" ,
2018-06-28 17:13:59 +00:00
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b" ,
"typeString" : "literal_string \"transfer(address,uint256)\""
} ,
"value" : "transfer(address,uint256)"
} ,
{
"argumentTypes" : null ,
2018-08-20 07:59:16 +00:00
"id" : 1741 ,
2018-06-28 17:13:59 +00:00
"name" : "receiver" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-08-20 07:59:16 +00:00
"referencedDeclaration" : 1729 ,
2018-06-29 11:23:01 +00:00
"src" : "673:8:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
2018-08-20 07:59:16 +00:00
"id" : 1742 ,
2018-06-28 17:13:59 +00:00
"name" : "amount" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-08-20 07:59:16 +00:00
"referencedDeclaration" : 1731 ,
2018-06-29 11:23:01 +00:00
"src" : "683:6:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b" ,
"typeString" : "literal_string \"transfer(address,uint256)\""
} ,
{
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
2018-08-20 07:59:16 +00:00
"id" : 1738 ,
2018-06-28 17:13:59 +00:00
"name" : "abi" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-08-20 07:59:16 +00:00
"referencedDeclaration" : 3815 ,
2018-06-29 11:23:01 +00:00
"src" : "620:3:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_magic_abi" ,
"typeString" : "abi"
}
} ,
2018-08-20 07:59:16 +00:00
"id" : 1739 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"memberName" : "encodeWithSignature" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
2018-06-29 11:23:01 +00:00
"src" : "620:23:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$" ,
"typeString" : "function (string memory) pure returns (bytes memory)"
}
} ,
2018-08-20 07:59:16 +00:00
"id" : 1743 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
2018-06-29 11:23:01 +00:00
"src" : "620:70:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
2018-06-29 11:23:01 +00:00
"src" : "600:90:15"
2018-06-28 17:13:59 +00:00
} ,
{
"externalReferences" : [
{
"transferred" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1734 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "1061:11:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"data" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1737 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "857:4:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"token" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1727 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "824:5:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"data" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1737 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "838:4:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"transferred" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1734 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "1012:11:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"transferred" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1734 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "1148:11:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
}
] ,
2018-08-20 07:59:16 +00:00
"id" : 1745 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "InlineAssembly" ,
"operations" : "{\n let success := call(sub(gas(), 10000), token, 0, add(data, 0x20), mload(data), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n switch returndatasize()\n case 0 {\n transferred := success\n }\n case 0x20 {\n transferred := iszero(or(iszero(success), iszero(mload(ptr))))\n }\n default {\n transferred := 0\n }\n}" ,
2018-06-29 11:23:01 +00:00
"src" : "764:418:15"
2018-06-28 17:13:59 +00:00
}
]
} ,
"documentation" : "@dev Transfers a token and returns if it was a success\n @param token Token that should be transferred\n @param receiver Receiver to whom the token should be transferred\n @param amount The amount of tokens that should be transferred" ,
2018-08-20 07:59:16 +00:00
"id" : 1747 ,
2018-06-28 17:13:59 +00:00
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : false ,
"modifiers" : [ ] ,
"name" : "transferToken" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
2018-08-20 07:59:16 +00:00
"id" : 1732 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1727 ,
2018-06-28 17:13:59 +00:00
"name" : "token" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "463:13:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1726 ,
2018-06-28 17:13:59 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "463:7:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1729 ,
2018-06-28 17:13:59 +00:00
"name" : "receiver" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "487:16:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1728 ,
2018-06-28 17:13:59 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "487:7:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1731 ,
2018-06-28 17:13:59 +00:00
"name" : "amount" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "513:14:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1730 ,
2018-06-28 17:13:59 +00:00
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "513:7:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-06-29 11:23:01 +00:00
"src" : "453:80:15"
2018-06-28 17:13:59 +00:00
} ,
"payable" : false ,
"returnParameters" : {
2018-08-20 07:59:16 +00:00
"id" : 1735 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1734 ,
2018-06-28 17:13:59 +00:00
"name" : "transferred" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "568:16:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1733 ,
2018-06-28 17:13:59 +00:00
"name" : "bool" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "568:4:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-06-29 11:23:01 +00:00
"src" : "567:18:15"
2018-06-28 17:13:59 +00:00
} ,
2018-08-20 07:59:16 +00:00
"scope" : 1748 ,
2018-06-29 11:23:01 +00:00
"src" : "430:752:15" ,
2018-06-28 17:13:59 +00:00
"stateMutability" : "nonpayable" ,
"superFunction" : null ,
"visibility" : "internal"
}
] ,
2018-08-20 07:59:16 +00:00
"scope" : 1749 ,
2018-06-29 11:23:01 +00:00
"src" : "133:1051:15"
2018-06-28 17:13:59 +00:00
}
] ,
2018-06-29 11:23:01 +00:00
"src" : "0:1185:15"
2018-06-28 17:13:59 +00:00
} ,
"legacyAST" : {
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/SecuredTokenTransfer.sol" ,
"exportedSymbols" : {
"SecuredTokenTransfer" : [
2018-08-20 07:59:16 +00:00
1748
2018-06-28 17:13:59 +00:00
]
} ,
2018-08-20 07:59:16 +00:00
"id" : 1749 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "SourceUnit" ,
"nodes" : [
{
2018-08-20 07:59:16 +00:00
"id" : 1725 ,
2018-06-28 17:13:59 +00:00
"literals" : [
"solidity" ,
"0.4" ,
".24"
] ,
"nodeType" : "PragmaDirective" ,
2018-06-29 11:23:01 +00:00
"src" : "0:23:15"
2018-06-28 17:13:59 +00:00
} ,
{
"baseContracts" : [ ] ,
"contractDependencies" : [ ] ,
"contractKind" : "contract" ,
"documentation" : "@title SecuredTokenTransfer - Secure token transfer\n @author Richard Meissner - <richard@gnosis.pm>" ,
"fullyImplemented" : true ,
2018-08-20 07:59:16 +00:00
"id" : 1748 ,
2018-06-28 17:13:59 +00:00
"linearizedBaseContracts" : [
2018-08-20 07:59:16 +00:00
1748
2018-06-28 17:13:59 +00:00
] ,
"name" : "SecuredTokenTransfer" ,
"nodeType" : "ContractDefinition" ,
"nodes" : [
{
"body" : {
2018-08-20 07:59:16 +00:00
"id" : 1746 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "Block" ,
2018-06-29 11:23:01 +00:00
"src" : "590:592:15" ,
2018-06-28 17:13:59 +00:00
"statements" : [
{
"assignments" : [
2018-08-20 07:59:16 +00:00
1737
2018-06-28 17:13:59 +00:00
] ,
"declarations" : [
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1737 ,
2018-06-28 17:13:59 +00:00
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "600:17:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "memory" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1736 ,
2018-06-28 17:13:59 +00:00
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "600:5:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-08-20 07:59:16 +00:00
"id" : 1744 ,
2018-06-28 17:13:59 +00:00
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "7472616e7366657228616464726573732c75696e7432353629" ,
2018-08-20 07:59:16 +00:00
"id" : 1740 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
2018-06-29 11:23:01 +00:00
"src" : "644:27:15" ,
2018-06-28 17:13:59 +00:00
"subdenomination" : null ,
"typeDescriptions" : {
"typeIdentifier" : "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b" ,
"typeString" : "literal_string \"transfer(address,uint256)\""
} ,
"value" : "transfer(address,uint256)"
} ,
{
"argumentTypes" : null ,
2018-08-20 07:59:16 +00:00
"id" : 1741 ,
2018-06-28 17:13:59 +00:00
"name" : "receiver" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-08-20 07:59:16 +00:00
"referencedDeclaration" : 1729 ,
2018-06-29 11:23:01 +00:00
"src" : "673:8:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
2018-08-20 07:59:16 +00:00
"id" : 1742 ,
2018-06-28 17:13:59 +00:00
"name" : "amount" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-08-20 07:59:16 +00:00
"referencedDeclaration" : 1731 ,
2018-06-29 11:23:01 +00:00
"src" : "683:6:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
}
] ,
"expression" : {
"argumentTypes" : [
{
"typeIdentifier" : "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b" ,
"typeString" : "literal_string \"transfer(address,uint256)\""
} ,
{
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
{
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
] ,
"expression" : {
"argumentTypes" : null ,
2018-08-20 07:59:16 +00:00
"id" : 1738 ,
2018-06-28 17:13:59 +00:00
"name" : "abi" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-08-20 07:59:16 +00:00
"referencedDeclaration" : 3815 ,
2018-06-29 11:23:01 +00:00
"src" : "620:3:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_magic_abi" ,
"typeString" : "abi"
}
} ,
2018-08-20 07:59:16 +00:00
"id" : 1739 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"memberName" : "encodeWithSignature" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
2018-06-29 11:23:01 +00:00
"src" : "620:23:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$" ,
"typeString" : "function (string memory) pure returns (bytes memory)"
}
} ,
2018-08-20 07:59:16 +00:00
"id" : 1743 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
2018-06-29 11:23:01 +00:00
"src" : "620:70:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
2018-06-29 11:23:01 +00:00
"src" : "600:90:15"
2018-06-28 17:13:59 +00:00
} ,
{
"externalReferences" : [
{
"transferred" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1734 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "1061:11:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"data" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1737 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "857:4:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"token" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1727 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "824:5:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"data" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1737 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "838:4:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"transferred" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1734 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "1012:11:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"transferred" : {
2018-08-20 07:59:16 +00:00
"declaration" : 1734 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-06-29 11:23:01 +00:00
"src" : "1148:11:15" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
}
] ,
2018-08-20 07:59:16 +00:00
"id" : 1745 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "InlineAssembly" ,
"operations" : "{\n let success := call(sub(gas(), 10000), token, 0, add(data, 0x20), mload(data), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n switch returndatasize()\n case 0 {\n transferred := success\n }\n case 0x20 {\n transferred := iszero(or(iszero(success), iszero(mload(ptr))))\n }\n default {\n transferred := 0\n }\n}" ,
2018-06-29 11:23:01 +00:00
"src" : "764:418:15"
2018-06-28 17:13:59 +00:00
}
]
} ,
"documentation" : "@dev Transfers a token and returns if it was a success\n @param token Token that should be transferred\n @param receiver Receiver to whom the token should be transferred\n @param amount The amount of tokens that should be transferred" ,
2018-08-20 07:59:16 +00:00
"id" : 1747 ,
2018-06-28 17:13:59 +00:00
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : false ,
"modifiers" : [ ] ,
"name" : "transferToken" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
2018-08-20 07:59:16 +00:00
"id" : 1732 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1727 ,
2018-06-28 17:13:59 +00:00
"name" : "token" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "463:13:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1726 ,
2018-06-28 17:13:59 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "463:7:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1729 ,
2018-06-28 17:13:59 +00:00
"name" : "receiver" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "487:16:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1728 ,
2018-06-28 17:13:59 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "487:7:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1731 ,
2018-06-28 17:13:59 +00:00
"name" : "amount" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "513:14:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1730 ,
2018-06-28 17:13:59 +00:00
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "513:7:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-06-29 11:23:01 +00:00
"src" : "453:80:15"
2018-06-28 17:13:59 +00:00
} ,
"payable" : false ,
"returnParameters" : {
2018-08-20 07:59:16 +00:00
"id" : 1735 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-08-20 07:59:16 +00:00
"id" : 1734 ,
2018-06-28 17:13:59 +00:00
"name" : "transferred" ,
"nodeType" : "VariableDeclaration" ,
2018-08-20 07:59:16 +00:00
"scope" : 1747 ,
2018-06-29 11:23:01 +00:00
"src" : "568:16:15" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
} ,
"typeName" : {
2018-08-20 07:59:16 +00:00
"id" : 1733 ,
2018-06-28 17:13:59 +00:00
"name" : "bool" ,
"nodeType" : "ElementaryTypeName" ,
2018-06-29 11:23:01 +00:00
"src" : "568:4:15" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-06-29 11:23:01 +00:00
"src" : "567:18:15"
2018-06-28 17:13:59 +00:00
} ,
2018-08-20 07:59:16 +00:00
"scope" : 1748 ,
2018-06-29 11:23:01 +00:00
"src" : "430:752:15" ,
2018-06-28 17:13:59 +00:00
"stateMutability" : "nonpayable" ,
"superFunction" : null ,
"visibility" : "internal"
}
] ,
2018-08-20 07:59:16 +00:00
"scope" : 1749 ,
2018-06-29 11:23:01 +00:00
"src" : "133:1051:15"
2018-06-28 17:13:59 +00:00
}
] ,
2018-06-29 11:23:01 +00:00
"src" : "0:1185:15"
2018-06-28 17:13:59 +00:00
} ,
"compiler" : {
"name" : "solc" ,
"version" : "0.4.24+commit.e67f0147.Emscripten.clang"
} ,
"networks" : { } ,
2018-06-29 11:23:01 +00:00
"schemaVersion" : "2.0.0" ,
2018-08-20 07:59:16 +00:00
"updatedAt" : "2018-08-20T07:44:41.093Z"
2018-06-28 17:13:59 +00:00
}