analyseether / ether_sql

A python library to push ethereum blockchain data into an sql database.
http://ether-sql.readthedocs.io
Apache License 2.0
69 stars 22 forks source link

traceReplayBlockTransactions does not work at block 0 #17

Closed ankitchiplunkar closed 6 years ago

ankitchiplunkar commented 6 years ago

Describe the bug traceReplayBlockTransactions does not work at block 0. This is due to an error in Parity https://github.com/paritytech/parity/issues/8762

To Reproduce With an archive parity node run the command

ether_sql --settings=PersonalParitySettings scrape_block --block_number=0

See error

Traceback (most recent call last):
  File "/home/ankit/ether_sql/venv/bin/ether_sql", line 11, in <module>
    load_entry_point('ether-sql', 'console_scripts', 'ether_sql')()
  File "/home/ankit/ether_sql/venv/lib/python3.6/site-packages/click/core.py", line 722, in __call__
    return self.main(*args, **kwargs)
  File "/home/ankit/ether_sql/venv/lib/python3.6/site-packages/click/core.py", line 697, in main
    rv = self.invoke(ctx)
  File "/home/ankit/ether_sql/venv/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/home/ankit/ether_sql/venv/lib/python3.6/site-packages/click/core.py", line 895, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/home/ankit/ether_sql/venv/lib/python3.6/site-packages/click/core.py", line 535, in invoke
    return callback(*args, **kwargs)
  File "/home/ankit/ether_sql/venv/lib/python3.6/site-packages/click/decorators.py", line 17, in new_func
    return f(get_current_context(), *args, **kwargs)
  File "/home/ankit/ether_sql/ether_sql/cli/__init__.py", line 69, in scrape_block_range
    end_block_number=end_block_number)
  File "/home/ankit/ether_sql/ether_sql/scrapper.py", line 34, in scrape_blocks
    ether_sql_session=ether_sql_session)
  File "/home/ankit/ether_sql/ether_sql/scrapper.py", line 64, in add_block_number
    mode=['trace'])
  File "/home/ankit/ether_sql/venv/src/web3/web3/parity.py", line 40, in traceReplayBlockTransactions
    [block_identifier, mode]
  File "/home/ankit/ether_sql/venv/src/web3/web3/manager.py", line 110, in request_blocking
    raise ValueError(response["error"])
ValueError: {'code': -32000, 'message': 'This request is not supported because your node is running with state pruning. Run with --pruning=archive.'}

Expected behavior Either the parity needs to be able to run the above command at block 0 or ether_sql needs to skip trace and stateDiff calculation at block 0

Desktop (please complete the following information):

ankitchiplunkar commented 6 years ago

Pull request to correct this issue has been merged into the parity node. https://github.com/paritytech/parity/pull/8891

Should update the current code when this issue gets released with a stable release