Skip to content

Commit 5c352e0

Browse files
committed
collect push4 instructions from all blocks
1 parent 8498a77 commit 5c352e0

File tree

5 files changed

+51
-25
lines changed

5 files changed

+51
-25
lines changed

ethereumetl/service/eth_contract_service.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,13 @@ def get_function_sighashes(self, bytecode):
3333
evm_code.disassemble(bytecode)
3434
basic_blocks = evm_code.basicblocks
3535
if basic_blocks and len(basic_blocks) > 0:
36-
init_block = basic_blocks[0]
37-
instructions = init_block.instructions
38-
push4_instructions = [inst for inst in instructions if inst.name == 'PUSH4']
39-
return sorted(list(set('0x' + inst.operand for inst in push4_instructions)))
36+
push4_instructions = set()
37+
for block in basic_blocks:
38+
instructions = block.instructions
39+
block_push4_instructions = [inst for inst in instructions if inst.name == 'PUSH4']
40+
push4_instructions.update(block_push4_instructions)
41+
42+
return sorted(list({'0x' + inst.operand for inst in push4_instructions}))
4043
else:
4144
return []
4245
else:

tests/ethereumetl/service/test_eth_contract_service.py

Lines changed: 41 additions & 18 deletions
Large diffs are not rendered by default.

tests/resources/test_export_contracts_job/erc721_contract/expected_contracts.json

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"type": "contract", "address": "0xdbdacfc9eb9d42559ac1efbdb40460c728139e6a", "bytecode": "0x6060604052361561008d5760e060020a600035046306fdde03811461008f578063095ea7b3146100a557806318160ddd1461012457806323b872dd1461012f578063313ce567146101dc578063475a9fa9146101f057806370a0823114610215578063721a37d21461024357806395d89b411461008f578063a9059cbb14610268578063dd62ed3e146102e7575b005b61031d6040805160208101909152600081525b90565b61038b60043560243560007319ee743d2e356d5f0e4d97cc09b96d06e933d0db63c6605267600160005085856040518460e060020a0281526004018084815260200183600160a060020a0316815260200182815260200193505050506020604051808303818660325a03f4156100025750506040515191506103179050565b6102316003546100a2565b61038b60043560243560443560008054604080517fa00bfa1100000000000000000000000000000000000000000000000000000000815260016004820152600160a060020a038781166024830152868116604483015260648201869052929092166084830152517319ee743d2e356d5f0e4d97cc09b96d06e933d0db9163a00bfa119160a482810192602092919082900301818660325a03f4156100025750506040515195945050505050565b604080516000815290519081900360200190f35b61038b6004356024356000805433600160a060020a0390811691161461039f57610002565b600160a060020a03600435166000908152600160205260409020545b60408051918252519081900360200190f35b61038b6004356024356000805433600160a060020a039081169116146103ce57610002565b61038b60043560243560007319ee743d2e356d5f0e4d97cc09b96d06e933d0db6388d5fecb600160005085856040518460e060020a0281526004018084815260200183600160a060020a0316815260200182815260200193505050506020604051808303818660325a03f4156100025750506040515191506103179050565b610231600435602435600160a060020a038281166000908152600260209081526040808320938516835292905220545b92915050565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f16801561037d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b604080519115158252519081900360200190f35b50600160a060020a03821660009081526001602081905260409091208054830190556003805483019055610317565b600160a060020a038316600090815260016020526040902054821161040a57506040600020805482900390556003805482900390556001610317565b50600061031756", "function_sighashes": ["0x06fdde03", "0x095ea7b3", "0x18160ddd", "0x23b872dd", "0x313ce567", "0x475a9fa9", "0x70a08231", "0x721a37d2", "0x95d89b41", "0xa9059cbb", "0xdd62ed3e"], "is_erc20": true, "is_erc721": false, "block_number": 2112234, "block_timestamp": 1471774428, "block_hash": "0xd279067d9852394d6b6c00b13c49696503c9618d3ed3b23c6b1b1321857ddd92", "item_id": "contract_2112234_0xdbdacfc9eb9d42559ac1efbdb40460c728139e6a", "item_timestamp": "2016-08-21T10:13:48Z"}
1+
{"type": "contract", "address": "0xdbdacfc9eb9d42559ac1efbdb40460c728139e6a", "bytecode": "0x6060604052361561008d5760e060020a600035046306fdde03811461008f578063095ea7b3146100a557806318160ddd1461012457806323b872dd1461012f578063313ce567146101dc578063475a9fa9146101f057806370a0823114610215578063721a37d21461024357806395d89b411461008f578063a9059cbb14610268578063dd62ed3e146102e7575b005b61031d6040805160208101909152600081525b90565b61038b60043560243560007319ee743d2e356d5f0e4d97cc09b96d06e933d0db63c6605267600160005085856040518460e060020a0281526004018084815260200183600160a060020a0316815260200182815260200193505050506020604051808303818660325a03f4156100025750506040515191506103179050565b6102316003546100a2565b61038b60043560243560443560008054604080517fa00bfa1100000000000000000000000000000000000000000000000000000000815260016004820152600160a060020a038781166024830152868116604483015260648201869052929092166084830152517319ee743d2e356d5f0e4d97cc09b96d06e933d0db9163a00bfa119160a482810192602092919082900301818660325a03f4156100025750506040515195945050505050565b604080516000815290519081900360200190f35b61038b6004356024356000805433600160a060020a0390811691161461039f57610002565b600160a060020a03600435166000908152600160205260409020545b60408051918252519081900360200190f35b61038b6004356024356000805433600160a060020a039081169116146103ce57610002565b61038b60043560243560007319ee743d2e356d5f0e4d97cc09b96d06e933d0db6388d5fecb600160005085856040518460e060020a0281526004018084815260200183600160a060020a0316815260200182815260200193505050506020604051808303818660325a03f4156100025750506040515191506103179050565b610231600435602435600160a060020a038281166000908152600260209081526040808320938516835292905220545b92915050565b60405180806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f16801561037d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b604080519115158252519081900360200190f35b50600160a060020a03821660009081526001602081905260409091208054830190556003805483019055610317565b600160a060020a038316600090815260016020526040902054821161040a57506040600020805482900390556003805482900390556001610317565b50600061031756", "function_sighashes": ["0x06fdde03", "0x095ea7b3", "0x18160ddd", "0x23b872dd", "0x313ce567", "0x475a9fa9", "0x70a08231", "0x721a37d2", "0x88d5fecb", "0x95d89b41", "0xa00bfa11", "0xa9059cbb", "0xc6605267", "0xdd62ed3e"], "is_erc20": true, "is_erc721": false, "block_number": 2112234, "block_timestamp": 1471774428, "block_hash": "0xd279067d9852394d6b6c00b13c49696503c9618d3ed3b23c6b1b1321857ddd92", "item_id": "contract_2112234_0xdbdacfc9eb9d42559ac1efbdb40460c728139e6a", "item_timestamp": "2016-08-21T10:13:48Z"}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"type": "contract", "address": "0xaec3266ebd18361ab1378646e91f0c5c373038da", "bytecode": "0x606060405236156100825760e060020a6000350463013cf08b81146100845780630d61b519146100d9578063173a4b701461020b57806321933be81461031a57806339ce39831461035b578063400e3949146103645780634d853ee51461036d5780635e44daf31461037f5780638160f0b514610479578063fd46146a14610482575b005b61049460043560048054829081101561000257906000526020600020906008020160005060018101546004820154600583015483546002850154600160a060020a039190911695509293600301919060ff1686565b61054c600435600060006000600060006000600460005087815481101561000257508152600887027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018150600154600482015491965001421180156101435750600585015460ff165b156109ac5760009350600092505b60068501548310156109b65760068501805484908110156100025790600052602060002090600202016000506040805160025460018401547fbbd39ac0000000000000000000000000000000000000000000000000000000008352600160a060020a03908116600484015292519395509091169163bbd39ac09160248181019260209290919082900301816000876161da5a03f1156100025750506040515183548102909701969485019491505060019290920191610151565b604080516020606435600481810135601f810184900484028501840190955284845261054c94813594602480359560443595608494920191908190840183828082843750949650505050505050600060006000600260009054906101000a9004600160a060020a0316600160a060020a031663bbd39ac0336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f1156100025750505060405151111561068c576004805460018101808355909190828015829011610695578285526106959060089081027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90810191840201610739565b61008260043560243560443560038054600160a060020a03199081163317909155600280549190911684179055600082141561057b57612710600055610581565b61054c60015481565b61054c60055481565b61055e600354600160a060020a031681565b61054c600435602435600060006000600260009054906101000a9004600160a060020a0316600160a060020a031663bbd39ac0336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f115610002575050506040515111801561040d57506000198312158061040d575060018313155b156108f9576004805485908110156100025760009182526008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905033600160a060020a0316600090815260078201602052604090205490915060ff1660011415610900576108f9565b61054c60005481565b61055e600254600160a060020a031681565b60408051600160a060020a0388168152602081018790529081018590526080810183905260a0810182905260c0606082018181528554600260018216156101000260001901909116049183018290529060e0830190869080156105385780601f1061050d57610100808354040283529160200191610538565b820191906000526020600020905b81548152906001019060200180831161051b57829003601f168201915b505097505050505050505060405180910390f35b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b60008290555b80600014156105965762278d0060015561059e565b603c81026001555b505050565b505042816004016000508190555060018160050160006101000a81548160ff021916908302179055507f095779230509156998187c606e5b8a5a734137945aa43da9bf39c5e7f529a86b82878787876040518086815260200185600160a060020a03168152602001848152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156106735780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1600182016005555b50949350505050565b505060048054929450918491508110156100025790600052602060002090600802016000508054600160a060020a03191687178155600181810187905560028281018790558551600384018054600082815260209081902096975091959481161561010002600019011692909204601f908101839004840193919288019083901061080a57805160ff19168380011785555b506105a39291506107f2565b50506001015b80821115610806578054600160a060020a0319168155600060018281018290556002838101839055600384018054848255909281161561010002600019011604601f8190106107d857505b5060006004830181905560058301805460ff191690556006830180548282559082526020909120610733916002028101905b8082111561080657600081556001018054600160a060020a03191681556107b6565b601f01602090049060005260206000209081019061078491905b8082111561080657600081556001016107f2565b5090565b82800160010185558215610727579182015b8281111561072757825182600050559160200191906001019061081c565b505060408051808201909152858152336020820152600684018054939550909290915084908110156100025790600052602060002090600202016000508151815560209182015160019182018054600160a060020a031916909117905533600160a060020a03166000818152600785018452604090819020805460ff1916909317909255815187815292830186905282820152517f0ee65d9041aa0fefb9e13f940fcdce8fb817356542f5024e16208214b26efc099181900360600190a15b5092915050565b6006810180546001810180835590919082801582901161083a5760020281600202836000526020600020918201910161083a91906107b6565b6000548411801561094a5750600086125b1561095c5760058501805460ff191690555b6005850154604080518981526020810189905280820187905260ff929092166060830152517fd220b7272a8b6d0d7d6bcdace67b936a8f175e6d5c1b3ee438b72256b32ab3af9181900360800190a15b5050505050919050565b600054841180156109c75750600086135b15610939576040805186546001880154600289015483529251600160a060020a03919091169291602081810192600092909190829003018185876185025a03f15050505060058501805460ff1916905561095c56", "function_sighashes": ["0x013cf08b", "0x0d61b519", "0x173a4b70", "0x21933be8", "0x39ce3983", "0x400e3949", "0x4d853ee5", "0x5e44daf3", "0x8160f0b5", "0xfd46146a"], "is_erc20": false, "is_erc721": false, "block_number": 508110, "block_timestamp": 1446973196, "block_hash": "0xc881ee96ddf8b5be74d7680ccda437466b14b9d942aa0161f139fe920690f665", "item_id": "contract_508110_0xaec3266ebd18361ab1378646e91f0c5c373038da", "item_timestamp": "2015-11-08T08:59:56Z"}
1+
{"type": "contract", "address": "0xaec3266ebd18361ab1378646e91f0c5c373038da", "bytecode": "0x606060405236156100825760e060020a6000350463013cf08b81146100845780630d61b519146100d9578063173a4b701461020b57806321933be81461031a57806339ce39831461035b578063400e3949146103645780634d853ee51461036d5780635e44daf31461037f5780638160f0b514610479578063fd46146a14610482575b005b61049460043560048054829081101561000257906000526020600020906008020160005060018101546004820154600583015483546002850154600160a060020a039190911695509293600301919060ff1686565b61054c600435600060006000600060006000600460005087815481101561000257508152600887027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b018150600154600482015491965001421180156101435750600585015460ff165b156109ac5760009350600092505b60068501548310156109b65760068501805484908110156100025790600052602060002090600202016000506040805160025460018401547fbbd39ac0000000000000000000000000000000000000000000000000000000008352600160a060020a03908116600484015292519395509091169163bbd39ac09160248181019260209290919082900301816000876161da5a03f1156100025750506040515183548102909701969485019491505060019290920191610151565b604080516020606435600481810135601f810184900484028501840190955284845261054c94813594602480359560443595608494920191908190840183828082843750949650505050505050600060006000600260009054906101000a9004600160a060020a0316600160a060020a031663bbd39ac0336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f1156100025750505060405151111561068c576004805460018101808355909190828015829011610695578285526106959060089081027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90810191840201610739565b61008260043560243560443560038054600160a060020a03199081163317909155600280549190911684179055600082141561057b57612710600055610581565b61054c60015481565b61054c60055481565b61055e600354600160a060020a031681565b61054c600435602435600060006000600260009054906101000a9004600160a060020a0316600160a060020a031663bbd39ac0336040518260e060020a0281526004018082600160a060020a031681526020019150506020604051808303816000876161da5a03f115610002575050506040515111801561040d57506000198312158061040d575060018313155b156108f9576004805485908110156100025760009182526008027f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b01905033600160a060020a0316600090815260078201602052604090205490915060ff1660011415610900576108f9565b61054c60005481565b61055e600254600160a060020a031681565b60408051600160a060020a0388168152602081018790529081018590526080810183905260a0810182905260c0606082018181528554600260018216156101000260001901909116049183018290529060e0830190869080156105385780601f1061050d57610100808354040283529160200191610538565b820191906000526020600020905b81548152906001019060200180831161051b57829003601f168201915b505097505050505050505060405180910390f35b60408051918252519081900360200190f35b60408051600160a060020a03929092168252519081900360200190f35b60008290555b80600014156105965762278d0060015561059e565b603c81026001555b505050565b505042816004016000508190555060018160050160006101000a81548160ff021916908302179055507f095779230509156998187c606e5b8a5a734137945aa43da9bf39c5e7f529a86b82878787876040518086815260200185600160a060020a03168152602001848152602001838152602001806020018281038252838181518152602001915080519060200190808383829060006004602084601f0104600302600f01f150905090810190601f1680156106735780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a1600182016005555b50949350505050565b505060048054929450918491508110156100025790600052602060002090600802016000508054600160a060020a03191687178155600181810187905560028281018790558551600384018054600082815260209081902096975091959481161561010002600019011692909204601f908101839004840193919288019083901061080a57805160ff19168380011785555b506105a39291506107f2565b50506001015b80821115610806578054600160a060020a0319168155600060018281018290556002838101839055600384018054848255909281161561010002600019011604601f8190106107d857505b5060006004830181905560058301805460ff191690556006830180548282559082526020909120610733916002028101905b8082111561080657600081556001018054600160a060020a03191681556107b6565b601f01602090049060005260206000209081019061078491905b8082111561080657600081556001016107f2565b5090565b82800160010185558215610727579182015b8281111561072757825182600050559160200191906001019061081c565b505060408051808201909152858152336020820152600684018054939550909290915084908110156100025790600052602060002090600202016000508151815560209182015160019182018054600160a060020a031916909117905533600160a060020a03166000818152600785018452604090819020805460ff1916909317909255815187815292830186905282820152517f0ee65d9041aa0fefb9e13f940fcdce8fb817356542f5024e16208214b26efc099181900360600190a15b5092915050565b6006810180546001810180835590919082801582901161083a5760020281600202836000526020600020918201910161083a91906107b6565b6000548411801561094a5750600086125b1561095c5760058501805460ff191690555b6005850154604080518981526020810189905280820187905260ff929092166060830152517fd220b7272a8b6d0d7d6bcdace67b936a8f175e6d5c1b3ee438b72256b32ab3af9181900360800190a15b5050505050919050565b600054841180156109c75750600086135b15610939576040805186546001880154600289015483529251600160a060020a03919091169291602081810192600092909190829003018185876185025a03f15050505060058501805460ff1916905561095c56", "function_sighashes": ["0x013cf08b", "0x0d61b519", "0x173a4b70", "0x21933be8", "0x39ce3983", "0x400e3949", "0x4d853ee5", "0x5e44daf3", "0x8160f0b5", "0xbbd39ac0", "0xfd46146a"], "is_erc20": false, "is_erc721": false, "block_number": 508110, "block_timestamp": 1446973196, "block_hash": "0xc881ee96ddf8b5be74d7680ccda437466b14b9d942aa0161f139fe920690f665", "item_id": "contract_508110_0xaec3266ebd18361ab1378646e91f0c5c373038da", "item_timestamp": "2015-11-08T08:59:56Z"}

0 commit comments

Comments
 (0)