diff --git a/src/ethash.rs b/src/ethash.rs new file mode 100644 index 000000000..26fdc7cc9 --- /dev/null +++ b/src/ethash.rs @@ -0,0 +1,22 @@ +use engine::Engine; +use spec::Spec; +use evm_schedule::EvmSchedule; +use env_info::EnvInfo; + +/// Engine using Ethash proof-of-work consensus algorithm, suitable for Ethereum +/// mainnet chains in the Olympic, Frontier and Homestead eras. +pub struct Ethash { + spec: Spec, +} + +impl Ethash { + pub fn new_boxed(spec: Spec) -> Box { + Box::new(NullEngine{spec: spec}) + } +} + +impl Engine for NullEngine { + fn name(&self) -> &str { "Ethash" } + fn spec(&self) -> &Spec { &self.spec } + fn evm_schedule(&self, _env_info: &EnvInfo) -> EvmSchedule { EvmSchedule::new_frontier() } +} diff --git a/src/spec.rs b/src/spec.rs index 82a8cbc3f..0550fd409 100644 --- a/src/spec.rs +++ b/src/spec.rs @@ -93,6 +93,7 @@ impl Spec { pub fn to_engine(self) -> Result, EthcoreError> { match self.engine_name.as_ref() { "NullEngine" => Ok(NullEngine::new_boxed(self)), + "Ethash" => Ok(Ethash::new_boxed(self)), _ => Err(EthcoreError::UnknownName) } }