Use getter in header in preparation for a Header trait; additional testing in enact_block().
This commit is contained in:
parent
4512322d3e
commit
e7f840ce79
10
src/block.rs
10
src/block.rs
@ -105,11 +105,12 @@ impl<'x, 'y> OpenBlock<'x, 'y> {
|
|||||||
/// Create a new OpenBlock ready for transaction pushing.
|
/// Create a new OpenBlock ready for transaction pushing.
|
||||||
pub fn new<'a, 'b>(engine: &'a Engine, db: OverlayDB, parent: &Header, last_hashes: &'b LastHashes, author: Address, extra_data: Bytes) -> OpenBlock<'a, 'b> {
|
pub fn new<'a, 'b>(engine: &'a Engine, db: OverlayDB, parent: &Header, last_hashes: &'b LastHashes, author: Address, extra_data: Bytes) -> OpenBlock<'a, 'b> {
|
||||||
let mut r = OpenBlock {
|
let mut r = OpenBlock {
|
||||||
block: Block::new(State::from_existing(db, parent.state_root.clone(), engine.account_start_nonce())),
|
block: Block::new(State::from_existing(db, parent.state_root().clone(), engine.account_start_nonce())),
|
||||||
engine: engine,
|
engine: engine,
|
||||||
last_hashes: last_hashes,
|
last_hashes: last_hashes,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
r.block.header.set_number(parent.number() + 1);
|
||||||
r.block.header.set_author(author);
|
r.block.header.set_author(author);
|
||||||
r.block.header.set_extra_data(extra_data);
|
r.block.header.set_extra_data(extra_data);
|
||||||
r.block.header.set_timestamp_now();
|
r.block.header.set_timestamp_now();
|
||||||
@ -249,8 +250,10 @@ impl IsBlock for SealedBlock {
|
|||||||
fn block(&self) -> &Block { &self.block }
|
fn block(&self) -> &Block { &self.block }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn enact(rlp_bytes: &[u8], engine: &Engine, db: OverlayDB, parent: &Header, last_hashes: &LastHashes) -> Result<SealedBlock, Error> {
|
/// Enact the block given by `block_bytes` using `engine` on the database `db` with given `parent` block header
|
||||||
let block = BlockView::new(rlp_bytes);
|
///
|
||||||
|
pub fn enact(block_bytes: &[u8], engine: &Engine, db: OverlayDB, parent: &Header, last_hashes: &LastHashes) -> Result<SealedBlock, Error> {
|
||||||
|
let block = BlockView::new(block_bytes);
|
||||||
let header = block.header_view();
|
let header = block.header_view();
|
||||||
let mut b = OpenBlock::new(engine, db, parent, last_hashes, header.author(), header.extra_data());
|
let mut b = OpenBlock::new(engine, db, parent, last_hashes, header.author(), header.extra_data());
|
||||||
b.set_timestamp(header.timestamp());
|
b.set_timestamp(header.timestamp());
|
||||||
@ -292,4 +295,5 @@ fn enact_block() {
|
|||||||
|
|
||||||
let db = e.drain();
|
let db = e.drain();
|
||||||
assert_eq!(orig_db.keys(), db.keys());
|
assert_eq!(orig_db.keys(), db.keys());
|
||||||
|
assert!(orig_db.keys().iter().filter(|k| orig_db.get(k.0) != db.get(k.0)).next() == None);
|
||||||
}
|
}
|
||||||
|
@ -68,6 +68,9 @@ impl Header {
|
|||||||
|
|
||||||
pub fn extra_data(&self) -> &Bytes { &self.extra_data }
|
pub fn extra_data(&self) -> &Bytes { &self.extra_data }
|
||||||
|
|
||||||
|
pub fn state_root(&self) -> &H256 { &self.state_root }
|
||||||
|
pub fn receipts_root(&self) -> &H256 { &self.receipts_root }
|
||||||
|
|
||||||
pub fn seal(&self) -> &Vec<Bytes> { &self.seal }
|
pub fn seal(&self) -> &Vec<Bytes> { &self.seal }
|
||||||
|
|
||||||
// TODO: seal_at, set_seal_at &c.
|
// TODO: seal_at, set_seal_at &c.
|
||||||
|
Loading…
Reference in New Issue
Block a user