Skip to content

Releases: Decentral-America/node-scala

Release list

v1.7.0

Choose a tag to compare

@jourlez jourlez released this 25 Jul 18:51

First official release

This is the first real GitHub Release for node-scala (v1.6.3 and earlier were git tags only, never published). It triggers the full publish cascade: Docker Hub (node + RIDE runner images), Maven Central (Sonatype), npm, and the aptly apt repo.

Consensus safety fix

HotStuff committee-transition quorum-safety gap. HotStuffVotePool.onVote checked quorum against only the latest committee snapshot handed to it, so a committee-membership change (a generator added or removed mid-round, e.g. via a committed-generators period rollover) could let a stake set retroactively satisfy a threshold it never actually held under every committee genuinely live during that target's vote accumulation — the same class of transient-unsafe-majority bug CockroachDB found and fixed via joint consensus in etcd/raft.

Fixed to require the accumulated signer set to independently satisfy quorum against every distinct committee snapshot observed during a target's accumulation — monotonically safe in both the shrink and grow directions. Also fixed along the way, all found by a dedicated adversarial (opus-level) review pass:

  • a stale vote from a since-removed generator could permanently stall QC formation for a target — now evicted automatically
  • unbounded memory growth in the vote pool for targets that never resolve — now pruned on view/height advance
  • a formed QC was broadcast to peers before local self-verification — reordered
  • corrected/tightened the safety-invariant documentation

Two independent adversarial reviews were run against this fix before merge; both found real issues, both were fixed and re-verified. Full node-tests regression: 2651/2651 passing.

API

  • GET /node/status now includes generationPeriodLength — this deployment-specific constant (mainnet/testnet/stagenet differ) was previously unexposed by any endpoint.

Testing infrastructure (test-only, no runtime behavior change)

Enterprise-grade E2E hardening across a deterministic-simulation HotStuff harness, chaos/nemesis fault injection (Docker network partitions via ToxiProxy), property-based operation fuzzing with balance-conservation invariants, OpenAPI schema-conformance CI gating, and CI cadence tiering (push vs. PR vs. nightly).