Skip to main content

Mina Foundation Delegation Program

How to Participate in the Mina Foundation Delegation Program

Learn how to receive a delegation from Mina Foundation.

info

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 Mina Protocol Discord.

This Delegation Program is an implementation of the Mina Foundation Delegation Policy, the 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 Mina Foundation Delegation Program, this page explains how the program works and how to send uptime data and pay back rewards.

note

There are two delegation programs in Mina's ecosystem — one from the Mina Foundation and one from O(1) Labs, Mina's ecosystem partner. This page details the program only for the Mina Foundation.

Overview

Mina Foundation is committed to decentralizing the governance of the Mina protocol. In order to delegate their voting power, Mina Foundation delegates its tokens to community members through the Mina Foundation Delegation Program.

In the Delegation Program, Mina Foundation delegates its 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, but can keep 8% 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.

Eligibility Requirements

How do I participate in the program?

If you are new to the Mina 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

Review the Mina Foundation Delegation Policy then complete the application form. You will be asked to share your public key for receiving a delegation in 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:

info

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.

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.

For more details on this requirement, please review the policies outlined in the Mina Foundation Delegation Policy.

note

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.

Program Guidelines

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 selected 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 Mina 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.

note

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 of Mina Foundation's delegation programs is 90 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.

See the following uptime leaderboards for the latest uptime performance scores:

What happens after I receive a delegation?

Payout Procedure

As per the Mina Foundation Delegation policy, there is a mandatory requirement on delegatees to use the latest version of the payout script to manage the return of rewards.

This payout script includes:

  • Mapping of delegating wallet addresses with the correct return wallet address
  • Calculation of the Reward amounts and paybacks of the remaining rewards to the delegators.
  • Calculation of the supercharged rewards to be burned and sent to the burn address.
  • Specific memo which includes the md5 hash of Pool’s Public Key (MD5 hash)

For more details and to review the script, see the README file in the mina-pool-payout repository.

Payout Addresses

You must return rewards to the address specified in the Mina Delegation Program Return Addresses mapping document. This will be covered when running the script in managing reward payback.

Payout Frequency

Rewards must be distributed at least once for a given epoch, please send one payment in the amount of your obligation to the right return wallet indicated above, and send the right amount to the burn address if applicable. Both payments should have a memo field with the md5 hash value of your block producer public key. This is the easiest method to avoid confusion in tracking payments, and will reduce the likelihood you will be incorrectly flagged as delinquent.

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.

How do I calculate the reward payout?

For reference, below is an explanation of how reward returns are calculated. The mandatory script will manage returns to both the MinaFoundation Address and Burn Address

You can find more in the (implementation)[https://github.com/jrwashburn/mina-pool-payout/blob/main/src/core/payoutCalculator/PayoutCalculatorIsolateSuperCharge.ts]

Reward Specifications

You must send back at least the amount specified by this mechanism.

At the end of each epoch, do all of the following:

  1. Compute the total stake delegated to your account for the epoch

  2. 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.

  3. For each block produced that has a non-zero block-reward on the canonical chain:

    • If the block is won by a Mina Foundation key:
      • If the block generated supercharged rewards (1440 MINA), 720 MINA should be sent to the burn address. The remaining 720 MINA should be used for payout calculation.
      • If the block did not generate super charged rewards, then use 720 MINAto calculate the rewards.
    • If the block is won by other stakers, then there is no need to burn any token.
      • If the block has 720 MINA coinbase value, all the rewards should be calculated based on 720 MINA. (No tokens should be burned).
      • If the block has 1440 MINA coinbase value, Mina Foundation paybacks should be based on 720 MINA.
  4. Calculate the Mina Foundation payout by multiplying the non-supercharged coinbase reward (equal to 720 MINA at Mainnet launch) by the provider share calculated in the previous step minus an 8% percent fee. (i.e. payout = (provider_share * 0.92) * 720).

  5. Send a transaction to the token provider accounts and burn address with the appropriate payout and memo - please follow the rules in the "Payout Attribution" section with your transaction. More details in the following source code parts: PayoutCalculatorIsolateSuperCharge.ts and ConfigurationManager.ts.

The block producer can keep all of the transaction fees or divide them equally amongst the other members of the pool.

tip

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 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%.

Example 1

3 blocks are produced in this epoch that end up on the canonical chain. The blocks were won by Mina Foundation.

  1. 3 * 720 = 2160 TOKENS should be sent to the burn address.
  2. Mina Foundation payout should be: (0.6 0.92) 720 MINA * 3 blocks = 1,192.32 MINA

Example 2

3 blocks are produced in this epoch that end up on the canonical chain. The blocks were won by other stakers with unlocked accounts.

  1. There is no need to send any token to the burn address.
  2. Mina Foundation payout should be: (0.6 * 0.92) * 720 MINA * 3 blocks = 1,192.32 MINA

Example 3:

3 blocks are produced in this epoch that end up on the canonical chain. The blocks were won by other stakers with locked accounts.

  1. There is no need to send any token to the burn address.
  2. Mina Foundation payout should be: (0.6 * 0.92) * 720 MINA * 3 blocks = 1,192.32 MINA

Example 4

3 blocks are produced in this epoch that end up on the canonical chain. Each account won a block.

  1. Since Mina Foundation won a block that generated a super-charged reward, then 720 MINA should be sent to the burn address.

  2. Mina Foundation payout should be: (0.6 * 0.92) * 720 MINA * 3 blocks = 1,192.32 MINA

  3. The other payouts should be calculated based on:

    • 1 block: 720 MINA
    • 2 blocks: 2 * 1440 MINA

Need any help?

Post your questions in the the #delegation-program channel on the Mina Protocol Discord.