git.delta.rocks / unique-network / refs/commits / 8e203a5f1b32

difftreelog

Merge pull request #42 from usetech-llc/feature/NFTPAR-197_errors_in_ui

str-mv2020-12-21parents: #ed290c7 #7481ebb.patch.diff
in: master
Fix tx validity check in signed extension (NFTPAR-197)

3 files changed

modifiedpallets/nft/src/lib.rsdiffbeforeafterboth
29use sp_runtime::sp_std::prelude::Vec;29use sp_runtime::sp_std::prelude::Vec;
30use sp_runtime::{30use sp_runtime::{
31 traits::{31 traits::{
32 DispatchInfoOf, Dispatchable, PostDispatchInfoOf, Saturating, SignedExtension, Zero,32 DispatchInfoOf, Dispatchable, PostDispatchInfoOf, Saturating, SaturatedConversion, SignedExtension, Zero,
33 },33 },
34 transaction_validity::{34 transaction_validity::{
35 InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction,35 TransactionPriority, InvalidTransaction, TransactionValidity, TransactionValidityError, ValidTransaction,
36 },36 },
37 FixedPointOperand, FixedU128,37 FixedPointOperand, FixedU128,
38};38};
2302 <transaction_payment::Module<T>>::compute_fee(len as u32, info, tip)2302 <transaction_payment::Module<T>>::compute_fee(len as u32, info, tip)
2303 }2303 }
2304
2305 fn get_priority(len: usize, info: &DispatchInfoOf<T::Call>, final_fee: BalanceOf<T>) -> TransactionPriority {
2306 let weight_saturation = T::MaximumBlockWeight::get() / info.weight.max(1);
2307 let len_saturation = T::MaximumBlockLength::get() as u64 / (len as u64).max(1);
2308 let coefficient: BalanceOf<T> = weight_saturation.min(len_saturation).saturated_into::<BalanceOf<T>>();
2309 final_fee.saturating_mul(coefficient).saturated_into::<TransactionPriority>()
2310 }
23042311
2305 fn withdraw_fee(2312 fn withdraw_fee(
2306 &self,2313 &self,
25252532
2526 fn validate(2533 fn validate(
2527 &self,2534 &self,
2528 _who: &Self::AccountId,2535 who: &Self::AccountId,
2529 _call: &Self::Call,2536 call: &Self::Call,
2530 _info: &DispatchInfoOf<Self::Call>,2537 info: &DispatchInfoOf<Self::Call>,
2531 _len: usize,2538 len: usize,
2532 ) -> TransactionValidity {2539 ) -> TransactionValidity {
2540 let (fee, _) = self.withdraw_fee(who, call, info, len)?;
2533 Ok(ValidTransaction::default())2541 Ok(ValidTransaction {
2542 priority: Self::get_priority(len, info, fee),
2543 ..Default::default()
2544 })
2534 }2545 }
25352546
2536 fn pre_dispatch(2547 fn pre_dispatch(
modifiedtests/src/accounts.tsdiffbeforeafterboth
1export const bobsPublicKey = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';1export const bobsPublicKey = '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty';
2export const alicesPublicKey = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';2export const alicesPublicKey = '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY';
3export const ferdiesPublicKey = '5CiPPseXPECbkjWCa6MnjNokrgYjMqmKndv2rSnekmSK2DjL';
34
modifiedtests/src/transfer.test.tsdiffbeforeafterboth
1import { expect } from "chai";1import { expect, assert } from "chai";
2import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";2import { default as usingApi, submitTransactionAsync } from "./substrate/substrate-api";
3import { alicesPublicKey, bobsPublicKey } from "./accounts";3import { alicesPublicKey, bobsPublicKey, ferdiesPublicKey } from "./accounts";
4import privateKey from "./substrate/privateKey";4import privateKey from "./substrate/privateKey";
5import getBalance from "./substrate/get-balance";5import getBalance from "./substrate/get-balance";
66
21 });21 });
22 });22 });
23
24 it('Inability to pay fees error message is correct', async () => {
25 await usingApi(async api => {
26 const pk = privateKey('//Ferdie');
27
28 console.log = function () {};
29 console.error = function () {};
30
31 const badTransfer = api.tx.balances.transfer(bobsPublicKey, 1n);
32 const badTransaction = async function () {
33 const result = await submitTransactionAsync(pk, badTransfer);
34 };
35 await expect(badTransaction()).to.be.rejectedWith("Inability to pay some fees");
36
37 delete console.log;
38 delete console.error;
39 });
40 });
23});41});
2442