This document contains the Supply-end Tokenomics for Phala Network, which defines how workers get their rewards by sharing the computing power.
To read about how Demand-end users can stake PHA to use the network, see Stake to Compute.
After the approval of the āGemini Tokenomics upgrade" democratic referendum on the block height #1,467,069, we have updated the content of the Supply-end Tokenomics as follows:
Design Targets
The overall economic design is built to address these points:
Support Phala Networkās trustless cloud computing architecture
Consensus-Computation Separation
Linearly-scalable computing workers (100k order of magnitude number of workers)
Incentivize workers to join the network
Ensure payment for power supplied irrespective of demand, especially at network bootstrap
Subsidize mining pool with 70% of the initial supply over time
Bitcoin-like budget halving schedule
Power the Phala and Khala at the same time
Application pricing
On-chain performance
The following details some key elements of the economic model.
Overall Design
Related Workers
Phala Supply-end Tokenomics applies to any workers running on Phala or Khala.
A virtual score for an individual worker representing value earned which is payable in the future, to motivate workers to behave honestly and reliably
Equal to the expected value of the revenues earned by the worker for providing power for the platform
Changes dynamically based on the workerās behaviors and the repayment of Rewards
Params used in simulation:
Performance Test
A performance test measures how much computation can be done in a unit of time:
For reference,
Platform
Cores
Score
Approximate Price
Low-End Celeron
4
450
$150
Intel Xeon E Processor
6
1900
$500
Mid-End i5 10-Gen
8
2000
$500
High-End i9 9-Gen
10
2800
$790
The table is based on the version while writing of this documentation and is subject to changes.
The performance test will be performed:
Before mining to determine the Minimum Stake
During mining to measure the current performance, and to adjust the $V$ increment dynamically
Minimum Stake
Proposed parameter:
Locked state $PHA token can also be used for mining staking, e.g., Khala Crowdloan reward
Cost
General mining process
Decreased according to the Slash Rules if the worker misbehaves
Finally, once the worker decides to stop mining, they will wait for a Cooling Down period $\delta$. They will receive an one-time final payout after the cooldown.
Block number
$t$
$t+1$
$\dots$
$T$
$\dots$
$T+\delta$
Value Promise
$V_t$
$V_{t+1}$
$\dots$
$V_T$
$\dots$
$\dots$
Payment
$w(V_t)$
$w(V_{t+1})$
$\dots$
$w(V_T)$
$0$
$\kappa \min(V_T, V^e)$
Block reward
ā¦
ā¦
Block reward
Cooling off for $\delta$ blocks
Final payout
Proposed parameter:
When thereās no payout or slash event:
Proposed parameters:
Payout Event
In order to stay within the subsidy budget, at every block the budget is distributed proportionally based on the current Worker Shares:
Proposed algorithm:
Subsidy Budget
Phala / Khala
Relaychain
Polkadot/ Kusama
Budget for Mining
700 mln
Halving Period
180 days
Halving Discount
25%
Treasure Share
20%
First Month Reward
21.6 mln
Heartbeat & Payout Schedule
If they fail to send the Heartbeat transaction to the chain within the challenge window, the update of their value promise will be
Potential parameters:
Slash rules
The slash rules for workers are defined below. No slash rules have been implemented at the moment but will start in the near future.
A Worker will run a Performance Test and stake some tokens to get the initial V:
Ve=f(Re,ConfidenceScore)Ć(S+C)
Re>1 is a Stake Multiplier set by the network (Khala or Phala).
S is the worker stake; a Minimum Stake is required to start mining. The stake canāt be increased or decreased while mining, but can be set higher than the Minimum.
C is the estimated cost of the worker rigs, inferred from the Performance Test.
Ļ is the current PHA/USD quote, dynamically updated on-chain via Oracles
P is the initial Performance Test score.
In the early stages, we are compensating the equipment cost C with a higher Value Promise.
In the future, we plan to compensate for higher amortization costs (adding equipment amortization cost to the running costs ci and ca), thus increasing the speed of growth of the Workerās V.
Each individualās V is updated at every block:
Increased by ĪVtā if the worker keeps mining
Decreased by w(Vtā) if the worker got a payout
When a worker gets a payout w(Vtā), they will receive the amount immediately in their Phala wallet. The payout follows Payout Schedule and cannot exceed the Subsidy Budget.
hom is the unconditional V increment factor for worker
c(stā) is the operational cost to run the worker
Ī³(Vtā)h(Vtā) represents a factor to compensate for accidental/unintentional slashing (ignored in simulated charts)
kpā=min(PPtāā,120%), where Ptā is the instant performance score, and $P$ is the initial score
If V>Vmaxā after the update, it will be capped to Vmaxā
hoPhalamā=ĻKhalamā=1.00020 (hourly)
w(Vtā)=BĪ£shareshareā
where B is the current network subsidy budget for the given payout period.
Whenever w(Vtā) is paid to a worker, his V will be updated accordingly:
ĪV=āmin(w(Vtā),VtāāVlastā).
Vlastā is the value promised at the last payout event, or Ve if this is the first payout.
The update of V is limited to ensure the payout doesnāt cause V to drop lower than it was in the last payout event. The limit is necessary to make sure workers are well incentives to always accumulate credits in the network. Otherwise, workers are incentivized to constantly reset their mining session if V decreases over time.
Share represents how much the worker is paid out from V. We expect it will approximate the share baseline, but with minor adjustments to reflect the property of the worker:
shareBaselineā=Vtā.
Ī£share contains the share of workers which are running on Phala or Khala with the same subsidy ratio.
In any block t, if the Workerās VRF is smaller than their current Heartbeat Threshold Ī³(Vtā), they must send the Heartbeat transaction to the chain, which will update the on-chain record of their Value Promise and send a Mining Reward w(Vtā) to their reward wallet:
ĪVtā=āw(Vtā).
ĪVtā=āh(Vtā).
and their status is changed to unresponsive, and they will get repeatedly punished until they send a heartbeat, or stop mining. The slash amount h is defined in the Slash section.
The target is to process around 20 heartbeat challenges per block. The heartbeat challenge probability Ī³(Vtā) will be adjusted to target this number of challenges.
ChallengeWindow=10 (blocks)
When a worker chooses to disconnect from the platform, they send an Exit Transaction and receive their Severance Pay after Ī“ blocks.
After the cooling down period, the worker gets their final payout, representing the return of the initial stake. However, if VTā goes lower than the initial Ve, the worker will get less stake returned as a punishment: