description |
---|
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:
- Request (call) for Minter value & Params variables
- Request total bonded token in delegation
- Request BondedRatio = Total delegated token / Total circulating token supply
- Computing the inflation rate for next block (Annual inflation rate / 6,311,520)
This will require Params variable and BondedRatio
Formula: Latest inflation rate = Current inflation rate + ( (1 - Delegated ratio/ GoalBonded) * InflationRateChange ) / BlocksPerYear
minter.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 supply
Formula: minter.AnnualProvisions = Latest inflation rate * Total circulation token supply
-
Computing the number of newly generated/minted token on the next block
Variables required: Latest inflation provision and estimated annual number of newly minted block
Number of newly minted token = Latest inflation provision / Estimated annual number of newly minted block
- Sending the number of token that required to be minted to Mint module address
- 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.05282557036
Latest 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.3500000426
The provision of inflation rate:
0.3500000426 * 378,604,525.462891 = 132,511,600.04056464
The 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 mechanic
Block reward = Total block verification reward + Transaction fee
Assume 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 = 1FX
The remaining balance of block verification reward per block: 20 - 1 = 19FX
-
Part 2: Block verification reward of all valid validator node
The verification block reward that belongs to all validator nodes:
Formula: 1 - Block proposer reward portion - Community and ecosystem pool
Block verification reward: 1 - 0.05 - 0.4 = 0.55
Block verification reward of each validator node:
Formula: Total block verification reward * Block verification reward belongs to validator node * Voting power of the validator node
Assume the voting power of validator node A is 50%:
Block verification reward of validator node A: 20 * 0.55 * 0.5 =5.5FX
Assume 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 pool
Formula: 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 delegator
Delegators need to pay commission fee (if any) to the validator that he/she delegates token to
Assume: 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 rate
Commission: 2 * 0.01 = 0.02
-
The block reward of delegator:
Formula: The remaining balance of block reward available to validator and delegator - Commission collected
Block reward after commission: 2 - 0.02 = 1.98
-
-
APY computation of delegator
The 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 node
Return 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):
- 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 - The
min deposit
is 10000 FX (the initial deposit is counted towards the threshold) voting period
starts when the 10000 FX threshold is reached, and will last for 14 daysquorum
must be reached for the proposal to be valid, which means at least 40% of bonded FX have to participate in voting- If 50% or more of the participants (weighted by FX) voted YES, the proposal has reached the
threshold
and is considered 'PASS' - If 50% or more of the participants (weighted by FX) voted no, the proposal has not reached the
threshold
and is considered 'REJECTED' - 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 |