UNPKG

@reality.eth/contracts

Version:

Collection of smart contracts for the Realitio fact verification platform

1,244 lines (1,243 loc) 54.4 kB
{ "contractName": "BalanceHolder", "abi": [ { "constant": true, "inputs": [ { "name": "", "type": "address" } ], "name": "balanceOf", "outputs": [ { "name": "", "type": "uint256" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "constant": true, "inputs": [], "name": "token", "outputs": [ { "name": "", "type": "address" } ], "payable": false, "stateMutability": "view", "type": "function" }, { "anonymous": false, "inputs": [ { "indexed": true, "name": "user", "type": "address" }, { "indexed": false, "name": "amount", "type": "uint256" } ], "name": "LogWithdraw", "type": "event" }, { "constant": false, "inputs": [], "name": "withdraw", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" } ], "bytecode": "0x608060405234801561001057600080fd5b5061024b806100206000396000f3006080604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633ccfd60b811461005b57806370a0823114610072578063fc0c546a146100b2575b600080fd5b34801561006757600080fd5b506100706100f0565b005b34801561007e57600080fd5b506100a073ffffffffffffffffffffffffffffffffffffffff600435166101f1565b60408051918252519081900360200190f35b3480156100be57600080fd5b506100c7610203565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b336000818152600160209081526040808320805490849055835482517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810196909652602486018290529151909473ffffffffffffffffffffffffffffffffffffffff9092169363a9059cbb93604480850194919392918390030190829087803b15801561018157600080fd5b505af1158015610195573d6000803e3d6000fd5b505050506040513d60208110156101ab57600080fd5b505115156101b857600080fd5b60408051828152905133917f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab708919081900360200190a250565b60016020526000908152604090205481565b60005473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820aa2ace91efa190f7829ef3e459596e305b5aa8aae37aea91e7188479768050180029", "deployedBytecode": "0x6080604052600436106100565763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416633ccfd60b811461005b57806370a0823114610072578063fc0c546a146100b2575b600080fd5b34801561006757600080fd5b506100706100f0565b005b34801561007e57600080fd5b506100a073ffffffffffffffffffffffffffffffffffffffff600435166101f1565b60408051918252519081900360200190f35b3480156100be57600080fd5b506100c7610203565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b336000818152600160209081526040808320805490849055835482517fa9059cbb0000000000000000000000000000000000000000000000000000000081526004810196909652602486018290529151909473ffffffffffffffffffffffffffffffffffffffff9092169363a9059cbb93604480850194919392918390030190829087803b15801561018157600080fd5b505af1158015610195573d6000803e3d6000fd5b505050506040513d60208110156101ab57600080fd5b505115156101b857600080fd5b60408051828152905133917f4ce7033d118120e254016dccf195288400b28fc8936425acd5f17ce2df3ab708919081900360200190a250565b60016020526000908152604090205481565b60005473ffffffffffffffffffffffffffffffffffffffff16815600a165627a7a72305820aa2ace91efa190f7829ef3e459596e305b5aa8aae37aea91e7188479768050180029", "sourceMap": "50:406:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;50:406:0;;;;;;;", "deployedSourceMap": "50:406:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;241:212;;8:9:-1;5:2;;;30:1;27;20:12;5:2;241:212:0;;;;;;106:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;-1:-1;106:44:0;;;;;;;;;;;;;;;;;;;;;;;80:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;80:19:0;;;;;;;;;;;;;;;;;;;;;;;241:212;307:10;283:11;297:21;;;:9;:21;;;;;;;;;;328:25;;;;371:5;;:31;;;;;;;;;;;;;;;;;;;;297:21;;;371:5;;;;:14;;:31;;;;;297:21;;371:31;;;;;;;;;:5;:31;;;5:2:-1;;;;30:1;27;20:12;5:2;371:31:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;371:31:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;371:31:0;363:40;;;;;;;;418:28;;;;;;;;430:10;;418:28;;;;;;;;;;241:212;:::o;106:44::-;;;;;;;;;;;;;:::o;80:19::-;;;;;;:::o", "source": "pragma solidity ^0.4.18;\n\nimport './IERC20.sol';\n\ncontract BalanceHolder {\n\n IERC20 public token;\n\n mapping(address => uint256) public balanceOf;\n\n event LogWithdraw(\n address indexed user,\n uint256 amount\n );\n\n function withdraw() \n public {\n uint256 bal = balanceOf[msg.sender];\n balanceOf[msg.sender] = 0;\n require(token.transfer(msg.sender, bal));\n emit LogWithdraw(msg.sender, bal);\n }\n\n}\n", "sourcePath": "/home/ed/working/realitio-contracts-newtest/truffle/contracts/BalanceHolderERC20.sol", "ast": { "absolutePath": "/home/ed/working/realitio-contracts-newtest/truffle/contracts/BalanceHolderERC20.sol", "exportedSymbols": { "BalanceHolder": [ 48 ] }, "id": 49, "nodeType": "SourceUnit", "nodes": [ { "id": 1, "literals": [ "solidity", "^", "0.4", ".18" ], "nodeType": "PragmaDirective", "src": "0:24:0" }, { "absolutePath": "/home/ed/working/realitio-contracts-newtest/truffle/contracts/IERC20.sol", "file": "./IERC20.sol", "id": 2, "nodeType": "ImportDirective", "scope": 49, "sourceUnit": 118, "src": "26:22:0", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 48, "linearizedBaseContracts": [ 48 ], "name": "BalanceHolder", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 4, "name": "token", "nodeType": "VariableDeclaration", "scope": 48, "src": "80:19:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$117", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, "id": 3, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 117, "src": "80:6:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$117", "typeString": "contract IERC20" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 8, "name": "balanceOf", "nodeType": "VariableDeclaration", "scope": 48, "src": "106:44:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 7, "keyType": { "id": 5, "name": "address", "nodeType": "ElementaryTypeName", "src": "114:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "106:27:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 6, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "125:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 14, "name": "LogWithdraw", "nodeType": "EventDefinition", "parameters": { "id": 13, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 10, "indexed": true, "name": "user", "nodeType": "VariableDeclaration", "scope": 14, "src": "184:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 9, "name": "address", "nodeType": "ElementaryTypeName", "src": "184:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 14, "src": "214:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "214:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "174:60:0" }, "src": "157:78:0" }, { "body": { "id": 46, "nodeType": "Block", "src": "273:180:0", "statements": [ { "assignments": [ 18 ], "declarations": [ { "constant": false, "id": 18, "name": "bal", "nodeType": "VariableDeclaration", "scope": 47, "src": "283:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 17, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "283:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 23, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 19, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, "src": "297:9:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 22, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 20, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "307:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 21, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "307:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "297:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "283:35:0" }, { "expression": { "argumentTypes": null, "id": 29, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 24, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, "src": "328:9:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 27, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 25, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "338:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 26, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "338:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "328:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 28, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "352:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "328:25:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 30, "nodeType": "ExpressionStatement", "src": "328:25:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 34, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "386:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 35, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "386:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 36, "name": "bal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, "src": "398:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 32, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4, "src": "371:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$117", "typeString": "contract IERC20" } }, "id": 33, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 80, "src": "371:14:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 37, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "371:31:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 31, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2465, 2466 ], "referencedDeclaration": 2465, "src": "363:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 38, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "363:40:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39, "nodeType": "ExpressionStatement", "src": "363:40:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 41, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "430:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 42, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "430:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 43, "name": "bal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, "src": "442:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "id": 40, "name": "LogWithdraw", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 14, "src": "418:11:0", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$", "typeString": "function (address,uint256)" } }, "id": 44, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "418:28:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 45, "nodeType": "EmitStatement", "src": "413:33:0" } ] }, "documentation": null, "id": 47, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], "name": "withdraw", "nodeType": "FunctionDefinition", "parameters": { "id": 15, "nodeType": "ParameterList", "parameters": [], "src": "258:2:0" }, "payable": false, "returnParameters": { "id": 16, "nodeType": "ParameterList", "parameters": [], "src": "273:0:0" }, "scope": 48, "src": "241:212:0", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], "scope": 49, "src": "50:406:0" } ], "src": "0:457:0" }, "legacyAST": { "absolutePath": "/home/ed/working/realitio-contracts-newtest/truffle/contracts/BalanceHolderERC20.sol", "exportedSymbols": { "BalanceHolder": [ 48 ] }, "id": 49, "nodeType": "SourceUnit", "nodes": [ { "id": 1, "literals": [ "solidity", "^", "0.4", ".18" ], "nodeType": "PragmaDirective", "src": "0:24:0" }, { "absolutePath": "/home/ed/working/realitio-contracts-newtest/truffle/contracts/IERC20.sol", "file": "./IERC20.sol", "id": 2, "nodeType": "ImportDirective", "scope": 49, "sourceUnit": 118, "src": "26:22:0", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [], "contractKind": "contract", "documentation": null, "fullyImplemented": true, "id": 48, "linearizedBaseContracts": [ 48 ], "name": "BalanceHolder", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, "id": 4, "name": "token", "nodeType": "VariableDeclaration", "scope": 48, "src": "80:19:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$117", "typeString": "contract IERC20" }, "typeName": { "contractScope": null, "id": 3, "name": "IERC20", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 117, "src": "80:6:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$117", "typeString": "contract IERC20" } }, "value": null, "visibility": "public" }, { "constant": false, "id": 8, "name": "balanceOf", "nodeType": "VariableDeclaration", "scope": 48, "src": "106:44:0", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "typeName": { "id": 7, "keyType": { "id": 5, "name": "address", "nodeType": "ElementaryTypeName", "src": "114:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", "src": "106:27:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { "id": 6, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "125:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, "value": null, "visibility": "public" }, { "anonymous": false, "documentation": null, "id": 14, "name": "LogWithdraw", "nodeType": "EventDefinition", "parameters": { "id": 13, "nodeType": "ParameterList", "parameters": [ { "constant": false, "id": 10, "indexed": true, "name": "user", "nodeType": "VariableDeclaration", "scope": 14, "src": "184:20:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 9, "name": "address", "nodeType": "ElementaryTypeName", "src": "184:7:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": null, "visibility": "internal" }, { "constant": false, "id": 12, "indexed": false, "name": "amount", "nodeType": "VariableDeclaration", "scope": 14, "src": "214:14:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 11, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "214:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "src": "174:60:0" }, "src": "157:78:0" }, { "body": { "id": 46, "nodeType": "Block", "src": "273:180:0", "statements": [ { "assignments": [ 18 ], "declarations": [ { "constant": false, "id": 18, "name": "bal", "nodeType": "VariableDeclaration", "scope": 47, "src": "283:11:0", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, "typeName": { "id": 17, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "283:7:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "value": null, "visibility": "internal" } ], "id": 23, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 19, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, "src": "297:9:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 22, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 20, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "307:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 21, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "307:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", "src": "297:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", "src": "283:35:0" }, { "expression": { "argumentTypes": null, "id": 29, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, "id": 24, "name": "balanceOf", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 8, "src": "328:9:0", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "id": 27, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 25, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "338:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 26, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "338:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", "src": "328:21:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, "hexValue": "30", "id": 28, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "352:1:0", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", "typeString": "int_const 0" }, "value": "0" }, "src": "328:25:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "id": 30, "nodeType": "ExpressionStatement", "src": "328:25:0" }, { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 34, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2462, "src": "386:3:0", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, "id": 35, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, "src": "386:10:0", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, { "argumentTypes": null, "id": 36, "name": "bal", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 18, "src": "398:3:0", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_address", "typeString": "address" }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], "expression": { "argumentTypes": null, "id": 32, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 4, "src": "371:5:0", "typeDescriptions": { "typeIdentifier": "t_contract$_IERC20_$117", "typeString": "contract IERC20" } }, "id": 33, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": 80, "src": "371:14:0", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, "id": 37, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "371:31:0", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } } ], "expression": { "argumentTypes": [ { "typeIdentifier": "t_bool", "typeString": "bool" } ], "id": 31, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ 2465, 2466 ], "referencedDeclaration": 2465, "src": "363:7:0", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, "id": 38, "isConstant": false, "isLValue": false, "isPure": false, "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", "src": "363:40:0", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, "id": 39, "nodeType": "ExpressionStatement", "src": "363:40:0" }, { "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "expression": { "argumentTypes": null, "id": 41,