Skip to content
This repository was archived by the owner on May 23, 2023. It is now read-only.

Commit 223fe19

Browse files
author
Jan Xie
committed
fix genesis initialization
1 parent cd707d7 commit 223fe19

File tree

2 files changed

+13
-7
lines changed

2 files changed

+13
-7
lines changed

ethereum/chain.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,14 @@ def __init__(self, genesis=None, env=None, coinbase=b'\x00' * 20, \
6868
if reset_genesis:
6969
self.genesis = Block(self.state.prev_headers[0], [], [])
7070
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))
7372
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)
7477
self.db.put(self.head_hash, 'GENESIS')
78+
self.db.commit()
7579
else:
7680
self.genesis = self.get_block_by_number(0)
7781
self.min_gasprice = kwargs.get('min_gasprice', 5 * 10**9)
@@ -142,10 +146,13 @@ def get_block(self, blockhash):
142146
try:
143147
block_rlp = self.db.get(blockhash)
144148
if block_rlp == 'GENESIS':
149+
if not hasattr(self, 'genesis'):
150+
self.genesis = rlp.decode(self.db.get('GENESIS_RLP'), sedes=Block)
145151
return self.genesis
146152
else:
147153
return rlp.decode(block_rlp, Block)
148-
except:
154+
except Exception as e:
155+
log.debug("Failed to get block", hash=blockhash, error=e)
149156
return None
150157

151158
# Add a record allowing you to later look up the provided block's
@@ -163,7 +170,7 @@ def add_child(self, child):
163170

164171
def get_blockhash_by_number(self, number):
165172
try:
166-
return self.db.get('blocknumber:' + str(number))
173+
return self.db.get('block:' + str(number))
167174
except:
168175
return None
169176

ethereum/snapshot.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,8 +47,7 @@ def create_snapshot(chain, recent=1024):
4747
assert recent > env.config['MAX_UNCLE_DEPTH']+2
4848

4949
head_block = chain.head
50-
base_block_hash = chain.index.get_block_by_number(max(head_block.number-recent, 0))
51-
base_block = chain.get(base_block_hash)
50+
base_block = chain.get_block_by_number(max(head_block.number-recent, 0))
5251

5352
snapshot = create_env_snapshot(base_block)
5453
snapshot['base'] = create_base_snapshot(base_block)
@@ -60,7 +59,7 @@ def create_snapshot(chain, recent=1024):
6059

6160
def create_env_snapshot(base):
6261
return {
63-
'chainDifficulty': snapshot_form(base.chain_difficulty())
62+
'chainDifficulty': snapshot_form(base.get_score())
6463
}
6564

6665

0 commit comments

Comments
 (0)