Merge Machine and WithRewards (#10071)

This commit is contained in:
Pierre Krieger 2019-01-10 13:11:39 +01:00 committed by Afri Schoedon
parent 4d66e8d06d
commit eea3de00c1
4 changed files with 16 additions and 21 deletions

View File

@ -25,7 +25,7 @@ use std::sync::Arc;
use hash::keccak;
use error::Error;
use machine::WithRewards;
use parity_machine::{Machine, WithBalances};
use parity_machine::Machine;
use trace;
use types::BlockNumber;
use super::{SystemOrCodeCall, SystemOrCodeCallKind};
@ -152,7 +152,7 @@ impl BlockRewardContract {
/// Applies the given block rewards, i.e. adds the given balance to each beneficiary' address.
/// If tracing is enabled the operations are recorded.
pub fn apply_block_rewards<M: Machine + WithBalances + WithRewards>(
pub fn apply_block_rewards<M: Machine + WithRewards>(
rewards: &[(Address, RewardKind, U256)],
block: &mut M::LiveBlock,
machine: &M,

View File

@ -18,7 +18,7 @@ use engines::Engine;
use engines::block_reward::{self, RewardKind};
use ethereum_types::U256;
use machine::WithRewards;
use parity_machine::{Header, LiveBlock, WithBalances, TotalScoredHeader};
use parity_machine::{Machine, Header, LiveBlock, TotalScoredHeader};
use types::BlockNumber;
/// Params for a null engine.
@ -58,7 +58,7 @@ impl<M: Default> Default for NullEngine<M> {
}
}
impl<M: WithBalances + WithRewards> Engine<M> for NullEngine<M>
impl<M: Machine + WithRewards> Engine<M> for NullEngine<M>
where M::ExtendedHeader: TotalScoredHeader,
<M::ExtendedHeader as TotalScoredHeader>::Value: Ord
{

View File

@ -437,14 +437,7 @@ impl ::parity_machine::Machine for EthereumMachine {
type AncestryAction = ::types::ancestry_action::AncestryAction;
type Error = Error;
}
impl<'a> ::parity_machine::LocalizedMachine<'a> for EthereumMachine {
type StateContext = Call<'a>;
type AuxiliaryData = AuxiliaryData<'a>;
}
impl ::parity_machine::WithBalances for EthereumMachine {
fn balance(&self, live: &ExecutedBlock, address: &Address) -> Result<U256, Error> {
live.state().balance(address).map_err(Into::into)
}
@ -454,6 +447,11 @@ impl ::parity_machine::WithBalances for EthereumMachine {
}
}
impl<'a> ::parity_machine::LocalizedMachine<'a> for EthereumMachine {
type StateContext = Call<'a>;
type AuxiliaryData = AuxiliaryData<'a>;
}
/// A state machine that uses block rewards.
pub trait WithRewards: ::parity_machine::Machine {
/// Note block rewards, traces each reward storing information about benefactor, amount and type

View File

@ -112,6 +112,13 @@ pub trait Machine: for<'a> LocalizedMachine<'a> {
/// Errors which can occur when querying or interacting with the machine.
type Error;
/// Get the balance, in base units, associated with an account.
/// Extracts data from the live block.
fn balance(&self, live: &Self::LiveBlock, address: &Address) -> Result<U256, Self::Error>;
/// Increment the balance of an account in the state of the live block.
fn add_balance(&self, live: &mut Self::LiveBlock, address: &Address, amount: &U256) -> Result<(), Self::Error>;
}
/// Machine-related types localized to a specific lifetime.
@ -123,13 +130,3 @@ pub trait LocalizedMachine<'a>: Sync + Send {
/// Generally also provides verifiable proofs.
type StateContext: ?Sized + 'a;
}
/// A state machine that uses balances.
pub trait WithBalances: Machine {
/// Get the balance, in base units, associated with an account.
/// Extracts data from the live block.
fn balance(&self, live: &Self::LiveBlock, address: &Address) -> Result<U256, Self::Error>;
/// Increment the balance of an account in the state of the live block.
fn add_balance(&self, live: &mut Self::LiveBlock, address: &Address, amount: &U256) -> Result<(), Self::Error>;
}