FINAL zcash mining specifications
Feb 24
1 / 20
Feb 25
10d ago
notsofastFeb 2411
I'd like to use this thread as a net repository or collection for the discussion of ZEC's mining specifications, so it's easy to find and parse in advance of an official statement from Zooko and the development team.
Mining algorithm: As of Zcash alpha release v0.11.2.z294, resolved in Issue #2715 the Zcash mining algorithm will be Equihash (white paper here149), a new, memory-hard, proof-of-work mining algorithm based on the generalized Birthday Problem and Wagner's algorithm for it. Equihash was created by Alex Biryukov and Dmitry Khovratovich of the University of Luxembourg.
Block time spacing/target spacing: 2.5 minutes, with 12.5 ZEC reward per block. This is as per
github.com/zcash/zcash/issues/142#issuecomment-112935618.
However, to protect against instamining and accusations of miner collusion, the zcash team has decided not to apply the above rate of emission right from the genesis block. Instead, ZEC's emission will be subject to a slow start, where the emission curve will gradually ramp up to the full emission rate of 12.5 ZEC per block over the first 20,000 blocks. If there are further adjustments to the block spacing and reward, they will be in such a way that the following equation always remains true:
{# of slow start blocks} * {full block reward} = 250000
github.com/zcash/zcash/issues/762#issuecomment-213658623
Difficulty adjustment algorithm: Digishield V3, tweaked to use the following trailing-average difficulty window:
(next difficulty) = (last difficulty) x SQRT [ (150 seconds) / (last solve time)
(as per
https://github.com/zcash/zcash/issues/147#issuecomment-2451409084)
Difficulty adjustment period in blocks: This approximates to every block, as per the above link.
Transaction fee structure: Still TBD via wallet implementations post-1.0 protocol release. Currently exploring a privacy-safe fee selection algorithm. (IE, this won't be a critical element of the 1.0 zerocash release, and can be decided by wallet implementations later.) Assume this is negligible, in that max fees aren't material to a young network and that 0 fees can still be set if a user desires.
github.com/zcash/zcash/issues/398#issuecomment-155587212
Starting reward in ZEC per block: 12.5 ZEC per 2.5-minute spacing. As per
github.com/zcash/zcash/issues/142#issuecomment-112935618
Division of each PoW block reward between miners and zcash team:
- 80% (10 ZEC) to miners, 20% (2.5 ZEC) to zcash team, from genesis block to first halving of the block reward (approximately four years later)
- 100% to miners thereafter
- transaction fees paid 100% to miners throughout
As stated by daira below.
Reward halving period: every ~4 years, as per Bitcoin
github.com/zcash/zcash/issues/142#issuecomment-112935618
Total eventual supply: 21,000,000 (21 million), as per Bitcoin
github.com/zcash/zcash/issues/142#issuecomment-112935618
I look forward to final corrections, if any.