v2.0.9 — Eldersign
Released 2026-06-22. A coordinated consensus bundle: four rule changes activate together at block 1,055,555 (~2026-07-23 at 60-second pacing). This is the first scheduled consensus event since the Restoration — read the upgrade guidance below carefully, especially if you mine.
⚠️ Installing? Read this first — don't wait formainInstall from this tag now. v2.0.9-Eldersign is the release — build and run it directly from this tag. You do not need to wait for it to land on the
mainbranch. During the soft-fork freezemaindeliberately lags; the merge intomainis post-freeze bookkeeping on our end (~mid-July) and is not a prerequisite for upgrading.The only deadline that matters is consensus activation at block 1,055,555 (~2026-07-23): miners MUST be on v2.0.9 before that height; validators and public nodes SHOULD. Don't gate your upgrade on the
main-merge — it lands only ~3 days before activation.
What activates at block 1,055,555
Four changes, all gated to the same height so the network steps over the line as one:
- BIP66 — strict-DER signatures (#33). Signature encodings must be strict canonical DER at consensus level, replacing the pre-0.10-era lenient helper with a self-contained parser that no longer depends on OpenSSL version quirks. Enforced at both mempool and block validation from the fork height onward. This is the rule exchange- and wallet-integration checklists literally grep the source for.
- BIP65 — OP_CHECKLOCKTIMEVERIFY (#34). The
OP_NOP2slot becomesOP_CHECKLOCKTIMEVERIFY, enabling script-level absolute timelocks — vault patterns, refund clauses, any cooperative-spend output that must not be reclaimable until a given block or time. - COINBASE_MATURITY 10 → 240 (#32). A freshly-mined coinbase becomes spendable after 240 confirmations instead of 10 — at 60-second blocks, 10 minutes becomes 4 hours. This lifts coinbase maturity comfortably above the existing
MAX_REORG_DEPTH=100finality guard, so a coinbase can never be spent inside the window where its block could still be reorged out. - Rolling checkpoints, Phase 1 (#6). A self-advancing, persistent finality guard: as blocks gain confirmation depth the node records a rolling checkpoint, hardening it against deep-reorg attacks from a malicious chain (a hostile peer feeding a fresh-syncing node a poisoned longer history, or the old >80%-hash attacker resurrecting a chain from before the current tip). Complements — does not replace — the runtime
MAX_REORG_DEPTH=100guard and the static h=976,000 checkpoint. Local to each node; no interop effect.
Supporting fixes (no separate activation)
- Miner mempool pre-screen (#39).
CreateNewBlocknow screens candidate transactions with the same script flags block-validation will apply at the next height. Without this, post-fork a transaction valid under mempool's looser flags but invalid under block-validation's stricter flags (BIP65/66) would be placed into a candidate block and then trip the final validation test-pass — ending the mining attempt. Surfaces only at h ≥ 1,055,555; fixed pre-emptively. - Public testnet (#38). Seed entry, a re-anchored testnet genesis, an h=0 testnet checkpoint, and testnet/regtest mining without peers — so any contributor can join a public OFF testnet and live-test consensus rcs, not just the Conclave in isolation.
- Retarget diagnostics gated behind
-debug=pow(#43). The LWMA-3 retarget diagnostics were unconditional and grew a soak daemon'sdebug.logto 17.5 GB in a few hours on fast testnets. Now silent unless-debug=powis set. No effect on mainnet behavior. - CGNAT / RFC 6598 range treated as non-routable (#42).
100.64.0.0/10no longer leaks into publicaddrgossip. (Already onmain; rides this release by merge-up.) - Seed resilience.
seed6replaced with23skidoo.subgenius.vipfor cross-zone DNS resilience.
Do I need to upgrade? (read this — it differs from Triune/Restoration)
The Restoration (block 1,000,000) and Triune (989,898 / 999,991) were hard forks: an old binary was forked off the chain. v2.0.9 is different. BIP66, BIP65, and the coinbase-maturity bump are soft-fork-style tightenings — they only ever make more things invalid, never fewer. A non-upgraded node will keep following the canonical chain because everything the upgraded majority produces is still valid under the old, looser rules.
That makes the upgrade pitch honest rather than alarmist:
- If you mine — you MUST upgrade before block 1,055,555. A non-upgraded miner can produce a block that violates one of the new rules (a non-strict-DER signature, a CLTV-failing spend, or a coinbase spent before 240 confirmations). Upgraded nodes — which will be the majority — reject that block and orphan it. You lose the reward. There is no grace for miners.
- If you validate, run an exchange, or run a public node — you should upgrade. A non-upgraded node still follows the chain, but it does not enforce the new rules and will relay transactions the network now rejects. If you integrated OFF expecting BIP66/BIP65 enforcement, enforcement only exists on upgraded nodes. Upgrade to actually get what these rules promise.
- Rolling checkpoints (#6) are on by default and purely local — you benefit the moment you run v2.0.9, with nothing to configure.
Bottom line: miners, no exceptions; everyone else, strongly recommended. The whole network on one ruleset is the goal; the asymmetry above just describes who gets hurt if they skip it.
PROTOCOL_VERSION is unchanged at 90003 — the wire protocol, wallet on-disk format, and RPC dialect are untouched. Your wallet.dat and chain data carry over.
Downloads
GitHub release: v2.0.9-Eldersign
- Linux x86_64 daemon + cli —
Offerings-daemon-v2.0.9-Eldersign-linux64.tar.gz(depends/ static, glibc 2.35+) - Linux x86_64 Qt5 wallet —
Offerings-qt-v2.0.9-Eldersign-linux64.tar.gz(depends/ static) - Windows x86_64 Qt5 wallet —
Offerings-v2.0.9-Eldersign-win64.zip(mingw-w64 cross via depends/) SHA256SUMS-*.txt(also bundled inside each archive)
Verifying
$ tar -xzf Offerings-daemon-v2.0.9-Eldersign-linux64.tar.gz
$ cd Offerings-daemon-v2.0.9-Eldersign-linux64
$ sha256sum -c SHA256SUMS-linux.txt
Offeringsd: OK
Offerings-cli: OK
Upgrading your node (Linux)
sudo systemctl stop offeringsd # or kill your running daemon
sudo cp Offeringsd /usr/local/bin/
sudo cp Offerings-cli /usr/local/bin/
sudo systemctl start offeringsd
Offerings-cli getinfo | head # confirm: "version": 2000900
Your wallet.dat and blockchain data are untouched. Brief RPC downtime during restart is expected.
Windows — extract the zip, copy the three .exe files into your Offerings Core install directory, launch the new Offerings-qt.exe. Your %APPDATA%\Offering data directory stays in place.
Credit
The BIP66, BIP65, coinbase-maturity, and public-testnet issues (#32 / #33 / #34 / #38) were flagged by skifdni (@9019x) on 2026-06-14 as the structural items standing between OFF and exchange/wallet integration. Continued contributions to the Restoration line.