eth_getBlockXXX takes into account include_tx param
This commit is contained in:
parent
90f965cf53
commit
a0451a3cb5
@ -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)
|
||||
},
|
||||
|
@ -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
|
||||
}
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user