def lastBlockNumber(env): b = env.open_db(dbutils.HeadHeaderKey, create=False) b1 = env.open_db(dbutils.HeaderNumberPrefix, create=False) with env.begin(write=False) as txn: blockHashData = txn.get(dbutils.HeadHeaderKey, db=b) assert len(blockHashData) == common.HashLength, "%d != %d" % (len(blockHashData), common.HashLength) blockNumberData = txn.get(blockHashData, db=b1) assert len(blockNumberData) == 8 return common.bytesToUint64(blockNumberData)
def collect_main_hashes(readTx, writeTx): with readTx.cursor(b) as curs: for i, (k, v) in enumerate(curs.iternext()): timestamp = common.bytesToUint64(k[:common.BlockNumberLength]) if timestamp > StartedWhenBlockNumber: break if not dbutils.isHeaderHashKey(k): continue mainHash = bytes(v) writeTx.put(mainHash, common.uint64ToBytes(0), mainHashes)
def gas_limits(readTx, writeTx, file): blockNum = 0 with readTx.cursor(b) as curs: for i, (k, v) in enumerate(curs.iternext()): timestamp = common.bytesToUint64(k[:common.BlockNumberLength]) if timestamp > StartedWhenBlockNumber: break if not dbutils.isHeaderKey(k): continue val = writeTx.get(k[common.BlockNumberLength:], None, mainHashes) if val is None: continue header = chain.decode_block_header(v) file.writerow([blockNum, header.GasLimit]) blockNum += 1