eth_getBlockXXX takes into account include_tx param

This commit is contained in:
debris 2016-02-08 12:13:05 +01:00
parent 90f965cf53
commit a0451a3cb5
3 changed files with 33 additions and 9 deletions

View File

@ -23,7 +23,7 @@ use util::sha3::*;
use ethcore::client::*;
use ethcore::views::*;
use v1::traits::{Eth, EthFilter};
use v1::types::{Block, BlockNumber, Bytes, SyncStatus};
use v1::types::{Block, BlockTransactions, BlockNumber, Bytes, SyncStatus};
/// Eth rpc implementation.
pub struct EthClient {
@ -125,7 +125,7 @@ impl Eth for EthClient {
fn block(&self, params: Params) -> Result<Value, Error> {
match from_params::<(H256, bool)>(params) {
Ok((hash, _include_txs)) => match (self.client.block_header(&hash), self.client.block_total_difficulty(&hash)) {
Ok((hash, include_txs)) => match (self.client.block_header(&hash), self.client.block_total_difficulty(&hash)) {
(Some(bytes), Some(total_difficulty)) => {
let view = HeaderView::new(&bytes);
let block = Block {
@ -145,7 +145,14 @@ impl Eth for EthClient {
difficulty: view.difficulty(),
total_difficulty: total_difficulty,
uncles: vec![],
transactions: vec![]
transactions: {
if include_txs {
BlockTransactions::Hashes(vec![])
} else {
BlockTransactions::Full(vec![])
}
},
extra_data: Bytes::default()
};
to_value(&block)
},

View File

@ -14,10 +14,28 @@
// You should have received a copy of the GNU General Public License
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
use serde::{Serialize, Serializer};
use util::hash::*;
use util::uint::*;
use v1::types::{Bytes, Transaction};
#[derive(Default, Debug, Serialize)]
#[derive(Debug)]
pub enum BlockTransactions {
Hashes(Vec<U256>),
Full(Vec<Transaction>)
}
impl Serialize for BlockTransactions {
fn serialize<S>(&self, serializer: &mut S) -> Result<(), S::Error>
where S: Serializer {
match *self {
BlockTransactions::Hashes(ref hashes) => hashes.serialize(serializer),
BlockTransactions::Full(ref ts) => ts.serialize(serializer)
}
}
}
#[derive(Debug, Serialize)]
pub struct Block {
pub hash: H256,
#[serde(rename="parentHash")]
@ -38,9 +56,8 @@ pub struct Block {
pub gas_used: U256,
#[serde(rename="gasLimit")]
pub gas_limit: U256,
// TODO: figure out how to properly serialize bytes
//#[serde(rename="extraData")]
//extra_data: Vec<u8>,
#[serde(rename="extraData")]
pub extra_data: Bytes,
#[serde(rename="logsBloom")]
pub logs_bloom: H2048,
pub timestamp: U256,
@ -48,5 +65,5 @@ pub struct Block {
#[serde(rename="totalDifficulty")]
pub total_difficulty: U256,
pub uncles: Vec<U256>,
pub transactions: Vec<U256>
pub transactions: BlockTransactions
}

View File

@ -20,7 +20,7 @@ mod bytes;
mod sync;
mod transaction;
pub use self::block::Block;
pub use self::block::{Block, BlockTransactions};
pub use self::block_number::BlockNumber;
pub use self::bytes::Bytes;
pub use self::sync::SyncStatus;