Fix transaction payment runtime api (#6792)

The transaction payment runtime api used its own extrinsic generic
parameter. This is wrong, because this resulted in using always the
native extrinsic. If there was a runtime upgrade that changed the
extrinsic in some way, it would result in the api breaking. The correct
way is to use the `Extrinsic` from the `Block` parameter. This is on the
node side the opaque extrinsic and on the runtime side the real extrinsic.
This commit is contained in:
Bastian Köcher
2020-08-03 10:46:53 +02:00
committed by GitHub
parent 1365eef4c1
commit 02c879ec49
4 changed files with 8 additions and 12 deletions
@@ -56,11 +56,10 @@ fn deserialize_from_string<'de, D: Deserializer<'de>, T: std::str::FromStr>(dese
}
sp_api::decl_runtime_apis! {
pub trait TransactionPaymentApi<Balance, Extrinsic> where
pub trait TransactionPaymentApi<Balance> where
Balance: Codec + MaybeDisplay + MaybeFromStr,
Extrinsic: Codec,
{
fn query_info(uxt: Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance>;
fn query_info(uxt: Block::Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance>;
}
}