mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-24 17:11:05 +00:00
Add Event to Pallet Asset-Tx-Payment (#11690)
* Add Event to Pallet Asset-Tx-Payment * add asset_id into the Event Co-authored-by: parity-processbot <>
This commit is contained in:
@@ -456,6 +456,7 @@ impl pallet_transaction_payment::Config for Runtime {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl pallet_asset_tx_payment::Config for Runtime {
|
impl pallet_asset_tx_payment::Config for Runtime {
|
||||||
|
type Event = Event;
|
||||||
type Fungibles = Assets;
|
type Fungibles = Assets;
|
||||||
type OnChargeAssetTransaction = pallet_asset_tx_payment::FungiblesAdapter<
|
type OnChargeAssetTransaction = pallet_asset_tx_payment::FungiblesAdapter<
|
||||||
pallet_assets::BalanceToAssetBalance<Balances, Runtime, ConvertInto>,
|
pallet_assets::BalanceToAssetBalance<Balances, Runtime, ConvertInto>,
|
||||||
|
|||||||
@@ -113,6 +113,8 @@ pub mod pallet {
|
|||||||
|
|
||||||
#[pallet::config]
|
#[pallet::config]
|
||||||
pub trait Config: frame_system::Config + pallet_transaction_payment::Config {
|
pub trait Config: frame_system::Config + pallet_transaction_payment::Config {
|
||||||
|
/// The overarching event type.
|
||||||
|
type Event: From<Event<Self>> + IsType<<Self as frame_system::Config>::Event>;
|
||||||
/// The fungibles instance used to pay for transactions in assets.
|
/// The fungibles instance used to pay for transactions in assets.
|
||||||
type Fungibles: Balanced<Self::AccountId>;
|
type Fungibles: Balanced<Self::AccountId>;
|
||||||
/// The actual transaction charging logic that charges the fees.
|
/// The actual transaction charging logic that charges the fees.
|
||||||
@@ -122,6 +124,19 @@ pub mod pallet {
|
|||||||
#[pallet::pallet]
|
#[pallet::pallet]
|
||||||
#[pallet::generate_store(pub(super) trait Store)]
|
#[pallet::generate_store(pub(super) trait Store)]
|
||||||
pub struct Pallet<T>(_);
|
pub struct Pallet<T>(_);
|
||||||
|
|
||||||
|
#[pallet::event]
|
||||||
|
#[pallet::generate_deposit(pub(super) fn deposit_event)]
|
||||||
|
pub enum Event<T: Config> {
|
||||||
|
/// A transaction fee `actual_fee`, of which `tip` was added to the minimum inclusion fee,
|
||||||
|
/// has been paid by `who` in an asset `asset_id`.
|
||||||
|
AssetTxFeePaid {
|
||||||
|
who: T::AccountId,
|
||||||
|
actual_fee: BalanceOf<T>,
|
||||||
|
tip: BalanceOf<T>,
|
||||||
|
asset_id: Option<ChargeAssetIdOf<T>>,
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Require the transactor pay for themselves and maybe include a tip to gain additional priority
|
/// Require the transactor pay for themselves and maybe include a tip to gain additional priority
|
||||||
@@ -213,6 +228,8 @@ where
|
|||||||
Self::AccountId,
|
Self::AccountId,
|
||||||
// imbalance resulting from withdrawing the fee
|
// imbalance resulting from withdrawing the fee
|
||||||
InitialPayment<T>,
|
InitialPayment<T>,
|
||||||
|
// asset_id for the transaction payment
|
||||||
|
Option<ChargeAssetIdOf<T>>,
|
||||||
);
|
);
|
||||||
|
|
||||||
fn additional_signed(&self) -> sp_std::result::Result<(), TransactionValidityError> {
|
fn additional_signed(&self) -> sp_std::result::Result<(), TransactionValidityError> {
|
||||||
@@ -240,7 +257,7 @@ where
|
|||||||
len: usize,
|
len: usize,
|
||||||
) -> Result<Self::Pre, TransactionValidityError> {
|
) -> Result<Self::Pre, TransactionValidityError> {
|
||||||
let (_fee, initial_payment) = self.withdraw_fee(who, call, info, len)?;
|
let (_fee, initial_payment) = self.withdraw_fee(who, call, info, len)?;
|
||||||
Ok((self.tip, who.clone(), initial_payment))
|
Ok((self.tip, who.clone(), initial_payment, self.asset_id))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn post_dispatch(
|
fn post_dispatch(
|
||||||
@@ -250,7 +267,7 @@ where
|
|||||||
len: usize,
|
len: usize,
|
||||||
result: &DispatchResult,
|
result: &DispatchResult,
|
||||||
) -> Result<(), TransactionValidityError> {
|
) -> Result<(), TransactionValidityError> {
|
||||||
if let Some((tip, who, initial_payment)) = pre {
|
if let Some((tip, who, initial_payment, asset_id)) = pre {
|
||||||
match initial_payment {
|
match initial_payment {
|
||||||
InitialPayment::Native(already_withdrawn) => {
|
InitialPayment::Native(already_withdrawn) => {
|
||||||
pallet_transaction_payment::ChargeTransactionPayment::<T>::post_dispatch(
|
pallet_transaction_payment::ChargeTransactionPayment::<T>::post_dispatch(
|
||||||
@@ -273,6 +290,12 @@ where
|
|||||||
tip.into(),
|
tip.into(),
|
||||||
already_withdrawn.into(),
|
already_withdrawn.into(),
|
||||||
)?;
|
)?;
|
||||||
|
Pallet::<T>::deposit_event(Event::<T>::AssetTxFeePaid {
|
||||||
|
who,
|
||||||
|
actual_fee,
|
||||||
|
tip,
|
||||||
|
asset_id,
|
||||||
|
});
|
||||||
},
|
},
|
||||||
InitialPayment::Nothing => {
|
InitialPayment::Nothing => {
|
||||||
// `actual_fee` should be zero here for any signed extrinsic. It would be
|
// `actual_fee` should be zero here for any signed extrinsic. It would be
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ frame_support::construct_runtime!(
|
|||||||
TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event<T>},
|
TransactionPayment: pallet_transaction_payment::{Pallet, Storage, Event<T>},
|
||||||
Assets: pallet_assets::{Pallet, Call, Storage, Event<T>},
|
Assets: pallet_assets::{Pallet, Call, Storage, Event<T>},
|
||||||
Authorship: pallet_authorship::{Pallet, Call, Storage},
|
Authorship: pallet_authorship::{Pallet, Call, Storage},
|
||||||
AssetTxPayment: pallet_asset_tx_payment::{Pallet},
|
AssetTxPayment: pallet_asset_tx_payment::{Pallet, Event<T>},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -198,6 +198,7 @@ impl HandleCredit<AccountId, Assets> for CreditToBlockAuthor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl Config for Runtime {
|
impl Config for Runtime {
|
||||||
|
type Event = Event;
|
||||||
type Fungibles = Assets;
|
type Fungibles = Assets;
|
||||||
type OnChargeAssetTransaction = FungiblesAdapter<
|
type OnChargeAssetTransaction = FungiblesAdapter<
|
||||||
pallet_assets::BalanceToAssetBalance<Balances, Runtime, ConvertInto>,
|
pallet_assets::BalanceToAssetBalance<Balances, Runtime, ConvertInto>,
|
||||||
@@ -663,7 +664,7 @@ fn post_dispatch_fee_is_zero_if_pre_dispatch_fee_is_zero() {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
// `Pays::No` implies no pre-dispatch fees
|
// `Pays::No` implies no pre-dispatch fees
|
||||||
assert_eq!(Assets::balance(asset_id, caller), balance);
|
assert_eq!(Assets::balance(asset_id, caller), balance);
|
||||||
let (_tip, _who, initial_payment) = ⪯
|
let (_tip, _who, initial_payment, _asset_id) = ⪯
|
||||||
let not_paying = match initial_payment {
|
let not_paying = match initial_payment {
|
||||||
&InitialPayment::Nothing => true,
|
&InitialPayment::Nothing => true,
|
||||||
_ => false,
|
_ => false,
|
||||||
|
|||||||
Reference in New Issue
Block a user