From 04b9e9c7265accbbce412e9d95cd7d0274b7dcae Mon Sep 17 00:00:00 2001 From: drgora <105062443+drgora@users.noreply.github.com> Date: Thu, 3 Apr 2025 08:31:35 +0200 Subject: [PATCH] Add zkVerify Volta inflation parameters (#11448) * Add inflation parameters for the zkVerify Volta testnet * Fix division by 0 Fix division by 0 if ideal stake is set to 0 (i.e. not accounted for when computing the inflation). --- packages/apps-config/src/api/constants.ts | 2 ++ packages/apps-config/src/api/params/inflation.ts | 7 +++++-- packages/react-hooks/src/useInflation.ts | 6 ++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/apps-config/src/api/constants.ts b/packages/apps-config/src/api/constants.ts index 0e8ef9a9e5..ca7e8a1d13 100644 --- a/packages/apps-config/src/api/constants.ts +++ b/packages/apps-config/src/api/constants.ts @@ -42,3 +42,5 @@ export const VARA_NETWORK_GENESIS = '0xfe1b4c55fd4d668101126434206571a7838a8b6b9 export const VARA_NETWORK_TESTNET_GENESIS = '0x525639f713f397dcf839bd022cd821f367ebcf179de7b9253531f8adbe5436d6'; export const JOYSTREAM_GENESIS = '0x6b5e488e0fa8f9821110d5c13f4c468abcd43ce5e297e62b34c53c3346465956'; + +export const ZKVERIFY_VOLTA_GENESIS = '0xff7fe5a610f15fe7a0c52f94f86313fb7db7d3786e7f8acf2b66c11d5be7c242'; diff --git a/packages/apps-config/src/api/params/inflation.ts b/packages/apps-config/src/api/params/inflation.ts index c7ffb4c012..8ee26a03e7 100644 --- a/packages/apps-config/src/api/params/inflation.ts +++ b/packages/apps-config/src/api/params/inflation.ts @@ -3,7 +3,7 @@ import type { ApiPromise } from '@polkadot/api'; -import { CERE_NETWORK_GENESIS, CERE_NETWORK_TESTNET_GENESIS, DOCK_POS_TESTNET_GENESIS, JOYSTREAM_GENESIS, KUSAMA_GENESIS, NEATCOIN_GENESIS, NFTMART_GENESIS, POLKADOT_GENESIS, VARA_NETWORK_GENESIS, VARA_NETWORK_TESTNET_GENESIS } from '../constants.js'; +import { CERE_NETWORK_GENESIS, CERE_NETWORK_TESTNET_GENESIS, DOCK_POS_TESTNET_GENESIS, JOYSTREAM_GENESIS, KUSAMA_GENESIS, NEATCOIN_GENESIS, NFTMART_GENESIS, POLKADOT_GENESIS, VARA_NETWORK_GENESIS, VARA_NETWORK_TESTNET_GENESIS, ZKVERIFY_VOLTA_GENESIS } from '../constants.js'; interface InflationParams { auctionAdjust: number; @@ -33,6 +33,8 @@ const VARA_NETWORK_INFLATION_PARAMS = { ...DEFAULT_PARAMS, maxInflation: 0, minI const JOYSTREAM_INFLATION_PARAMS = { ...DEFAULT_PARAMS, maxInflation: 0.03, minInflation: 0.0075 }; +const ZKVERIFY_VOLTA_INFLATION_PARAMS = { ...DEFAULT_PARAMS, auctionAdjust: 0, maxInflation: 0.025, minInflation: 0.025, stakeTarget: 0 }; + const KNOWN_PARAMS: Record = { [CERE_NETWORK_GENESIS]: CERE_NETWORK_INFLATION_PARAMS, [CERE_NETWORK_TESTNET_GENESIS]: CERE_NETWORK_INFLATION_PARAMS, @@ -47,7 +49,8 @@ const KNOWN_PARAMS: Record = { [NFTMART_GENESIS]: { ...DEFAULT_PARAMS, falloff: 0.04, stakeTarget: 0.60 }, [POLKADOT_GENESIS]: { ...DEFAULT_PARAMS, stakeTarget: 0.75 }, [VARA_NETWORK_GENESIS]: VARA_NETWORK_INFLATION_PARAMS, - [VARA_NETWORK_TESTNET_GENESIS]: VARA_NETWORK_INFLATION_PARAMS + [VARA_NETWORK_TESTNET_GENESIS]: VARA_NETWORK_INFLATION_PARAMS, + [ZKVERIFY_VOLTA_GENESIS]: ZKVERIFY_VOLTA_INFLATION_PARAMS }; export function getInflationParams (api: ApiPromise): InflationParams { diff --git a/packages/react-hooks/src/useInflation.ts b/packages/react-hooks/src/useInflation.ts index 73d0ab7263..02222ee050 100644 --- a/packages/react-hooks/src/useInflation.ts +++ b/packages/react-hooks/src/useInflation.ts @@ -24,13 +24,15 @@ function calcInflation (api: ApiPromise, totalStaked: BN, totalIssuance: BN, num // Ideal is less based on the actual auctions, see // https://github.com/paritytech/polkadot/blob/816cb64ea16102c6c79f6be2a917d832d98df757/runtime/kusama/src/lib.rs#L531 const idealStake = stakeTarget - (Math.min(auctionMax, numAuctions.toNumber()) * auctionAdjust); - const idealInterest = maxInflation / idealStake; + const idealInterest = idealStake === 0 + ? 0 + : maxInflation / idealStake; // inflation calculations, see // https://github.com/paritytech/substrate/blob/0ba251c9388452c879bfcca425ada66f1f9bc802/frame/staking/reward-fn/src/lib.rs#L28-L54 const inflation = 100 * (minInflation + ( stakedFraction <= idealStake ? (stakedFraction * (idealInterest - (minInflation / idealStake))) - : (((idealInterest * idealStake) - minInflation) * Math.pow(2, (idealStake - stakedFraction) / falloff)) + : ((maxInflation - minInflation) * Math.pow(2, (idealStake - stakedFraction) / falloff)) )); return {