@@ -68,10 +68,14 @@ def __init__(self, genesis=None, env=None, coinbase=b'\x00' * 20, \
68
68
if reset_genesis :
69
69
self .genesis = Block (self .state .prev_headers [0 ], [], [])
70
70
self .db .put ('GENESIS_NUMBER' , str (self .state .block_number ))
71
- self .db .put ('GENESIS_HASH' , str (self .state .prev_headers [0 ].hash ))
72
- self .db .put ('score:' + self .state .prev_headers [0 ].hash , "0" )
71
+ self .db .put ('GENESIS_HASH' , str (self .genesis .header .hash ))
73
72
self .db .put ('GENESIS_STATE' , json .dumps (self .state .to_snapshot ()))
73
+ self .db .put ('GENESIS_RLP' , rlp .encode (self .genesis ))
74
+ self .db .put ('score:' + self .genesis .header .hash , "0" )
75
+ self .db .put ('state:' + self .genesis .header .hash , self .state .trie .root_hash )
76
+ self .db .put ('block:0' , self .genesis .header .hash )
74
77
self .db .put (self .head_hash , 'GENESIS' )
78
+ self .db .commit ()
75
79
else :
76
80
self .genesis = self .get_block_by_number (0 )
77
81
self .min_gasprice = kwargs .get ('min_gasprice' , 5 * 10 ** 9 )
@@ -142,10 +146,13 @@ def get_block(self, blockhash):
142
146
try :
143
147
block_rlp = self .db .get (blockhash )
144
148
if block_rlp == 'GENESIS' :
149
+ if not hasattr (self , 'genesis' ):
150
+ self .genesis = rlp .decode (self .db .get ('GENESIS_RLP' ), sedes = Block )
145
151
return self .genesis
146
152
else :
147
153
return rlp .decode (block_rlp , Block )
148
- except :
154
+ except Exception as e :
155
+ log .debug ("Failed to get block" , hash = blockhash , error = e )
149
156
return None
150
157
151
158
# Add a record allowing you to later look up the provided block's
@@ -163,7 +170,7 @@ def add_child(self, child):
163
170
164
171
def get_blockhash_by_number (self , number ):
165
172
try :
166
- return self .db .get ('blocknumber :' + str (number ))
173
+ return self .db .get ('block :' + str (number ))
167
174
except :
168
175
return None
169
176
0 commit comments