A new version of Mina Docs is coming soon! This page will be rewritten.
Foundation Delegation Program
How to Participate in the Foundation Delegation Program
Learn how to receive a delegation from Mina Foundation and its ecosystem partner, O(1) Labs
PLEASE READ: This affects the submission of uptime data and the Performance Score results for receiving a delegation.
The current sidecar tracking system is being phased out to be replaced by the SNARK-work-based uptime tracking system. Until further notice, continue running the sidecar AND SNARK-based tracking system on the SAME node.
Please follow the latest updates and post questions in the #delegation-program channel on Discord.
The Mina Foundation Delegation Program is an implementation of the Mina Foundation Delegation Policy, which is the Mina Foundation's official policy on the delegations of MINA tokens from the Mina Foundation (referred to as “Foundation” below).
If you are a block producer looking to participate in the Foundation Delegation Program, this page explains how the program works and how to send uptime data and pay back rewards.
Please note that there are two delegation programs in Mina's ecosystem — one from the Mina Foundation and one from O(1) Labs, Mina's ecosystem partner.
These are two separate entities running their own delegation programs. For clarity, this post is dedicated to the next iteration of the Mina Foundation Delegation Program only. However, following instructions in this post may enable a block producer to participate in the O(1) Labs delegation program as well.
For more information on the two different programs, please visit:
Mina Foundation is committed to decentralizing the governance of the Mina protocol. In order to delegate their voting power, Mina Foundation and its ecosystem partner O(1) Labs (each referred to as “token providers” below) delegate their tokens to community members through the Foundation Delegation Program and the O(1) Labs Delegation Program, respectively.
In each Delegation Program, Mina Foundation and its partners delegate their tokens to a number of validators. As the validators earn staking rewards associated with the delegation, they must return the remaining rewards to Mina Foundation and its partners, but can keep 5% of the staking rewards.
Block producers are selected on a quarterly basis, known as a delegation cycle, based on their Performance Scores (see below) and requirements outlined in the Mina Foundation Delegation Policy.
We highly recommend you review this page and the Mina Foundation Delegation Policy for a more detailed explanation of how the Foundation Delegation Program works. The O(1) Labs Delegation Program is similar but differs in a few key ways, primarily in terms of the number of validators to which O(1) Labs delegates tokens.
How do I participate in the program?
If you are new to the Foundation Delegation Program, please make sure you have fulfilled the following requirements in order to be eligible for receiving a delegation from the Foundation's token allocation.
Step 1: Complete the application
Step 2: Run the Uptime Tracking System
Next, run BOTH the SNARK-based system and sidecar on the SAME node.
The uptime tracking system sends recent blockchain data from your block producer node's perspective to a service. This service verifies whether this recent data is synced with the chain. If it is synced, it means your node is online.
Instructions for how to run the uptime tracking system:
The SNARK-based system and sidecar are two different uptime tracking systems. The SNARK-based system will be replacing the sidecar system. Until further notice during this transition, it is required to run BOTH the SNARK-based system and sidecar on the same node for the current cycle.
Step 3: Pass the KYC/AML requirement (only if selected for delegation)
In order to receive a delegation, you must also meet the KYC/AML requirements of Mina Foundation and its ecosystem partners.
If you have recently been selected as a validator who will be receiving a delegation, but have not yet completed any of the KYC/AML requirements, please look out for an email with further instructions.
You can only complete this step if you’re receiving a delegation for the next cycle. When you are selected for a delegation, you will be contacted with instructions on how to proceed with completing the KYC/AML requirement.
Now that you understand how to become eligible to participate in the program, please review the following guidelines to better understand how to receive a delegation and send back rewards.
How do I get seleted for a delegation?
Measuring Uptime Performance Score
The Uptime Performance Score is an important factor for selecting the public keys to receive a Mina Foundation Delegation Program delegation from a token provider.
Uptime is the measurement of when your block producer node is online. In the Foundation Delegation Program, uptime is measured in 20-minute windows. If your block producer node is online at any time within a given 20-minute window, you will be marked as online for that period.
You may run more than one node with the same block producer key if you want to increase your chances of remaining online.
Uptime Performance is the percentage over a time period in which a block producer node is online and operational.
The time period varies depending on the token provider. For delegations from Mina Foundation, the time period is 90 days. For delegations from O(1) Labs, the time period is 60 days.
This percentage is based on all possible 20-minute windows over the last time period.
How do I track my performance score?
The leaderboard shows the ranking of block producers participating in the delegation program based on uptime performance. The sooner you fix issues with your nodes sending uptime data, the sooner you'll be rewarded with a better uptime and position on the leaderboard.
Your position on this leaderboard is an important factor in your public key being selected to receive delegation from Mina Foundation and O(1) Labs.
See the following uptime leaderboards for the latest uptime performance scores:
- Official Leaderboard: https://uptime.minaprotocol.com
- Community Leaderboards:
What happens after I receive a delegation?
You must send computed rewards as described below to the same addresses that delegate to you.
In other words, if the Foundation is delegating to you, the Foundation will pick one address from the Foundation address list (see below) that will delegate to you. You should distribute the rewards to both those addresses.
Likewise, if O(1) Labs is delegating to you, O(1) Labs will pick one address from the O(1) Labs address list (see below) that will appear as delegations to you. You must distribute the rewards to both addresses that are delegating to you. However, each selected validator will be allowed to keep 5% of the staking rewards.
Rewards must be distributed at least once for a given epoch (but you can also send them more frequently).
All the rewards for epoch N must be delivered (ie. accepted in a block, not just sent) no later than slot number 3,500 of the next epoch. This gives you about a week to sort out these payments.
Where do I send my rewards?
Download the following spreadsheets to see the full list of delegation address to send and receive rewards:
In order for the token provider to associate the transaction with your delegation, please send the transaction back to the same address that sent you the delegations.
Reminder: You must send computed rewards to the same addresses that delegate to you. It is no longer necessary to add identifying information in the memo.
How do I calculate the reward payout?
You must send back at least the amount specified by this mechanism. If you send back more tokens, you will still be regarded as eligible — but you will not be refunded anything.
At the end of each epoch, do all of the following:
- Compute the total stake delegated to your account for the epoch
- Compute the share of stake from the token provider (from both accounts) by dividing the token provider delegation by the total stake. (i.e.
provider_share = provider_delegation / total_stake). The resulting share should be between 0 and 1.
- For each block produced that has a non-zero block-reward on the canonical chain, calculate the payout by multiplying the non-supercharged coinbase reward (equal to
720 MINAat Mainnet launch) by the provider share calculated in the previous step minus a 5% percent fee. (i.e.
payout = (provider_share * 0.95) * coinbase)
- Send a transaction to the token provider accounts with the appropriate payout -- please follow the rules in the "Payout Attribution" section with your transaction.
The block producer can keep all of the transaction fees or divide them equally amongst the other members of the pool.
The canonical chain will be calculated as 12 blocks behind any tip at slot 3,500 of the next epoch.
Example of a Reward Payout Calculation
Consider the following:
- Account A has
2 million locked MINA
- Account B is controlled by the Mina Foundation and has 6 million locked MINA.
- Account C is a controlled by a third party and has 2 million MINA fully unlocked. This account also delegates to Account A.
In this example, the total amount of stake for Account A is 10 million calculated by adding up the balances from all the accounts. Note that since Account C has all its tokens unlocked, any block rewards won when
winnerAccount equals Account C will be super-charged.
Now let's consider Epoch 5. The share of the stake from the Foundation is
6 million MINA / 10 million MINA = 0.6 or 60%. Three blocks are produced in this epoch that end up on the canonical chain.
The first block has a
winnerAccount equal to Account A. The total Foundation payout for this block is calculated as
(0.6 * 0.95) * 720 MINA = 410.4 MINA. In the second block the
winnerAccount is Account B — the total Foundation payout is again calculated as
(0.6 * 0.95) * 720 MINA = 410.4 MINA. The third and final block has the
winnerAccount as Account C. Now the actual coinbase is super-charged for this block and will be 1440 MINA, but despite this the Foundation rewards are still
410.4 MINA since they are calculated using the non-supercharged coinbase. Thus the total payout to the Foundation from all blocks is
410.4 MINA * 3 blocks = 1,231.2 MINA .
Finally, before slot 3,500 of the next epoch, a payment is made from any account that this block producer controls to each of the Foundation accounts — remember to follow the rules outlined in the "Payout Attribution" section above -- in this case we will send the transaction from Account A's coinbase receiver. The payment is
1231.2 MINA tokens. Note that the transaction fees for these two transactions are paid for by the block producer.
This process is to be repeated for each of the token provider accounts that delegate to you. The token provider, either the Foundation or O(1) Labs respectively, will check to see that you have sent back with this mechanism by the middle of the next epoch as described above. Failing to do so, can result in ineligibility for receiving delegations.
Please repeat the process independently for each delegation, do not sum the results and divide by the number of total delegations.
Avoiding rounding errors
If you have computed a reward that has an odd number of nanomina and need to divide it between the two accounts it is okay to round down and keep the extra 1 nanomina.
If you are computing the share of the stake from the foundation you can calculate the fraction of stake up to 5 decimal places and then truncate afterwards (ie. always round down).
If the Foundation share is 1 million MINA and the total stake is 3 million MINA, you can use 0.33333 as the stake share fraction.
If the Foundation share is 2 million MINA and the total stake is 3 million MINA, you can use 0.66666 as the stake share fraction.
- Mina Foundation Delegation Policy
- O(1) Labs Delegation Policy
- Delegation Program Tiebreak System
- Mina Docs: SNARK-based Uptime System