Fantom Improvement Proposal 2 : Proof of Stake by the numbers (FIP #2)
In order to secure the network, Fantom will utilize a Proof of Stake model, allowing users to create a validating node.
Staking will entitle the node to the following:
- Staking for Validation: Earn FTM through block rewards, transaction fees and delegation
- Transaction-based staking: Guaranteed number of transactions per second, based on how many FTM are staked
This article describes the numbers that will go into the model.
Staking for Validation
The total supply of FTM is 3,175,000,000, of which 996,341,176.87 FTM (~31.38%) are available for block rewards. This means that the total circulating supply (Total supply — block rewards) is 2,178,658,823.13 FTM.
Block rewards will be distributed evenly over 4 years, with rewards being issued daily. Given that event block creation speed is a function of network size, the network will distribute rewards per event block as follows:
Event Block (reward) = (daily block rewards)/(number of daily event blocks)
Once 24 hours has elapsed, yesterday’s daily block rewards will be distributed today proportionally to the number of event blocks created and confirmed (by ⅔ of the total validating power of the network).
The daily block reward will be approximately 682,425.46 FTM.
A validating node will earn rewards for each event block that the node validates, where the event block is successfully confirmed by the network.
Becoming a Validator
Since Fantom is a permissionless network, any individual or organisation can run a node that validates transactions on the network.
However, in order to stake, a validator must, at all times, maintain a minimum stake of 3,175,000 FTM (0.1% of the total supply).
Maintaining a minimum stake is important for the following reasons:
- It limits the number of possible validators: Too many validators running on sub-optimal hardware will lead to poor network performance. Too few, and the network becomes too centralized
- Avoids the “nothing-at-stake” problem: The “nothing-at-stake” problem occurs when a validator has nothing at stake, so they are incentivised to validate every single block on every single fork as there is no penalty for doing so. If nodes have a substantial amount of tokens at stake, they are less likely to validate transactions that they believe will not be confirmed by others
If an individual or organisation does not have the required tokens to stake, or do not wish to stake themselves, they can choose to delegate their stake.
Similar to the Tezos model, users will be able delegate their tokens to validating nodes, regardless of the number of FTM held. Validators will not be able to spend delegated tokens, and will remain secured in the user’s own address. They will, however, be allowed to charge a fee to delegators.
Fantom believes that validators will compete with each other on performance. Higher performing nodes, with more reliable uptimes, will earn higher returns. Delegators will be incentivised to choose nodes that are more reliable and higher performing than their peers.
There will be very minimal requirements for staking:
- Security Deposit: None
- Minimum number of tokens to delegate: 1 FTM
- Minimum lock period: None
- Maximum number of validators a user can delegate to: None
- Maximum number of tokens that can be delegated to a validator: 15 times the number of tokens the validator is staking
Fantom aims to promote and develop software that makes it convenient to delegate to validators through a straightforward UI.
In addition, FTM holders will also be able to participate in on-chain voting, but that is outside the scope of this article.
Validators will earn fees through three mechanisms:
Returns (Validator) = block rewards + transaction fees + delegated fees
Delegators will earn fees through two mechanisms:
Returns (Delegator) = block rewards + transaction fees — delegated fees
Given total block rewards are 996,341,176.87 FTM, with the current circulating supply being 2,178,658,823.13 FTM, the distribution of block rewards over a 4 year period yields the following returns on average for validators and delegators (based solely on block rewards):
The returns above are based on the following assumptions:
- Block rewards are distributed daily over 4 years at a fixed amount
- At all times, 70% of the total circulating supply of FTM will be used for validation staking (staked by the validator plus delegated staking)
Fantom’s network offers a comparatively high yield to other distributed ledgers using Proof of Stake. The aim of such high yields is to make it attractive to stake and thus secure the network over a long period of time.
After the launch of the mainnet, the foundation will guarantee a floor (measured in USD) in FTM equal to the operational cost of a validator using foundation-approved hardware. Although (at the current FTM/USD rate) block rewards alone should cover hardware costs, the guarantee is to ensure that the network encourages high performing, optimal hardware from the beginning. The performance of a given validator can be measured by the network and tied to the coinbase of the validator, with the performance compared to the cost of cloud computing providers such as AWS and Microsoft Azure. The difference between the cost of running a node and block rewards received will be covered by the Foundation, paid directly into the validator’s Coinbase. Further details will be released closer to mainnet launch.
Staking nodes will also be offered the opportunity to stake for a given number of transactions over time. This is known as “Transaction-based Staking”.
To estimate the maximum gas that can be spent per second, we start by noting that the best modern desktop processors (such as the Intel Core i9 Extreme Edition) have reached teraflop speed — one trillion floating point operations per second.
Every instruction processed by the FVM will carry some overhead, as it has to verify signatures and track gas spent. Let’s assume that only 10% of processing power is available for executing transactions and smart contracts, and that a single multiplication by the FVM costs 100 floating-point operations. The FVM would then still be able to process one billion multiplications per second, corresponding to 5 billion gas if we use Ethereum’s gas pricing as a guide.
This gas would pay for 5,000,000,000 / 21,000 = 238,095 basic transactions (i.e simple transfers of value from one address to another).
If we assume an average of 120 bytes per transaction (i.e most transactions are basic transactions) we would need a network throughput of 230,095 * 120 = 27,611,400 bytes (i.e over 27 MB per second).
This is too high, meaning that if the majority of transactions are relatively simple, the main bottleneck will be network throughput. In that case, reducing or compressing the transaction size will be important. On the other hand, there will also be complex transactions that have a small size but will spend a lot of gas.
Therefore, a “transaction slot” should consist of two elements:
- A limit on transaction size (in bytes)
- A limit on gas
We have 3,175, 000,000 FTM tokens available for transaction staking to begin with.
- If we accept a reasonably high maximum transaction throughput of 0.5MB per second, then 6350 FTM tokens would represent a one byte slot
- Assuming we can support 5 billion gas per second, then 1 FTG would require 0.635 FTM to be staked
In order to be guaranteed one basic transaction per second, whose size is assumed to be 120 Bytes, a user would need to stake tokens with a transacting power corresponding to 120 * 6,350 = 762,000 FTM. If that user’s gas usage is in line with his token holdings, his transacting power will be roughly equal to his token holdings, so the necessary number of transaction-staked FTM tokens will also be approximately 762,000 FTM.
This corresponds to 762,000 / 0.635 ~ 1,200,000 FTG per second.
For any further questions, suggestions, or comments regarding staking details, please reach out to us through any of our official channels!
Official E-mail Address: email@example.com
Official Website: https://www.fantom.foundation
Official Telegram English Chat: https://t.me/fantom_english
Official Telegram Chinese Chat: https://t.me/fantom_chinese
Official Fantom Reddit: https://www.reddit.com/r/FantomFoundation/
Official Fantom Twitter: https://twitter.com/FantomFDN
Official Github Page: https://github.com/Fantom-foundation
Official Youtube Channel: https://www.youtube.com/c/fantomfoundation