mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-12 15:51:12 +00:00
Add WeightToFee and LengthToFee impls to transaction-payment Runtime API (#13110)
* Add WeightToFee and LengthToFee impls to RPC * Remove RPC additions * Update frame/transaction-payment/rpc/runtime-api/src/lib.rs Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> * Add comments to length_to_fee and weight_to_fee Co-authored-by: joe petrowski <25483142+joepetrowski@users.noreply.github.com> Co-authored-by: Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io>
This commit is contained in:
@@ -477,6 +477,12 @@ impl_runtime_apis! {
|
||||
) -> pallet_transaction_payment::FeeDetails<Balance> {
|
||||
TransactionPayment::query_fee_details(uxt, len)
|
||||
}
|
||||
fn query_weight_to_fee(weight: Weight) -> Balance {
|
||||
TransactionPayment::weight_to_fee(weight)
|
||||
}
|
||||
fn query_length_to_fee(length: u32) -> Balance {
|
||||
TransactionPayment::length_to_fee(length)
|
||||
}
|
||||
}
|
||||
|
||||
impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentCallApi<Block, Balance, RuntimeCall>
|
||||
@@ -494,6 +500,12 @@ impl_runtime_apis! {
|
||||
) -> pallet_transaction_payment::FeeDetails<Balance> {
|
||||
TransactionPayment::query_call_fee_details(call, len)
|
||||
}
|
||||
fn query_weight_to_fee(weight: Weight) -> Balance {
|
||||
TransactionPayment::weight_to_fee(weight)
|
||||
}
|
||||
fn query_length_to_fee(length: u32) -> Balance {
|
||||
TransactionPayment::length_to_fee(length)
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "runtime-benchmarks")]
|
||||
|
||||
@@ -2120,6 +2120,12 @@ impl_runtime_apis! {
|
||||
fn query_fee_details(uxt: <Block as BlockT>::Extrinsic, len: u32) -> FeeDetails<Balance> {
|
||||
TransactionPayment::query_fee_details(uxt, len)
|
||||
}
|
||||
fn query_weight_to_fee(weight: Weight) -> Balance {
|
||||
TransactionPayment::weight_to_fee(weight)
|
||||
}
|
||||
fn query_length_to_fee(length: u32) -> Balance {
|
||||
TransactionPayment::length_to_fee(length)
|
||||
}
|
||||
}
|
||||
|
||||
impl pallet_transaction_payment_rpc_runtime_api::TransactionPaymentCallApi<Block, Balance, RuntimeCall>
|
||||
@@ -2131,6 +2137,12 @@ impl_runtime_apis! {
|
||||
fn query_call_fee_details(call: RuntimeCall, len: u32) -> FeeDetails<Balance> {
|
||||
TransactionPayment::query_call_fee_details(call, len)
|
||||
}
|
||||
fn query_weight_to_fee(weight: Weight) -> Balance {
|
||||
TransactionPayment::weight_to_fee(weight)
|
||||
}
|
||||
fn query_length_to_fee(length: u32) -> Balance {
|
||||
TransactionPayment::length_to_fee(length)
|
||||
}
|
||||
}
|
||||
|
||||
impl pallet_mmr::primitives::MmrApi<
|
||||
|
||||
@@ -25,7 +25,7 @@ use sp_runtime::traits::MaybeDisplay;
|
||||
pub use pallet_transaction_payment::{FeeDetails, InclusionFee, RuntimeDispatchInfo};
|
||||
|
||||
sp_api::decl_runtime_apis! {
|
||||
#[api_version(2)]
|
||||
#[api_version(3)]
|
||||
pub trait TransactionPaymentApi<Balance> where
|
||||
Balance: Codec + MaybeDisplay,
|
||||
{
|
||||
@@ -33,9 +33,11 @@ sp_api::decl_runtime_apis! {
|
||||
fn query_info(uxt: Block::Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance, sp_weights::OldWeight>;
|
||||
fn query_info(uxt: Block::Extrinsic, len: u32) -> RuntimeDispatchInfo<Balance>;
|
||||
fn query_fee_details(uxt: Block::Extrinsic, len: u32) -> FeeDetails<Balance>;
|
||||
fn query_weight_to_fee(weight: sp_weights::Weight) -> Balance;
|
||||
fn query_length_to_fee(length: u32) -> Balance;
|
||||
}
|
||||
|
||||
#[api_version(2)]
|
||||
#[api_version(3)]
|
||||
pub trait TransactionPaymentCallApi<Balance, Call>
|
||||
where
|
||||
Balance: Codec + MaybeDisplay,
|
||||
@@ -46,5 +48,11 @@ sp_api::decl_runtime_apis! {
|
||||
|
||||
/// Query fee details of a given encoded `Call`.
|
||||
fn query_call_fee_details(call: Call, len: u32) -> FeeDetails<Balance>;
|
||||
|
||||
/// Query the output of the current `WeightToFee` given some input.
|
||||
fn query_weight_to_fee(weight: sp_weights::Weight) -> Balance;
|
||||
|
||||
/// Query the output of the current `LengthToFee` given some input.
|
||||
fn query_length_to_fee(length: u32) -> Balance;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -612,11 +612,14 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
fn length_to_fee(length: u32) -> BalanceOf<T> {
|
||||
/// Compute the length portion of a fee by invoking the configured `LengthToFee` impl.
|
||||
pub fn length_to_fee(length: u32) -> BalanceOf<T> {
|
||||
T::LengthToFee::weight_to_fee(&Weight::from_ref_time(length as u64))
|
||||
}
|
||||
|
||||
fn weight_to_fee(weight: Weight) -> BalanceOf<T> {
|
||||
/// Compute the unadjusted portion of the weight fee by invoking the configured `WeightToFee`
|
||||
/// impl. Note that the input `weight` is capped by the maximum block weight before computation.
|
||||
pub fn weight_to_fee(weight: Weight) -> BalanceOf<T> {
|
||||
// cap the weight to the maximum defined in runtime, otherwise it will be the
|
||||
// `Bounded` maximum of its data type, which is not desired.
|
||||
let capped_weight = weight.min(T::BlockWeights::get().max_block);
|
||||
|
||||
Reference in New Issue
Block a user