mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 15:11:02 +00:00
Assets Events for Deposited and Withdrawn (#4312)
Closes #4308 Polkadot address: 12gMhxHw8QjEwLQvnqsmMVY1z5gFa54vND74aMUbhhwN6mJR --------- Co-authored-by: command-bot <> Co-authored-by: Francisco Aguirre <franciscoaguirreperez@gmail.com>
This commit is contained in:
committed by
GitHub
parent
4875ea11ae
commit
1fb058b791
@@ -0,0 +1,19 @@
|
|||||||
|
title: Add `Deposited`/`Withdrawn` events for `pallet-assets`
|
||||||
|
|
||||||
|
doc:
|
||||||
|
- audience: Runtime Dev
|
||||||
|
description: |
|
||||||
|
New events were added to `pallet-assets`: `Deposited` and `Withdrawn`. Make sure
|
||||||
|
to cover those events on tests if necessary.
|
||||||
|
- audience: Runtime User
|
||||||
|
description: |
|
||||||
|
New events were added to `pallet-assets`: `Deposited` and `Withdrawn`. These indicate
|
||||||
|
a change in the balance of an account.
|
||||||
|
|
||||||
|
crates:
|
||||||
|
- name: pallet-assets
|
||||||
|
bump: minor
|
||||||
|
- name: pallet-asset-tx-payment
|
||||||
|
bump: minor
|
||||||
|
- name: pallet-asset-conversion-tx-payment
|
||||||
|
bump: minor
|
||||||
@@ -118,6 +118,22 @@ impl<T: Config<I>, I: 'static> fungibles::Balanced<<T as SystemConfig>::AccountI
|
|||||||
{
|
{
|
||||||
type OnDropCredit = fungibles::DecreaseIssuance<T::AccountId, Self>;
|
type OnDropCredit = fungibles::DecreaseIssuance<T::AccountId, Self>;
|
||||||
type OnDropDebt = fungibles::IncreaseIssuance<T::AccountId, Self>;
|
type OnDropDebt = fungibles::IncreaseIssuance<T::AccountId, Self>;
|
||||||
|
|
||||||
|
fn done_deposit(
|
||||||
|
asset_id: Self::AssetId,
|
||||||
|
who: &<T as SystemConfig>::AccountId,
|
||||||
|
amount: Self::Balance,
|
||||||
|
) {
|
||||||
|
Self::deposit_event(Event::Deposited { asset_id, who: who.clone(), amount })
|
||||||
|
}
|
||||||
|
|
||||||
|
fn done_withdraw(
|
||||||
|
asset_id: Self::AssetId,
|
||||||
|
who: &<T as SystemConfig>::AccountId,
|
||||||
|
amount: Self::Balance,
|
||||||
|
) {
|
||||||
|
Self::deposit_event(Event::Withdrawn { asset_id, who: who.clone(), amount })
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<T: Config<I>, I: 'static> fungibles::Unbalanced<T::AccountId> for Pallet<T, I> {
|
impl<T: Config<I>, I: 'static> fungibles::Unbalanced<T::AccountId> for Pallet<T, I> {
|
||||||
|
|||||||
@@ -571,6 +571,10 @@ pub mod pallet {
|
|||||||
Touched { asset_id: T::AssetId, who: T::AccountId, depositor: T::AccountId },
|
Touched { asset_id: T::AssetId, who: T::AccountId, depositor: T::AccountId },
|
||||||
/// Some account `who` was blocked.
|
/// Some account `who` was blocked.
|
||||||
Blocked { asset_id: T::AssetId, who: T::AccountId },
|
Blocked { asset_id: T::AssetId, who: T::AccountId },
|
||||||
|
/// Some assets were deposited (e.g. for transaction fees).
|
||||||
|
Deposited { asset_id: T::AssetId, who: T::AccountId, amount: T::Balance },
|
||||||
|
/// Some assets were withdrawn from the account (e.g. for transaction fees).
|
||||||
|
Withdrawn { asset_id: T::AssetId, who: T::AccountId, amount: T::Balance },
|
||||||
}
|
}
|
||||||
|
|
||||||
#[pallet::error]
|
#[pallet::error]
|
||||||
|
|||||||
@@ -90,6 +90,12 @@ fn deposit_from_set_types_works() {
|
|||||||
assert_eq!(First::<Assets>::balance((), &account2), 50);
|
assert_eq!(First::<Assets>::balance((), &account2), 50);
|
||||||
assert_eq!(First::<Assets>::total_issuance(()), 100);
|
assert_eq!(First::<Assets>::total_issuance(()), 100);
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(crate::Event::Deposited {
|
||||||
|
asset_id: asset1,
|
||||||
|
who: account2,
|
||||||
|
amount: 50,
|
||||||
|
}));
|
||||||
|
|
||||||
assert_eq!(imb.peek(), 50);
|
assert_eq!(imb.peek(), 50);
|
||||||
|
|
||||||
let (imb1, imb2) = imb.split(30);
|
let (imb1, imb2) = imb.split(30);
|
||||||
@@ -336,6 +342,12 @@ fn withdraw_from_set_types_works() {
|
|||||||
assert_eq!(First::<Assets>::balance((), &account2), 50);
|
assert_eq!(First::<Assets>::balance((), &account2), 50);
|
||||||
assert_eq!(First::<Assets>::total_issuance(()), 200);
|
assert_eq!(First::<Assets>::total_issuance(()), 200);
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(crate::Event::Withdrawn {
|
||||||
|
asset_id: asset1,
|
||||||
|
who: account2,
|
||||||
|
amount: 50,
|
||||||
|
}));
|
||||||
|
|
||||||
assert_eq!(imb.peek(), 50);
|
assert_eq!(imb.peek(), 50);
|
||||||
drop(imb);
|
drop(imb);
|
||||||
assert_eq!(First::<Assets>::total_issuance(()), 150);
|
assert_eq!(First::<Assets>::total_issuance(()), 150);
|
||||||
|
|||||||
@@ -201,6 +201,8 @@ fn transaction_payment_in_asset_possible() {
|
|||||||
.base_weight(Weight::from_parts(base_weight, 0))
|
.base_weight(Weight::from_parts(base_weight, 0))
|
||||||
.build()
|
.build()
|
||||||
.execute_with(|| {
|
.execute_with(|| {
|
||||||
|
System::set_block_number(1);
|
||||||
|
|
||||||
// create the asset
|
// create the asset
|
||||||
let asset_id = 1;
|
let asset_id = 1;
|
||||||
let min_balance = 2;
|
let min_balance = 2;
|
||||||
@@ -246,6 +248,12 @@ fn transaction_payment_in_asset_possible() {
|
|||||||
// check that fee was charged in the given asset
|
// check that fee was charged in the given asset
|
||||||
assert_eq!(Assets::balance(asset_id, caller), balance - fee_in_asset);
|
assert_eq!(Assets::balance(asset_id, caller), balance - fee_in_asset);
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(pallet_assets::Event::Withdrawn {
|
||||||
|
asset_id,
|
||||||
|
who: caller,
|
||||||
|
amount: fee_in_asset,
|
||||||
|
}));
|
||||||
|
|
||||||
assert_ok!(ChargeAssetTxPayment::<Runtime>::post_dispatch(
|
assert_ok!(ChargeAssetTxPayment::<Runtime>::post_dispatch(
|
||||||
Some(pre),
|
Some(pre),
|
||||||
&info_from_weight(WEIGHT_5), // estimated tx weight
|
&info_from_weight(WEIGHT_5), // estimated tx weight
|
||||||
@@ -385,6 +393,8 @@ fn asset_transaction_payment_with_tip_and_refund() {
|
|||||||
.base_weight(Weight::from_parts(base_weight, 0))
|
.base_weight(Weight::from_parts(base_weight, 0))
|
||||||
.build()
|
.build()
|
||||||
.execute_with(|| {
|
.execute_with(|| {
|
||||||
|
System::set_block_number(1);
|
||||||
|
|
||||||
// create the asset
|
// create the asset
|
||||||
let asset_id = 1;
|
let asset_id = 1;
|
||||||
let min_balance = 2;
|
let min_balance = 2;
|
||||||
@@ -434,6 +444,12 @@ fn asset_transaction_payment_with_tip_and_refund() {
|
|||||||
)
|
)
|
||||||
.unwrap();
|
.unwrap();
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(pallet_assets::Event::Withdrawn {
|
||||||
|
asset_id,
|
||||||
|
who: caller,
|
||||||
|
amount: fee_in_asset,
|
||||||
|
}));
|
||||||
|
|
||||||
assert_ok!(ChargeAssetTxPayment::<Runtime>::post_dispatch(
|
assert_ok!(ChargeAssetTxPayment::<Runtime>::post_dispatch(
|
||||||
Some(pre),
|
Some(pre),
|
||||||
&info_from_weight(WEIGHT_100),
|
&info_from_weight(WEIGHT_100),
|
||||||
@@ -451,6 +467,12 @@ fn asset_transaction_payment_with_tip_and_refund() {
|
|||||||
balance - fee_in_asset + expected_token_refund
|
balance - fee_in_asset + expected_token_refund
|
||||||
);
|
);
|
||||||
assert_eq!(Balances::free_balance(caller), 20 * balance_factor);
|
assert_eq!(Balances::free_balance(caller), 20 * balance_factor);
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(pallet_assets::Event::Deposited {
|
||||||
|
asset_id,
|
||||||
|
who: caller,
|
||||||
|
amount: expected_token_refund,
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -157,6 +157,8 @@ fn transaction_payment_in_asset_possible() {
|
|||||||
.base_weight(Weight::from_parts(base_weight, 0))
|
.base_weight(Weight::from_parts(base_weight, 0))
|
||||||
.build()
|
.build()
|
||||||
.execute_with(|| {
|
.execute_with(|| {
|
||||||
|
System::set_block_number(1);
|
||||||
|
|
||||||
// create the asset
|
// create the asset
|
||||||
let asset_id = 1;
|
let asset_id = 1;
|
||||||
let min_balance = 2;
|
let min_balance = 2;
|
||||||
@@ -188,6 +190,12 @@ fn transaction_payment_in_asset_possible() {
|
|||||||
assert_eq!(Assets::balance(asset_id, caller), balance - fee);
|
assert_eq!(Assets::balance(asset_id, caller), balance - fee);
|
||||||
assert_eq!(Assets::balance(asset_id, BLOCK_AUTHOR), 0);
|
assert_eq!(Assets::balance(asset_id, BLOCK_AUTHOR), 0);
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(pallet_assets::Event::Withdrawn {
|
||||||
|
asset_id,
|
||||||
|
who: caller,
|
||||||
|
amount: fee,
|
||||||
|
}));
|
||||||
|
|
||||||
assert_ok!(ChargeAssetTxPayment::<Runtime>::post_dispatch(
|
assert_ok!(ChargeAssetTxPayment::<Runtime>::post_dispatch(
|
||||||
Some(pre),
|
Some(pre),
|
||||||
&info_from_weight(Weight::from_parts(weight, 0)),
|
&info_from_weight(Weight::from_parts(weight, 0)),
|
||||||
@@ -198,6 +206,12 @@ fn transaction_payment_in_asset_possible() {
|
|||||||
assert_eq!(Assets::balance(asset_id, caller), balance - fee);
|
assert_eq!(Assets::balance(asset_id, caller), balance - fee);
|
||||||
// check that the block author gets rewarded
|
// check that the block author gets rewarded
|
||||||
assert_eq!(Assets::balance(asset_id, BLOCK_AUTHOR), fee);
|
assert_eq!(Assets::balance(asset_id, BLOCK_AUTHOR), fee);
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(pallet_assets::Event::Deposited {
|
||||||
|
asset_id,
|
||||||
|
who: BLOCK_AUTHOR,
|
||||||
|
amount: fee,
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -263,6 +277,8 @@ fn asset_transaction_payment_with_tip_and_refund() {
|
|||||||
.base_weight(Weight::from_parts(base_weight, 0))
|
.base_weight(Weight::from_parts(base_weight, 0))
|
||||||
.build()
|
.build()
|
||||||
.execute_with(|| {
|
.execute_with(|| {
|
||||||
|
System::set_block_number(1);
|
||||||
|
|
||||||
// create the asset
|
// create the asset
|
||||||
let asset_id = 1;
|
let asset_id = 1;
|
||||||
let min_balance = 2;
|
let min_balance = 2;
|
||||||
@@ -292,6 +308,12 @@ fn asset_transaction_payment_with_tip_and_refund() {
|
|||||||
.unwrap();
|
.unwrap();
|
||||||
assert_eq!(Assets::balance(asset_id, caller), balance - fee_with_tip);
|
assert_eq!(Assets::balance(asset_id, caller), balance - fee_with_tip);
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(pallet_assets::Event::Withdrawn {
|
||||||
|
asset_id,
|
||||||
|
who: caller,
|
||||||
|
amount: fee_with_tip,
|
||||||
|
}));
|
||||||
|
|
||||||
let final_weight = 50;
|
let final_weight = 50;
|
||||||
assert_ok!(ChargeAssetTxPayment::<Runtime>::post_dispatch(
|
assert_ok!(ChargeAssetTxPayment::<Runtime>::post_dispatch(
|
||||||
Some(pre),
|
Some(pre),
|
||||||
@@ -304,6 +326,12 @@ fn asset_transaction_payment_with_tip_and_refund() {
|
|||||||
fee_with_tip - (weight - final_weight) * min_balance / ExistentialDeposit::get();
|
fee_with_tip - (weight - final_weight) * min_balance / ExistentialDeposit::get();
|
||||||
assert_eq!(Assets::balance(asset_id, caller), balance - (final_fee));
|
assert_eq!(Assets::balance(asset_id, caller), balance - (final_fee));
|
||||||
assert_eq!(Assets::balance(asset_id, BLOCK_AUTHOR), final_fee);
|
assert_eq!(Assets::balance(asset_id, BLOCK_AUTHOR), final_fee);
|
||||||
|
|
||||||
|
System::assert_has_event(RuntimeEvent::Assets(pallet_assets::Event::Deposited {
|
||||||
|
asset_id,
|
||||||
|
who: caller,
|
||||||
|
amount: fee_with_tip - final_fee,
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user