Skip to content

Commit 8334a0c

Browse files
Seulgi Kimsgkim126
authored andcommitted
Set the evidences root when open a block
1 parent e88b194 commit 8334a0c

File tree

3 files changed

+9
-3
lines changed

3 files changed

+9
-3
lines changed

core/src/block.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ impl OpenBlock {
133133
db: StateDB,
134134
parent: &Header,
135135
author: Public,
136+
evidences: &[Evidence],
136137
extra_data: Bytes,
137138
) -> Result<Self, Error> {
138139
let state = TopLevelState::from_existing(db, *parent.state_root()).map_err(StateError::from)?;
@@ -143,6 +144,11 @@ impl OpenBlock {
143144
r.block.header.set_author(author);
144145
r.block.header.set_extra_data(extra_data);
145146
r.block.header.note_dirty();
147+
r.block
148+
.header
149+
.set_evidences_root(skewed_merkle_root(BLAKE_NULL_RLP, r.block.evidences.iter().map(Encodable::rlp_bytes)));
150+
151+
r.block.evidences = evidences.to_vec();
146152

147153
engine.populate_from_parent(&mut r.block.header, parent);
148154

@@ -351,8 +357,7 @@ pub fn enact<C: EngineInfo + FindDoubleVoteHandler + TermInfo>(
351357
db: StateDB,
352358
parent: &Header,
353359
) -> Result<ClosedBlock, Error> {
354-
let mut b = OpenBlock::try_new(engine, db, parent, Public::default(), vec![])?;
355-
b.block.evidences = evidences.to_vec();
360+
let mut b = OpenBlock::try_new(engine, db, parent, Public::default(), evidences, vec![])?;
356361

357362
b.populate_from(header);
358363
b.push_transactions(transactions, client, parent.number())?;

core/src/client/client.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -637,6 +637,7 @@ impl BlockProducer for Client {
637637
self.state_db.read().clone(&parent_header.state_root()),
638638
&parent_header,
639639
author,
640+
&[],
640641
extra_data,
641642
).expect("OpenBlock::new only fails if parent state root invalid; state root of best block's header is never invalid; qed")
642643
}

core/src/client/test_client.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -333,7 +333,7 @@ impl BlockProducer for TestBlockChainClient {
333333
let genesis_header = self.scheme.genesis_header();
334334
let db = get_temp_state_db();
335335

336-
let mut open_block = OpenBlock::try_new(engine, db, &genesis_header, author, extra_data)
336+
let mut open_block = OpenBlock::try_new(engine, db, &genesis_header, author, &[], extra_data)
337337
.expect("Opening block for tests will not fail.");
338338
// TODO [todr] Override timestamp for predictability (set_timestamp_now kind of sucks)
339339
open_block.set_timestamp(*self.latest_block_timestamp.read());

0 commit comments

Comments
 (0)