V1.0.7-stable released — IIP-0603 longpoll, cross-network defence-in-depth

v1.0.7-stable is live. Release page: v1.0.7-stable · INT-devs / intcoin · GitLab

No consensus or wire-format changes. v1.0.7 interoperates with v1.0.6.1 peers unchanged — no forced upgrade. Datadir, wallet, and key formats carry forward; upgrade is a binary swap with no re-sync.

Headlines

:bullseye: IIP-0603 end-to-end longpoll fix

Daemon-side TipChangeNotifier fan-out + miner-side LongpollWatcherThread. Closes the ~50% stale-work loss @hammersfan10 quantified on v1.0.6.1; stale templates abandoned within milliseconds of a chain advance instead of grinding to the next find.

Details:

  • Daemon fires the notify on every RPC-driven ActivateBestChain() (submitblock, generatetoaddress, generateblock), so long-poll callers wake on actual tip change rather than the 30s timeout.
  • intcoin-miner runs a LongpollWatcherThread that blocks on getblocktemplate({longpollid, longpolltimeout: 30}), sets g_templateStale on return, and mining threads check every ~2ms.
  • Functional regtest feature_iip0603_longpoll.py pins the end-to-end timing.

:locked: Cross-network defence-in-depth

Closes the theft class where an attacker mines a cheap regtest/testnet block, hands the matching tint1q.../rint1q... address to a mainnet user, and silently receives real INT to a hash160 they hold the privkey for.

Chain-aware HRP rejection now applies to:

  • Every send path (sendtoaddress, sendmany, send, sendall, createrawtransaction, generatetoaddress, ISMS recovery).
  • Key-import paths (CExtPubKey::Decode, CExtKey::Decode, PaymentCode::Decode require HRP + version-bytes to match active chain).
  • loadwallet rejects wallet.dat files tagged for a different network (WalletError::WRONG_NETWORK).
  • mempool.dat v3 + chainstate genesis-hash tags.
  • intcoin-miner startup gate + explorer search.
  • ISMS multisig descriptor no longer hardcodes mainnet HRP.

:gear: Chain-aware IBD

Regtest short-circuits IBD (operator-controlled by definition); testnet drops the 24h tip-age requirement (no-miners → no recent tip → IBD true → getblocktemplate refuses → no mining → loop. Fixed by chain-aware exit logic.)

Also in this release

  • IIP-0604 PQ block-template field adaptations (mutable-field contract, weight × 4, 100→150 byte coinbase scriptSig).
  • IIP-0210 ancestor package relay (BIP-331-style SENDPACKAGES).
  • IIP-0422 wallet backup + key export (dumpmnemonic RPC, opt-in encrypted-at-rest store_mnemonic flag, mnemonic.txt sibling file on every create path).
  • IIP-0121 Lightning consensus + policy prerequisites (script templates, channel-reserve table, anchor-output policy).
  • IIP-0423 INTcoin URI scheme + IIP-0424 display denomination units (both at Proposed).
  • Multi-wallet Qt UX (status-bar picker, create/load/unload dialogs, per-wallet /wallet/<name>/ RPC routing).
  • Miner derives expected chain from getblockchaininfo.chain over RPC rather than command-line flag alone.
  • 53 Coverity-flagged defects fixed; expanded unit + functional + fuzz + race test coverage.

Full changelog: docs/user/CHANGELOG.md · v1.0.7-stable · INT-devs / intcoin · GitLab

Verifying your download

gpg --import intcoin-release-key-35B70313.asc
gpg --verify SHA256SUMS.asc SHA256SUMS
sha256sum -c SHA256SUMS --ignore-missing

Release key fingerprint: DA59 591A 0E99 3644 7EF6 4492 6C9C 7A2A 35B7 0313.

Known gap

Fedora / Rocky / openSUSE RPM, Arch, Snap, and Docker packages didn’t make it into this release. The cause was pre-existing CI-pipeline bugs that surfaced on the first real release-stage exercise — every prior release pipeline since v1.0.6.1 was source=schedule and skipped the release-stage jobs entirely, so the bugs sat dormant.

Fix queued for v1.0.7.x / v1.0.8. Build-from-source remains the recommended path on those platforms in the meantime:

git clone --recurse-submodules https://gitlab.com/INT-devs/intcoin.git
cd intcoin && git checkout v1.0.7-stable
cd depends && make -j$(nproc) && cd ..
cmake -B build --toolchain depends/$(depends/config.guess)/toolchain.cmake
cmake --build build -j$(nproc) && sudo cmake --install build

— INT-devs