2018-06-28 17:13:59 +00:00
{
"contractName" : "SecuredTokenTransfer" ,
"abi" : [ ] ,
2018-09-26 09:19:53 +00:00
"bytecode" : "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820ba27992b3b19c83b563b2634ef4e6e4b21311676e3d2a13b83cfd34834dfb8510029" ,
"deployedBytecode" : "0x6080604052600080fd00a165627a7a72305820ba27992b3b19c83b563b2634ef4e6e4b21311676e3d2a13b83cfd34834dfb8510029" ,
"sourceMap" : "133:1051:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;133:1051:10;;;;;;;" ,
"deployedSourceMap" : "133:1051:10:-;;;;;" ,
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" ,
2018-09-26 09:19:53 +00:00
"sourcePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SecuredTokenTransfer.sol" ,
2018-06-28 17:13:59 +00:00
"ast" : {
2018-09-26 09:19:53 +00:00
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SecuredTokenTransfer.sol" ,
2018-06-28 17:13:59 +00:00
"exportedSymbols" : {
"SecuredTokenTransfer" : [
2018-09-26 09:19:53 +00:00
1718
2018-06-28 17:13:59 +00:00
]
} ,
2018-09-26 09:19:53 +00:00
"id" : 1719 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "SourceUnit" ,
"nodes" : [
{
2018-09-26 09:19:53 +00:00
"id" : 1695 ,
2018-06-28 17:13:59 +00:00
"literals" : [
"solidity" ,
"0.4" ,
".24"
] ,
"nodeType" : "PragmaDirective" ,
2018-09-26 09:19:53 +00:00
"src" : "0:23:10"
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-09-26 09:19:53 +00:00
"id" : 1718 ,
2018-06-28 17:13:59 +00:00
"linearizedBaseContracts" : [
2018-09-26 09:19:53 +00:00
1718
2018-06-28 17:13:59 +00:00
] ,
"name" : "SecuredTokenTransfer" ,
"nodeType" : "ContractDefinition" ,
"nodes" : [
{
"body" : {
2018-09-26 09:19:53 +00:00
"id" : 1716 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "Block" ,
2018-09-26 09:19:53 +00:00
"src" : "590:592:10" ,
2018-06-28 17:13:59 +00:00
"statements" : [
{
"assignments" : [
2018-09-26 09:19:53 +00:00
1707
2018-06-28 17:13:59 +00:00
] ,
"declarations" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1707 ,
2018-06-28 17:13:59 +00:00
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "600:17:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "memory" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1706 ,
2018-06-28 17:13:59 +00:00
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "600:5:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1714 ,
2018-06-28 17:13:59 +00:00
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "7472616e7366657228616464726573732c75696e7432353629" ,
2018-09-26 09:19:53 +00:00
"id" : 1710 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
2018-09-26 09:19:53 +00:00
"src" : "644:27:10" ,
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-09-26 09:19:53 +00:00
"id" : 1711 ,
2018-06-28 17:13:59 +00:00
"name" : "receiver" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1699 ,
"src" : "673:8:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1712 ,
2018-06-28 17:13:59 +00:00
"name" : "amount" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1701 ,
"src" : "683:6:10" ,
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-09-26 09:19:53 +00:00
"id" : 1708 ,
2018-06-28 17:13:59 +00:00
"name" : "abi" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-10-05 15:26:48 +00:00
"referencedDeclaration" : 4002 ,
2018-09-26 09:19:53 +00:00
"src" : "620:3:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_magic_abi" ,
"typeString" : "abi"
}
} ,
2018-09-26 09:19:53 +00:00
"id" : 1709 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"memberName" : "encodeWithSignature" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
2018-09-26 09:19:53 +00:00
"src" : "620:23:10" ,
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-09-26 09:19:53 +00:00
"id" : 1713 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
2018-09-26 09:19:53 +00:00
"src" : "620:70:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "600:90:10"
2018-06-28 17:13:59 +00:00
} ,
{
"externalReferences" : [
{
"transferred" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1704 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1061:11:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"data" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1707 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "857:4:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"token" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1697 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "824:5:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"data" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1707 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "838:4:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"transferred" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1704 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1012:11:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"transferred" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1704 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1148:11:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1715 ,
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-09-26 09:19:53 +00:00
"src" : "764:418:10"
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-09-26 09:19:53 +00:00
"id" : 1717 ,
2018-06-28 17:13:59 +00:00
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : false ,
"modifiers" : [ ] ,
"name" : "transferToken" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1702 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1697 ,
2018-06-28 17:13:59 +00:00
"name" : "token" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "463:13:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1696 ,
2018-06-28 17:13:59 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "463:7:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1699 ,
2018-06-28 17:13:59 +00:00
"name" : "receiver" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "487:16:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1698 ,
2018-06-28 17:13:59 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "487:7:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1701 ,
2018-06-28 17:13:59 +00:00
"name" : "amount" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "513:14:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1700 ,
2018-06-28 17:13:59 +00:00
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "513:7:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "453:80:10"
2018-06-28 17:13:59 +00:00
} ,
"payable" : false ,
"returnParameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1705 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1704 ,
2018-06-28 17:13:59 +00:00
"name" : "transferred" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "568:16:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1703 ,
2018-06-28 17:13:59 +00:00
"name" : "bool" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "568:4:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "567:18:10"
2018-06-28 17:13:59 +00:00
} ,
2018-09-26 09:19:53 +00:00
"scope" : 1718 ,
"src" : "430:752:10" ,
2018-06-28 17:13:59 +00:00
"stateMutability" : "nonpayable" ,
"superFunction" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"scope" : 1719 ,
"src" : "133:1051:10"
2018-06-28 17:13:59 +00:00
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "0:1185:10"
2018-06-28 17:13:59 +00:00
} ,
"legacyAST" : {
2018-09-26 09:19:53 +00:00
"absolutePath" : "/Users/apanizo/git/gnosis/safe-contracts/contracts/common/SecuredTokenTransfer.sol" ,
2018-06-28 17:13:59 +00:00
"exportedSymbols" : {
"SecuredTokenTransfer" : [
2018-09-26 09:19:53 +00:00
1718
2018-06-28 17:13:59 +00:00
]
} ,
2018-09-26 09:19:53 +00:00
"id" : 1719 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "SourceUnit" ,
"nodes" : [
{
2018-09-26 09:19:53 +00:00
"id" : 1695 ,
2018-06-28 17:13:59 +00:00
"literals" : [
"solidity" ,
"0.4" ,
".24"
] ,
"nodeType" : "PragmaDirective" ,
2018-09-26 09:19:53 +00:00
"src" : "0:23:10"
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-09-26 09:19:53 +00:00
"id" : 1718 ,
2018-06-28 17:13:59 +00:00
"linearizedBaseContracts" : [
2018-09-26 09:19:53 +00:00
1718
2018-06-28 17:13:59 +00:00
] ,
"name" : "SecuredTokenTransfer" ,
"nodeType" : "ContractDefinition" ,
"nodes" : [
{
"body" : {
2018-09-26 09:19:53 +00:00
"id" : 1716 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "Block" ,
2018-09-26 09:19:53 +00:00
"src" : "590:592:10" ,
2018-06-28 17:13:59 +00:00
"statements" : [
{
"assignments" : [
2018-09-26 09:19:53 +00:00
1707
2018-06-28 17:13:59 +00:00
] ,
"declarations" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1707 ,
2018-06-28 17:13:59 +00:00
"name" : "data" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "600:17:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "memory" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1706 ,
2018-06-28 17:13:59 +00:00
"name" : "bytes" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "600:5:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_storage_ptr" ,
"typeString" : "bytes"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1714 ,
2018-06-28 17:13:59 +00:00
"initialValue" : {
"argumentTypes" : null ,
"arguments" : [
{
"argumentTypes" : null ,
"hexValue" : "7472616e7366657228616464726573732c75696e7432353629" ,
2018-09-26 09:19:53 +00:00
"id" : 1710 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"kind" : "string" ,
"lValueRequested" : false ,
"nodeType" : "Literal" ,
2018-09-26 09:19:53 +00:00
"src" : "644:27:10" ,
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-09-26 09:19:53 +00:00
"id" : 1711 ,
2018-06-28 17:13:59 +00:00
"name" : "receiver" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1699 ,
"src" : "673:8:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
{
"argumentTypes" : null ,
2018-09-26 09:19:53 +00:00
"id" : 1712 ,
2018-06-28 17:13:59 +00:00
"name" : "amount" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-09-26 09:19:53 +00:00
"referencedDeclaration" : 1701 ,
"src" : "683:6:10" ,
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-09-26 09:19:53 +00:00
"id" : 1708 ,
2018-06-28 17:13:59 +00:00
"name" : "abi" ,
"nodeType" : "Identifier" ,
"overloadedDeclarations" : [ ] ,
2018-10-05 15:26:48 +00:00
"referencedDeclaration" : 4002 ,
2018-09-26 09:19:53 +00:00
"src" : "620:3:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_magic_abi" ,
"typeString" : "abi"
}
} ,
2018-09-26 09:19:53 +00:00
"id" : 1709 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : true ,
"lValueRequested" : false ,
"memberName" : "encodeWithSignature" ,
"nodeType" : "MemberAccess" ,
"referencedDeclaration" : null ,
2018-09-26 09:19:53 +00:00
"src" : "620:23:10" ,
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-09-26 09:19:53 +00:00
"id" : 1713 ,
2018-06-28 17:13:59 +00:00
"isConstant" : false ,
"isLValue" : false ,
"isPure" : false ,
"kind" : "functionCall" ,
"lValueRequested" : false ,
"names" : [ ] ,
"nodeType" : "FunctionCall" ,
2018-09-26 09:19:53 +00:00
"src" : "620:70:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bytes_memory_ptr" ,
"typeString" : "bytes memory"
}
} ,
"nodeType" : "VariableDeclarationStatement" ,
2018-09-26 09:19:53 +00:00
"src" : "600:90:10"
2018-06-28 17:13:59 +00:00
} ,
{
"externalReferences" : [
{
"transferred" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1704 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1061:11:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"data" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1707 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "857:4:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"token" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1697 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "824:5:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"data" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1707 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "838:4:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"transferred" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1704 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1012:11:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
} ,
{
"transferred" : {
2018-09-26 09:19:53 +00:00
"declaration" : 1704 ,
2018-06-28 17:13:59 +00:00
"isOffset" : false ,
"isSlot" : false ,
2018-09-26 09:19:53 +00:00
"src" : "1148:11:10" ,
2018-06-28 17:13:59 +00:00
"valueSize" : 1
}
}
] ,
2018-09-26 09:19:53 +00:00
"id" : 1715 ,
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-09-26 09:19:53 +00:00
"src" : "764:418:10"
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-09-26 09:19:53 +00:00
"id" : 1717 ,
2018-06-28 17:13:59 +00:00
"implemented" : true ,
"isConstructor" : false ,
"isDeclaredConst" : false ,
"modifiers" : [ ] ,
"name" : "transferToken" ,
"nodeType" : "FunctionDefinition" ,
"parameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1702 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1697 ,
2018-06-28 17:13:59 +00:00
"name" : "token" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "463:13:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1696 ,
2018-06-28 17:13:59 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "463:7:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1699 ,
2018-06-28 17:13:59 +00:00
"name" : "receiver" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "487:16:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1698 ,
2018-06-28 17:13:59 +00:00
"name" : "address" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "487:7:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_address" ,
"typeString" : "address"
}
} ,
"value" : null ,
"visibility" : "internal"
} ,
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1701 ,
2018-06-28 17:13:59 +00:00
"name" : "amount" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "513:14:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1700 ,
2018-06-28 17:13:59 +00:00
"name" : "uint256" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "513:7:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_uint256" ,
"typeString" : "uint256"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "453:80:10"
2018-06-28 17:13:59 +00:00
} ,
"payable" : false ,
"returnParameters" : {
2018-09-26 09:19:53 +00:00
"id" : 1705 ,
2018-06-28 17:13:59 +00:00
"nodeType" : "ParameterList" ,
"parameters" : [
{
"constant" : false ,
2018-09-26 09:19:53 +00:00
"id" : 1704 ,
2018-06-28 17:13:59 +00:00
"name" : "transferred" ,
"nodeType" : "VariableDeclaration" ,
2018-09-26 09:19:53 +00:00
"scope" : 1717 ,
"src" : "568:16:10" ,
2018-06-28 17:13:59 +00:00
"stateVariable" : false ,
"storageLocation" : "default" ,
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
} ,
"typeName" : {
2018-09-26 09:19:53 +00:00
"id" : 1703 ,
2018-06-28 17:13:59 +00:00
"name" : "bool" ,
"nodeType" : "ElementaryTypeName" ,
2018-09-26 09:19:53 +00:00
"src" : "568:4:10" ,
2018-06-28 17:13:59 +00:00
"typeDescriptions" : {
"typeIdentifier" : "t_bool" ,
"typeString" : "bool"
}
} ,
"value" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "567:18:10"
2018-06-28 17:13:59 +00:00
} ,
2018-09-26 09:19:53 +00:00
"scope" : 1718 ,
"src" : "430:752:10" ,
2018-06-28 17:13:59 +00:00
"stateMutability" : "nonpayable" ,
"superFunction" : null ,
"visibility" : "internal"
}
] ,
2018-09-26 09:19:53 +00:00
"scope" : 1719 ,
"src" : "133:1051:10"
2018-06-28 17:13:59 +00:00
}
] ,
2018-09-26 09:19:53 +00:00
"src" : "0:1185:10"
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-10-05 15:26:48 +00:00
"updatedAt" : "2018-10-05T14:25:58.937Z"
2018-06-28 17:13:59 +00:00
}