Last active
February 27, 2019 01:21
-
-
Save rocky/a00769de657277e6e69571f50632ac0e to your computer and use it in GitHub Desktop.
more MythX-friendly solc JSON
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"contracts": { | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol": { | |
"ConvertLib": { | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "amount", | |
"type": "uint256" | |
}, | |
{ | |
"name": "conversionRate", | |
"type": "uint256" | |
} | |
], | |
"name": "convert", | |
"outputs": [ | |
{ | |
"name": "convertedAmount", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "pure", | |
"type": "function" | |
} | |
], | |
"devdoc": { | |
"methods": {} | |
}, | |
"evm": { | |
"assembly": " /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":34:189 library ConvertLib{... */\n dataSize(sub_0)\n dataOffset(sub_0)\n /* \"--CODEGEN--\":132:134 */\n 0x0b\n /* \"--CODEGEN--\":166:173 */\n dup3\n /* \"--CODEGEN--\":155:164 */\n dup3\n /* \"--CODEGEN--\":146:153 */\n dup3\n /* \"--CODEGEN--\":137:174 */\n codecopy\n /* \"--CODEGEN--\":252:259 */\n dup1\n /* \"--CODEGEN--\":246:260 */\n mload\n /* \"--CODEGEN--\":243:244 */\n 0x00\n /* \"--CODEGEN--\":238:261 */\n byte\n /* \"--CODEGEN--\":232:236 */\n 0x73\n /* \"--CODEGEN--\":229:262 */\n eq\n /* \"--CODEGEN--\":270:271 */\n 0x00\n /* \"--CODEGEN--\":265:285 */\n dup2\n eq\n tag_2\n jumpi\n /* \"--CODEGEN--\":222:285 */\n jump(tag_1)\n /* \"--CODEGEN--\":265:285 */\ntag_2:\n /* \"--CODEGEN--\":274:283 */\n invalid\n /* \"--CODEGEN--\":222:285 */\ntag_1:\n pop\n /* \"--CODEGEN--\":298:307 */\n address\n /* \"--CODEGEN--\":295:296 */\n 0x00\n /* \"--CODEGEN--\":288:308 */\n mstore\n /* \"--CODEGEN--\":328:332 */\n 0x73\n /* \"--CODEGEN--\":319:326 */\n dup2\n /* \"--CODEGEN--\":311:333 */\n mstore8\n /* \"--CODEGEN--\":352:359 */\n dup3\n /* \"--CODEGEN--\":343:350 */\n dup2\n /* \"--CODEGEN--\":336:360 */\n return\nstop\n\nsub_0: assembly {\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":34:189 library ConvertLib{... */\n eq(address, deployTimeAddress())\n mstore(0x40, 0x80)\n jumpi(tag_1, lt(calldatasize, 0x04))\n calldataload(0x00)\n 0x0100000000000000000000000000000000000000000000000000000000\n swap1\n div\n dup1\n 0x96e4ee3d\n eq\n tag_2\n jumpi\n tag_1:\n 0x00\n dup1\n revert\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":55:187 function convert(uint amount,uint conversionRate) public pure returns (uint convertedAmount)... */\n tag_2:\n tag_3\n 0x04\n dup1\n calldatasize\n sub\n /* \"--CODEGEN--\":13:15 */\n 0x40\n /* \"--CODEGEN--\":8:11 */\n dup2\n /* \"--CODEGEN--\":5:16 */\n lt\n /* \"--CODEGEN--\":2:4 */\n iszero\n tag_4\n jumpi\n /* \"--CODEGEN--\":29:30 */\n 0x00\n /* \"--CODEGEN--\":26:27 */\n dup1\n /* \"--CODEGEN--\":19:31 */\n revert\n /* \"--CODEGEN--\":2:4 */\n tag_4:\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":55:187 function convert(uint amount,uint conversionRate) public pure returns (uint convertedAmount)... */\n dup2\n add\n swap1\n dup1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n dup1\n calldataload\n swap1\n 0x20\n add\n swap1\n swap3\n swap2\n swap1\n pop\n pop\n pop\n tag_5\n jump\t// in\n tag_3:\n mload(0x40)\n dup1\n dup3\n dup2\n mstore\n 0x20\n add\n swap2\n pop\n pop\n mload(0x40)\n dup1\n swap2\n sub\n swap1\n return\n tag_5:\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":126:146 uint convertedAmount */\n 0x00\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":169:183 conversionRate */\n dup2\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":160:166 amount */\n dup4\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":160:183 amount * conversionRate */\n mul\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":153:183 return amount * conversionRate */\n swap1\n pop\n /* \"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":55:187 function convert(uint amount,uint conversionRate) public pure returns (uint convertedAmount)... */\n swap3\n swap2\n pop\n pop\n jump\t// out\n\n auxdata: 0xa165627a7a7230582094ca199c801839337331343f733fa7283c9d7f430a20e7ec95933a083287a6d80029\n}\n", | |
"bytecode": { | |
"linkReferences": {}, | |
"object": "60d761002f600b82828239805160001a6073146000811461001f57610021565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106050576000357c01000000000000000000000000000000000000000000000000000000009004806396e4ee3d146055575b600080fd5b608860048036036040811015606957600080fd5b810190808035906020019092919080359060200190929190505050609e565b6040518082815260200191505060405180910390f35b600081830290509291505056fea165627a7a7230582094ca199c801839337331343f733fa7283c9d7f430a20e7ec95933a083287a6d80029", | |
"opcodes": "PUSH1 0xD7 PUSH2 0x2F PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x0 DUP2 EQ PUSH2 0x1F JUMPI PUSH2 0x21 JUMP JUMPDEST INVALID JUMPDEST POP ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x50 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x96E4EE3D EQ PUSH1 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x88 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH1 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 DUP4 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP5 0xca NOT SWAP13 DUP1 XOR CODECOPY CALLER PUSH20 0x31343F733FA7283C9D7F430A20E7EC95933A0832 DUP8 0xa6 0xd8 STOP 0x29 ", | |
"sourceMap": "34:155:0:-;;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" | |
}, | |
"deployedBytecode": { | |
"linkReferences": {}, | |
"object": "73000000000000000000000000000000000000000030146080604052600436106050576000357c01000000000000000000000000000000000000000000000000000000009004806396e4ee3d146055575b600080fd5b608860048036036040811015606957600080fd5b810190808035906020019092919080359060200190929190505050609e565b6040518082815260200191505060405180910390f35b600081830290509291505056fea165627a7a7230582094ca199c801839337331343f733fa7283c9d7f430a20e7ec95933a083287a6d80029", | |
"opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH1 0x50 JUMPI PUSH1 0x0 CALLDATALOAD PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP1 PUSH4 0x96E4EE3D EQ PUSH1 0x55 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x88 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH1 0x69 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP1 SWAP3 SWAP2 SWAP1 POP POP POP PUSH1 0x9E JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x0 DUP2 DUP4 MUL SWAP1 POP SWAP3 SWAP2 POP POP JUMP INVALID LOG1 PUSH6 0x627A7A723058 KECCAK256 SWAP5 0xca NOT SWAP13 DUP1 XOR CODECOPY CALLER PUSH20 0x31343F733FA7283C9D7F430A20E7EC95933A0832 DUP8 0xa6 0xd8 STOP 0x29 ", | |
"sourceMap": "34:155:0:-;;;;;;;;;;;;;;;;;;;;;;;;;55:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;55:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;126:20;169:14;160:6;:23;153:30;;55:132;;;;:::o" | |
}, | |
"gasEstimates": { | |
"creation": { | |
"codeDepositCost": "43000", | |
"executionCost": "143", | |
"totalCost": "43143" | |
}, | |
"external": { | |
"convert(uint256,uint256)": "304" | |
} | |
}, | |
"legacyAssembly": { | |
".code": [ | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH #[$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH [$]", | |
"value": "0000000000000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 132, | |
"end": 134, | |
"name": "PUSH", | |
"value": "B" | |
}, | |
{ | |
"begin": 166, | |
"end": 173, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 155, | |
"end": 164, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 146, | |
"end": 153, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 137, | |
"end": 174, | |
"name": "CODECOPY" | |
}, | |
{ | |
"begin": 252, | |
"end": 259, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 246, | |
"end": 260, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 243, | |
"end": 244, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 238, | |
"end": 261, | |
"name": "BYTE" | |
}, | |
{ | |
"begin": 232, | |
"end": 236, | |
"name": "PUSH", | |
"value": "73" | |
}, | |
{ | |
"begin": 229, | |
"end": 262, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 270, | |
"end": 271, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 265, | |
"end": 285, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 265, | |
"end": 285, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 265, | |
"end": 285, | |
"name": "PUSH [tag]", | |
"value": "2" | |
}, | |
{ | |
"begin": 265, | |
"end": 285, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 222, | |
"end": 285, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 222, | |
"end": 285, | |
"name": "JUMP" | |
}, | |
{ | |
"begin": 265, | |
"end": 285, | |
"name": "tag", | |
"value": "2" | |
}, | |
{ | |
"begin": 265, | |
"end": 285, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 274, | |
"end": 283, | |
"name": "INVALID" | |
}, | |
{ | |
"begin": 222, | |
"end": 285, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 222, | |
"end": 285, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 222, | |
"end": 285, | |
"name": "POP" | |
}, | |
{ | |
"begin": 298, | |
"end": 307, | |
"name": "ADDRESS" | |
}, | |
{ | |
"begin": 295, | |
"end": 296, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 288, | |
"end": 308, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 328, | |
"end": 332, | |
"name": "PUSH", | |
"value": "73" | |
}, | |
{ | |
"begin": 319, | |
"end": 326, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 311, | |
"end": 333, | |
"name": "MSTORE8" | |
}, | |
{ | |
"begin": 352, | |
"end": 359, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 343, | |
"end": 350, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 336, | |
"end": 360, | |
"name": "RETURN" | |
} | |
], | |
".data": { | |
"0": { | |
".auxdata": "a165627a7a7230582094ca199c801839337331343f733fa7283c9d7f430a20e7ec95933a083287a6d80029", | |
".code": [ | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSHDEPLOYADDRESS" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "ADDRESS" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH", | |
"value": "80" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "LT" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH [tag]", | |
"value": "1" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH", | |
"value": "100000000000000000000000000000000000000000000000000000000" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "DIV" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH", | |
"value": "96E4EE3D" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "EQ" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH [tag]", | |
"value": "2" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "tag", | |
"value": "1" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 34, | |
"end": 189, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "tag", | |
"value": "2" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "PUSH [tag]", | |
"value": "3" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "PUSH", | |
"value": "4" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "CALLDATASIZE" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 13, | |
"end": 15, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 8, | |
"end": 11, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 5, | |
"end": 16, | |
"name": "LT" | |
}, | |
{ | |
"begin": 2, | |
"end": 4, | |
"name": "ISZERO" | |
}, | |
{ | |
"begin": 2, | |
"end": 4, | |
"name": "PUSH [tag]", | |
"value": "4" | |
}, | |
{ | |
"begin": 2, | |
"end": 4, | |
"name": "JUMPI" | |
}, | |
{ | |
"begin": 29, | |
"end": 30, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 26, | |
"end": 27, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 19, | |
"end": 31, | |
"name": "REVERT" | |
}, | |
{ | |
"begin": 2, | |
"end": 4, | |
"name": "tag", | |
"value": "4" | |
}, | |
{ | |
"begin": 2, | |
"end": 4, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "CALLDATALOAD" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "POP" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "POP" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "POP" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "PUSH [tag]", | |
"value": "5" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "JUMP", | |
"value": "[in]" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "tag", | |
"value": "3" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP3" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "MSTORE" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "PUSH", | |
"value": "20" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "ADD" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "POP" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "POP" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "PUSH", | |
"value": "40" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "MLOAD" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "DUP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SUB" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "RETURN" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "tag", | |
"value": "5" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "JUMPDEST" | |
}, | |
{ | |
"begin": 126, | |
"end": 146, | |
"name": "PUSH", | |
"value": "0" | |
}, | |
{ | |
"begin": 169, | |
"end": 183, | |
"name": "DUP2" | |
}, | |
{ | |
"begin": 160, | |
"end": 166, | |
"name": "DUP4" | |
}, | |
{ | |
"begin": 160, | |
"end": 183, | |
"name": "MUL" | |
}, | |
{ | |
"begin": 153, | |
"end": 183, | |
"name": "SWAP1" | |
}, | |
{ | |
"begin": 153, | |
"end": 183, | |
"name": "POP" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP3" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "SWAP2" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "POP" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "POP" | |
}, | |
{ | |
"begin": 55, | |
"end": 187, | |
"name": "JUMP", | |
"value": "[out]" | |
} | |
] | |
} | |
} | |
}, | |
"methodIdentifiers": { | |
"convert(uint256,uint256)": "96e4ee3d" | |
} | |
}, | |
"metadata": "{\"compiler\":{\"version\":\"0.5.2+commit.1df8f40c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\"},{\"name\":\"conversionRate\",\"type\":\"uint256\"}],\"name\":\"convert\",\"outputs\":[{\"name\":\"convertedAmount\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":\"ConvertLib\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol\":{\"keccak256\":\"0xd86a16a9c89d51eb0cb0033ab054f061ee0d174c5637a318c5b4648883ac0919\",\"urls\":[\"bzzr://9e0d3d40778d23ab0462e362620abf28a32f1f25209253b2c9603cd5a1e013a0\"]}},\"version\":1}", | |
"userdoc": { | |
"methods": {} | |
} | |
} | |
} | |
}, | |
"sources": { | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol": { | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"exportedSymbols": { | |
"ConvertLib": [ | |
16 | |
] | |
}, | |
"id": 17, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:0" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "library", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 16, | |
"linearizedBaseContracts": [ | |
16 | |
], | |
"name": "ConvertLib", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"body": { | |
"id": 14, | |
"nodeType": "Block", | |
"src": "149:38:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 12, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 10, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 3, | |
"src": "160:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 11, | |
"name": "conversionRate", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 5, | |
"src": "169:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "160:23:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 9, | |
"id": 13, | |
"nodeType": "Return", | |
"src": "153:30:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 15, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "convert", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 6, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 3, | |
"name": "amount", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "72:11:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 2, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "72:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 5, | |
"name": "conversionRate", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "84:19:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 4, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "84:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "71:33:0" | |
}, | |
"returnParameters": { | |
"id": 9, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 8, | |
"name": "convertedAmount", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "126:20:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 7, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "126:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "125:22:0" | |
}, | |
"scope": 16, | |
"src": "55:132:0", | |
"stateMutability": "pure", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 17, | |
"src": "34:155:0" | |
} | |
], | |
"src": "0:190:0" | |
}, | |
"id": 0, | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"exportedSymbols": { | |
"ConvertLib": [ | |
16 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 1, | |
"name": "PragmaDirective", | |
"src": "0:32:0" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "library", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
16 | |
], | |
"name": "ConvertLib", | |
"scope": 17 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "convert", | |
"scope": 16, | |
"stateMutability": "pure", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "amount", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 2, | |
"name": "ElementaryTypeName", | |
"src": "72:4:0" | |
} | |
], | |
"id": 3, | |
"name": "VariableDeclaration", | |
"src": "72:11:0" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "conversionRate", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 4, | |
"name": "ElementaryTypeName", | |
"src": "84:4:0" | |
} | |
], | |
"id": 5, | |
"name": "VariableDeclaration", | |
"src": "84:19:0" | |
} | |
], | |
"id": 6, | |
"name": "ParameterList", | |
"src": "71:33:0" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "convertedAmount", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 7, | |
"name": "ElementaryTypeName", | |
"src": "126:4:0" | |
} | |
], | |
"id": 8, | |
"name": "VariableDeclaration", | |
"src": "126:20:0" | |
} | |
], | |
"id": 9, | |
"name": "ParameterList", | |
"src": "125:22:0" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 9 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "*", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 3, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 10, | |
"name": "Identifier", | |
"src": "160:6:0" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 5, | |
"type": "uint256", | |
"value": "conversionRate" | |
}, | |
"id": 11, | |
"name": "Identifier", | |
"src": "169:14:0" | |
} | |
], | |
"id": 12, | |
"name": "BinaryOperation", | |
"src": "160:23:0" | |
} | |
], | |
"id": 13, | |
"name": "Return", | |
"src": "153:30:0" | |
} | |
], | |
"id": 14, | |
"name": "Block", | |
"src": "149:38:0" | |
} | |
], | |
"id": 15, | |
"name": "FunctionDefinition", | |
"src": "55:132:0" | |
} | |
], | |
"id": 16, | |
"name": "ContractDefinition", | |
"src": "34:155:0" | |
} | |
], | |
"id": 17, | |
"name": "SourceUnit", | |
"src": "0:190:0" | |
} | |
} | |
}, | |
"compiler": { | |
"name": "solc", | |
"version": "0.5.2+commit.1df8f40c.Emscripten.clang" | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"sourcePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"source": "pragma solidity >=0.4.22 <0.6.0;\n\nlibrary ConvertLib{\n\tfunction convert(uint amount,uint conversionRate) public pure returns (uint convertedAmount)\n\t{\n\t\treturn amount * conversionRate;\n\t}\n}\n", | |
"sourceMap": "34:155:0:-;;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": "34:155:0:-;;;;;;;;;;;;;;;;;;;;;;;;;55:132;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;55:132:0;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;126:20;169:14;160:6;:23;153:30;;55:132;;;;:::o", | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"exportedSymbols": { | |
"ConvertLib": [ | |
16 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 1, | |
"name": "PragmaDirective", | |
"src": "0:32:0" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "library", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
16 | |
], | |
"name": "ConvertLib", | |
"scope": 17 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "convert", | |
"scope": 16, | |
"stateMutability": "pure", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "amount", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 2, | |
"name": "ElementaryTypeName", | |
"src": "72:4:0" | |
} | |
], | |
"id": 3, | |
"name": "VariableDeclaration", | |
"src": "72:11:0" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "conversionRate", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 4, | |
"name": "ElementaryTypeName", | |
"src": "84:4:0" | |
} | |
], | |
"id": 5, | |
"name": "VariableDeclaration", | |
"src": "84:19:0" | |
} | |
], | |
"id": 6, | |
"name": "ParameterList", | |
"src": "71:33:0" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "convertedAmount", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 7, | |
"name": "ElementaryTypeName", | |
"src": "126:4:0" | |
} | |
], | |
"id": 8, | |
"name": "VariableDeclaration", | |
"src": "126:20:0" | |
} | |
], | |
"id": 9, | |
"name": "ParameterList", | |
"src": "125:22:0" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 9 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "*", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 3, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 10, | |
"name": "Identifier", | |
"src": "160:6:0" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 5, | |
"type": "uint256", | |
"value": "conversionRate" | |
}, | |
"id": 11, | |
"name": "Identifier", | |
"src": "169:14:0" | |
} | |
], | |
"id": 12, | |
"name": "BinaryOperation", | |
"src": "160:23:0" | |
} | |
], | |
"id": 13, | |
"name": "Return", | |
"src": "153:30:0" | |
} | |
], | |
"id": 14, | |
"name": "Block", | |
"src": "149:38:0" | |
} | |
], | |
"id": 15, | |
"name": "FunctionDefinition", | |
"src": "55:132:0" | |
} | |
], | |
"id": 16, | |
"name": "ContractDefinition", | |
"src": "34:155:0" | |
} | |
], | |
"id": 17, | |
"name": "SourceUnit", | |
"src": "0:190:0" | |
}, | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"exportedSymbols": { | |
"ConvertLib": [ | |
16 | |
] | |
}, | |
"id": 17, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:0" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "library", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 16, | |
"linearizedBaseContracts": [ | |
16 | |
], | |
"name": "ConvertLib", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"body": { | |
"id": 14, | |
"nodeType": "Block", | |
"src": "149:38:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 12, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 10, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 3, | |
"src": "160:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 11, | |
"name": "conversionRate", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 5, | |
"src": "169:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "160:23:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 9, | |
"id": 13, | |
"nodeType": "Return", | |
"src": "153:30:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 15, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "convert", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 6, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 3, | |
"name": "amount", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "72:11:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 2, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "72:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 5, | |
"name": "conversionRate", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "84:19:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 4, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "84:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "71:33:0" | |
}, | |
"returnParameters": { | |
"id": 9, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 8, | |
"name": "convertedAmount", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "126:20:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 7, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "126:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "125:22:0" | |
}, | |
"scope": 16, | |
"src": "55:132:0", | |
"stateMutability": "pure", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 17, | |
"src": "34:155:0" | |
} | |
], | |
"src": "0:190:0" | |
}, | |
"abi": [ | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "amount", | |
"type": "uint256" | |
}, | |
{ | |
"name": "conversionRate", | |
"type": "uint256" | |
} | |
], | |
"name": "convert", | |
"outputs": [ | |
{ | |
"name": "convertedAmount", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "pure", | |
"type": "function" | |
} | |
], | |
"bytecode": "0x60d761002f600b82828239805160001a6073146000811461001f57610021565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106050576000357c01000000000000000000000000000000000000000000000000000000009004806396e4ee3d146055575b600080fd5b608860048036036040811015606957600080fd5b810190808035906020019092919080359060200190929190505050609e565b6040518082815260200191505060405180910390f35b600081830290509291505056fea165627a7a7230582094ca199c801839337331343f733fa7283c9d7f430a20e7ec95933a083287a6d80029", | |
"deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106050576000357c01000000000000000000000000000000000000000000000000000000009004806396e4ee3d146055575b600080fd5b608860048036036040811015606957600080fd5b810190808035906020019092919080359060200190929190505050609e565b6040518082815260200191505060405180910390f35b600081830290509291505056fea165627a7a7230582094ca199c801839337331343f733fa7283c9d7f430a20e7ec95933a083287a6d80029", | |
"unlinked_binary": "0x60d761002f600b82828239805160001a6073146000811461001f57610021565bfe5b5030600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106050576000357c01000000000000000000000000000000000000000000000000000000009004806396e4ee3d146055575b600080fd5b608860048036036040811015606957600080fd5b810190808035906020019092919080359060200190929190505050609e565b6040518082815260200191505060405180910390f35b600081830290509291505056fea165627a7a7230582094ca199c801839337331343f733fa7283c9d7f430a20e7ec95933a083287a6d80029", | |
"compiler": { | |
"name": "solc", | |
"version": "0.5.2+commit.1df8f40c.Emscripten.clang" | |
}, | |
"devdoc": { | |
"methods": {} | |
}, | |
"userdoc": { | |
"methods": {} | |
}, | |
"sourceList": [ | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/Migrations.sol" | |
], | |
"sources": { | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol": { | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"exportedSymbols": { | |
"ConvertLib": [ | |
16 | |
] | |
}, | |
"id": 17, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:0" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "library", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 16, | |
"linearizedBaseContracts": [ | |
16 | |
], | |
"name": "ConvertLib", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"body": { | |
"id": 14, | |
"nodeType": "Block", | |
"src": "149:38:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 12, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 10, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 3, | |
"src": "160:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 11, | |
"name": "conversionRate", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 5, | |
"src": "169:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "160:23:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 9, | |
"id": 13, | |
"nodeType": "Return", | |
"src": "153:30:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 15, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "convert", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 6, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 3, | |
"name": "amount", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "72:11:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 2, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "72:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 5, | |
"name": "conversionRate", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "84:19:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 4, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "84:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "71:33:0" | |
}, | |
"returnParameters": { | |
"id": 9, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 8, | |
"name": "convertedAmount", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "126:20:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 7, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "126:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "125:22:0" | |
}, | |
"scope": 16, | |
"src": "55:132:0", | |
"stateMutability": "pure", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 17, | |
"src": "34:155:0" | |
} | |
], | |
"src": "0:190:0" | |
}, | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"exportedSymbols": { | |
"ConvertLib": [ | |
16 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 1, | |
"name": "PragmaDirective", | |
"src": "0:32:0" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "library", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
16 | |
], | |
"name": "ConvertLib", | |
"scope": 17 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "convert", | |
"scope": 16, | |
"stateMutability": "pure", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "amount", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 2, | |
"name": "ElementaryTypeName", | |
"src": "72:4:0" | |
} | |
], | |
"id": 3, | |
"name": "VariableDeclaration", | |
"src": "72:11:0" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "conversionRate", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 4, | |
"name": "ElementaryTypeName", | |
"src": "84:4:0" | |
} | |
], | |
"id": 5, | |
"name": "VariableDeclaration", | |
"src": "84:19:0" | |
} | |
], | |
"id": 6, | |
"name": "ParameterList", | |
"src": "71:33:0" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "convertedAmount", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 7, | |
"name": "ElementaryTypeName", | |
"src": "126:4:0" | |
} | |
], | |
"id": 8, | |
"name": "VariableDeclaration", | |
"src": "126:20:0" | |
} | |
], | |
"id": 9, | |
"name": "ParameterList", | |
"src": "125:22:0" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 9 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "*", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 3, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 10, | |
"name": "Identifier", | |
"src": "160:6:0" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 5, | |
"type": "uint256", | |
"value": "conversionRate" | |
}, | |
"id": 11, | |
"name": "Identifier", | |
"src": "169:14:0" | |
} | |
], | |
"id": 12, | |
"name": "BinaryOperation", | |
"src": "160:23:0" | |
} | |
], | |
"id": 13, | |
"name": "Return", | |
"src": "153:30:0" | |
} | |
], | |
"id": 14, | |
"name": "Block", | |
"src": "149:38:0" | |
} | |
], | |
"id": 15, | |
"name": "FunctionDefinition", | |
"src": "55:132:0" | |
} | |
], | |
"id": 16, | |
"name": "ContractDefinition", | |
"src": "34:155:0" | |
} | |
], | |
"id": 17, | |
"name": "SourceUnit", | |
"src": "0:190:0" | |
}, | |
"source": "pragma solidity >=0.4.22 <0.6.0;\n\nlibrary ConvertLib{\n\tfunction convert(uint amount,uint conversionRate) public pure returns (uint convertedAmount)\n\t{\n\t\treturn amount * conversionRate;\n\t}\n}\n" | |
}, | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol": { | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"exportedSymbols": { | |
"MetaCoin1": [ | |
112 | |
] | |
}, | |
"id": 113, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 18, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:1" | |
}, | |
{ | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"file": "./ConvertLib.sol", | |
"id": 19, | |
"nodeType": "ImportDirective", | |
"scope": 113, | |
"sourceUnit": 17, | |
"src": "34:26:1", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 112, | |
"linearizedBaseContracts": [ | |
112 | |
], | |
"name": "MetaCoin1", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 23, | |
"name": "balances", | |
"nodeType": "VariableDeclaration", | |
"scope": 112, | |
"src": "346:34:1", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 22, | |
"keyType": { | |
"id": 20, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "355:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "346:25:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 21, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "366:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"anonymous": false, | |
"documentation": null, | |
"id": 31, | |
"name": "Transfer", | |
"nodeType": "EventDefinition", | |
"parameters": { | |
"id": 30, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 25, | |
"indexed": true, | |
"name": "_from", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "399:21:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 24, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "399:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 27, | |
"indexed": true, | |
"name": "_to", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "422:19:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 26, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "422:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 29, | |
"indexed": false, | |
"name": "_value", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "443:14:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 28, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "443:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "398:60:1" | |
}, | |
"src": "384:75:1" | |
}, | |
{ | |
"body": { | |
"id": 41, | |
"nodeType": "Block", | |
"src": "483:35:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 39, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 34, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "487:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 37, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 35, | |
"name": "tx", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 196, | |
"src": "496:2:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_transaction", | |
"typeString": "tx" | |
} | |
}, | |
"id": 36, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "origin", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "496:9:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "487:19:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"hexValue": "3130303030", | |
"id": 38, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "509:5:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000_by_1", | |
"typeString": "int_const 10000" | |
}, | |
"value": "10000" | |
}, | |
"src": "487:27:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 40, | |
"nodeType": "ExpressionStatement", | |
"src": "487:27:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 42, | |
"implemented": true, | |
"kind": "constructor", | |
"modifiers": [], | |
"name": "", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 32, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "473:2:1" | |
}, | |
"returnParameters": { | |
"id": 33, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "483:0:1" | |
}, | |
"scope": 112, | |
"src": "462:56:1", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 82, | |
"nodeType": "Block", | |
"src": "602:183:1", | |
"statements": [ | |
{ | |
"condition": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 56, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 51, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "610:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 54, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 52, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "619:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 53, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "619:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "610:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 55, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "633:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "610:29:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseBody": null, | |
"id": 59, | |
"nodeType": "IfStatement", | |
"src": "606:47:1", | |
"trueBody": { | |
"expression": { | |
"argumentTypes": null, | |
"hexValue": "66616c7365", | |
"id": 57, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "648:5:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "false" | |
}, | |
"functionReturnParameters": 50, | |
"id": 58, | |
"nodeType": "Return", | |
"src": "641:12:1" | |
} | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 65, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 60, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "657:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 63, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 61, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "666:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 62, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "666:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "657:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "-=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 64, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "681:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "657:30:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 66, | |
"nodeType": "ExpressionStatement", | |
"src": "657:30:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 71, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 67, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "691:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 69, | |
"indexExpression": { | |
"argumentTypes": null, | |
"id": 68, | |
"name": "receiver", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 44, | |
"src": "700:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "691:18:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 70, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "713:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "691:28:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 72, | |
"nodeType": "ExpressionStatement", | |
"src": "691:28:1" | |
}, | |
{ | |
"eventCall": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 74, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "737:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 75, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "737:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"id": 76, | |
"name": "receiver", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 44, | |
"src": "749:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"id": 77, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "759:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 73, | |
"name": "Transfer", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 31, | |
"src": "728:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", | |
"typeString": "function (address,address,uint256)" | |
} | |
}, | |
"id": 78, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "728:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 79, | |
"nodeType": "EmitStatement", | |
"src": "723:43:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"hexValue": "74727565", | |
"id": 80, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "777:4:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "true" | |
}, | |
"functionReturnParameters": 50, | |
"id": 81, | |
"nodeType": "Return", | |
"src": "770:11:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 83, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "sendCoin", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 47, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 44, | |
"name": "receiver", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "539:16:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 43, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "539:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 46, | |
"name": "amount", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "557:11:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 45, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "557:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "538:31:1" | |
}, | |
"returnParameters": { | |
"id": 50, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 49, | |
"name": "sufficient", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "585:15:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 48, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "585:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "584:17:1" | |
}, | |
"scope": 112, | |
"src": "521:264:1", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 98, | |
"nodeType": "Block", | |
"src": "852:53:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 93, | |
"name": "addr", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 85, | |
"src": "893:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 92, | |
"name": "getBalance", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 111, | |
"src": "882:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", | |
"typeString": "function (address) view returns (uint256)" | |
} | |
}, | |
"id": 94, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "882:16:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"hexValue": "32", | |
"id": 95, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "899:1:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"id": 90, | |
"name": "ConvertLib", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 16, | |
"src": "863:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_ConvertLib_$16_$", | |
"typeString": "type(library ConvertLib)" | |
} | |
}, | |
"id": 91, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "convert", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 15, | |
"src": "863:18:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256,uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 96, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "863:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 89, | |
"id": 97, | |
"nodeType": "Return", | |
"src": "856:45:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 99, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getBalanceInEth", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 86, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 85, | |
"name": "addr", | |
"nodeType": "VariableDeclaration", | |
"scope": 99, | |
"src": "813:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 84, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "813:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "812:14:1" | |
}, | |
"returnParameters": { | |
"id": 89, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 88, | |
"name": "", | |
"nodeType": "VariableDeclaration", | |
"scope": 99, | |
"src": "847:4:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 87, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "847:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "846:6:1" | |
}, | |
"scope": 112, | |
"src": "788:117:1", | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 110, | |
"nodeType": "Block", | |
"src": "968:29:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 106, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "979:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 108, | |
"indexExpression": { | |
"argumentTypes": null, | |
"id": 107, | |
"name": "addr", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 101, | |
"src": "988:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "979:14:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 105, | |
"id": 109, | |
"nodeType": "Return", | |
"src": "972:21:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 111, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getBalance", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 102, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 101, | |
"name": "addr", | |
"nodeType": "VariableDeclaration", | |
"scope": 111, | |
"src": "928:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 100, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "928:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "927:14:1" | |
}, | |
"returnParameters": { | |
"id": 105, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 104, | |
"name": "", | |
"nodeType": "VariableDeclaration", | |
"scope": 111, | |
"src": "962:4:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 103, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "962:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "961:6:1" | |
}, | |
"scope": 112, | |
"src": "908:89:1", | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 113, | |
"src": "324:675:1" | |
} | |
], | |
"src": "0:1000:1" | |
}, | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"exportedSymbols": { | |
"MetaCoin1": [ | |
112 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 18, | |
"name": "PragmaDirective", | |
"src": "0:32:1" | |
}, | |
{ | |
"attributes": { | |
"SourceUnit": 17, | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"file": "./ConvertLib.sol", | |
"scope": 113, | |
"symbolAliases": [ | |
null | |
], | |
"unitAlias": "" | |
}, | |
"id": 19, | |
"name": "ImportDirective", | |
"src": "34:26:1" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
112 | |
], | |
"name": "MetaCoin1", | |
"scope": 113 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "balances", | |
"scope": 112, | |
"stateVariable": true, | |
"storageLocation": "default", | |
"type": "mapping(address => uint256)", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"type": "mapping(address => uint256)" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"type": "address" | |
}, | |
"id": 20, | |
"name": "ElementaryTypeName", | |
"src": "355:7:1" | |
}, | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 21, | |
"name": "ElementaryTypeName", | |
"src": "366:4:1" | |
} | |
], | |
"id": 22, | |
"name": "Mapping", | |
"src": "346:25:1" | |
} | |
], | |
"id": 23, | |
"name": "VariableDeclaration", | |
"src": "346:34:1" | |
}, | |
{ | |
"attributes": { | |
"anonymous": false, | |
"documentation": null, | |
"name": "Transfer" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": true, | |
"name": "_from", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 24, | |
"name": "ElementaryTypeName", | |
"src": "399:7:1" | |
} | |
], | |
"id": 25, | |
"name": "VariableDeclaration", | |
"src": "399:21:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": true, | |
"name": "_to", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 26, | |
"name": "ElementaryTypeName", | |
"src": "422:7:1" | |
} | |
], | |
"id": 27, | |
"name": "VariableDeclaration", | |
"src": "422:19:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": false, | |
"name": "_value", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint256", | |
"type": "uint256" | |
}, | |
"id": 28, | |
"name": "ElementaryTypeName", | |
"src": "443:7:1" | |
} | |
], | |
"id": 29, | |
"name": "VariableDeclaration", | |
"src": "443:14:1" | |
} | |
], | |
"id": 30, | |
"name": "ParameterList", | |
"src": "398:60:1" | |
} | |
], | |
"id": 31, | |
"name": "EventDefinition", | |
"src": "384:75:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": true, | |
"kind": "constructor", | |
"modifiers": [ | |
null | |
], | |
"name": "", | |
"scope": 112, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 32, | |
"name": "ParameterList", | |
"src": "473:2:1" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 33, | |
"name": "ParameterList", | |
"src": "483:0:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 34, | |
"name": "Identifier", | |
"src": "487:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "origin", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 196, | |
"type": "tx", | |
"value": "tx" | |
}, | |
"id": 35, | |
"name": "Identifier", | |
"src": "496:2:1" | |
} | |
], | |
"id": 36, | |
"name": "MemberAccess", | |
"src": "496:9:1" | |
} | |
], | |
"id": 37, | |
"name": "IndexAccess", | |
"src": "487:19:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "3130303030", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "number", | |
"type": "int_const 10000", | |
"value": "10000" | |
}, | |
"id": 38, | |
"name": "Literal", | |
"src": "509:5:1" | |
} | |
], | |
"id": 39, | |
"name": "Assignment", | |
"src": "487:27:1" | |
} | |
], | |
"id": 40, | |
"name": "ExpressionStatement", | |
"src": "487:27:1" | |
} | |
], | |
"id": 41, | |
"name": "Block", | |
"src": "483:35:1" | |
} | |
], | |
"id": 42, | |
"name": "FunctionDefinition", | |
"src": "462:56:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "sendCoin", | |
"scope": 112, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "receiver", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 43, | |
"name": "ElementaryTypeName", | |
"src": "539:7:1" | |
} | |
], | |
"id": 44, | |
"name": "VariableDeclaration", | |
"src": "539:16:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "amount", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 45, | |
"name": "ElementaryTypeName", | |
"src": "557:4:1" | |
} | |
], | |
"id": 46, | |
"name": "VariableDeclaration", | |
"src": "557:11:1" | |
} | |
], | |
"id": 47, | |
"name": "ParameterList", | |
"src": "538:31:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "sufficient", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "bool", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "bool", | |
"type": "bool" | |
}, | |
"id": 48, | |
"name": "ElementaryTypeName", | |
"src": "585:4:1" | |
} | |
], | |
"id": 49, | |
"name": "VariableDeclaration", | |
"src": "585:15:1" | |
} | |
], | |
"id": 50, | |
"name": "ParameterList", | |
"src": "584:17:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"falseBody": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "<", | |
"type": "bool" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 51, | |
"name": "Identifier", | |
"src": "610:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 52, | |
"name": "Identifier", | |
"src": "619:3:1" | |
} | |
], | |
"id": 53, | |
"name": "MemberAccess", | |
"src": "619:10:1" | |
} | |
], | |
"id": 54, | |
"name": "IndexAccess", | |
"src": "610:20:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 55, | |
"name": "Identifier", | |
"src": "633:6:1" | |
} | |
], | |
"id": 56, | |
"name": "BinaryOperation", | |
"src": "610:29:1" | |
}, | |
{ | |
"attributes": { | |
"functionReturnParameters": 50 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "66616c7365", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "bool", | |
"type": "bool", | |
"value": "false" | |
}, | |
"id": 57, | |
"name": "Literal", | |
"src": "648:5:1" | |
} | |
], | |
"id": 58, | |
"name": "Return", | |
"src": "641:12:1" | |
} | |
], | |
"id": 59, | |
"name": "IfStatement", | |
"src": "606:47:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "-=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 60, | |
"name": "Identifier", | |
"src": "657:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 61, | |
"name": "Identifier", | |
"src": "666:3:1" | |
} | |
], | |
"id": 62, | |
"name": "MemberAccess", | |
"src": "666:10:1" | |
} | |
], | |
"id": 63, | |
"name": "IndexAccess", | |
"src": "657:20:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 64, | |
"name": "Identifier", | |
"src": "681:6:1" | |
} | |
], | |
"id": 65, | |
"name": "Assignment", | |
"src": "657:30:1" | |
} | |
], | |
"id": 66, | |
"name": "ExpressionStatement", | |
"src": "657:30:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "+=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 67, | |
"name": "Identifier", | |
"src": "691:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 44, | |
"type": "address", | |
"value": "receiver" | |
}, | |
"id": 68, | |
"name": "Identifier", | |
"src": "700:8:1" | |
} | |
], | |
"id": 69, | |
"name": "IndexAccess", | |
"src": "691:18:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 70, | |
"name": "Identifier", | |
"src": "713:6:1" | |
} | |
], | |
"id": 71, | |
"name": "Assignment", | |
"src": "691:28:1" | |
} | |
], | |
"id": 72, | |
"name": "ExpressionStatement", | |
"src": "691:28:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "tuple()", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 31, | |
"type": "function (address,address,uint256)", | |
"value": "Transfer" | |
}, | |
"id": 73, | |
"name": "Identifier", | |
"src": "728:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 74, | |
"name": "Identifier", | |
"src": "737:3:1" | |
} | |
], | |
"id": 75, | |
"name": "MemberAccess", | |
"src": "737:10:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 44, | |
"type": "address", | |
"value": "receiver" | |
}, | |
"id": 76, | |
"name": "Identifier", | |
"src": "749:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 77, | |
"name": "Identifier", | |
"src": "759:6:1" | |
} | |
], | |
"id": 78, | |
"name": "FunctionCall", | |
"src": "728:38:1" | |
} | |
], | |
"id": 79, | |
"name": "EmitStatement", | |
"src": "723:43:1" | |
}, | |
{ | |
"attributes": { | |
"functionReturnParameters": 50 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "74727565", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "bool", | |
"type": "bool", | |
"value": "true" | |
}, | |
"id": 80, | |
"name": "Literal", | |
"src": "777:4:1" | |
} | |
], | |
"id": 81, | |
"name": "Return", | |
"src": "770:11:1" | |
} | |
], | |
"id": 82, | |
"name": "Block", | |
"src": "602:183:1" | |
} | |
], | |
"id": 83, | |
"name": "FunctionDefinition", | |
"src": "521:264:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "getBalanceInEth", | |
"scope": 112, | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "addr", | |
"scope": 99, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 84, | |
"name": "ElementaryTypeName", | |
"src": "813:7:1" | |
} | |
], | |
"id": 85, | |
"name": "VariableDeclaration", | |
"src": "813:12:1" | |
} | |
], | |
"id": 86, | |
"name": "ParameterList", | |
"src": "812:14:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "", | |
"scope": 99, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 87, | |
"name": "ElementaryTypeName", | |
"src": "847:4:1" | |
} | |
], | |
"id": 88, | |
"name": "VariableDeclaration", | |
"src": "847:4:1" | |
} | |
], | |
"id": 89, | |
"name": "ParameterList", | |
"src": "846:6:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 89 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "uint256", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
} | |
], | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "convert", | |
"referencedDeclaration": 15, | |
"type": "function (uint256,uint256) pure returns (uint256)" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 16, | |
"type": "type(library ConvertLib)", | |
"value": "ConvertLib" | |
}, | |
"id": 90, | |
"name": "Identifier", | |
"src": "863:10:1" | |
} | |
], | |
"id": 91, | |
"name": "MemberAccess", | |
"src": "863:18:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "uint256", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 111, | |
"type": "function (address) view returns (uint256)", | |
"value": "getBalance" | |
}, | |
"id": 92, | |
"name": "Identifier", | |
"src": "882:10:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 85, | |
"type": "address", | |
"value": "addr" | |
}, | |
"id": 93, | |
"name": "Identifier", | |
"src": "893:4:1" | |
} | |
], | |
"id": 94, | |
"name": "FunctionCall", | |
"src": "882:16:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "32", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "number", | |
"type": "int_const 2", | |
"value": "2" | |
}, | |
"id": 95, | |
"name": "Literal", | |
"src": "899:1:1" | |
} | |
], | |
"id": 96, | |
"name": "FunctionCall", | |
"src": "863:38:1" | |
} | |
], | |
"id": 97, | |
"name": "Return", | |
"src": "856:45:1" | |
} | |
], | |
"id": 98, | |
"name": "Block", | |
"src": "852:53:1" | |
} | |
], | |
"id": 99, | |
"name": "FunctionDefinition", | |
"src": "788:117:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "getBalance", | |
"scope": 112, | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "addr", | |
"scope": 111, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 100, | |
"name": "ElementaryTypeName", | |
"src": "928:7:1" | |
} | |
], | |
"id": 101, | |
"name": "VariableDeclaration", | |
"src": "928:12:1" | |
} | |
], | |
"id": 102, | |
"name": "ParameterList", | |
"src": "927:14:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "", | |
"scope": 111, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 103, | |
"name": "ElementaryTypeName", | |
"src": "962:4:1" | |
} | |
], | |
"id": 104, | |
"name": "VariableDeclaration", | |
"src": "962:4:1" | |
} | |
], | |
"id": 105, | |
"name": "ParameterList", | |
"src": "961:6:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 105 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 106, | |
"name": "Identifier", | |
"src": "979:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 101, | |
"type": "address", | |
"value": "addr" | |
}, | |
"id": 107, | |
"name": "Identifier", | |
"src": "988:4:1" | |
} | |
], | |
"id": 108, | |
"name": "IndexAccess", | |
"src": "979:14:1" | |
} | |
], | |
"id": 109, | |
"name": "Return", | |
"src": "972:21:1" | |
} | |
], | |
"id": 110, | |
"name": "Block", | |
"src": "968:29:1" | |
} | |
], | |
"id": 111, | |
"name": "FunctionDefinition", | |
"src": "908:89:1" | |
} | |
], | |
"id": 112, | |
"name": "ContractDefinition", | |
"src": "324:675:1" | |
} | |
], | |
"id": 113, | |
"name": "SourceUnit", | |
"src": "0:1000:1" | |
}, | |
"source": "pragma solidity >=0.4.22 <0.6.0;\n\nimport \"./ConvertLib.sol\";\n\n// This is just a simple example of a coin-like contract.\n// It is not standards compatible and cannot be expected to talk to other\n// coin/token contracts. If you want to create a standards-compliant\n// token, see: https://github.com/ConsenSys/Tokens. Cheers!\n\ncontract MetaCoin1 {\n\tmapping (address => uint) balances;\n\n\tevent Transfer(address indexed _from, address indexed _to, uint256 _value);\n\n\tconstructor() public {\n\t\tbalances[tx.origin] = 10000;\n\t}\n\n\tfunction sendCoin(address receiver, uint amount) public returns(bool sufficient) {\n\t\tif (balances[msg.sender] < amount) return false;\n\t\tbalances[msg.sender] -= amount;\n\t\tbalances[receiver] += amount;\n\t\temit Transfer(msg.sender, receiver, amount);\n\t\treturn true;\n\t}\n\n\tfunction getBalanceInEth(address addr) public view returns(uint){\n\t\treturn ConvertLib.convert(getBalance(addr),2);\n\t}\n\n\tfunction getBalance(address addr) public view returns(uint) {\n\t\treturn balances[addr];\n\t}\n}\n" | |
}, | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/Migrations.sol": { | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/Migrations.sol", | |
"exportedSymbols": { | |
"Migrations": [ | |
169 | |
] | |
}, | |
"id": 170, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 114, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:2" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 169, | |
"linearizedBaseContracts": [ | |
169 | |
], | |
"name": "Migrations", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 116, | |
"name": "owner", | |
"nodeType": "VariableDeclaration", | |
"scope": 169, | |
"src": "58:20:2", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 115, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "58:7:2", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 118, | |
"name": "last_completed_migration", | |
"nodeType": "VariableDeclaration", | |
"scope": 169, | |
"src": "82:39:2", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 117, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "82:7:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 126, | |
"nodeType": "Block", | |
"src": "148:37:2", | |
"statements": [ | |
{ | |
"condition": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"id": 123, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 120, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "158:3:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 121, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "158:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 122, | |
"name": "owner", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 116, | |
"src": "172:5:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"src": "158:19:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseBody": null, | |
"id": 125, | |
"nodeType": "IfStatement", | |
"src": "154:26:2", | |
"trueBody": { | |
"id": 124, | |
"nodeType": "PlaceholderStatement", | |
"src": "179:1:2" | |
} | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 127, | |
"name": "restricted", | |
"nodeType": "ModifierDefinition", | |
"parameters": { | |
"id": 119, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "145:2:2" | |
}, | |
"src": "126:59:2", | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 135, | |
"nodeType": "Block", | |
"src": "210:29:2", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 133, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"id": 130, | |
"name": "owner", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 116, | |
"src": "216:5:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 131, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "224:3:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 132, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "224:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"src": "216:18:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"id": 134, | |
"nodeType": "ExpressionStatement", | |
"src": "216:18:2" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 136, | |
"implemented": true, | |
"kind": "constructor", | |
"modifiers": [], | |
"name": "", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 128, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "200:2:2" | |
}, | |
"returnParameters": { | |
"id": 129, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "210:0:2" | |
}, | |
"scope": 169, | |
"src": "189:50:2", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 147, | |
"nodeType": "Block", | |
"src": "299:47:2", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 145, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"id": 143, | |
"name": "last_completed_migration", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 118, | |
"src": "305:24:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 144, | |
"name": "completed", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 138, | |
"src": "332:9:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "305:36:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 146, | |
"nodeType": "ExpressionStatement", | |
"src": "305:36:2" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 148, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [ | |
{ | |
"arguments": null, | |
"id": 141, | |
"modifierName": { | |
"argumentTypes": null, | |
"id": 140, | |
"name": "restricted", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 127, | |
"src": "288:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_modifier$__$", | |
"typeString": "modifier ()" | |
} | |
}, | |
"nodeType": "ModifierInvocation", | |
"src": "288:10:2" | |
} | |
], | |
"name": "setCompleted", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 139, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 138, | |
"name": "completed", | |
"nodeType": "VariableDeclaration", | |
"scope": 148, | |
"src": "265:14:2", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 137, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "265:4:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "264:16:2" | |
}, | |
"returnParameters": { | |
"id": 142, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "299:0:2" | |
}, | |
"scope": 169, | |
"src": "243:103:2", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 167, | |
"nodeType": "Block", | |
"src": "406:109:2", | |
"statements": [ | |
{ | |
"assignments": [ | |
156 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 156, | |
"name": "upgraded", | |
"nodeType": "VariableDeclaration", | |
"scope": 167, | |
"src": "412:19:2", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Migrations_$169", | |
"typeString": "contract Migrations" | |
}, | |
"typeName": { | |
"contractScope": null, | |
"id": 155, | |
"name": "Migrations", | |
"nodeType": "UserDefinedTypeName", | |
"referencedDeclaration": 169, | |
"src": "412:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Migrations_$169", | |
"typeString": "contract Migrations" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"id": 160, | |
"initialValue": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 158, | |
"name": "new_address", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 150, | |
"src": "445:11:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 157, | |
"name": "Migrations", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "434:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_Migrations_$169_$", | |
"typeString": "type(contract Migrations)" | |
} | |
}, | |
"id": 159, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "typeConversion", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "434:23:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Migrations_$169", | |
"typeString": "contract Migrations" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "412:45:2" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 164, | |
"name": "last_completed_migration", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 118, | |
"src": "485:24:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"id": 161, | |
"name": "upgraded", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 156, | |
"src": "463:8:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Migrations_$169", | |
"typeString": "contract Migrations" | |
} | |
}, | |
"id": 163, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "setCompleted", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 148, | |
"src": "463:21:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", | |
"typeString": "function (uint256) external" | |
} | |
}, | |
"id": 165, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "463:47:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 166, | |
"nodeType": "ExpressionStatement", | |
"src": "463:47:2" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 168, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [ | |
{ | |
"arguments": null, | |
"id": 153, | |
"modifierName": { | |
"argumentTypes": null, | |
"id": 152, | |
"name": "restricted", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 127, | |
"src": "395:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_modifier$__$", | |
"typeString": "modifier ()" | |
} | |
}, | |
"nodeType": "ModifierInvocation", | |
"src": "395:10:2" | |
} | |
], | |
"name": "upgrade", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 151, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 150, | |
"name": "new_address", | |
"nodeType": "VariableDeclaration", | |
"scope": 168, | |
"src": "367:19:2", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 149, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "367:7:2", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "366:21:2" | |
}, | |
"returnParameters": { | |
"id": 154, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "406:0:2" | |
}, | |
"scope": 169, | |
"src": "350:165:2", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 170, | |
"src": "34:483:2" | |
} | |
], | |
"src": "0:518:2" | |
}, | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/Migrations.sol", | |
"exportedSymbols": { | |
"Migrations": [ | |
169 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 114, | |
"name": "PragmaDirective", | |
"src": "0:32:2" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
169 | |
], | |
"name": "Migrations", | |
"scope": 170 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "owner", | |
"scope": 169, | |
"stateVariable": true, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 115, | |
"name": "ElementaryTypeName", | |
"src": "58:7:2" | |
} | |
], | |
"id": 116, | |
"name": "VariableDeclaration", | |
"src": "58:20:2" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "last_completed_migration", | |
"scope": 169, | |
"stateVariable": true, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint256", | |
"type": "uint256" | |
}, | |
"id": 117, | |
"name": "ElementaryTypeName", | |
"src": "82:7:2" | |
} | |
], | |
"id": 118, | |
"name": "VariableDeclaration", | |
"src": "82:39:2" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"name": "restricted", | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 119, | |
"name": "ParameterList", | |
"src": "145:2:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"falseBody": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "==", | |
"type": "bool" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 120, | |
"name": "Identifier", | |
"src": "158:3:2" | |
} | |
], | |
"id": 121, | |
"name": "MemberAccess", | |
"src": "158:10:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 116, | |
"type": "address", | |
"value": "owner" | |
}, | |
"id": 122, | |
"name": "Identifier", | |
"src": "172:5:2" | |
} | |
], | |
"id": 123, | |
"name": "BinaryOperation", | |
"src": "158:19:2" | |
}, | |
{ | |
"id": 124, | |
"name": "PlaceholderStatement", | |
"src": "179:1:2" | |
} | |
], | |
"id": 125, | |
"name": "IfStatement", | |
"src": "154:26:2" | |
} | |
], | |
"id": 126, | |
"name": "Block", | |
"src": "148:37:2" | |
} | |
], | |
"id": 127, | |
"name": "ModifierDefinition", | |
"src": "126:59:2" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": true, | |
"kind": "constructor", | |
"modifiers": [ | |
null | |
], | |
"name": "", | |
"scope": 169, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 128, | |
"name": "ParameterList", | |
"src": "200:2:2" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 129, | |
"name": "ParameterList", | |
"src": "210:0:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "=", | |
"type": "address" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 116, | |
"type": "address", | |
"value": "owner" | |
}, | |
"id": 130, | |
"name": "Identifier", | |
"src": "216:5:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 131, | |
"name": "Identifier", | |
"src": "224:3:2" | |
} | |
], | |
"id": 132, | |
"name": "MemberAccess", | |
"src": "224:10:2" | |
} | |
], | |
"id": 133, | |
"name": "Assignment", | |
"src": "216:18:2" | |
} | |
], | |
"id": 134, | |
"name": "ExpressionStatement", | |
"src": "216:18:2" | |
} | |
], | |
"id": 135, | |
"name": "Block", | |
"src": "210:29:2" | |
} | |
], | |
"id": 136, | |
"name": "FunctionDefinition", | |
"src": "189:50:2" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"name": "setCompleted", | |
"scope": 169, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "completed", | |
"scope": 148, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 137, | |
"name": "ElementaryTypeName", | |
"src": "265:4:2" | |
} | |
], | |
"id": 138, | |
"name": "VariableDeclaration", | |
"src": "265:14:2" | |
} | |
], | |
"id": 139, | |
"name": "ParameterList", | |
"src": "264:16:2" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 142, | |
"name": "ParameterList", | |
"src": "299:0:2" | |
}, | |
{ | |
"attributes": { | |
"arguments": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 127, | |
"type": "modifier ()", | |
"value": "restricted" | |
}, | |
"id": 140, | |
"name": "Identifier", | |
"src": "288:10:2" | |
} | |
], | |
"id": 141, | |
"name": "ModifierInvocation", | |
"src": "288:10:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 118, | |
"type": "uint256", | |
"value": "last_completed_migration" | |
}, | |
"id": 143, | |
"name": "Identifier", | |
"src": "305:24:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 138, | |
"type": "uint256", | |
"value": "completed" | |
}, | |
"id": 144, | |
"name": "Identifier", | |
"src": "332:9:2" | |
} | |
], | |
"id": 145, | |
"name": "Assignment", | |
"src": "305:36:2" | |
} | |
], | |
"id": 146, | |
"name": "ExpressionStatement", | |
"src": "305:36:2" | |
} | |
], | |
"id": 147, | |
"name": "Block", | |
"src": "299:47:2" | |
} | |
], | |
"id": 148, | |
"name": "FunctionDefinition", | |
"src": "243:103:2" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"name": "upgrade", | |
"scope": 169, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "new_address", | |
"scope": 168, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 149, | |
"name": "ElementaryTypeName", | |
"src": "367:7:2" | |
} | |
], | |
"id": 150, | |
"name": "VariableDeclaration", | |
"src": "367:19:2" | |
} | |
], | |
"id": 151, | |
"name": "ParameterList", | |
"src": "366:21:2" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 154, | |
"name": "ParameterList", | |
"src": "406:0:2" | |
}, | |
{ | |
"attributes": { | |
"arguments": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 127, | |
"type": "modifier ()", | |
"value": "restricted" | |
}, | |
"id": 152, | |
"name": "Identifier", | |
"src": "395:10:2" | |
} | |
], | |
"id": 153, | |
"name": "ModifierInvocation", | |
"src": "395:10:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"assignments": [ | |
156 | |
] | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "upgraded", | |
"scope": 167, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "contract Migrations", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"contractScope": null, | |
"name": "Migrations", | |
"referencedDeclaration": 169, | |
"type": "contract Migrations" | |
}, | |
"id": 155, | |
"name": "UserDefinedTypeName", | |
"src": "412:10:2" | |
} | |
], | |
"id": 156, | |
"name": "VariableDeclaration", | |
"src": "412:19:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "contract Migrations", | |
"type_conversion": true | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 169, | |
"type": "type(contract Migrations)", | |
"value": "Migrations" | |
}, | |
"id": 157, | |
"name": "Identifier", | |
"src": "434:10:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 150, | |
"type": "address", | |
"value": "new_address" | |
}, | |
"id": 158, | |
"name": "Identifier", | |
"src": "445:11:2" | |
} | |
], | |
"id": 159, | |
"name": "FunctionCall", | |
"src": "434:23:2" | |
} | |
], | |
"id": 160, | |
"name": "VariableDeclarationStatement", | |
"src": "412:45:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "tuple()", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "setCompleted", | |
"referencedDeclaration": 148, | |
"type": "function (uint256) external" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 156, | |
"type": "contract Migrations", | |
"value": "upgraded" | |
}, | |
"id": 161, | |
"name": "Identifier", | |
"src": "463:8:2" | |
} | |
], | |
"id": 163, | |
"name": "MemberAccess", | |
"src": "463:21:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 118, | |
"type": "uint256", | |
"value": "last_completed_migration" | |
}, | |
"id": 164, | |
"name": "Identifier", | |
"src": "485:24:2" | |
} | |
], | |
"id": 165, | |
"name": "FunctionCall", | |
"src": "463:47:2" | |
} | |
], | |
"id": 166, | |
"name": "ExpressionStatement", | |
"src": "463:47:2" | |
} | |
], | |
"id": 167, | |
"name": "Block", | |
"src": "406:109:2" | |
} | |
], | |
"id": 168, | |
"name": "FunctionDefinition", | |
"src": "350:165:2" | |
} | |
], | |
"id": 169, | |
"name": "ContractDefinition", | |
"src": "34:483:2" | |
} | |
], | |
"id": 170, | |
"name": "SourceUnit", | |
"src": "0:518:2" | |
}, | |
"source": "pragma solidity >=0.4.22 <0.6.0;\n\ncontract Migrations {\n address public owner;\n uint256 public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n constructor() public {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n" | |
} | |
}, | |
"contractName": "ConvertLib", | |
"updatedAt": "2019-02-24T19:03:04.917Z" | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity >=0.4.22 <0.6.0; | |
library ConvertLib{ | |
function convert(uint amount,uint conversionRate) public pure returns (uint convertedAmount) | |
{ | |
return amount * conversionRate; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity >=0.4.22 <0.6.0; | |
import "./ConvertLib.sol"; | |
// This is just a simple example of a coin-like contract. | |
// It is not standards compatible and cannot be expected to talk to other | |
// coin/token contracts. If you want to create a standards-compliant | |
// token, see: https://github.com/ConsenSys/Tokens. Cheers! | |
contract MetaCoin1 { | |
mapping (address => uint) balances; | |
event Transfer(address indexed _from, address indexed _to, uint256 _value); | |
constructor() public { | |
balances[tx.origin] = 10000; | |
} | |
function sendCoin(address receiver, uint amount) public returns(bool sufficient) { | |
if (balances[msg.sender] < amount) return false; | |
balances[msg.sender] -= amount; | |
balances[receiver] += amount; | |
emit Transfer(msg.sender, receiver, amount); | |
return true; | |
} | |
function getBalanceInEth(address addr) public view returns(uint){ | |
return ConvertLib.convert(getBalance(addr),2); | |
} | |
function getBalance(address addr) public view returns(uint) { | |
return balances[addr]; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"sourcePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"source": "pragma solidity >=0.4.22 <0.6.0;\n\nimport \"./ConvertLib.sol\";\n\n// This is just a simple example of a coin-like contract.\n// It is not standards compatible and cannot be expected to talk to other\n// coin/token contracts. If you want to create a standards-compliant\n// token, see: https://github.com/ConsenSys/Tokens. Cheers!\n\ncontract MetaCoin1 {\n\tmapping (address => uint) balances;\n\n\tevent Transfer(address indexed _from, address indexed _to, uint256 _value);\n\n\tconstructor() public {\n\t\tbalances[tx.origin] = 10000;\n\t}\n\n\tfunction sendCoin(address receiver, uint amount) public returns(bool sufficient) {\n\t\tif (balances[msg.sender] < amount) return false;\n\t\tbalances[msg.sender] -= amount;\n\t\tbalances[receiver] += amount;\n\t\temit Transfer(msg.sender, receiver, amount);\n\t\treturn true;\n\t}\n\n\tfunction getBalanceInEth(address addr) public view returns(uint){\n\t\treturn ConvertLib.convert(getBalance(addr),2);\n\t}\n\n\tfunction getBalance(address addr) public view returns(uint) {\n\t\treturn balances[addr];\n\t}\n}\n", | |
"sourceMap": "324:675:1:-;;;462:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;462:56:1;509:5;487:8;:19;496:9;487:19;;;;;;;;;;;;;;;:27;;;;324:675;;;;;;", | |
"deployedSourceMap": "324:675:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;324:675:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;788:117;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;788:117:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;521:264;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;521:264:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;908:89;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;908:89:1;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;788:117;847:4;863:10;:18;882:16;893:4;882:10;:16::i;:::-;899:1;863:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;863:38:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;863:38:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;863:38:1;;;;;;;;;;;;;;;;856:45;;788:117;;;:::o;521:264::-;585:15;633:6;610:8;:20;619:10;610:20;;;;;;;;;;;;;;;;:29;606:47;;;648:5;641:12;;;;606:47;681:6;657:8;:20;666:10;657:20;;;;;;;;;;;;;;;;:30;;;;;;;;;;;713:6;691:8;:18;700:8;691:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;749:8;728:38;;737:10;728:38;;;759:6;728:38;;;;;;;;;;;;;;;;;;777:4;770:11;;521:264;;;;;:::o;908:89::-;962:4;979:8;:14;988:4;979:14;;;;;;;;;;;;;;;;972:21;;908:89;;;:::o", | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"exportedSymbols": { | |
"MetaCoin1": [ | |
112 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 18, | |
"name": "PragmaDirective", | |
"src": "0:32:1" | |
}, | |
{ | |
"attributes": { | |
"SourceUnit": 17, | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"file": "./ConvertLib.sol", | |
"scope": 113, | |
"symbolAliases": [ | |
null | |
], | |
"unitAlias": "" | |
}, | |
"id": 19, | |
"name": "ImportDirective", | |
"src": "34:26:1" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
112 | |
], | |
"name": "MetaCoin1", | |
"scope": 113 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "balances", | |
"scope": 112, | |
"stateVariable": true, | |
"storageLocation": "default", | |
"type": "mapping(address => uint256)", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"type": "mapping(address => uint256)" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"type": "address" | |
}, | |
"id": 20, | |
"name": "ElementaryTypeName", | |
"src": "355:7:1" | |
}, | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 21, | |
"name": "ElementaryTypeName", | |
"src": "366:4:1" | |
} | |
], | |
"id": 22, | |
"name": "Mapping", | |
"src": "346:25:1" | |
} | |
], | |
"id": 23, | |
"name": "VariableDeclaration", | |
"src": "346:34:1" | |
}, | |
{ | |
"attributes": { | |
"anonymous": false, | |
"documentation": null, | |
"name": "Transfer" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": true, | |
"name": "_from", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 24, | |
"name": "ElementaryTypeName", | |
"src": "399:7:1" | |
} | |
], | |
"id": 25, | |
"name": "VariableDeclaration", | |
"src": "399:21:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": true, | |
"name": "_to", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 26, | |
"name": "ElementaryTypeName", | |
"src": "422:7:1" | |
} | |
], | |
"id": 27, | |
"name": "VariableDeclaration", | |
"src": "422:19:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": false, | |
"name": "_value", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint256", | |
"type": "uint256" | |
}, | |
"id": 28, | |
"name": "ElementaryTypeName", | |
"src": "443:7:1" | |
} | |
], | |
"id": 29, | |
"name": "VariableDeclaration", | |
"src": "443:14:1" | |
} | |
], | |
"id": 30, | |
"name": "ParameterList", | |
"src": "398:60:1" | |
} | |
], | |
"id": 31, | |
"name": "EventDefinition", | |
"src": "384:75:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": true, | |
"kind": "constructor", | |
"modifiers": [ | |
null | |
], | |
"name": "", | |
"scope": 112, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 32, | |
"name": "ParameterList", | |
"src": "473:2:1" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 33, | |
"name": "ParameterList", | |
"src": "483:0:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 34, | |
"name": "Identifier", | |
"src": "487:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "origin", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 196, | |
"type": "tx", | |
"value": "tx" | |
}, | |
"id": 35, | |
"name": "Identifier", | |
"src": "496:2:1" | |
} | |
], | |
"id": 36, | |
"name": "MemberAccess", | |
"src": "496:9:1" | |
} | |
], | |
"id": 37, | |
"name": "IndexAccess", | |
"src": "487:19:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "3130303030", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "number", | |
"type": "int_const 10000", | |
"value": "10000" | |
}, | |
"id": 38, | |
"name": "Literal", | |
"src": "509:5:1" | |
} | |
], | |
"id": 39, | |
"name": "Assignment", | |
"src": "487:27:1" | |
} | |
], | |
"id": 40, | |
"name": "ExpressionStatement", | |
"src": "487:27:1" | |
} | |
], | |
"id": 41, | |
"name": "Block", | |
"src": "483:35:1" | |
} | |
], | |
"id": 42, | |
"name": "FunctionDefinition", | |
"src": "462:56:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "sendCoin", | |
"scope": 112, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "receiver", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 43, | |
"name": "ElementaryTypeName", | |
"src": "539:7:1" | |
} | |
], | |
"id": 44, | |
"name": "VariableDeclaration", | |
"src": "539:16:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "amount", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 45, | |
"name": "ElementaryTypeName", | |
"src": "557:4:1" | |
} | |
], | |
"id": 46, | |
"name": "VariableDeclaration", | |
"src": "557:11:1" | |
} | |
], | |
"id": 47, | |
"name": "ParameterList", | |
"src": "538:31:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "sufficient", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "bool", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "bool", | |
"type": "bool" | |
}, | |
"id": 48, | |
"name": "ElementaryTypeName", | |
"src": "585:4:1" | |
} | |
], | |
"id": 49, | |
"name": "VariableDeclaration", | |
"src": "585:15:1" | |
} | |
], | |
"id": 50, | |
"name": "ParameterList", | |
"src": "584:17:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"falseBody": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "<", | |
"type": "bool" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 51, | |
"name": "Identifier", | |
"src": "610:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 52, | |
"name": "Identifier", | |
"src": "619:3:1" | |
} | |
], | |
"id": 53, | |
"name": "MemberAccess", | |
"src": "619:10:1" | |
} | |
], | |
"id": 54, | |
"name": "IndexAccess", | |
"src": "610:20:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 55, | |
"name": "Identifier", | |
"src": "633:6:1" | |
} | |
], | |
"id": 56, | |
"name": "BinaryOperation", | |
"src": "610:29:1" | |
}, | |
{ | |
"attributes": { | |
"functionReturnParameters": 50 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "66616c7365", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "bool", | |
"type": "bool", | |
"value": "false" | |
}, | |
"id": 57, | |
"name": "Literal", | |
"src": "648:5:1" | |
} | |
], | |
"id": 58, | |
"name": "Return", | |
"src": "641:12:1" | |
} | |
], | |
"id": 59, | |
"name": "IfStatement", | |
"src": "606:47:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "-=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 60, | |
"name": "Identifier", | |
"src": "657:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 61, | |
"name": "Identifier", | |
"src": "666:3:1" | |
} | |
], | |
"id": 62, | |
"name": "MemberAccess", | |
"src": "666:10:1" | |
} | |
], | |
"id": 63, | |
"name": "IndexAccess", | |
"src": "657:20:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 64, | |
"name": "Identifier", | |
"src": "681:6:1" | |
} | |
], | |
"id": 65, | |
"name": "Assignment", | |
"src": "657:30:1" | |
} | |
], | |
"id": 66, | |
"name": "ExpressionStatement", | |
"src": "657:30:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "+=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 67, | |
"name": "Identifier", | |
"src": "691:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 44, | |
"type": "address", | |
"value": "receiver" | |
}, | |
"id": 68, | |
"name": "Identifier", | |
"src": "700:8:1" | |
} | |
], | |
"id": 69, | |
"name": "IndexAccess", | |
"src": "691:18:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 70, | |
"name": "Identifier", | |
"src": "713:6:1" | |
} | |
], | |
"id": 71, | |
"name": "Assignment", | |
"src": "691:28:1" | |
} | |
], | |
"id": 72, | |
"name": "ExpressionStatement", | |
"src": "691:28:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "tuple()", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 31, | |
"type": "function (address,address,uint256)", | |
"value": "Transfer" | |
}, | |
"id": 73, | |
"name": "Identifier", | |
"src": "728:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 74, | |
"name": "Identifier", | |
"src": "737:3:1" | |
} | |
], | |
"id": 75, | |
"name": "MemberAccess", | |
"src": "737:10:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 44, | |
"type": "address", | |
"value": "receiver" | |
}, | |
"id": 76, | |
"name": "Identifier", | |
"src": "749:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 77, | |
"name": "Identifier", | |
"src": "759:6:1" | |
} | |
], | |
"id": 78, | |
"name": "FunctionCall", | |
"src": "728:38:1" | |
} | |
], | |
"id": 79, | |
"name": "EmitStatement", | |
"src": "723:43:1" | |
}, | |
{ | |
"attributes": { | |
"functionReturnParameters": 50 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "74727565", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "bool", | |
"type": "bool", | |
"value": "true" | |
}, | |
"id": 80, | |
"name": "Literal", | |
"src": "777:4:1" | |
} | |
], | |
"id": 81, | |
"name": "Return", | |
"src": "770:11:1" | |
} | |
], | |
"id": 82, | |
"name": "Block", | |
"src": "602:183:1" | |
} | |
], | |
"id": 83, | |
"name": "FunctionDefinition", | |
"src": "521:264:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "getBalanceInEth", | |
"scope": 112, | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "addr", | |
"scope": 99, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 84, | |
"name": "ElementaryTypeName", | |
"src": "813:7:1" | |
} | |
], | |
"id": 85, | |
"name": "VariableDeclaration", | |
"src": "813:12:1" | |
} | |
], | |
"id": 86, | |
"name": "ParameterList", | |
"src": "812:14:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "", | |
"scope": 99, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 87, | |
"name": "ElementaryTypeName", | |
"src": "847:4:1" | |
} | |
], | |
"id": 88, | |
"name": "VariableDeclaration", | |
"src": "847:4:1" | |
} | |
], | |
"id": 89, | |
"name": "ParameterList", | |
"src": "846:6:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 89 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "uint256", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
} | |
], | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "convert", | |
"referencedDeclaration": 15, | |
"type": "function (uint256,uint256) pure returns (uint256)" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 16, | |
"type": "type(library ConvertLib)", | |
"value": "ConvertLib" | |
}, | |
"id": 90, | |
"name": "Identifier", | |
"src": "863:10:1" | |
} | |
], | |
"id": 91, | |
"name": "MemberAccess", | |
"src": "863:18:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "uint256", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 111, | |
"type": "function (address) view returns (uint256)", | |
"value": "getBalance" | |
}, | |
"id": 92, | |
"name": "Identifier", | |
"src": "882:10:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 85, | |
"type": "address", | |
"value": "addr" | |
}, | |
"id": 93, | |
"name": "Identifier", | |
"src": "893:4:1" | |
} | |
], | |
"id": 94, | |
"name": "FunctionCall", | |
"src": "882:16:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "32", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "number", | |
"type": "int_const 2", | |
"value": "2" | |
}, | |
"id": 95, | |
"name": "Literal", | |
"src": "899:1:1" | |
} | |
], | |
"id": 96, | |
"name": "FunctionCall", | |
"src": "863:38:1" | |
} | |
], | |
"id": 97, | |
"name": "Return", | |
"src": "856:45:1" | |
} | |
], | |
"id": 98, | |
"name": "Block", | |
"src": "852:53:1" | |
} | |
], | |
"id": 99, | |
"name": "FunctionDefinition", | |
"src": "788:117:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "getBalance", | |
"scope": 112, | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "addr", | |
"scope": 111, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 100, | |
"name": "ElementaryTypeName", | |
"src": "928:7:1" | |
} | |
], | |
"id": 101, | |
"name": "VariableDeclaration", | |
"src": "928:12:1" | |
} | |
], | |
"id": 102, | |
"name": "ParameterList", | |
"src": "927:14:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "", | |
"scope": 111, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 103, | |
"name": "ElementaryTypeName", | |
"src": "962:4:1" | |
} | |
], | |
"id": 104, | |
"name": "VariableDeclaration", | |
"src": "962:4:1" | |
} | |
], | |
"id": 105, | |
"name": "ParameterList", | |
"src": "961:6:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 105 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 106, | |
"name": "Identifier", | |
"src": "979:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 101, | |
"type": "address", | |
"value": "addr" | |
}, | |
"id": 107, | |
"name": "Identifier", | |
"src": "988:4:1" | |
} | |
], | |
"id": 108, | |
"name": "IndexAccess", | |
"src": "979:14:1" | |
} | |
], | |
"id": 109, | |
"name": "Return", | |
"src": "972:21:1" | |
} | |
], | |
"id": 110, | |
"name": "Block", | |
"src": "968:29:1" | |
} | |
], | |
"id": 111, | |
"name": "FunctionDefinition", | |
"src": "908:89:1" | |
} | |
], | |
"id": 112, | |
"name": "ContractDefinition", | |
"src": "324:675:1" | |
} | |
], | |
"id": 113, | |
"name": "SourceUnit", | |
"src": "0:1000:1" | |
}, | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"exportedSymbols": { | |
"MetaCoin1": [ | |
112 | |
] | |
}, | |
"id": 113, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 18, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:1" | |
}, | |
{ | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"file": "./ConvertLib.sol", | |
"id": 19, | |
"nodeType": "ImportDirective", | |
"scope": 113, | |
"sourceUnit": 17, | |
"src": "34:26:1", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 112, | |
"linearizedBaseContracts": [ | |
112 | |
], | |
"name": "MetaCoin1", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 23, | |
"name": "balances", | |
"nodeType": "VariableDeclaration", | |
"scope": 112, | |
"src": "346:34:1", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 22, | |
"keyType": { | |
"id": 20, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "355:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "346:25:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 21, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "366:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"anonymous": false, | |
"documentation": null, | |
"id": 31, | |
"name": "Transfer", | |
"nodeType": "EventDefinition", | |
"parameters": { | |
"id": 30, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 25, | |
"indexed": true, | |
"name": "_from", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "399:21:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 24, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "399:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 27, | |
"indexed": true, | |
"name": "_to", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "422:19:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 26, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "422:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 29, | |
"indexed": false, | |
"name": "_value", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "443:14:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 28, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "443:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "398:60:1" | |
}, | |
"src": "384:75:1" | |
}, | |
{ | |
"body": { | |
"id": 41, | |
"nodeType": "Block", | |
"src": "483:35:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 39, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 34, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "487:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 37, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 35, | |
"name": "tx", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 196, | |
"src": "496:2:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_transaction", | |
"typeString": "tx" | |
} | |
}, | |
"id": 36, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "origin", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "496:9:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "487:19:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"hexValue": "3130303030", | |
"id": 38, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "509:5:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000_by_1", | |
"typeString": "int_const 10000" | |
}, | |
"value": "10000" | |
}, | |
"src": "487:27:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 40, | |
"nodeType": "ExpressionStatement", | |
"src": "487:27:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 42, | |
"implemented": true, | |
"kind": "constructor", | |
"modifiers": [], | |
"name": "", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 32, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "473:2:1" | |
}, | |
"returnParameters": { | |
"id": 33, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "483:0:1" | |
}, | |
"scope": 112, | |
"src": "462:56:1", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 82, | |
"nodeType": "Block", | |
"src": "602:183:1", | |
"statements": [ | |
{ | |
"condition": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 56, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 51, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "610:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 54, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 52, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "619:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 53, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "619:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "610:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 55, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "633:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "610:29:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseBody": null, | |
"id": 59, | |
"nodeType": "IfStatement", | |
"src": "606:47:1", | |
"trueBody": { | |
"expression": { | |
"argumentTypes": null, | |
"hexValue": "66616c7365", | |
"id": 57, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "648:5:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "false" | |
}, | |
"functionReturnParameters": 50, | |
"id": 58, | |
"nodeType": "Return", | |
"src": "641:12:1" | |
} | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 65, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 60, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "657:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 63, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 61, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "666:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 62, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "666:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "657:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "-=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 64, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "681:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "657:30:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 66, | |
"nodeType": "ExpressionStatement", | |
"src": "657:30:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 71, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 67, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "691:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 69, | |
"indexExpression": { | |
"argumentTypes": null, | |
"id": 68, | |
"name": "receiver", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 44, | |
"src": "700:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "691:18:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 70, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "713:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "691:28:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 72, | |
"nodeType": "ExpressionStatement", | |
"src": "691:28:1" | |
}, | |
{ | |
"eventCall": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 74, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "737:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 75, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "737:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"id": 76, | |
"name": "receiver", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 44, | |
"src": "749:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"id": 77, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "759:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 73, | |
"name": "Transfer", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 31, | |
"src": "728:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", | |
"typeString": "function (address,address,uint256)" | |
} | |
}, | |
"id": 78, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "728:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 79, | |
"nodeType": "EmitStatement", | |
"src": "723:43:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"hexValue": "74727565", | |
"id": 80, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "777:4:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "true" | |
}, | |
"functionReturnParameters": 50, | |
"id": 81, | |
"nodeType": "Return", | |
"src": "770:11:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 83, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "sendCoin", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 47, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 44, | |
"name": "receiver", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "539:16:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 43, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "539:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 46, | |
"name": "amount", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "557:11:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 45, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "557:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "538:31:1" | |
}, | |
"returnParameters": { | |
"id": 50, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 49, | |
"name": "sufficient", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "585:15:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 48, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "585:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "584:17:1" | |
}, | |
"scope": 112, | |
"src": "521:264:1", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 98, | |
"nodeType": "Block", | |
"src": "852:53:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 93, | |
"name": "addr", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 85, | |
"src": "893:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 92, | |
"name": "getBalance", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 111, | |
"src": "882:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", | |
"typeString": "function (address) view returns (uint256)" | |
} | |
}, | |
"id": 94, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "882:16:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"hexValue": "32", | |
"id": 95, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "899:1:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"id": 90, | |
"name": "ConvertLib", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 16, | |
"src": "863:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_ConvertLib_$16_$", | |
"typeString": "type(library ConvertLib)" | |
} | |
}, | |
"id": 91, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "convert", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 15, | |
"src": "863:18:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256,uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 96, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "863:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 89, | |
"id": 97, | |
"nodeType": "Return", | |
"src": "856:45:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 99, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getBalanceInEth", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 86, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 85, | |
"name": "addr", | |
"nodeType": "VariableDeclaration", | |
"scope": 99, | |
"src": "813:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 84, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "813:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "812:14:1" | |
}, | |
"returnParameters": { | |
"id": 89, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 88, | |
"name": "", | |
"nodeType": "VariableDeclaration", | |
"scope": 99, | |
"src": "847:4:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 87, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "847:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "846:6:1" | |
}, | |
"scope": 112, | |
"src": "788:117:1", | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 110, | |
"nodeType": "Block", | |
"src": "968:29:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 106, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "979:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 108, | |
"indexExpression": { | |
"argumentTypes": null, | |
"id": 107, | |
"name": "addr", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 101, | |
"src": "988:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "979:14:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 105, | |
"id": 109, | |
"nodeType": "Return", | |
"src": "972:21:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 111, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getBalance", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 102, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 101, | |
"name": "addr", | |
"nodeType": "VariableDeclaration", | |
"scope": 111, | |
"src": "928:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 100, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "928:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "927:14:1" | |
}, | |
"returnParameters": { | |
"id": 105, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 104, | |
"name": "", | |
"nodeType": "VariableDeclaration", | |
"scope": 111, | |
"src": "962:4:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 103, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "962:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "961:6:1" | |
}, | |
"scope": 112, | |
"src": "908:89:1", | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 113, | |
"src": "324:675:1" | |
} | |
], | |
"src": "0:1000:1" | |
}, | |
"abi": [ | |
{ | |
"inputs": [], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "constructor" | |
}, | |
{ | |
"anonymous": false, | |
"inputs": [ | |
{ | |
"indexed": true, | |
"name": "_from", | |
"type": "address" | |
}, | |
{ | |
"indexed": true, | |
"name": "_to", | |
"type": "address" | |
}, | |
{ | |
"indexed": false, | |
"name": "_value", | |
"type": "uint256" | |
} | |
], | |
"name": "Transfer", | |
"type": "event" | |
}, | |
{ | |
"constant": false, | |
"inputs": [ | |
{ | |
"name": "receiver", | |
"type": "address" | |
}, | |
{ | |
"name": "amount", | |
"type": "uint256" | |
} | |
], | |
"name": "sendCoin", | |
"outputs": [ | |
{ | |
"name": "sufficient", | |
"type": "bool" | |
} | |
], | |
"payable": false, | |
"stateMutability": "nonpayable", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "addr", | |
"type": "address" | |
} | |
], | |
"name": "getBalanceInEth", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
}, | |
{ | |
"constant": true, | |
"inputs": [ | |
{ | |
"name": "addr", | |
"type": "address" | |
} | |
], | |
"name": "getBalance", | |
"outputs": [ | |
{ | |
"name": "", | |
"type": "uint256" | |
} | |
], | |
"payable": false, | |
"stateMutability": "view", | |
"type": "function" | |
} | |
], | |
"bytecode": "0x608060405234801561001057600080fd5b506127106000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610406806100656000396000f3fe608060405234801561001057600080fd5b506004361061005e576000357c0100000000000000000000000000000000000000000000000000000000900480637bd703e81461006357806390b98a11146100bb578063f8b2cb4f14610121575b600080fd5b6100a56004803603602081101561007957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610179565b6040518082815260200191505060405180910390f35b610107600480360360408110156100d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610239565b604051808215151515815260200191505060405180910390f35b6101636004803603602081101561013757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610392565b6040518082815260200191505060405180910390f35b600073__ConvertLib____________________________6396e4ee3d61019e84610392565b60026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b1580156101f757600080fd5b505af415801561020b573d6000803e3d6000fd5b505050506040513d602081101561022157600080fd5b81019080805190602001909291905050509050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561028a576000905061038c565b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905091905056fea165627a7a723058203e67c35241f75d8a14b0666df253e8e1bce936595adec775887ba45287e0ec450029", | |
"deployedBytecode": "0x608060405234801561001057600080fd5b506004361061005e576000357c0100000000000000000000000000000000000000000000000000000000900480637bd703e81461006357806390b98a11146100bb578063f8b2cb4f14610121575b600080fd5b6100a56004803603602081101561007957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610179565b6040518082815260200191505060405180910390f35b610107600480360360408110156100d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610239565b604051808215151515815260200191505060405180910390f35b6101636004803603602081101561013757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610392565b6040518082815260200191505060405180910390f35b600073__ConvertLib____________________________6396e4ee3d61019e84610392565b60026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b1580156101f757600080fd5b505af415801561020b573d6000803e3d6000fd5b505050506040513d602081101561022157600080fd5b81019080805190602001909291905050509050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561028a576000905061038c565b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905091905056fea165627a7a723058203e67c35241f75d8a14b0666df253e8e1bce936595adec775887ba45287e0ec450029", | |
"unlinked_binary": "0x608060405234801561001057600080fd5b506127106000803273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610406806100656000396000f3fe608060405234801561001057600080fd5b506004361061005e576000357c0100000000000000000000000000000000000000000000000000000000900480637bd703e81461006357806390b98a11146100bb578063f8b2cb4f14610121575b600080fd5b6100a56004803603602081101561007957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610179565b6040518082815260200191505060405180910390f35b610107600480360360408110156100d157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610239565b604051808215151515815260200191505060405180910390f35b6101636004803603602081101561013757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610392565b6040518082815260200191505060405180910390f35b600073__ConvertLib____________________________6396e4ee3d61019e84610392565b60026040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808381526020018281526020019250505060206040518083038186803b1580156101f757600080fd5b505af415801561020b573d6000803e3d6000fd5b505050506040513d602081101561022157600080fd5b81019080805190602001909291905050509050919050565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561028a576000905061038c565b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190505b92915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905091905056fea165627a7a723058203e67c35241f75d8a14b0666df253e8e1bce936595adec775887ba45287e0ec450029", | |
"compiler": { | |
"name": "solc", | |
"version": "0.5.2+commit.1df8f40c.Emscripten.clang" | |
}, | |
"devdoc": { | |
"methods": {} | |
}, | |
"userdoc": { | |
"methods": {} | |
}, | |
"sourceList": [ | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/Migrations.sol" | |
], | |
"sources": { | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol": { | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"exportedSymbols": { | |
"ConvertLib": [ | |
16 | |
] | |
}, | |
"id": 17, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 1, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:0" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "library", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 16, | |
"linearizedBaseContracts": [ | |
16 | |
], | |
"name": "ConvertLib", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"body": { | |
"id": 14, | |
"nodeType": "Block", | |
"src": "149:38:0", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 12, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"id": 10, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 3, | |
"src": "160:6:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "*", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 11, | |
"name": "conversionRate", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 5, | |
"src": "169:14:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "160:23:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 9, | |
"id": 13, | |
"nodeType": "Return", | |
"src": "153:30:0" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 15, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "convert", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 6, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 3, | |
"name": "amount", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "72:11:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 2, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "72:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 5, | |
"name": "conversionRate", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "84:19:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 4, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "84:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "71:33:0" | |
}, | |
"returnParameters": { | |
"id": 9, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 8, | |
"name": "convertedAmount", | |
"nodeType": "VariableDeclaration", | |
"scope": 15, | |
"src": "126:20:0", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 7, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "126:4:0", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "125:22:0" | |
}, | |
"scope": 16, | |
"src": "55:132:0", | |
"stateMutability": "pure", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 17, | |
"src": "34:155:0" | |
} | |
], | |
"src": "0:190:0" | |
}, | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"exportedSymbols": { | |
"ConvertLib": [ | |
16 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 1, | |
"name": "PragmaDirective", | |
"src": "0:32:0" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "library", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
16 | |
], | |
"name": "ConvertLib", | |
"scope": 17 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "convert", | |
"scope": 16, | |
"stateMutability": "pure", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "amount", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 2, | |
"name": "ElementaryTypeName", | |
"src": "72:4:0" | |
} | |
], | |
"id": 3, | |
"name": "VariableDeclaration", | |
"src": "72:11:0" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "conversionRate", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 4, | |
"name": "ElementaryTypeName", | |
"src": "84:4:0" | |
} | |
], | |
"id": 5, | |
"name": "VariableDeclaration", | |
"src": "84:19:0" | |
} | |
], | |
"id": 6, | |
"name": "ParameterList", | |
"src": "71:33:0" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "convertedAmount", | |
"scope": 15, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 7, | |
"name": "ElementaryTypeName", | |
"src": "126:4:0" | |
} | |
], | |
"id": 8, | |
"name": "VariableDeclaration", | |
"src": "126:20:0" | |
} | |
], | |
"id": 9, | |
"name": "ParameterList", | |
"src": "125:22:0" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 9 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "*", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 3, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 10, | |
"name": "Identifier", | |
"src": "160:6:0" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 5, | |
"type": "uint256", | |
"value": "conversionRate" | |
}, | |
"id": 11, | |
"name": "Identifier", | |
"src": "169:14:0" | |
} | |
], | |
"id": 12, | |
"name": "BinaryOperation", | |
"src": "160:23:0" | |
} | |
], | |
"id": 13, | |
"name": "Return", | |
"src": "153:30:0" | |
} | |
], | |
"id": 14, | |
"name": "Block", | |
"src": "149:38:0" | |
} | |
], | |
"id": 15, | |
"name": "FunctionDefinition", | |
"src": "55:132:0" | |
} | |
], | |
"id": 16, | |
"name": "ContractDefinition", | |
"src": "34:155:0" | |
} | |
], | |
"id": 17, | |
"name": "SourceUnit", | |
"src": "0:190:0" | |
}, | |
"source": "pragma solidity >=0.4.22 <0.6.0;\n\nlibrary ConvertLib{\n\tfunction convert(uint amount,uint conversionRate) public pure returns (uint convertedAmount)\n\t{\n\t\treturn amount * conversionRate;\n\t}\n}\n" | |
}, | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol": { | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"exportedSymbols": { | |
"MetaCoin1": [ | |
112 | |
] | |
}, | |
"id": 113, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 18, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:1" | |
}, | |
{ | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"file": "./ConvertLib.sol", | |
"id": 19, | |
"nodeType": "ImportDirective", | |
"scope": 113, | |
"sourceUnit": 17, | |
"src": "34:26:1", | |
"symbolAliases": [], | |
"unitAlias": "" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 112, | |
"linearizedBaseContracts": [ | |
112 | |
], | |
"name": "MetaCoin1", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 23, | |
"name": "balances", | |
"nodeType": "VariableDeclaration", | |
"scope": 112, | |
"src": "346:34:1", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"typeName": { | |
"id": 22, | |
"keyType": { | |
"id": 20, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "355:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Mapping", | |
"src": "346:25:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
}, | |
"valueType": { | |
"id": 21, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "366:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"anonymous": false, | |
"documentation": null, | |
"id": 31, | |
"name": "Transfer", | |
"nodeType": "EventDefinition", | |
"parameters": { | |
"id": 30, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 25, | |
"indexed": true, | |
"name": "_from", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "399:21:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 24, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "399:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 27, | |
"indexed": true, | |
"name": "_to", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "422:19:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 26, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "422:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 29, | |
"indexed": false, | |
"name": "_value", | |
"nodeType": "VariableDeclaration", | |
"scope": 31, | |
"src": "443:14:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 28, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "443:7:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "398:60:1" | |
}, | |
"src": "384:75:1" | |
}, | |
{ | |
"body": { | |
"id": 41, | |
"nodeType": "Block", | |
"src": "483:35:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 39, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 34, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "487:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 37, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 35, | |
"name": "tx", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 196, | |
"src": "496:2:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_transaction", | |
"typeString": "tx" | |
} | |
}, | |
"id": 36, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "origin", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "496:9:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "487:19:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"hexValue": "3130303030", | |
"id": 38, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "509:5:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_10000_by_1", | |
"typeString": "int_const 10000" | |
}, | |
"value": "10000" | |
}, | |
"src": "487:27:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 40, | |
"nodeType": "ExpressionStatement", | |
"src": "487:27:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 42, | |
"implemented": true, | |
"kind": "constructor", | |
"modifiers": [], | |
"name": "", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 32, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "473:2:1" | |
}, | |
"returnParameters": { | |
"id": 33, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "483:0:1" | |
}, | |
"scope": 112, | |
"src": "462:56:1", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 82, | |
"nodeType": "Block", | |
"src": "602:183:1", | |
"statements": [ | |
{ | |
"condition": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"id": 56, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 51, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "610:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 54, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 52, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "619:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 53, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "619:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "610:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "<", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 55, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "633:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "610:29:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseBody": null, | |
"id": 59, | |
"nodeType": "IfStatement", | |
"src": "606:47:1", | |
"trueBody": { | |
"expression": { | |
"argumentTypes": null, | |
"hexValue": "66616c7365", | |
"id": 57, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "648:5:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "false" | |
}, | |
"functionReturnParameters": 50, | |
"id": 58, | |
"nodeType": "Return", | |
"src": "641:12:1" | |
} | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 65, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 60, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "657:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 63, | |
"indexExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 61, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "666:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 62, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "666:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "657:20:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "-=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 64, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "681:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "657:30:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 66, | |
"nodeType": "ExpressionStatement", | |
"src": "657:30:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 71, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 67, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "691:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 69, | |
"indexExpression": { | |
"argumentTypes": null, | |
"id": 68, | |
"name": "receiver", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 44, | |
"src": "700:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"nodeType": "IndexAccess", | |
"src": "691:18:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "+=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 70, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "713:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "691:28:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 72, | |
"nodeType": "ExpressionStatement", | |
"src": "691:28:1" | |
}, | |
{ | |
"eventCall": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 74, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "737:3:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 75, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "737:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"id": 76, | |
"name": "receiver", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 44, | |
"src": "749:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"id": 77, | |
"name": "amount", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 46, | |
"src": "759:6:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"id": 73, | |
"name": "Transfer", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 31, | |
"src": "728:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$", | |
"typeString": "function (address,address,uint256)" | |
} | |
}, | |
"id": 78, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "728:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 79, | |
"nodeType": "EmitStatement", | |
"src": "723:43:1" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"hexValue": "74727565", | |
"id": 80, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "bool", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "777:4:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"value": "true" | |
}, | |
"functionReturnParameters": 50, | |
"id": 81, | |
"nodeType": "Return", | |
"src": "770:11:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 83, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "sendCoin", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 47, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 44, | |
"name": "receiver", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "539:16:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 43, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "539:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
}, | |
{ | |
"constant": false, | |
"id": 46, | |
"name": "amount", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "557:11:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 45, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "557:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "538:31:1" | |
}, | |
"returnParameters": { | |
"id": 50, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 49, | |
"name": "sufficient", | |
"nodeType": "VariableDeclaration", | |
"scope": 83, | |
"src": "585:15:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
}, | |
"typeName": { | |
"id": 48, | |
"name": "bool", | |
"nodeType": "ElementaryTypeName", | |
"src": "585:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "584:17:1" | |
}, | |
"scope": 112, | |
"src": "521:264:1", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 98, | |
"nodeType": "Block", | |
"src": "852:53:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 93, | |
"name": "addr", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 85, | |
"src": "893:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 92, | |
"name": "getBalance", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 111, | |
"src": "882:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$", | |
"typeString": "function (address) view returns (uint256)" | |
} | |
}, | |
"id": 94, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "882:16:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
{ | |
"argumentTypes": null, | |
"hexValue": "32", | |
"id": 95, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"kind": "number", | |
"lValueRequested": false, | |
"nodeType": "Literal", | |
"src": "899:1:1", | |
"subdenomination": null, | |
"typeDescriptions": { | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
}, | |
"value": "2" | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"id": 90, | |
"name": "ConvertLib", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 16, | |
"src": "863:10:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_ConvertLib_$16_$", | |
"typeString": "type(library ConvertLib)" | |
} | |
}, | |
"id": 91, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "convert", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 15, | |
"src": "863:18:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_delegatecall_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", | |
"typeString": "function (uint256,uint256) pure returns (uint256)" | |
} | |
}, | |
"id": 96, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "863:38:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 89, | |
"id": 97, | |
"nodeType": "Return", | |
"src": "856:45:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 99, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getBalanceInEth", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 86, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 85, | |
"name": "addr", | |
"nodeType": "VariableDeclaration", | |
"scope": 99, | |
"src": "813:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 84, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "813:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "812:14:1" | |
}, | |
"returnParameters": { | |
"id": 89, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 88, | |
"name": "", | |
"nodeType": "VariableDeclaration", | |
"scope": 99, | |
"src": "847:4:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 87, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "847:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "846:6:1" | |
}, | |
"scope": 112, | |
"src": "788:117:1", | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 110, | |
"nodeType": "Block", | |
"src": "968:29:1", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"baseExpression": { | |
"argumentTypes": null, | |
"id": 106, | |
"name": "balances", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 23, | |
"src": "979:8:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", | |
"typeString": "mapping(address => uint256)" | |
} | |
}, | |
"id": 108, | |
"indexExpression": { | |
"argumentTypes": null, | |
"id": 107, | |
"name": "addr", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 101, | |
"src": "988:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"nodeType": "IndexAccess", | |
"src": "979:14:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"functionReturnParameters": 105, | |
"id": 109, | |
"nodeType": "Return", | |
"src": "972:21:1" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 111, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [], | |
"name": "getBalance", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 102, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 101, | |
"name": "addr", | |
"nodeType": "VariableDeclaration", | |
"scope": 111, | |
"src": "928:12:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 100, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "928:7:1", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "927:14:1" | |
}, | |
"returnParameters": { | |
"id": 105, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 104, | |
"name": "", | |
"nodeType": "VariableDeclaration", | |
"scope": 111, | |
"src": "962:4:1", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 103, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "962:4:1", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "961:6:1" | |
}, | |
"scope": 112, | |
"src": "908:89:1", | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 113, | |
"src": "324:675:1" | |
} | |
], | |
"src": "0:1000:1" | |
}, | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/MetaCoin.sol", | |
"exportedSymbols": { | |
"MetaCoin1": [ | |
112 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 18, | |
"name": "PragmaDirective", | |
"src": "0:32:1" | |
}, | |
{ | |
"attributes": { | |
"SourceUnit": 17, | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/ConvertLib.sol", | |
"file": "./ConvertLib.sol", | |
"scope": 113, | |
"symbolAliases": [ | |
null | |
], | |
"unitAlias": "" | |
}, | |
"id": 19, | |
"name": "ImportDirective", | |
"src": "34:26:1" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
112 | |
], | |
"name": "MetaCoin1", | |
"scope": 113 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "balances", | |
"scope": 112, | |
"stateVariable": true, | |
"storageLocation": "default", | |
"type": "mapping(address => uint256)", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"type": "mapping(address => uint256)" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"type": "address" | |
}, | |
"id": 20, | |
"name": "ElementaryTypeName", | |
"src": "355:7:1" | |
}, | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 21, | |
"name": "ElementaryTypeName", | |
"src": "366:4:1" | |
} | |
], | |
"id": 22, | |
"name": "Mapping", | |
"src": "346:25:1" | |
} | |
], | |
"id": 23, | |
"name": "VariableDeclaration", | |
"src": "346:34:1" | |
}, | |
{ | |
"attributes": { | |
"anonymous": false, | |
"documentation": null, | |
"name": "Transfer" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": true, | |
"name": "_from", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 24, | |
"name": "ElementaryTypeName", | |
"src": "399:7:1" | |
} | |
], | |
"id": 25, | |
"name": "VariableDeclaration", | |
"src": "399:21:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": true, | |
"name": "_to", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 26, | |
"name": "ElementaryTypeName", | |
"src": "422:7:1" | |
} | |
], | |
"id": 27, | |
"name": "VariableDeclaration", | |
"src": "422:19:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"indexed": false, | |
"name": "_value", | |
"scope": 31, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint256", | |
"type": "uint256" | |
}, | |
"id": 28, | |
"name": "ElementaryTypeName", | |
"src": "443:7:1" | |
} | |
], | |
"id": 29, | |
"name": "VariableDeclaration", | |
"src": "443:14:1" | |
} | |
], | |
"id": 30, | |
"name": "ParameterList", | |
"src": "398:60:1" | |
} | |
], | |
"id": 31, | |
"name": "EventDefinition", | |
"src": "384:75:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": true, | |
"kind": "constructor", | |
"modifiers": [ | |
null | |
], | |
"name": "", | |
"scope": 112, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 32, | |
"name": "ParameterList", | |
"src": "473:2:1" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 33, | |
"name": "ParameterList", | |
"src": "483:0:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 34, | |
"name": "Identifier", | |
"src": "487:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "origin", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 196, | |
"type": "tx", | |
"value": "tx" | |
}, | |
"id": 35, | |
"name": "Identifier", | |
"src": "496:2:1" | |
} | |
], | |
"id": 36, | |
"name": "MemberAccess", | |
"src": "496:9:1" | |
} | |
], | |
"id": 37, | |
"name": "IndexAccess", | |
"src": "487:19:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "3130303030", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "number", | |
"type": "int_const 10000", | |
"value": "10000" | |
}, | |
"id": 38, | |
"name": "Literal", | |
"src": "509:5:1" | |
} | |
], | |
"id": 39, | |
"name": "Assignment", | |
"src": "487:27:1" | |
} | |
], | |
"id": 40, | |
"name": "ExpressionStatement", | |
"src": "487:27:1" | |
} | |
], | |
"id": 41, | |
"name": "Block", | |
"src": "483:35:1" | |
} | |
], | |
"id": 42, | |
"name": "FunctionDefinition", | |
"src": "462:56:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "sendCoin", | |
"scope": 112, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "receiver", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 43, | |
"name": "ElementaryTypeName", | |
"src": "539:7:1" | |
} | |
], | |
"id": 44, | |
"name": "VariableDeclaration", | |
"src": "539:16:1" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "amount", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 45, | |
"name": "ElementaryTypeName", | |
"src": "557:4:1" | |
} | |
], | |
"id": 46, | |
"name": "VariableDeclaration", | |
"src": "557:11:1" | |
} | |
], | |
"id": 47, | |
"name": "ParameterList", | |
"src": "538:31:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "sufficient", | |
"scope": 83, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "bool", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "bool", | |
"type": "bool" | |
}, | |
"id": 48, | |
"name": "ElementaryTypeName", | |
"src": "585:4:1" | |
} | |
], | |
"id": 49, | |
"name": "VariableDeclaration", | |
"src": "585:15:1" | |
} | |
], | |
"id": 50, | |
"name": "ParameterList", | |
"src": "584:17:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"falseBody": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "<", | |
"type": "bool" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 51, | |
"name": "Identifier", | |
"src": "610:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 52, | |
"name": "Identifier", | |
"src": "619:3:1" | |
} | |
], | |
"id": 53, | |
"name": "MemberAccess", | |
"src": "619:10:1" | |
} | |
], | |
"id": 54, | |
"name": "IndexAccess", | |
"src": "610:20:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 55, | |
"name": "Identifier", | |
"src": "633:6:1" | |
} | |
], | |
"id": 56, | |
"name": "BinaryOperation", | |
"src": "610:29:1" | |
}, | |
{ | |
"attributes": { | |
"functionReturnParameters": 50 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "66616c7365", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "bool", | |
"type": "bool", | |
"value": "false" | |
}, | |
"id": 57, | |
"name": "Literal", | |
"src": "648:5:1" | |
} | |
], | |
"id": 58, | |
"name": "Return", | |
"src": "641:12:1" | |
} | |
], | |
"id": 59, | |
"name": "IfStatement", | |
"src": "606:47:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "-=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 60, | |
"name": "Identifier", | |
"src": "657:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 61, | |
"name": "Identifier", | |
"src": "666:3:1" | |
} | |
], | |
"id": 62, | |
"name": "MemberAccess", | |
"src": "666:10:1" | |
} | |
], | |
"id": 63, | |
"name": "IndexAccess", | |
"src": "657:20:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 64, | |
"name": "Identifier", | |
"src": "681:6:1" | |
} | |
], | |
"id": 65, | |
"name": "Assignment", | |
"src": "657:30:1" | |
} | |
], | |
"id": 66, | |
"name": "ExpressionStatement", | |
"src": "657:30:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "+=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": true, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 67, | |
"name": "Identifier", | |
"src": "691:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 44, | |
"type": "address", | |
"value": "receiver" | |
}, | |
"id": 68, | |
"name": "Identifier", | |
"src": "700:8:1" | |
} | |
], | |
"id": 69, | |
"name": "IndexAccess", | |
"src": "691:18:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 70, | |
"name": "Identifier", | |
"src": "713:6:1" | |
} | |
], | |
"id": 71, | |
"name": "Assignment", | |
"src": "691:28:1" | |
} | |
], | |
"id": 72, | |
"name": "ExpressionStatement", | |
"src": "691:28:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "tuple()", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
}, | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 31, | |
"type": "function (address,address,uint256)", | |
"value": "Transfer" | |
}, | |
"id": 73, | |
"name": "Identifier", | |
"src": "728:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 74, | |
"name": "Identifier", | |
"src": "737:3:1" | |
} | |
], | |
"id": 75, | |
"name": "MemberAccess", | |
"src": "737:10:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 44, | |
"type": "address", | |
"value": "receiver" | |
}, | |
"id": 76, | |
"name": "Identifier", | |
"src": "749:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 46, | |
"type": "uint256", | |
"value": "amount" | |
}, | |
"id": 77, | |
"name": "Identifier", | |
"src": "759:6:1" | |
} | |
], | |
"id": 78, | |
"name": "FunctionCall", | |
"src": "728:38:1" | |
} | |
], | |
"id": 79, | |
"name": "EmitStatement", | |
"src": "723:43:1" | |
}, | |
{ | |
"attributes": { | |
"functionReturnParameters": 50 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "74727565", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "bool", | |
"type": "bool", | |
"value": "true" | |
}, | |
"id": 80, | |
"name": "Literal", | |
"src": "777:4:1" | |
} | |
], | |
"id": 81, | |
"name": "Return", | |
"src": "770:11:1" | |
} | |
], | |
"id": 82, | |
"name": "Block", | |
"src": "602:183:1" | |
} | |
], | |
"id": 83, | |
"name": "FunctionDefinition", | |
"src": "521:264:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "getBalanceInEth", | |
"scope": 112, | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "addr", | |
"scope": 99, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 84, | |
"name": "ElementaryTypeName", | |
"src": "813:7:1" | |
} | |
], | |
"id": 85, | |
"name": "VariableDeclaration", | |
"src": "813:12:1" | |
} | |
], | |
"id": 86, | |
"name": "ParameterList", | |
"src": "812:14:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "", | |
"scope": 99, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 87, | |
"name": "ElementaryTypeName", | |
"src": "847:4:1" | |
} | |
], | |
"id": 88, | |
"name": "VariableDeclaration", | |
"src": "847:4:1" | |
} | |
], | |
"id": 89, | |
"name": "ParameterList", | |
"src": "846:6:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 89 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "uint256", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
{ | |
"typeIdentifier": "t_rational_2_by_1", | |
"typeString": "int_const 2" | |
} | |
], | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "convert", | |
"referencedDeclaration": 15, | |
"type": "function (uint256,uint256) pure returns (uint256)" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 16, | |
"type": "type(library ConvertLib)", | |
"value": "ConvertLib" | |
}, | |
"id": 90, | |
"name": "Identifier", | |
"src": "863:10:1" | |
} | |
], | |
"id": 91, | |
"name": "MemberAccess", | |
"src": "863:18:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "uint256", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 111, | |
"type": "function (address) view returns (uint256)", | |
"value": "getBalance" | |
}, | |
"id": 92, | |
"name": "Identifier", | |
"src": "882:10:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 85, | |
"type": "address", | |
"value": "addr" | |
}, | |
"id": 93, | |
"name": "Identifier", | |
"src": "893:4:1" | |
} | |
], | |
"id": 94, | |
"name": "FunctionCall", | |
"src": "882:16:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"hexvalue": "32", | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": true, | |
"lValueRequested": false, | |
"subdenomination": null, | |
"token": "number", | |
"type": "int_const 2", | |
"value": "2" | |
}, | |
"id": 95, | |
"name": "Literal", | |
"src": "899:1:1" | |
} | |
], | |
"id": 96, | |
"name": "FunctionCall", | |
"src": "863:38:1" | |
} | |
], | |
"id": 97, | |
"name": "Return", | |
"src": "856:45:1" | |
} | |
], | |
"id": 98, | |
"name": "Block", | |
"src": "852:53:1" | |
} | |
], | |
"id": 99, | |
"name": "FunctionDefinition", | |
"src": "788:117:1" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"modifiers": [ | |
null | |
], | |
"name": "getBalance", | |
"scope": 112, | |
"stateMutability": "view", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "addr", | |
"scope": 111, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 100, | |
"name": "ElementaryTypeName", | |
"src": "928:7:1" | |
} | |
], | |
"id": 101, | |
"name": "VariableDeclaration", | |
"src": "928:12:1" | |
} | |
], | |
"id": 102, | |
"name": "ParameterList", | |
"src": "927:14:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "", | |
"scope": 111, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 103, | |
"name": "ElementaryTypeName", | |
"src": "962:4:1" | |
} | |
], | |
"id": 104, | |
"name": "VariableDeclaration", | |
"src": "962:4:1" | |
} | |
], | |
"id": 105, | |
"name": "ParameterList", | |
"src": "961:6:1" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"functionReturnParameters": 105 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": true, | |
"isPure": false, | |
"lValueRequested": false, | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 23, | |
"type": "mapping(address => uint256)", | |
"value": "balances" | |
}, | |
"id": 106, | |
"name": "Identifier", | |
"src": "979:8:1" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 101, | |
"type": "address", | |
"value": "addr" | |
}, | |
"id": 107, | |
"name": "Identifier", | |
"src": "988:4:1" | |
} | |
], | |
"id": 108, | |
"name": "IndexAccess", | |
"src": "979:14:1" | |
} | |
], | |
"id": 109, | |
"name": "Return", | |
"src": "972:21:1" | |
} | |
], | |
"id": 110, | |
"name": "Block", | |
"src": "968:29:1" | |
} | |
], | |
"id": 111, | |
"name": "FunctionDefinition", | |
"src": "908:89:1" | |
} | |
], | |
"id": 112, | |
"name": "ContractDefinition", | |
"src": "324:675:1" | |
} | |
], | |
"id": 113, | |
"name": "SourceUnit", | |
"src": "0:1000:1" | |
}, | |
"source": "pragma solidity >=0.4.22 <0.6.0;\n\nimport \"./ConvertLib.sol\";\n\n// This is just a simple example of a coin-like contract.\n// It is not standards compatible and cannot be expected to talk to other\n// coin/token contracts. If you want to create a standards-compliant\n// token, see: https://github.com/ConsenSys/Tokens. Cheers!\n\ncontract MetaCoin1 {\n\tmapping (address => uint) balances;\n\n\tevent Transfer(address indexed _from, address indexed _to, uint256 _value);\n\n\tconstructor() public {\n\t\tbalances[tx.origin] = 10000;\n\t}\n\n\tfunction sendCoin(address receiver, uint amount) public returns(bool sufficient) {\n\t\tif (balances[msg.sender] < amount) return false;\n\t\tbalances[msg.sender] -= amount;\n\t\tbalances[receiver] += amount;\n\t\temit Transfer(msg.sender, receiver, amount);\n\t\treturn true;\n\t}\n\n\tfunction getBalanceInEth(address addr) public view returns(uint){\n\t\treturn ConvertLib.convert(getBalance(addr),2);\n\t}\n\n\tfunction getBalance(address addr) public view returns(uint) {\n\t\treturn balances[addr];\n\t}\n}\n" | |
}, | |
"/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/Migrations.sol": { | |
"ast": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/Migrations.sol", | |
"exportedSymbols": { | |
"Migrations": [ | |
169 | |
] | |
}, | |
"id": 170, | |
"nodeType": "SourceUnit", | |
"nodes": [ | |
{ | |
"id": 114, | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
], | |
"nodeType": "PragmaDirective", | |
"src": "0:32:2" | |
}, | |
{ | |
"baseContracts": [], | |
"contractDependencies": [], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"id": 169, | |
"linearizedBaseContracts": [ | |
169 | |
], | |
"name": "Migrations", | |
"nodeType": "ContractDefinition", | |
"nodes": [ | |
{ | |
"constant": false, | |
"id": 116, | |
"name": "owner", | |
"nodeType": "VariableDeclaration", | |
"scope": 169, | |
"src": "58:20:2", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 115, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "58:7:2", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"constant": false, | |
"id": 118, | |
"name": "last_completed_migration", | |
"nodeType": "VariableDeclaration", | |
"scope": 169, | |
"src": "82:39:2", | |
"stateVariable": true, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 117, | |
"name": "uint256", | |
"nodeType": "ElementaryTypeName", | |
"src": "82:7:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 126, | |
"nodeType": "Block", | |
"src": "148:37:2", | |
"statements": [ | |
{ | |
"condition": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"id": 123, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftExpression": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 120, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "158:3:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 121, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "158:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"nodeType": "BinaryOperation", | |
"operator": "==", | |
"rightExpression": { | |
"argumentTypes": null, | |
"id": 122, | |
"name": "owner", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 116, | |
"src": "172:5:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"src": "158:19:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_bool", | |
"typeString": "bool" | |
} | |
}, | |
"falseBody": null, | |
"id": 125, | |
"nodeType": "IfStatement", | |
"src": "154:26:2", | |
"trueBody": { | |
"id": 124, | |
"nodeType": "PlaceholderStatement", | |
"src": "179:1:2" | |
} | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 127, | |
"name": "restricted", | |
"nodeType": "ModifierDefinition", | |
"parameters": { | |
"id": 119, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "145:2:2" | |
}, | |
"src": "126:59:2", | |
"visibility": "internal" | |
}, | |
{ | |
"body": { | |
"id": 135, | |
"nodeType": "Block", | |
"src": "210:29:2", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 133, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"id": 130, | |
"name": "owner", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 116, | |
"src": "216:5:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"expression": { | |
"argumentTypes": null, | |
"id": 131, | |
"name": "msg", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 184, | |
"src": "224:3:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_magic_message", | |
"typeString": "msg" | |
} | |
}, | |
"id": 132, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "sender", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": null, | |
"src": "224:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address_payable", | |
"typeString": "address payable" | |
} | |
}, | |
"src": "216:18:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"id": 134, | |
"nodeType": "ExpressionStatement", | |
"src": "216:18:2" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 136, | |
"implemented": true, | |
"kind": "constructor", | |
"modifiers": [], | |
"name": "", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 128, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "200:2:2" | |
}, | |
"returnParameters": { | |
"id": 129, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "210:0:2" | |
}, | |
"scope": 169, | |
"src": "189:50:2", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 147, | |
"nodeType": "Block", | |
"src": "299:47:2", | |
"statements": [ | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"id": 145, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"leftHandSide": { | |
"argumentTypes": null, | |
"id": 143, | |
"name": "last_completed_migration", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 118, | |
"src": "305:24:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"nodeType": "Assignment", | |
"operator": "=", | |
"rightHandSide": { | |
"argumentTypes": null, | |
"id": 144, | |
"name": "completed", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 138, | |
"src": "332:9:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"src": "305:36:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"id": 146, | |
"nodeType": "ExpressionStatement", | |
"src": "305:36:2" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 148, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [ | |
{ | |
"arguments": null, | |
"id": 141, | |
"modifierName": { | |
"argumentTypes": null, | |
"id": 140, | |
"name": "restricted", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 127, | |
"src": "288:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_modifier$__$", | |
"typeString": "modifier ()" | |
} | |
}, | |
"nodeType": "ModifierInvocation", | |
"src": "288:10:2" | |
} | |
], | |
"name": "setCompleted", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 139, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 138, | |
"name": "completed", | |
"nodeType": "VariableDeclaration", | |
"scope": 148, | |
"src": "265:14:2", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
}, | |
"typeName": { | |
"id": 137, | |
"name": "uint", | |
"nodeType": "ElementaryTypeName", | |
"src": "265:4:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "264:16:2" | |
}, | |
"returnParameters": { | |
"id": 142, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "299:0:2" | |
}, | |
"scope": 169, | |
"src": "243:103:2", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
{ | |
"body": { | |
"id": 167, | |
"nodeType": "Block", | |
"src": "406:109:2", | |
"statements": [ | |
{ | |
"assignments": [ | |
156 | |
], | |
"declarations": [ | |
{ | |
"constant": false, | |
"id": 156, | |
"name": "upgraded", | |
"nodeType": "VariableDeclaration", | |
"scope": 167, | |
"src": "412:19:2", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Migrations_$169", | |
"typeString": "contract Migrations" | |
}, | |
"typeName": { | |
"contractScope": null, | |
"id": 155, | |
"name": "Migrations", | |
"nodeType": "UserDefinedTypeName", | |
"referencedDeclaration": 169, | |
"src": "412:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Migrations_$169", | |
"typeString": "contract Migrations" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"id": 160, | |
"initialValue": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 158, | |
"name": "new_address", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 150, | |
"src": "445:11:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"id": 157, | |
"name": "Migrations", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 169, | |
"src": "434:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_type$_t_contract$_Migrations_$169_$", | |
"typeString": "type(contract Migrations)" | |
} | |
}, | |
"id": 159, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "typeConversion", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "434:23:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Migrations_$169", | |
"typeString": "contract Migrations" | |
} | |
}, | |
"nodeType": "VariableDeclarationStatement", | |
"src": "412:45:2" | |
}, | |
{ | |
"expression": { | |
"argumentTypes": null, | |
"arguments": [ | |
{ | |
"argumentTypes": null, | |
"id": 164, | |
"name": "last_completed_migration", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 118, | |
"src": "485:24:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
} | |
], | |
"expression": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"expression": { | |
"argumentTypes": null, | |
"id": 161, | |
"name": "upgraded", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 156, | |
"src": "463:8:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_contract$_Migrations_$169", | |
"typeString": "contract Migrations" | |
} | |
}, | |
"id": 163, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"memberName": "setCompleted", | |
"nodeType": "MemberAccess", | |
"referencedDeclaration": 148, | |
"src": "463:21:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", | |
"typeString": "function (uint256) external" | |
} | |
}, | |
"id": 165, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"kind": "functionCall", | |
"lValueRequested": false, | |
"names": [], | |
"nodeType": "FunctionCall", | |
"src": "463:47:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_tuple$__$", | |
"typeString": "tuple()" | |
} | |
}, | |
"id": 166, | |
"nodeType": "ExpressionStatement", | |
"src": "463:47:2" | |
} | |
] | |
}, | |
"documentation": null, | |
"id": 168, | |
"implemented": true, | |
"kind": "function", | |
"modifiers": [ | |
{ | |
"arguments": null, | |
"id": 153, | |
"modifierName": { | |
"argumentTypes": null, | |
"id": 152, | |
"name": "restricted", | |
"nodeType": "Identifier", | |
"overloadedDeclarations": [], | |
"referencedDeclaration": 127, | |
"src": "395:10:2", | |
"typeDescriptions": { | |
"typeIdentifier": "t_modifier$__$", | |
"typeString": "modifier ()" | |
} | |
}, | |
"nodeType": "ModifierInvocation", | |
"src": "395:10:2" | |
} | |
], | |
"name": "upgrade", | |
"nodeType": "FunctionDefinition", | |
"parameters": { | |
"id": 151, | |
"nodeType": "ParameterList", | |
"parameters": [ | |
{ | |
"constant": false, | |
"id": 150, | |
"name": "new_address", | |
"nodeType": "VariableDeclaration", | |
"scope": 168, | |
"src": "367:19:2", | |
"stateVariable": false, | |
"storageLocation": "default", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"typeName": { | |
"id": 149, | |
"name": "address", | |
"nodeType": "ElementaryTypeName", | |
"src": "367:7:2", | |
"stateMutability": "nonpayable", | |
"typeDescriptions": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
}, | |
"value": null, | |
"visibility": "internal" | |
} | |
], | |
"src": "366:21:2" | |
}, | |
"returnParameters": { | |
"id": 154, | |
"nodeType": "ParameterList", | |
"parameters": [], | |
"src": "406:0:2" | |
}, | |
"scope": 169, | |
"src": "350:165:2", | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
} | |
], | |
"scope": 170, | |
"src": "34:483:2" | |
} | |
], | |
"src": "0:518:2" | |
}, | |
"legacyAST": { | |
"attributes": { | |
"absolutePath": "/home/rocky/truffle/mythjs-should-detect/bernhard_medium_post/contracts/Migrations.sol", | |
"exportedSymbols": { | |
"Migrations": [ | |
169 | |
] | |
} | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"literals": [ | |
"solidity", | |
">=", | |
"0.4", | |
".22", | |
"<", | |
"0.6", | |
".0" | |
] | |
}, | |
"id": 114, | |
"name": "PragmaDirective", | |
"src": "0:32:2" | |
}, | |
{ | |
"attributes": { | |
"baseContracts": [ | |
null | |
], | |
"contractDependencies": [ | |
null | |
], | |
"contractKind": "contract", | |
"documentation": null, | |
"fullyImplemented": true, | |
"linearizedBaseContracts": [ | |
169 | |
], | |
"name": "Migrations", | |
"scope": 170 | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "owner", | |
"scope": 169, | |
"stateVariable": true, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 115, | |
"name": "ElementaryTypeName", | |
"src": "58:7:2" | |
} | |
], | |
"id": 116, | |
"name": "VariableDeclaration", | |
"src": "58:20:2" | |
}, | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "last_completed_migration", | |
"scope": 169, | |
"stateVariable": true, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint256", | |
"type": "uint256" | |
}, | |
"id": 117, | |
"name": "ElementaryTypeName", | |
"src": "82:7:2" | |
} | |
], | |
"id": 118, | |
"name": "VariableDeclaration", | |
"src": "82:39:2" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"name": "restricted", | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 119, | |
"name": "ParameterList", | |
"src": "145:2:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"falseBody": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"commonType": { | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
}, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "==", | |
"type": "bool" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 120, | |
"name": "Identifier", | |
"src": "158:3:2" | |
} | |
], | |
"id": 121, | |
"name": "MemberAccess", | |
"src": "158:10:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 116, | |
"type": "address", | |
"value": "owner" | |
}, | |
"id": 122, | |
"name": "Identifier", | |
"src": "172:5:2" | |
} | |
], | |
"id": 123, | |
"name": "BinaryOperation", | |
"src": "158:19:2" | |
}, | |
{ | |
"id": 124, | |
"name": "PlaceholderStatement", | |
"src": "179:1:2" | |
} | |
], | |
"id": 125, | |
"name": "IfStatement", | |
"src": "154:26:2" | |
} | |
], | |
"id": 126, | |
"name": "Block", | |
"src": "148:37:2" | |
} | |
], | |
"id": 127, | |
"name": "ModifierDefinition", | |
"src": "126:59:2" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": true, | |
"kind": "constructor", | |
"modifiers": [ | |
null | |
], | |
"name": "", | |
"scope": 169, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 128, | |
"name": "ParameterList", | |
"src": "200:2:2" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 129, | |
"name": "ParameterList", | |
"src": "210:0:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "=", | |
"type": "address" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 116, | |
"type": "address", | |
"value": "owner" | |
}, | |
"id": 130, | |
"name": "Identifier", | |
"src": "216:5:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "sender", | |
"referencedDeclaration": null, | |
"type": "address payable" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 184, | |
"type": "msg", | |
"value": "msg" | |
}, | |
"id": 131, | |
"name": "Identifier", | |
"src": "224:3:2" | |
} | |
], | |
"id": 132, | |
"name": "MemberAccess", | |
"src": "224:10:2" | |
} | |
], | |
"id": 133, | |
"name": "Assignment", | |
"src": "216:18:2" | |
} | |
], | |
"id": 134, | |
"name": "ExpressionStatement", | |
"src": "216:18:2" | |
} | |
], | |
"id": 135, | |
"name": "Block", | |
"src": "210:29:2" | |
} | |
], | |
"id": 136, | |
"name": "FunctionDefinition", | |
"src": "189:50:2" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"name": "setCompleted", | |
"scope": 169, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "completed", | |
"scope": 148, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "uint256", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "uint", | |
"type": "uint256" | |
}, | |
"id": 137, | |
"name": "ElementaryTypeName", | |
"src": "265:4:2" | |
} | |
], | |
"id": 138, | |
"name": "VariableDeclaration", | |
"src": "265:14:2" | |
} | |
], | |
"id": 139, | |
"name": "ParameterList", | |
"src": "264:16:2" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 142, | |
"name": "ParameterList", | |
"src": "299:0:2" | |
}, | |
{ | |
"attributes": { | |
"arguments": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 127, | |
"type": "modifier ()", | |
"value": "restricted" | |
}, | |
"id": 140, | |
"name": "Identifier", | |
"src": "288:10:2" | |
} | |
], | |
"id": 141, | |
"name": "ModifierInvocation", | |
"src": "288:10:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"operator": "=", | |
"type": "uint256" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 118, | |
"type": "uint256", | |
"value": "last_completed_migration" | |
}, | |
"id": 143, | |
"name": "Identifier", | |
"src": "305:24:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 138, | |
"type": "uint256", | |
"value": "completed" | |
}, | |
"id": 144, | |
"name": "Identifier", | |
"src": "332:9:2" | |
} | |
], | |
"id": 145, | |
"name": "Assignment", | |
"src": "305:36:2" | |
} | |
], | |
"id": 146, | |
"name": "ExpressionStatement", | |
"src": "305:36:2" | |
} | |
], | |
"id": 147, | |
"name": "Block", | |
"src": "299:47:2" | |
} | |
], | |
"id": 148, | |
"name": "FunctionDefinition", | |
"src": "243:103:2" | |
}, | |
{ | |
"attributes": { | |
"documentation": null, | |
"implemented": true, | |
"isConstructor": false, | |
"kind": "function", | |
"name": "upgrade", | |
"scope": 169, | |
"stateMutability": "nonpayable", | |
"superFunction": null, | |
"visibility": "public" | |
}, | |
"children": [ | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "new_address", | |
"scope": 168, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "address", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"name": "address", | |
"stateMutability": "nonpayable", | |
"type": "address" | |
}, | |
"id": 149, | |
"name": "ElementaryTypeName", | |
"src": "367:7:2" | |
} | |
], | |
"id": 150, | |
"name": "VariableDeclaration", | |
"src": "367:19:2" | |
} | |
], | |
"id": 151, | |
"name": "ParameterList", | |
"src": "366:21:2" | |
}, | |
{ | |
"attributes": { | |
"parameters": [ | |
null | |
] | |
}, | |
"children": [], | |
"id": 154, | |
"name": "ParameterList", | |
"src": "406:0:2" | |
}, | |
{ | |
"attributes": { | |
"arguments": null | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 127, | |
"type": "modifier ()", | |
"value": "restricted" | |
}, | |
"id": 152, | |
"name": "Identifier", | |
"src": "395:10:2" | |
} | |
], | |
"id": 153, | |
"name": "ModifierInvocation", | |
"src": "395:10:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"assignments": [ | |
156 | |
] | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"constant": false, | |
"name": "upgraded", | |
"scope": 167, | |
"stateVariable": false, | |
"storageLocation": "default", | |
"type": "contract Migrations", | |
"value": null, | |
"visibility": "internal" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"contractScope": null, | |
"name": "Migrations", | |
"referencedDeclaration": 169, | |
"type": "contract Migrations" | |
}, | |
"id": 155, | |
"name": "UserDefinedTypeName", | |
"src": "412:10:2" | |
} | |
], | |
"id": 156, | |
"name": "VariableDeclaration", | |
"src": "412:19:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "contract Migrations", | |
"type_conversion": true | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_address", | |
"typeString": "address" | |
} | |
], | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 169, | |
"type": "type(contract Migrations)", | |
"value": "Migrations" | |
}, | |
"id": 157, | |
"name": "Identifier", | |
"src": "434:10:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 150, | |
"type": "address", | |
"value": "new_address" | |
}, | |
"id": 158, | |
"name": "Identifier", | |
"src": "445:11:2" | |
} | |
], | |
"id": 159, | |
"name": "FunctionCall", | |
"src": "434:23:2" | |
} | |
], | |
"id": 160, | |
"name": "VariableDeclarationStatement", | |
"src": "412:45:2" | |
}, | |
{ | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"isStructConstructorCall": false, | |
"lValueRequested": false, | |
"names": [ | |
null | |
], | |
"type": "tuple()", | |
"type_conversion": false | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": [ | |
{ | |
"typeIdentifier": "t_uint256", | |
"typeString": "uint256" | |
} | |
], | |
"isConstant": false, | |
"isLValue": false, | |
"isPure": false, | |
"lValueRequested": false, | |
"member_name": "setCompleted", | |
"referencedDeclaration": 148, | |
"type": "function (uint256) external" | |
}, | |
"children": [ | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 156, | |
"type": "contract Migrations", | |
"value": "upgraded" | |
}, | |
"id": 161, | |
"name": "Identifier", | |
"src": "463:8:2" | |
} | |
], | |
"id": 163, | |
"name": "MemberAccess", | |
"src": "463:21:2" | |
}, | |
{ | |
"attributes": { | |
"argumentTypes": null, | |
"overloadedDeclarations": [ | |
null | |
], | |
"referencedDeclaration": 118, | |
"type": "uint256", | |
"value": "last_completed_migration" | |
}, | |
"id": 164, | |
"name": "Identifier", | |
"src": "485:24:2" | |
} | |
], | |
"id": 165, | |
"name": "FunctionCall", | |
"src": "463:47:2" | |
} | |
], | |
"id": 166, | |
"name": "ExpressionStatement", | |
"src": "463:47:2" | |
} | |
], | |
"id": 167, | |
"name": "Block", | |
"src": "406:109:2" | |
} | |
], | |
"id": 168, | |
"name": "FunctionDefinition", | |
"src": "350:165:2" | |
} | |
], | |
"id": 169, | |
"name": "ContractDefinition", | |
"src": "34:483:2" | |
} | |
], | |
"id": 170, | |
"name": "SourceUnit", | |
"src": "0:518:2" | |
}, | |
"source": "pragma solidity >=0.4.22 <0.6.0;\n\ncontract Migrations {\n address public owner;\n uint256 public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n constructor() public {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed) public restricted {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address) public restricted {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n" | |
} | |
}, | |
"contractName": "MetaCoin1", | |
"updatedAt": "2019-02-24T19:03:04.933Z" | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment