From 46f3b5f9137c67fdcd63ec8ff6a5ac0813844da3 Mon Sep 17 00:00:00 2001 From: Gav Wood Date: Thu, 19 May 2016 00:41:41 +0200 Subject: [PATCH] Fix up the seal fields in RPC output. (#1096) Make Ethash::extra_info() work. Seal fields now decode the RLP. --- ethcore/src/ethereum/ethash.rs | 4 +++- rpc/src/v1/impls/eth.rs | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/ethcore/src/ethereum/ethash.rs b/ethcore/src/ethereum/ethash.rs index e7a378483..0cf436d7c 100644 --- a/ethcore/src/ethereum/ethash.rs +++ b/ethcore/src/ethereum/ethash.rs @@ -93,7 +93,9 @@ impl Engine for Ethash { } /// Additional engine-specific information for the user/developer concerning `header`. - fn extra_info(&self, _header: &Header) -> HashMap { HashMap::new() } + fn extra_info(&self, header: &Header) -> HashMap { + hash_map!["nonce".to_owned() => format!("0x{}", header.nonce().hex()), "mixHash".to_owned() => format!("0x{}", header.mix_hash().hex())] + } fn vm_factory(&self) -> &Factory { &self.factory diff --git a/rpc/src/v1/impls/eth.rs b/rpc/src/v1/impls/eth.rs index 6fddf7b4f..6222d000d 100644 --- a/rpc/src/v1/impls/eth.rs +++ b/rpc/src/v1/impls/eth.rs @@ -27,7 +27,7 @@ use jsonrpc_core::*; use util::numbers::*; use util::sha3::*; use util::bytes::{ToPretty}; -use util::rlp::{encode, UntrustedRlp, View}; +use util::rlp::{encode, decode, UntrustedRlp, View}; use ethcore::client::*; use ethcore::block::IsBlock; use ethcore::views::*; @@ -97,7 +97,7 @@ impl EthClient timestamp: U256::from(view.timestamp()), difficulty: view.difficulty(), total_difficulty: total_difficulty, - seal_fields: view.seal().into_iter().map(Bytes::new).collect(), + seal_fields: view.seal().into_iter().map(|f| decode(&f)).map(Bytes::new).collect(), uncles: block_view.uncle_hashes(), transactions: { if include_txs { @@ -142,7 +142,7 @@ impl EthClient total_difficulty: uncle.difficulty + parent_difficulty, receipts_root: uncle.receipts_root, extra_data: Bytes::new(uncle.extra_data), - seal_fields: uncle.seal.into_iter().map(Bytes::new).collect(), + seal_fields: uncle.seal.into_iter().map(|f| decode(&f)).map(Bytes::new).collect(), uncles: vec![], transactions: BlockTransactions::Hashes(vec![]), };