f(x)Core Modules
The various parameters of modules in f(x)Core
Variables | Description | Value |
---|---|---|
Minter inflation variables | | |
Inflation | Initial annual inflation rate (computation on block basis, the inflation rate of each block are different) | 0.35 |
AnnualProvisions | Annual provision (computation on block basis, the inflation rate of each block are different) | 0 |
| | |
Params chain variables | | |
MintDenom | Name of the newly minted token (dependent on sub-chains) | FX |
InflationRateChange | Annual inflation change rate | 0.3 (30%) |
InflationMax | The maximum annual inflation rate | 0.416762 (41.6762%) |
InflationMin | The minimum annual inflation rate | 0.17 (17%) |
GoalBonded | Increment or decrement of the annual inflation rate rule: staking ratio (delegated Token / Total circulating token supply, if current bonded ratio less than GoalBonded, annual inflation rate will increase, until InflationMax; if current bonded ratio = GoalBonded, the inflation rate shall remain; if current bonded ratio higher than GoalBonded, the annual inflation rate will decrease, until InflationMin | 0.51 (51%) |
BlocksPerYear | Estimated annual newly created block number formula: 60 * 60 * 8766 / 5(average per block in 5 sec) | 6,311,520 (5 sec/block) |
- Inflation rate will be computed before each block is being created, formula as follows:
- 1.Request (call) for Minter value & Params variables
- 2.Request total bonded token in delegation
- 3.Request BondedRatio = Total delegated token / Total circulating token supply
- 4.Computing the inflation rate for next block (Annual inflation rate / 6,311,520)
This will require Params variable and BondedRatioFormula: Latest inflation rate = Current inflation rate + ( (1 - Delegated ratio/ GoalBonded) * InflationRateChange ) / BlocksPerYearminter.Inflation cannot exceed maximum value (Params.InflationMax) and minimum value (Params.InflationMin)- Computing the next annual inflation provision
Variables needed: Latest inflation rate and Total circulation token supplyFormula: minter.AnnualProvisions = Latest inflation rate * Total circulation token supply - Computing the number of newly generated/minted token on the next blockVariables required: Latest inflation provision and estimated annual number of newly minted blockNumber of newly minted token = Latest inflation provision / Estimated annual number of newly minted block
- 1.Sending the number of token that required to be minted to Mint module address
- 2.Sending transaction fee from Fee module address to Mint module address (transaction fee)
Example:Assume the variables as follows:- Total circulating supply: 378,604,525.462891
- The number of valid delegated token: 20,000,000
- Block time: 5 sec / block
- Initial annual inflation rate: 0.35
- Annual InflationRateChange: 0.3
Valid BondedRatio = 20,000,000/378,604,525.462891 = 0.05282557036Latest inflation rate minter. Inflation = minter.Inflation + ( (1 - valid delagation rate / GoalBonded) * InflationRateChange)The inflation rate of next block:0.35 + ( (1 - 0.05282557036/0.51) * 0.3) / 6,311,520 = 0.3500000426The provision of inflation rate:0.3500000426 * 378,604,525.462891 = 132,511,600.04056464The number of newly Mint Token on next block:132,511,600.04056464 / 6,311,520 = 20.9951960923 - The currency in f(x)Core is $FX, the initial supply of $FX is 378,604,525.462891.FX has 18 decimal points
- Total circulating supply of $FX = Delegated asset $FX + Non-delegated asset $FX
- Delegated asset $FX = Total $FX that delegated in f(x)Core validator node
- Non-delegated asset $FX = Ethereum cross chain locked fund + Unclaimed reward of validator (including commission and transaction fee) + Unclaimed reward of delegator + Wallet balance + Pool of ecosystem and community + Locked fund of Governance
- Ethereum cross chain locked fund = Total $FX (ERC20) on Ethereum
Variable | Description | f(x) |
---|---|---|
unbonding_time | Undelegated period / period of withdrawing delegated token | 1814400s ( approx 21 days) |
max_validators | The maximum number of validator node | 20 (changable through governance voting) |
max_entries | Maximum number of delegating / undelegating transaction on each block (it can only transact 7 delegate/undelegate transactions concurrently | 7 |
historical_entries | The number of snapshot of block that would be stored (each block will store the snapshot of validator node, for IBC module | 20000 |
bond_denom | Token that can be delegated | FX |
Undelegation period: 21 days
Jail / discharge: The validator node that offline or failure to sign <5% of the block in the previous 20,000 blocks will be jail; validator node can apply for discharge after 10 minutes
Variable | Description | f(x) |
---|---|---|
community_tax | Block reward that belongs to the pool of community and ecosystem | 0.4 (40%) |
base_proposer_reward | Base proposal block reward for every valid validator node | 0.01 (1%) |
bonus_proposer_reward | Current block proposer reward for the specific block proposer | 0.04 (4%) |
withdraw_addr_enabled | Enabling the setting of block reward request and collection address (The block reward will automatically send to the designated wallet address once the block reward withdrawal request has been made | true |
- Block reward and distribution mechanicBlock reward = Total block verification reward + Transaction feeAssume the following: Voting rate is 100% (all valid validator node participates the block verification voting); Total block verification reward per block is 20 FX; and the block reward can be further divided into 3 parts:
- Part 1: The proposal block reward for block proposer:Formula: Total block verification reward * ( base proposal block reward + current block proposer reward * (current voting power of the proposing validator node / total validator voting power)The proposal block reward: 20 * (0.01 + 0.04 ) * 1 = 1FXThe remaining balance of block verification reward per block: 20 - 1 = 19FX
- Part 2: Block verification reward of all valid validator nodeThe verification block reward that belongs to all validator nodes:Formula: 1 - Block proposer reward portion - Community and ecosystem poolBlock verification reward: 1 - 0.05 - 0.4 = 0.55Block verification reward of each validator node:Formula: Total block verification reward * Block verification reward belongs to validator node * Voting power of the validator nodeAssume the voting power of validator node A is 50%:Block verification reward of validator node A: 20 * 0.55 * 0.5 =5.5FXAssume the voting power of all validator nodse: 100%:Block verification reward belongs to all validator nodes: 20 * 0.55 * 1 = 11FX
- Part 3: Community and ecosystem poolFormula: Total block verification reward - The proposal block reward (part 1) - Block reward for validator node (part 2)Block verification reward belongs to community and ecosystem pool: 20 -1 -11 = 8FX
- The distribution of block reward between validator and delegatorDelegators need to pay commission fee (if any) to the validator that he/she delegates token toAssume: The remaining balance of block reward available to delegator is 2FX; Commission rate is 1%
- The commission fee of validator:Formula: The remaining balance of block reward available to delegator * Commission rateCommission: 2 * 0.01 = 0.02
- The block reward of delegator:Formula: The remaining balance of block reward available to validator and delegator - Commission collectedBlock reward after commission: 2 - 0.02 = 1.98
- APY computation of delegatorThe total return of the specific validator and the delegator (that delegates to the specific validator) = Block reward (including inflation and transaction fee) * (1 - Community and ecosystem pool) * The voting power % of that specific validator nodeReturn of delegator = (The total return of the specific validator and the delegator (that delegates to the specific validator) * (1- commission rate) / principal
The gov module allows on-chain governance system. A brief explanation of the process flow of submitting a proposal is as follow (for an in-depth explanation and examples, go here):
- 1.To submit a proposal, it requires an initial deposit of at least 1000 FX, there is a deposit period (
max deposit period
) for themin deposit
to be reached - 2.The
min deposit
is 10000 FX (the initial deposit is counted towards the threshold) - 3.
voting period
starts when the 10000 FX threshold is reached, and will last for 14 days - 4.
quorum
must be reached for the proposal to be valid, which means at least 40% of bonded FX have to participate in voting - 5.If 50% or more of the participants (weighted by FX) voted YES, the proposal has reached the
threshold
and is considered 'PASS' - 6.If 50% or more of the participants (weighted by FX) voted no, the proposal has not reached the
threshold
and is considered 'REJECTED' - 7.If 33.4% (
veto threshold
) or more of the participants (weighted by FX) voted 'NoWithVeto', irregardless of the % of YES, the proposal is considered 'REJECTED'
The parameters are as follow:
Variable | Description | Value |
---|---|---|
voting period | Time period for voting (nanoseconds) | 1209600000000000 |
quorum | Minimum percentage of total staked (bonded) for proposal to be valid | 0.4 |
threshold | Minimum proportion of Yes votes for proposal to pass | 0.5 |
veto threshold | Minimum value of Veto votes to total votes ratio for proposal to be vetoed | 0.334 |
min deposit | Minimum deposit for a proposal to enter voting period (FX, 18 decimals) | 10000000000000000000000 |
max deposit period | Maximum time period for FX holders to deposit on a proposal (nanoseconds) | 1209600000000000 |
Last modified 3mo ago