diff --git a/js-packages/tests/creditFeesToTreasury.seqtest.ts b/js-packages/tests/creditFeesToTreasury.seqtest.ts index 483cd6c07c..b13b174de8 100644 --- a/js-packages/tests/creditFeesToTreasury.seqtest.ts +++ b/js-packages/tests/creditFeesToTreasury.seqtest.ts @@ -33,7 +33,7 @@ function skipInflationBlock(api: ApiPromise): Promise { const blockInterval = inflationBlockInterval.toNumber(); const unsubscribe = await api.rpc.chain.subscribeNewHeads(head => { const currentBlock = head.number.toNumber(); - if(currentBlock % blockInterval < blockInterval - 10) { + if(currentBlock % blockInterval < blockInterval - 2) { unsubscribe(); resolve(); } else { diff --git a/js-packages/tests/inflation.seqtest.ts b/js-packages/tests/inflation.seqtest.ts index 1dae08096f..4af110b55c 100644 --- a/js-packages/tests/inflation.seqtest.ts +++ b/js-packages/tests/inflation.seqtest.ts @@ -17,6 +17,8 @@ import type {IKeyringPair} from '@polkadot/types/types'; import {expect, itSub, usingPlaygrounds} from './util/index.js'; +const TREASURY = '5EYCAe5ijiYfyeZ2JJCGq56LmPyNRAKzpG4QkoQkkQNB5e6Z'; + // todo:playgrounds requires sudo, look into on the later stage describe('integration test: Inflation', () => { let superuser: IKeyringPair; @@ -55,4 +57,23 @@ describe('integration test: Inflation', () => { expect(Math.abs(Number(expectedInflation))).to.be.lessThanOrEqual(tolerance); }); + + itSub('Inflation happens after inflation block interval', async ({helper}) => { + const api = helper.getApi(); + const blockInterval = await api.consts.inflation.inflationBlockInterval.toNumber(); + + const relayBlock = (await api.query.parachainSystem.lastRelayChainBlockNumber()).toNumber(); + await helper.executeExtrinsic(superuser, 'api.tx.sudo.sudo', [helper.constructApiCall('api.tx.inflation.startInflation', [relayBlock])]); + const blockInflation = (await helper.callRpc('api.query.inflation.blockInflation', []) as any).toBigInt(); + const startBlock = (relayBlock + blockInterval) - (relayBlock % blockInterval) + 1; + + await helper.wait.forRelayBlockNumber(startBlock); + + const treasuryBalanceBefore = await helper.balance.getSubstrate(TREASURY); + + await helper.wait.forRelayBlockNumber(startBlock + blockInterval); + + const treasuryBalanceAfter = await helper.balance.getSubstrate(TREASURY); + expect(Number(treasuryBalanceAfter)).to.be.eqls(Number(treasuryBalanceBefore + blockInflation)); + }); }); diff --git a/pallets/inflation/src/tests.rs b/pallets/inflation/src/tests.rs index b3cde26614..5323e68298 100644 --- a/pallets/inflation/src/tests.rs +++ b/pallets/inflation/src/tests.rs @@ -106,7 +106,7 @@ impl frame_system::Config for Test { parameter_types! { pub TreasuryAccountId: u64 = 1234; - pub const InflationBlockInterval: u32 = 100; // every time per how many blocks inflation is applied + pub const InflationBlockInterval: u32 = 10; // every time per how many blocks inflation is applied pub static MockBlockNumberProvider: u32 = 0; } diff --git a/runtime/common/config/pallets/mod.rs b/runtime/common/config/pallets/mod.rs index 9bab7683a3..784fc29799 100644 --- a/runtime/common/config/pallets/mod.rs +++ b/runtime/common/config/pallets/mod.rs @@ -102,7 +102,7 @@ impl pallet_balances_adapter::Config for Runtime { } parameter_types! { - pub const InflationBlockInterval: BlockNumber = 100; // every time per how many blocks inflation is applied + pub const InflationBlockInterval: BlockNumber = 10; // every time per how many blocks inflation is applied } /// Pallet-inflation needs block number in on_initialize, where there is no `validation_data` exists yet