Validator Pricing & Fees
Simple, aligned pricing for Solana validators
Fees will start epoch 859, which starts Saturday October 4th at 4am ET. A flat 5% fee is charged on block signature rewards and priority fees.
The fees directly fund the infrastructure which makes DoubleZero possible. Including physical fiber lines, and equipment in data centers.
An in depth exploration of why fees exist, and the validator pricing model can be found here.
This guide focuses on how fees are paid from a technical perspective.
Settlement Model
- Fees are denominated in SOL and settled per epoch
- Validator debt is computed on chain by the Revenue Distribution program
- Each validator has a deposit account (PDA) for payments
-
Funding window: Fees are deposited during the Solana epoch following their accrual. IE fees which are accumulated during epoch 860, need to be paid in epoch 861.
-
Prefunding is supported. Balances draw down across epochs
Payment Checklist
- Derive deposit account (PDA) using validator identity pubkey.
- Calculate epoch fee: 5% × total block rewards.
- Fund your deposit account with the amount calculated in step 2 in the next epoch. If desired; you can make excess payments and that excess SOL will be applied to future epochs. How to Send SOL>>
- Monitor balance to ensure successful settlements.
Estimating Fees
Historical estimates and per-pubkey data are available in the Fee Estimates Repo. The repo does not replace on chain data. You are responsible for the balance on chain, not in the balance in this repo.
Questions? Contact Nihar Shah at nihar@doublezero.us
Developer Details
Command Line Interface
The DoubleZero CLI provides commands to manage validator deposits and monitor balances. You will need SOL in the account that you run these commands from to pay for gas.
Note
Do not use your Vote Identity or DoubleZero ID in this process
In these examples the flag -u mainnet-beta is used to denote mainnet-beta. If you need a testnet balance use the flag -u testnet
Command 1: Fetch All Validator Deposits
doublezero-solana revenue-distribution fetch validator-deposits -u mainnet-beta
Output:
Solana validator deposit accounts | Node ID | Balance (SOL)
---------------------------------------------+---------------------------------------------+--------------
DepositAccount111111111111111111111111111111 | ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 | 0.000000001
DepositAccount222222222222222222222222222222 | ValidatorIdentity11111111111111111111111111111111111111111111111111111111111112 | 0.000000069
DepositAccount333333333333333333333333333333 | ValidatorIdentity11111111111111111111111111111111111111111111111111111111111113 | 0.000000420
Command 2: Fetch Deposits for Specific Node
doublezero-solana revenue-distribution fetch validator-deposits -u mainnet-beta --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111
Output:
Solana validator deposit accounts | Node ID | Balance (SOL)
---------------------------------------------+---------------------------------------------+--------------
DepositAccount111111111111111111111111111111 | ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 | 0.000000001
Command 3: Fund Validator Deposit (First Transaction)
doublezero-solana revenue-distribution validator-deposit --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 0.000000001 -u mainnet-beta
Output:
2Z token balance: 0.0
Solana validator deposit: DepositAccount111111111111111111111111111111
Funded: 3n56AW1UXeRqCQdLhQ82tjYzHQUbw7w2NcgD31PXSSxNLNgfrtsAENrWrXS2uLS2x5CyTyNaDTQMn9nHo5dfaS3B
Node ID: ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111
Balance: 0.000000002 SOL
Command 4: Fund Validator Deposit (Second Transaction)
doublezero-solana revenue-distribution validator-deposit --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 --fund 0.000000001 -u mainnet-beta
Output:
Solana validator deposit: DepositAccount111111111111111111111111111111
Funded: 5WEpFc7pw6Hg353giEq1zwxAq2Lw4CHAahyZfb3tAgTBjfWiExaWpMjvrEm5bb618XC42ZU2hygryUu4E2PMbRxT
Node ID: ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111
Balance: 0.000000003 SOL
Command 5: Verify Updated Balance
doublezero-solana revenue-distribution fetch validator-deposits -u mainnet-beta --node-id ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111
Output:
Solana validator deposit accounts | Node ID | Balance (SOL)
---------------------------------------------+---------------------------------------------+--------------
DepositAccount111111111111111111111111111111 | ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 | 0.000000003
Troubleshooting:
Issue: `⚠️ Warning: Please use "doublezero-solana revenue-distribution validator-deposit ValidatorIdentity111111111111111111111111111 --initialize" to create
This issue is generally caused by sending funds to a deposit account, without first running the fund command.
Symptoms:
- When executing doublezero-solana revenue-distribution commands the user encounters ⚠️ Warning: Please use "doublezero-solana revenue-distribution validator-deposit --node-id ValidatorIdentity111111111111111111111111111 --initialize" to create deposit account DepositAccount111111111111111111111111111111
Solutions: 1. initialize the account
doublezero-solana revenue-distribution validator-deposit --node-id ValidatorIdentity111111111111111111111111111 --initialize -k path/to/your_keypair.json
Sample Output:
```
Solana validator deposit: Deposit1111111111111111111111111111111111111
Funded and initialized: Signature111111rrNykTByK2DgJET3U6MdjSa7xgFivS9AHyhdSG6AbYTeczUNJSjYPwBGqpmNGkoWk9NvS3W7
Node ID: ValidatorIdentity111111111111111111111111111
Balance: YourCurrentBalanceIn SOL
```
-
re-run the command which caused the error
for example:
revenue-distribution fetch validator-deposits -u mainnet-beta --node-id ValidatorIdentity111111111111111111111111111'Sample Output:
The command should now return without errorSolana validator deposit accounts | Node ID | Balance (SOL) ---------------------------------------------+---------------------------------------------+-------------- 79jStiBvoxujPWfmGfRahfFJd5SU2XruSwfDmysXt3xA | ValidatorIdentity11111111111111111111111111111111111111111111111111111111111111 | 0.000000003