Hard Fork 2
Hard Fork 2 is a coordinated upgrade of the Nexa consensus rules.
This page summarizes the changes that activate with the fork and links to the pages that specify each change in detail.
The source code refers to this fork as "Upgrade 2", so related code symbols use that name (for example SCRIPT_UPGRADE2_OPCODES and IsUpgrade2Activated).
Activation
Hard Fork 2 uses a 2 phase activation. When the MTP (median time past) of a block reaches the activation time, the fork is "pending": that block and its transactions MUST still follow the old ruleset, but the transaction pool is flushed and re-admitted under the new rules. The next block, and all subsequent blocks regardless of their times, MUST be evaluated under the Hard Fork 2 rules. Equivalently, a block is subject to the Hard Fork 2 rules if and only if the MTP of its parent block is greater than or equal to the activation time. This 2 phase activation cleanly applies the new ruleset to pending transactions by giving advance warning of a locked-in upgrade.
The per-network activation parameters are:
| Network | Activation |
|---|---|
| mainnet | time 1793495471 (Nov 1, 2026 UTC) |
| testnet | time 1793495471 (Nov 1, 2026 UTC) |
| regtest | time 1789948805 (Sept 21, 2026 UTC) |
| stormtest | by height: pending at height 2, active from height 3 (the time rule also applies) |
In the reference implementation the activation time is held in the consensus.fork2Time tweak, which defaults to the per-network time given above; setting this tweak overrides the default.
Feature Summary
Tailstorm
Tailstorm replaces each single block with a DAG of subblocks tied together by a summary block, providing roughly 1 second commitment intervals while preserving the 2 minute settlement cadence. Blocks containing subblocks are only accepted once Hard Fork 2 is pending or activated. See Tailstorm.
Script and VM changes
Three script machine changes take effect, gated by the SCRIPT_UPGRADE2_OPCODES verify flag.
The argument order of bignum operations is aligned with the argument order of the corresponding integer operations.
OP_PARSE pushes group authority bits as an 8 byte bitfield rather than a script number, so they can be masked directly with bitwise operations.
OP_JUMP is no longer evaluated inside not-taken conditional branches; only OP_IF, OP_NOTIF, OP_ELSE, and OP_ENDIF are evaluated in unexecuted branches.
Retargetable (ranged outputs) sighash type
Signature hash types that cover a range of consecutive outputs become valid, allowing the signed output range to be repositioned within a transaction ("retargeted") without invalidating the signature. See Signature Hash Type.
SigChecks limits removed
Consensus-level SigChecks (signature operation) counting is removed, so block-level SigChecks limits are no longer enforced after activation. See Block-Level Validation Rules.
Transaction input types
Only the UTXO (0) and read-only (1) transaction input types are valid before Hard Fork 2. Further values are reserved for future input types; they remain invalid in the first block subject to the fork rules and become acceptable from the following block.
Adaptive block size floor
Under Tailstorm the floor of the adaptive maximum block size is raised in proportion to the number of subblocks per summary block, so that a single subblock can always hold the largest possible transaction.