Skip to content

v0.10.2

Latest

Choose a tag to compare

@al-onyxprotocol al-onyxprotocol released this 16 Jul 18:18
1790966

ADAMANT blockchain node v0.10.2 is a reliability, recovery, and API capability release for node operators, delegates, explorers, messengers, and service developers. It helps nodes recover from stalled synchronization and interrupted shutdowns, adds richer REST and Socket.IO data access, corrects delegate API regressions, improves large-database queries, and refreshes dependencies and operator guidance.

Upgrade guidance: upgrading is recommended for improved reliability, recovery time, security maintenance, and API capabilities, but it is not mandatory for network compatibility. This release introduces no consensus fork and does not change block or transaction serialization, signatures, delegate ordering, rewards, fees, activation heights, slot timing, or deterministic replay.


Breaking changes

There are no protocol, consensus, wire-format, or API contract-breaking changes in v0.10.2.

  • New REST fields and Socket.IO subscriptions are additive and backward-compatible.
  • The legacy topAccounts configuration switch is removed; GET /api/accounts/top is now registered consistently on every node.
  • The release adds forward-only database migrations. The first startup after upgrading may need additional time and disk space to create checkpoint storage and account/block indexes.

API updates

  • Top accounts API: add GET /api/accounts/top with deterministic balance DESC, address ASC ordering, pagination, isDelegate filtering, response metadata, and limit=0 count-only requests (#260; Adamant-im/docs#29; Adamant-im/adamant-schema#44).
  • Delegate rank correctness: restore real rank, deprecated rate, and outsider productivity values in GET /api/delegates/get (#253).
  • Delegate voters correctness: prevent GET /api/delegates/voters from falling through to all accounts; add address-list filtering and related validation fixes (#255).
  • Consensus visibility: expose consensusCodeName, the effective consensus activation schedule, and the complete block reward milestone schedule through status APIs (#266; Adamant-im/docs#37; Adamant-im/adamant-schema#51).
  • Delegate forged amount: add lifetime forged values to delegate list and single-delegate responses as base-10 integer strings (#266).
  • Next-forger projection: use the next block height at round boundaries and return a stable loading error before the chain tip is available (#266).
  • Blocks filtering: correctly support numberOfTransactions=0 without changing the /api/blocks response contract (#263; Adamant-im/docs#33; Adamant-im/adamant-schema#46).

Client WebSocket API

  • Add opt-in compact newBlock events through the existing client Socket.IO interface (#264; Adamant-im/docs#35; Adamant-im/adamant-schema#48).
  • Add opt-in balances/change events for balance, unconfirmedBalance, or both (#264).
  • Index block, transaction, and balance subscriptions so unrelated clients are not scanned.
  • Batch affected account reads around block apply/rollback and isolate publication failures from consensus-state mutation.
  • Delivery remains best-effort and non-durable. Clients should restore subscriptions after reconnecting and reconcile critical state through REST.

Protocol & consensus

  • The effective activation schedule and active consensus codename are now observable through public status APIs (#266).
  • The next-forger fix changes only a previously incorrect public API projection at round boundaries; the forging and validation paths remain unchanged.
  • No consensus rules, activation heights, transaction/block bytes, IDs, signatures, rewards, fees, round settlement, or replay behavior change in this release.

Reliability & recovery

  • Sync watchdog: detect synchronization runs that make no block-height progress for five minutes, abort the stalled run safely, drain in-flight state mutation, and allow a later sync to recover automatically (#249).
  • Rejected-query handling: propagate PostgreSQL rejections through block verification, block loading, and startup memory-table updates instead of silently parking callback chains (#251).
  • Persisted mem-table checkpoints: add three rotating, SHA-256-verified checkpoint slots for derived mem_* state (#261).
  • Fail-closed recovery: restore only checkpoints that pass metadata, digest, invariant, chain, and network checks; fall back to the existing full deterministic rebuild whenever verification or partial replay fails (#261).
  • Canonical blocks and deterministic replay remain the source of truth. Checkpoints are only a local recovery cache.

Security

  • Update dependencies within their current major versions and remove the unused direct npm runtime dependency and its bundled subtree (#262).
  • Add a narrow compatible grunt -> js-yaml@3.15.0 override (#262).
  • Reduce the audited dependency graph from 4 moderate and 1 high findings to 0 moderate, high, or critical findings (#262).
  • No signature, mnemonic, transaction validation, peer handshake, or cryptographic protocol behavior changes.

Networking, database & performance

  • Add a partial balance index for deterministic top-account queries (#260).
  • Replace the blocks generator hash index with a composite B-tree index on (text_generatorPublicKey, height DESC), avoiding full-table scans for unknown generators with the default ordering (#263).
  • Use indexed Socket.IO subscriptions and batched final-state reads to reduce unnecessary client scans and account queries (#264).
  • Add rotating checkpoint storage for faster recovery from inconsistent derived state (#261).

Node operations & tooling

  • Enable persisted memory-state checkpoints by default through loading.memCheckpoints.enabled (#261).
  • Preserve the full-rebuild fallback for disabled, unavailable, invalid, or stale checkpoints.
  • Clarify graceful shutdown: after SIGINT or SIGTERM, wait for active sync/block processing to drain and for Cleaned up successfully before restarting or closing the process.
  • Document the native pg-native / libpq Node ABI rebuild path and current PostgreSQL test-service guidance.
  • Keep the existing Node.js requirement of 22.13.0 or newer.

Developer experience

  • Expand unit, API, integration, SQL, and live-scenario coverage for synchronization recovery, checkpoints, accounts, delegates, blocks, status APIs, and Socket.IO flows.
  • Reorganize the README and refresh project/community references.
  • Align companion documentation and OpenAPI changes for the top-accounts, blocks, WebSocket, status, and delegate APIs.

Upgrade notes for operators

  1. Use Node.js 22.13.0 or newer.
  2. Back up the database according to your normal operator procedure.
  3. Stop the node gracefully and wait for Cleaned up successfully.
  4. Deploy v0.10.2 and allow the first startup to finish all migrations.
  5. Plan additional database time and disk space for three rotating derived-state checkpoint slots and the new indexes.
  6. After startup, verify /api/node/status, synchronization progress, live block processing, and any REST or Socket.IO capabilities used by your services.

Full changelog

✨ Features & enhancements

🐞 Bug fixes

⚙️ Chores & maintenance

  • #262 Chore: Update npm dependencies and reduce install vulnerabilities by @metalisk
  • 214d091e Chore: Update version to 0.10.2 in package.json and package-lock.json
  • 62d9519e Docs: Reorganize README for clarity and improved information flow

📦 Release