-
Notifications
You must be signed in to change notification settings - Fork 292
Description
Complete Hard Forks Reference
This issue provides a comprehensive reference of all hard forks in the Harmony blockchain, organized by feature category. Each fork shows its activation epoch across Mainnet, Testnet, and Devnet networks.
Table of Contents
- Ethereum Compatibility Forks
- Staking & Delegation Forks
- Cross-Shard & Network Forks
- Block Time & Performance Forks
- Voting Power & Governance Forks
- Leader Rotation & Consensus Forks
- Rewards & Fee Collection Forks
- Randomness & Security Forks
- HIP Proposals & Slots
- Complete Fork Table
- Notes
Ethereum Compatibility Forks
Forks related to Ethereum compatibility and EVM improvements.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| EIP155 | 28 | 0 | 0 | EIP155 hard fork epoch (includes EIP158) |
| S3 | 28 | 0 | 0 | First epoch with S3 mainnet and all Ethereum updates up to Constantinople |
| ReceiptLog | 101 | 0 | 0 | First epoch supporting receipt logs |
| Istanbul | 314 | 0 | 0 | Istanbul fork epoch |
| EthCompatible | 442 | 0 | 0 | Ethereum-compatible transaction processing starts |
| DataCopyFix | 689 | 0 | 0 | Fix for EVM datacopy bug |
| SHA3 | 725 | 0 | 0 | First epoch supporting SHA3 FIPS-202 standard |
| ChainIdFix | 1323 | 0 | 5 | First epoch to return Ethereum compatible chain id by ChainID() opcode |
| ValidatorCodeFix | 1535 | 1296 | 5 | Fix for validator code being available in Solidity (extcodesize, extcodecopy, extcodehash) |
| EIP2537Precompile | TBD | TBD | TBD | First epoch to support EIP-2537 precompiles (BLS12-381 curve operations) |
Staking & Delegation Forks
Forks related to staking, delegation, and validator management.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| PreStaking | 185 | 1 | 1 | Epoch when staking transactions are allowed |
| Staking | 186 | 2 | 2 | Epoch when shard assignment takes staking into account |
| QuickUnlock | 191 | 0 | 0 | Undelegation unlocked at the current epoch |
| Redelegation | 290 | 2 | 0 | Redelegation supported, undelegation locking time restored to 7 epochs |
| NoEarlyUnlock | 530 | 2 | 0 | Early unlock of undelegated tokens from validators elected >7 epochs disabled |
| MinDelegation100 | 631 | 2 | 0 | Minimum delegation reduced from 1000 ONE to 100 ONE |
| MinCommissionRate | 631 | 2 | 0 | Policy for minimum commission rate of 5% started |
| EPoSBound35 | 631 | 2 | 0 | EPoS bound parameter c changed from 15% to 35% |
| StakingPrecompile | 871 | 2 | 5 | First epoch to support staking precompiles |
| HIP30 | 1673 | 2176 | 7 | Number of shards decreased from 4 to 2 (mainnet/localnet), split emission 75% staking/25% recovery, change from 250 to 200 nodes, minimum validator commission from 5% to 7% |
| MaxRate | 1733 | 2520 | TBD | Validator max-rate is at least equal to minRate + validator max-rate-increase |
| TopMaxRate | 1976 | TBD | TBD | Validator max-rate is less than 100% when minRate + max-rate-increase > 100% |
Cross-Shard & Network Forks
Forks related to cross-shard transactions, cross-links, and network-level features.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| CrossTx | 28 | 0 | 0 | Cross-shard transaction processing enabled |
| CrossLink | 186 | 2 | 2 | Beaconchain starts containing cross-shard links |
| CrossShardXferPrecompile | 1323 | 2 | 5 | First epoch to feature cross-shard transfer precompile |
| Allowlist (HIP-18) | TBD | 2 | TBD | First epoch to support allowlist of HIP-18 |
| DevnetExternal | Not enabled | Not enabled | 144 | Devnet external validators epoch |
| TestnetExternal | Not enabled | 3044 | TBD | Testnet external validators epoch |
Block Time & Performance Forks
Forks related to block time reductions and performance improvements.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| FiveSeconds | 230 | 0 | 0 | Block time reduced to 5 seconds, rewards adjusted to 17.5 ONE/block |
| TwoSeconds | 366 | 2 | 0 | Block time reduced to 2 seconds, rewards adjusted to 7 ONE/block |
| IsOneSecond | TBD | TBD | 17436 | One second block time epoch |
| BlockGas30M | 1673 | 2176 | 7 | Block gas limit increased to 30M |
Voting Power & Governance Forks
Forks related to voting power adjustments and governance changes.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| SixtyPercent | 530 | 2 | TBD | Internal voting power reduced from 68% to 60% |
| HIP6And8 | 725 | 2 | 0 | HIP-6: reduce internal voting power from 60% to 49%; HIP-8: increase external nodes from 800 to 900 |
| HIP32 | 2152 | Not enabled | Not enabled | Vote power feature - fixes crosslink signing issue when crosslinks are not sent for an entire epoch |
Leader Rotation & Consensus Forks
Forks related to leader rotation and consensus improvements.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| LeaderRotationInternalValidators | 2152 | 3044 | 144 | Leader rotation for internal validators enabled |
| LeaderRotationExternalValidators | 2152 | 3044 | 144 | Leader rotation for external validators enabled |
| LeaderRotationV2 | TBD | TBD | TBD | Leader rotation version 2 |
Rewards & Fee Collection Forks
Forks related to block rewards and fee collection.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| AggregatedReward | 689 | 2 | 3 | Block rewards distributed every 64 blocks |
| FeeCollect | 1535 | 1296 | 5 | First epoch that enables transaction fees to be collected into community-managed account |
Randomness & Security Forks
Forks related to randomness generation and security improvements.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| VRF | 631 | 2 | 0 | VRF randomness enabled |
| PrevVRF | 689 | 2 | 0 | Previous VRF randomness can be fetched |
HIP Proposals & Slots
Forks implementing Harmony Improvement Proposals (HIPs) and slot management.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| HIP6And8 | 725 | 2 | 0 | HIP-6: reduce internal voting power from 60% to 49%; HIP-8: increase external nodes from 800 to 900 |
| SlotsLimited (HIP-16) | 999 | 2 | TBD | First epoch to enable HIP-16 (slots limitation) |
| Allowlist (HIP-18) | TBD | 2 | TBD | First epoch to support allowlist of HIP-18 |
| HIP30 | 1673 | 2176 | 7 | Number of shards decreased from 4 to 2 (mainnet/localnet), split emission 75% staking/25% recovery, change from 250 to 200 nodes, minimum validator commission from 5% to 7% |
| HIP32 | 2152 | Not enabled | Not enabled | Vote power feature - fixes crosslink signing issue when crosslinks are not sent for an entire epoch |
Complete Fork Table
Complete alphabetical list of all hard forks for quick reference.
| Fork Name | Mainnet Epoch | Testnet Epoch | Devnet Epoch | Description |
|---|---|---|---|---|
| AggregatedReward | 689 | 2 | 3 | Block rewards distributed every 64 blocks |
| Allowlist (HIP-18) | TBD | 2 | TBD | First epoch to support allowlist of HIP-18 |
| BlockGas30M | 1673 | 2176 | 7 | Block gas limit increased to 30M |
| ChainIdFix | 1323 | 0 | 5 | First epoch to return Ethereum compatible chain id by ChainID() opcode |
| CrossLink | 186 | 2 | 2 | Beaconchain starts containing cross-shard links |
| CrossShardXferPrecompile | 1323 | 2 | 5 | First epoch to feature cross-shard transfer precompile |
| CrossTx | 28 | 0 | 0 | Cross-shard transaction processing enabled |
| DataCopyFix | 689 | 0 | 0 | Fix for EVM datacopy bug |
| DevnetExternal | Not enabled | Not enabled | 144 | Devnet external validators epoch |
| EIP155 | 28 | 0 | 0 | EIP155 hard fork epoch (includes EIP158) |
| EIP2537Precompile | TBD | TBD | TBD | First epoch to support EIP-2537 precompiles (BLS12-381 curve operations) |
| EPoSBound35 | 631 | 2 | 0 | EPoS bound parameter c changed from 15% to 35% |
| EthCompatible | 442 | 0 | 0 | Ethereum-compatible transaction processing starts |
| FeeCollect | 1535 | 1296 | 5 | First epoch that enables transaction fees to be collected into community-managed account |
| FiveSeconds | 230 | 0 | 0 | Block time reduced to 5 seconds, rewards adjusted to 17.5 ONE/block |
| HIP30 | 1673 | 2176 | 7 | Number of shards decreased from 4 to 2 (mainnet/localnet), split emission 75% staking/25% recovery, change from 250 to 200 nodes, minimum validator commission from 5% to 7% |
| HIP32 | 2152 | Not enabled | Not enabled | Vote power feature - fixes crosslink signing issue when crosslinks are not sent for an entire epoch |
| HIP6And8 | 725 | 2 | 0 | HIP-6: reduce internal voting power from 60% to 49%; HIP-8: increase external nodes from 800 to 900 |
| Istanbul | 314 | 0 | 0 | Istanbul fork epoch |
| IsOneSecond | TBD | TBD | 17436 | One second block time epoch |
| LeaderRotationExternalValidators | 2152 | 3044 | 144 | Leader rotation for external validators enabled |
| LeaderRotationInternalValidators | 2152 | 3044 | 144 | Leader rotation for internal validators enabled |
| LeaderRotationV2 | TBD | TBD | TBD | Leader rotation version 2 |
| MaxRate | 1733 | 2520 | TBD | Validator max-rate is at least equal to minRate + validator max-rate-increase |
| MinCommissionRate | 631 | 2 | 0 | Policy for minimum commission rate of 5% started |
| MinDelegation100 | 631 | 2 | 0 | Minimum delegation reduced from 1000 ONE to 100 ONE |
| NoEarlyUnlock | 530 | 2 | 0 | Early unlock of undelegated tokens from validators elected >7 epochs disabled |
| PreStaking | 185 | 1 | 1 | Epoch when staking transactions are allowed |
| PrevVRF | 689 | 2 | 0 | Previous VRF randomness can be fetched |
| QuickUnlock | 191 | 0 | 0 | Undelegation unlocked at the current epoch |
| ReceiptLog | 101 | 0 | 0 | First epoch supporting receipt logs |
| Redelegation | 290 | 2 | 0 | Redelegation supported, undelegation locking time restored to 7 epochs |
| S3 | 28 | 0 | 0 | First epoch with S3 mainnet and all Ethereum updates up to Constantinople |
| SHA3 | 725 | 0 | 0 | First epoch supporting SHA3 FIPS-202 standard |
| SixtyPercent | 530 | 2 | TBD | Internal voting power reduced from 68% to 60% |
| SlotsLimited (HIP-16) | 999 | 2 | TBD | First epoch to enable HIP-16 (slots limitation) |
| Staking | 186 | 2 | 2 | Epoch when shard assignment takes staking into account |
| StakingPrecompile | 871 | 2 | 5 | First epoch to support staking precompiles |
| TestnetExternal | Not enabled | 3044 | TBD | Testnet external validators epoch |
| TopMaxRate | 1976 | TBD | TBD | Validator max-rate is less than 100% when minRate + max-rate-increase > 100% |
| TwoSeconds | 366 | 2 | 0 | Block time reduced to 2 seconds, rewards adjusted to 7 ONE/block |
| ValidatorCodeFix | 1535 | 1296 | 5 | Fix for validator code being available in Solidity (extcodesize, extcodecopy, extcodehash) |
| VRF | 631 | 2 | 0 | VRF randomness enabled |
Notes
Epoch Values
- Epoch 0: Feature is enabled from genesis
- TBD: Epoch is set to
EpochTBD(10000000) and is not yet scheduled - Not enabled: Feature is not applicable or not enabled on that network
Networks
- Mainnet: Harmony main network (ChainID: 1)
- Testnet: Harmony test network (ChainID: 2)
- Devnet: Partner/Devnet network (ChainID: 4)
Source
This information is extracted from internal/params/config.go in the Harmony codebase. The epoch values are defined in the chain configuration for each network.
Updates
When new forks are added or epoch values are finalized, this issue should be updated accordingly.