Fix transaction submission for hex (#259)

* Fix transaction submission for hex

* Fix grumbles.
This commit is contained in:
Gav Wood
2018-06-28 16:42:25 +02:00
committed by GitHub
parent 079a448454
commit 5ed1549bee
7 changed files with 54 additions and 5 deletions
+12 -3
View File
@@ -20,7 +20,9 @@ use std::sync::Arc;
use client::{self, Client};
use extrinsic_pool::api::{Error, ExtrinsicPool};
use codec::Slicable;
use primitives::Bytes;
use runtime_primitives::{generic, traits::Block as BlockT};
use state_machine;
@@ -35,8 +37,11 @@ build_rpc_trait! {
/// Substrate authoring RPC API
pub trait AuthorApi<Hash, Extrinsic> {
/// Submit extrinsic for inclusion in block.
#[rpc(name = "author_submitRichExtrinsic")]
fn submit_rich_extrinsic(&self, Extrinsic) -> Result<Hash>;
/// Submit hex-encoded extrinsic for inclusion in block.
#[rpc(name = "author_submitExtrinsic")]
fn submit_extrinsic(&self, Extrinsic) -> Result<Hash>;
fn submit_extrinsic(&self, Bytes) -> Result<Hash>;
}
}
@@ -55,7 +60,6 @@ impl<B, E, Block: BlockT, P> Author<B, E, Block, P> {
}
}
impl<B, E, Block, P, Ex, Hash> AuthorApi<Hash, Ex> for Author<B, E, Block, P> where
B: client::backend::Backend<Block> + Send + Sync + 'static,
E: client::CallExecutor<Block> + Send + Sync + 'static,
@@ -63,8 +67,13 @@ impl<B, E, Block, P, Ex, Hash> AuthorApi<Hash, Ex> for Author<B, E, Block, P> wh
client::error::Error: From<<<B as client::backend::Backend<Block>>::State as state_machine::backend::Backend>::Error>,
P: ExtrinsicPool<Ex, generic::BlockId<Block>, Hash>,
P::Error: 'static,
Ex: Slicable,
{
fn submit_extrinsic(&self, xt: Ex) -> Result<Hash> {
fn submit_extrinsic(&self, xt: Bytes) -> Result<Hash> {
self.submit_rich_extrinsic(Ex::decode(&mut &xt[..]).ok_or(error::Error::from(error::ErrorKind::BadFormat))?)
}
fn submit_rich_extrinsic(&self, xt: Ex) -> Result<Hash> {
let best_block_hash = self.client.info().unwrap().chain.best_hash;
self.pool
.submit(generic::BlockId::hash(best_block_hash), vec![xt])