arc_dx
Version:
A platform for building DAOs
1,239 lines (1,238 loc) • 66.8 kB
JSON
{
"contractName": "SafeERC20",
"abi": [],
"bytecode": "0x604c602c600b82828239805160001a60731460008114601c57601e565bfe5b5030600052607381538281f30073000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c339b61d6feaaa601ba2327e0594aad102b202c0592dfc3f66b58c74c47c57c00029",
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600080fd00a165627a7a72305820c339b61d6feaaa601ba2327e0594aad102b202c0592dfc3f66b58c74c47c57c00029",
"sourceMap": "346:511:61:-;;132:2:-1;166:7;155:9;146:7;137:37;252:7;246:14;243:1;238:23;232:4;229:33;270:1;265:20;;;;222:63;;265:20;274:9;222:63;;298:9;295:1;288:20;328:4;319:7;311:22;352:7;343;336:24",
"deployedSourceMap": "346:511:61:-;;;;;;;;",
"source": "pragma solidity ^0.4.24;\n\nimport \"./ERC20Basic.sol\";\nimport \"./ERC20.sol\";\n\n\n/**\n * @title SafeERC20\n * @dev Wrappers around ERC20 operations that throw on failure.\n * To use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\n * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.\n */\nlibrary SafeERC20 {\n function safeTransfer(\n ERC20Basic _token,\n address _to,\n uint256 _value\n )\n internal\n {\n require(_token.transfer(_to, _value));\n }\n\n function safeTransferFrom(\n ERC20 _token,\n address _from,\n address _to,\n uint256 _value\n )\n internal\n {\n require(_token.transferFrom(_from, _to, _value));\n }\n\n function safeApprove(\n ERC20 _token,\n address _spender,\n uint256 _value\n )\n internal\n {\n require(_token.approve(_spender, _value));\n }\n}\n",
"sourcePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
"ast": {
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
"exportedSymbols": {
"SafeERC20": [
21287
]
},
"id": 21288,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 21227,
"literals": [
"solidity",
"^",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "0:24:61"
},
{
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol",
"file": "./ERC20Basic.sol",
"id": 21228,
"nodeType": "ImportDirective",
"scope": 21288,
"sourceUnit": 21120,
"src": "26:26:61",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
"file": "./ERC20.sol",
"id": 21229,
"nodeType": "ImportDirective",
"scope": 21288,
"sourceUnit": 21088,
"src": "53:21:61",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.",
"fullyImplemented": true,
"id": 21287,
"linearizedBaseContracts": [
21287
],
"name": "SafeERC20",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 21246,
"nodeType": "Block",
"src": "469:48:61",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21241,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "499:3:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21242,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21235,
"src": "504:6:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21239,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21231,
"src": "483:6:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Basic_$21119",
"typeString": "contract ERC20Basic"
}
},
"id": 21240,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 21110,
"src": "483:15:61",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 21243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "483:28:61",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 21238,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
21552,
21553
],
"referencedDeclaration": 21552,
"src": "475:7:61",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 21244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "475:37:61",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21245,
"nodeType": "ExpressionStatement",
"src": "475:37:61"
}
]
},
"documentation": null,
"id": 21247,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "safeTransfer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 21236,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21231,
"name": "_token",
"nodeType": "VariableDeclaration",
"scope": 21247,
"src": "395:17:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Basic_$21119",
"typeString": "contract ERC20Basic"
},
"typeName": {
"contractScope": null,
"id": 21230,
"name": "ERC20Basic",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21119,
"src": "395:10:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Basic_$21119",
"typeString": "contract ERC20Basic"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21233,
"name": "_to",
"nodeType": "VariableDeclaration",
"scope": 21247,
"src": "418:11:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21232,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "418:7:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21235,
"name": "_value",
"nodeType": "VariableDeclaration",
"scope": 21247,
"src": "435:14:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21234,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "435:7:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "389:64:61"
},
"payable": false,
"returnParameters": {
"id": 21237,
"nodeType": "ParameterList",
"parameters": [],
"src": "469:0:61"
},
"scope": 21287,
"src": "368:149:61",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 21267,
"nodeType": "Block",
"src": "640:59:61",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21261,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21251,
"src": "674:5:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21262,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21253,
"src": "681:3:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21263,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21255,
"src": "686:6:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21259,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21249,
"src": "654:6:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$21087",
"typeString": "contract ERC20"
}
},
"id": 21260,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 21069,
"src": "654:19:61",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 21264,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "654:39:61",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 21258,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
21552,
21553
],
"referencedDeclaration": 21552,
"src": "646:7:61",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 21265,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "646:48:61",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21266,
"nodeType": "ExpressionStatement",
"src": "646:48:61"
}
]
},
"documentation": null,
"id": 21268,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "safeTransferFrom",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 21256,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21249,
"name": "_token",
"nodeType": "VariableDeclaration",
"scope": 21268,
"src": "552:12:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$21087",
"typeString": "contract ERC20"
},
"typeName": {
"contractScope": null,
"id": 21248,
"name": "ERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21087,
"src": "552:5:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$21087",
"typeString": "contract ERC20"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21251,
"name": "_from",
"nodeType": "VariableDeclaration",
"scope": 21268,
"src": "570:13:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21250,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "570:7:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21253,
"name": "_to",
"nodeType": "VariableDeclaration",
"scope": 21268,
"src": "589:11:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21252,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "589:7:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21255,
"name": "_value",
"nodeType": "VariableDeclaration",
"scope": 21268,
"src": "606:14:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21254,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "606:7:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "546:78:61"
},
"payable": false,
"returnParameters": {
"id": 21257,
"nodeType": "ParameterList",
"parameters": [],
"src": "640:0:61"
},
"scope": 21287,
"src": "521:178:61",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 21285,
"nodeType": "Block",
"src": "803:52:61",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21280,
"name": "_spender",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21272,
"src": "832:8:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21281,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21274,
"src": "842:6:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21278,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21270,
"src": "817:6:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$21087",
"typeString": "contract ERC20"
}
},
"id": 21279,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "approve",
"nodeType": "MemberAccess",
"referencedDeclaration": 21078,
"src": "817:14:61",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 21282,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "817:32:61",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 21277,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
21552,
21553
],
"referencedDeclaration": 21552,
"src": "809:7:61",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 21283,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "809:41:61",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21284,
"nodeType": "ExpressionStatement",
"src": "809:41:61"
}
]
},
"documentation": null,
"id": 21286,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "safeApprove",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 21275,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21270,
"name": "_token",
"nodeType": "VariableDeclaration",
"scope": 21286,
"src": "729:12:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$21087",
"typeString": "contract ERC20"
},
"typeName": {
"contractScope": null,
"id": 21269,
"name": "ERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21087,
"src": "729:5:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$21087",
"typeString": "contract ERC20"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21272,
"name": "_spender",
"nodeType": "VariableDeclaration",
"scope": 21286,
"src": "747:16:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21271,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "747:7:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21274,
"name": "_value",
"nodeType": "VariableDeclaration",
"scope": 21286,
"src": "769:14:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21273,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "769:7:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "723:64:61"
},
"payable": false,
"returnParameters": {
"id": 21276,
"nodeType": "ParameterList",
"parameters": [],
"src": "803:0:61"
},
"scope": 21287,
"src": "703:152:61",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
}
],
"scope": 21288,
"src": "346:511:61"
}
],
"src": "0:858:61"
},
"legacyAST": {
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol",
"exportedSymbols": {
"SafeERC20": [
21287
]
},
"id": 21288,
"nodeType": "SourceUnit",
"nodes": [
{
"id": 21227,
"literals": [
"solidity",
"^",
"0.4",
".24"
],
"nodeType": "PragmaDirective",
"src": "0:24:61"
},
{
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20Basic.sol",
"file": "./ERC20Basic.sol",
"id": 21228,
"nodeType": "ImportDirective",
"scope": 21288,
"sourceUnit": 21120,
"src": "26:26:61",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "openzeppelin-solidity/contracts/token/ERC20/ERC20.sol",
"file": "./ERC20.sol",
"id": 21229,
"nodeType": "ImportDirective",
"scope": 21288,
"sourceUnit": 21088,
"src": "53:21:61",
"symbolAliases": [],
"unitAlias": ""
},
{
"baseContracts": [],
"contractDependencies": [],
"contractKind": "library",
"documentation": "@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.",
"fullyImplemented": true,
"id": 21287,
"linearizedBaseContracts": [
21287
],
"name": "SafeERC20",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": {
"id": 21246,
"nodeType": "Block",
"src": "469:48:61",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21241,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21233,
"src": "499:3:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21242,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21235,
"src": "504:6:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21239,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21231,
"src": "483:6:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Basic_$21119",
"typeString": "contract ERC20Basic"
}
},
"id": 21240,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 21110,
"src": "483:15:61",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 21243,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "483:28:61",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
}
],
"id": 21238,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
21552,
21553
],
"referencedDeclaration": 21552,
"src": "475:7:61",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
"typeString": "function (bool) pure"
}
},
"id": 21244,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "475:37:61",
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 21245,
"nodeType": "ExpressionStatement",
"src": "475:37:61"
}
]
},
"documentation": null,
"id": 21247,
"implemented": true,
"isConstructor": false,
"isDeclaredConst": false,
"modifiers": [],
"name": "safeTransfer",
"nodeType": "FunctionDefinition",
"parameters": {
"id": 21236,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 21231,
"name": "_token",
"nodeType": "VariableDeclaration",
"scope": 21247,
"src": "395:17:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Basic_$21119",
"typeString": "contract ERC20Basic"
},
"typeName": {
"contractScope": null,
"id": 21230,
"name": "ERC20Basic",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 21119,
"src": "395:10:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20Basic_$21119",
"typeString": "contract ERC20Basic"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21233,
"name": "_to",
"nodeType": "VariableDeclaration",
"scope": 21247,
"src": "418:11:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 21232,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "418:7:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 21235,
"name": "_value",
"nodeType": "VariableDeclaration",
"scope": 21247,
"src": "435:14:61",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 21234,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "435:7:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "389:64:61"
},
"payable": false,
"returnParameters": {
"id": 21237,
"nodeType": "ParameterList",
"parameters": [],
"src": "469:0:61"
},
"scope": 21287,
"src": "368:149:61",
"stateMutability": "nonpayable",
"superFunction": null,
"visibility": "internal"
},
{
"body": {
"id": 21267,
"nodeType": "Block",
"src": "640:59:61",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 21261,
"name": "_from",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21251,
"src": "674:5:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21262,
"name": "_to",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21253,
"src": "681:3:61",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 21263,
"name": "_value",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21255,
"src": "686:6:61",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_address",
"typeString": "address"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 21259,
"name": "_token",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 21249,
"src": "654:6:61",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$21087",
"typeString": "contract ERC20"
}
},
"id": 21260,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 21069,
"src": "654:19:61",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,address,uint256) external returns (bool)"
}
},
"id": 21264,
"isConstant": false,
"isLValue": false,
"isPure": false,