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

Commit 761ef47

Browse files
author
Jan Xie
committed
reset genesis only when necessary
1 parent 58c9685 commit 761ef47

File tree

1 file changed

+17
-12
lines changed

1 file changed

+17
-12
lines changed

ethereum/pow/chain.py

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
class Chain(object):
3232

3333
def __init__(self, genesis=None, env=None, coinbase=b'\x00' * 20, \
34-
new_head_cb=None, localtime=None, **kwargs):
34+
new_head_cb=None, reset_genesis=False, localtime=None, **kwargs):
3535
self.env = env or Env()
3636
# Initialize the state
3737
if 'head_hash' in self.db: # new head tag
@@ -48,9 +48,11 @@ def __init__(self, genesis=None, env=None, coinbase=b'\x00' * 20, \
4848
elif "extraData" in genesis:
4949
self.state = state_from_genesis_declaration(
5050
genesis, self.env)
51+
reset_genesis = True
5152
print('Initializing chain from provided genesis declaration')
5253
elif "prev_headers" in genesis:
5354
self.state = State.from_snapshot(genesis, self.env)
55+
reset_genesis = True
5456
print('Initializing chain from provided state snapshot, %d (%s)' % \
5557
(self.state.block_number, encode_hex(self.state.prev_headers[0].hash[:8])))
5658
else:
@@ -64,25 +66,28 @@ def __init__(self, genesis=None, env=None, coinbase=b'\x00' * 20, \
6466
"hash": kwargs.get('prevhash', '00' * 32),
6567
"uncles_hash": kwargs.get('uncles_hash', '0x' + encode_hex(BLANK_UNCLES_HASH))
6668
}, self.env)
69+
reset_genesis = True
6770

6871
assert self.env.db == self.state.db
6972

7073
initialize(self.state)
7174
self.new_head_cb = new_head_cb
7275

7376
self.head_hash = self.state.prev_headers[0].hash
74-
self.genesis = Block(self.state.prev_headers[0], [], [])
75-
self.db.put(b'block:0', self.genesis.header.hash)
76-
self.db.put(b'state:' + self.genesis.header.hash, self.state.trie.root_hash)
77-
self.db.put('GENESIS_NUMBER', str(self.state.block_number))
78-
self.db.put('GENESIS_HASH', str(self.genesis.header.hash))
7977
assert self.state.block_number == self.state.prev_headers[0].number
80-
self.db.put(b'score:' + self.genesis.header.hash, "0")
81-
self.db.put('GENESIS_STATE', json.dumps(self.state.to_snapshot()))
82-
self.db.put(self.head_hash, 'GENESIS')
83-
self.db.put('state:'+self.head_hash, self.state.trie.root_hash)
84-
self.db.put('GENESIS_RLP', rlp.encode(self.genesis))
85-
#self.db.commit()
78+
if reset_genesis:
79+
self.genesis = Block(self.state.prev_headers[0], [], [])
80+
self.db.put('GENESIS_NUMBER', str(self.state.block_number))
81+
self.db.put('GENESIS_HASH', str(self.genesis.header.hash))
82+
self.db.put('GENESIS_STATE', json.dumps(self.state.to_snapshot()))
83+
self.db.put('GENESIS_RLP', rlp.encode(self.genesis))
84+
self.db.put(b'block:0', self.genesis.header.hash)
85+
self.db.put(b'score:' + self.genesis.header.hash, "0")
86+
self.db.put(b'state:' + self.genesis.header.hash, self.state.trie.root_hash)
87+
self.db.put(self.head_hash, 'GENESIS')
88+
self.db.commit()
89+
else:
90+
self.genesis = self.get_block_by_number(0)
8691
self.min_gasprice = kwargs.get('min_gasprice', 5 * 10**9)
8792
self.coinbase = coinbase
8893
self.extra_data = 'moo ha ha says the laughing cow.'

0 commit comments

Comments
 (0)