Specify Hard Fork 2: Tailstorm, script/VM and validation changes

Adds the Nexa Hard Fork 2 consensus changes to the specification, based on the feature overview in nexa!878 (merged) (doc/hf2.md) with every rule verified against the node source on dev.

New pages:

  • docs/upgrades/hard-fork-2.md — overview page: the 2-phase MTP activation mechanism, per-network activation parameters, and a linked summary of every change.
  • docs/blocks/tailstorm.md — full Tailstorm specification: subblocks and summary blocks (minerData versions 1/2 with field tables), the subblock DAG/grove and enhanced linking, uncle subblocks, proof of work (parent-hash binding, subblock target = ASERT x k, summary-target deficit compensation, chain work), two-level reorgs with the k-1 per-grove cap, tip consistency and snap-to-chain emergent consensus, block-size rules, and get_dag recovery at the fork boundary.

Amended pages:

  • docs/script/op-codes/op_parse.md — group authority flags pushed as an 8-byte little-endian bitfield after activation.
  • docs/script/op-codes/op_jump.md — OP_JUMP is no longer evaluated inside not-taken conditional branches.
  • docs/script/bignum.md — bignum binary-operation argument order aligned with the integer operations, with the exact affected opcode list and a before/after example.
  • docs/transactions/sighashtype.md — new output type 3, the retargetable ranged-outputs sighash, with its encoding and hashing exclusions.
  • docs/transactions/validation/block-level-validation-rules.md — SigChecks limits no longer enforced after activation.
  • docs/transactions/1transaction.md — the input type row said "MUST be 0", stale since Fork 1 added read-only inputs; now documents types 0/1 and the reservation of further values for Hard Fork 2.
  • docs/blocks/block.md — the Miner Data header row no longer claims the field must be empty; it links to the Tailstorm page.
  • docs/blocks/adaptive-blocksize.md — the tailstorm_k * 100KB next-max-block-size floor.
  • docs/mining/difficulty-adjustment-algorithm.md — short section on how ASERT interacts with Tailstorm.

Note for reviewers: while verifying against the node source we found that the per-input SigChecks formula in docs/transactions/validation/network-level-validation-rules.md does not appear to exist in the current node code at all (only the per-transaction 3,000 admission check does). That page was deliberately left untouched here; it may deserve its own correction MR.

Co-authored with Claude Code

Merge request reports

Loading
Loading