Skip to content
LogoLogo

Soft-fork upgrades

After mainnet, Arrekta changes consensus through soft forks: changes that only restrict what was allowed, so old nodes keep following the chain (§15).

Upgrade room

RoomTodayA soft fork can
Lock kinds 16–127valid to create, spendable by any non-empty witness, non-standard to relaygive a kind its spending rules (Bitcoin's model of undefined witness versions)
Transaction versions above 2follow version-2 rules, non-standard (version 3 is the TRUC policy)add rules for a new version
Existing rules—tighten them
Signature schemesscheme schedulessunset or retire a weakened scheme

Defining a lock kind outside 16–127, or loosening any rule, is a hard fork and needs every node to upgrade by a flag height.

Activation: version bits

Each network lists deployments (name, bit, start_height, timeout_height, period, threshold, min_activation_height, lock_in_on_timeout) (§9.4). Blocks signal by setting a bit in a header version of the form 0x20000000 | bits.

DEFINED ──start_height──▶ STARTED ──threshold reached──▶ LOCKED_IN ──min_activation_height──▶ ACTIVE
                             │
                             └──timeout_height──▶ FAILED (or LOCKED_IN if lock_in_on_timeout)

The state is fixed per period and computed from the block's own ancestry. GET /v1/deployments shows every deployment's state at the next height.

Current deployments: none on mainnet or testnet. Regtest has testdummy (bit 28, period 20, threshold 15) to exercise the mechanism.

Off-chain interfaces

P2P messages and the REST API are versioned separately: VERSION.protocol (currently 3) and the /v1 path prefix. The PST format has its own version byte.