예제 #1
0
파일: chain.py 프로젝트: BitBaseBit/erigon
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)
예제 #2
0
파일: main.py 프로젝트: renlord/turbo-geth
    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)
예제 #3
0
파일: main.py 프로젝트: renlord/turbo-geth
 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