Working test with block reward added

This commit is contained in:
Anton Gavrilov
2017-07-25 12:04:37 +02:00
parent 204a63a00e
commit 5086dc3024
10 changed files with 195 additions and 13 deletions

View File

@@ -17,10 +17,16 @@
use std::collections::BTreeMap;
use util::Address;
use builtin::Builtin;
use engines::Engine;
use block::*;
use util::*;
use engines::{Engine, CloseOutcome};
use spec::CommonParams;
use evm::Schedule;
use header::BlockNumber;
use error::Error;
use state::CleanupMode;
use trace::{Tracer, ExecutiveTracer};
use types::trace_types::trace::{RewardType};
/// An engine which does not provide any consensus mechanism and does not seal blocks.
pub struct NullEngine {
@@ -64,4 +70,29 @@ impl Engine for NullEngine {
fn snapshot_components(&self) -> Option<Box<::snapshot::SnapshotComponents>> {
Some(Box::new(::snapshot::PowSnapshot(10000)))
}
fn on_close_block(&self, block: &mut ExecutedBlock) -> Result<CloseOutcome, Error> {
if !self.params.apply_reward {
return Ok(CloseOutcome{trace: None});
}
let fields = block.fields_mut();
let mut tracer = ExecutiveTracer::default();
let result_block_reward = U256::from(1000000000);
fields.state.add_balance(
fields.header.author(),
&result_block_reward,
CleanupMode::NoEmpty
)?;
let block_miner = fields.header.author().clone();
tracer.trace_reward(block_miner, result_block_reward, RewardType::Block);
fields.state.commit()?;
match *fields.tracing_enabled {
true => Ok(CloseOutcome{trace: Some(tracer.traces())}),
false => Ok(CloseOutcome{trace: None})
}
}
}