Merge Machine and WithRewards (#10071)
This commit is contained in:
parent
4d66e8d06d
commit
eea3de00c1
@ -25,7 +25,7 @@ use std::sync::Arc;
|
|||||||
use hash::keccak;
|
use hash::keccak;
|
||||||
use error::Error;
|
use error::Error;
|
||||||
use machine::WithRewards;
|
use machine::WithRewards;
|
||||||
use parity_machine::{Machine, WithBalances};
|
use parity_machine::Machine;
|
||||||
use trace;
|
use trace;
|
||||||
use types::BlockNumber;
|
use types::BlockNumber;
|
||||||
use super::{SystemOrCodeCall, SystemOrCodeCallKind};
|
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.
|
/// Applies the given block rewards, i.e. adds the given balance to each beneficiary' address.
|
||||||
/// If tracing is enabled the operations are recorded.
|
/// 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)],
|
rewards: &[(Address, RewardKind, U256)],
|
||||||
block: &mut M::LiveBlock,
|
block: &mut M::LiveBlock,
|
||||||
machine: &M,
|
machine: &M,
|
||||||
|
@ -18,7 +18,7 @@ use engines::Engine;
|
|||||||
use engines::block_reward::{self, RewardKind};
|
use engines::block_reward::{self, RewardKind};
|
||||||
use ethereum_types::U256;
|
use ethereum_types::U256;
|
||||||
use machine::WithRewards;
|
use machine::WithRewards;
|
||||||
use parity_machine::{Header, LiveBlock, WithBalances, TotalScoredHeader};
|
use parity_machine::{Machine, Header, LiveBlock, TotalScoredHeader};
|
||||||
use types::BlockNumber;
|
use types::BlockNumber;
|
||||||
|
|
||||||
/// Params for a null engine.
|
/// 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,
|
where M::ExtendedHeader: TotalScoredHeader,
|
||||||
<M::ExtendedHeader as TotalScoredHeader>::Value: Ord
|
<M::ExtendedHeader as TotalScoredHeader>::Value: Ord
|
||||||
{
|
{
|
||||||
|
@ -437,14 +437,7 @@ impl ::parity_machine::Machine for EthereumMachine {
|
|||||||
type AncestryAction = ::types::ancestry_action::AncestryAction;
|
type AncestryAction = ::types::ancestry_action::AncestryAction;
|
||||||
|
|
||||||
type Error = Error;
|
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> {
|
fn balance(&self, live: &ExecutedBlock, address: &Address) -> Result<U256, Error> {
|
||||||
live.state().balance(address).map_err(Into::into)
|
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.
|
/// A state machine that uses block rewards.
|
||||||
pub trait WithRewards: ::parity_machine::Machine {
|
pub trait WithRewards: ::parity_machine::Machine {
|
||||||
/// Note block rewards, traces each reward storing information about benefactor, amount and type
|
/// Note block rewards, traces each reward storing information about benefactor, amount and type
|
||||||
|
@ -112,6 +112,13 @@ pub trait Machine: for<'a> LocalizedMachine<'a> {
|
|||||||
|
|
||||||
/// Errors which can occur when querying or interacting with the machine.
|
/// Errors which can occur when querying or interacting with the machine.
|
||||||
type Error;
|
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.
|
/// Machine-related types localized to a specific lifetime.
|
||||||
@ -123,13 +130,3 @@ pub trait LocalizedMachine<'a>: Sync + Send {
|
|||||||
/// Generally also provides verifiable proofs.
|
/// Generally also provides verifiable proofs.
|
||||||
type StateContext: ?Sized + 'a;
|
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>;
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user