research/uncle_regressions/block_datadump_generator.py

23 lines
860 B
Python
Raw Normal View History

2016-10-31 00:51:54 +00:00
import json
from ethereum.block import BlockHeader
import rlp
try:
data = json.load(open('progress.json'))
blknum = data['blknum']
pos = data['pos']
except:
blknum, pos = 0, 0
f = open('geth-2283415.dump')
outdata = []
while 1:
f.seek(pos)
prefix = f.read(10)
_typ, _len, _pos = rlp.codec.consume_length_prefix(prefix, 0)
blkdata = prefix + f.read(_pos + _len - 10)
header = rlp.decode(rlp.descend(blkdata, 0), BlockHeader)
txcount = len(rlp.decode(rlp.descend(blkdata, 1)))
uncles = [BlockHeader.deserialize(x) for x in rlp.decode(rlp.descend(blkdata, 2))]
outdata.append([header.number, len(uncles), sum([4.375 - 0.625 * (header.number - u.number) for u in uncles]), sum([u.gas_used for u in uncles]), txcount, header.gas_used, _len + _pos, blkdata.count('\x00')])
print outdata[-1]
pos += _pos + _len