Skip to content

v0.10.0

Latest

Choose a tag to compare

@al-onyxprotocol al-onyxprotocol released this 16 Jun 11:36
· 0 commits to dev since this release
784ba60

ADAMANT blockchain node v0.10.0 is a major maintenance and capability release for operators, delegates, and client developers. It improves messenger-facing APIs, adds WebSocket peer transport, strengthens diagnostics and installation tooling, refreshes dependencies, and hardens transaction admission at the P2P boundary.

Upgrade guidance: delegates and node runners are encouraged to upgrade for reliability, security, and compatibility with newer clients. The release does not introduce a mandatory consensus fork for already-synced networks — height-gated protocol behavior (fairSystem, spaceship) remains configuration-driven and backward-compatible before activation heights.


Breaking changes

  • Node.js requirement: Node.js 18 is no longer supported. Engine requirement is >=22.13.0 (#117, #111).
  • Removed deprecated HTTP endpoints including passphrase-bearing routes, unused chat helpers, /delegates/fee, /normalize, and related legacy handlers (#105).
  • API response typing: count is now returned as a number across affected list endpoints (#110).
  • Filter rename: withoutDirectTransfers is deprecated; use includeDirectTransfers instead (#91).
  • Cryptography stack: migrated from sodium wrapper to native sodium-native bindings (#153).

API updates

  • timestampMs field for transactions, with consensus-gated validation and response handling (#93, #210).
  • ?returnUnconfirmed=1 for transactions, chats, states, and chatrooms; additional explicit unconfirmed fields (#96, #122, #127).
  • includeDirectTransfers parameter for /api/chats/get and /api/chatrooms (#91, #114).
  • Default sorting uses timestamp:desc; timestamp-based ordering prioritizes timestampMs (#128).
  • Query parsing fix: bracket-style types[] filters work in transaction API queries (#157).
  • Past-timestamp admission limited to chat and state transactions; transfers allow a wider offline-wallet window (#236).
  • Security: disabled public access to forging list endpoint (#123).

Protocol & consensus

  • Consensus activation heights configuration for fairSystem and spaceship with height-gated behavior (#210).
  • timestampMs protocol rules preserved: ADAMANT-epoch milliseconds, derived timestamp, and activation-boundary tests.
  • No emergency fork: existing chains continue with deterministic replay; operators should still upgrade before future activation milestones.

Security

  • P2P timestamp admission hardening: future- and past-timestamp checks used by the Public API are now also enforced on the P2P gossip path, closing a pool-poisoning gap where far-future transactions could bypass publish() via peer relay (#246). Replay/sync verify() paths are unchanged — not consensus-breaking.
  • Native Ed25519 verification via sodium-native (#153).
  • Cache and request-limiter configuration improvements (#238).

Networking & performance

  • WebSocket peer transport between nodes with connection rotation and peer prioritization (#99). Learn more at https://docs.adamant.im
  • Improved WebSocket logging with direction context (#233, #136).
  • Block sync robustness: prevent stale block backlog during synchronization (#237, #138).
  • Chatroom SQL optimizations (#109).
  • Transaction pool rewrite using Map with improved removal and indexing (#108, #125).
  • Block / transaction metadata: height and blockTimestamp persisted and exposed.

Node operations & tooling

  • Installation scripts modernized for Ubuntu/Debian and CentOS/RHEL 8–10: Node.js 22/24/26, PostgreSQL handling, wget-based bootstrap, improved prompts and logging (#241).
  • fix_node.sh repairs and version bumps for operator recovery flows.
  • Config overrides via CLI and JSON files with unsafe-key validation (#228).
  • Localnet scripts: start, stop, status, drop (#230).
  • Live scenario testing runner for testnet and localnet (#232).
  • Testnet bootstrapping helpers in tooling (#152).
  • Default peer list maintenance (#139, #224, #169).
  • Populate missing config values from config.default.json at startup (#142).
  • Graceful shutdown and mem-table safety documentation (#158, AGENTS.md).

Developer experience

  • Structured logging with rotation, colored levels, and sync progress diagnostics (#158, #140, #100).
  • Expanded CONTRIBUTING.md with live test scenarios and reporting (#232).
  • AGENTS.md and AI_AGENT_NOTES.md for maintainer/agent workflows (#165, #169).
  • Improved unit/API test coverage and developer testing workflow (#124, #115, #119).

Deprecated & removed

  • GitHub Wiki as documentation source — use https://docs.adamant.im
  • withoutDirectTransfers query parameter (use includeDirectTransfers)
  • verifyOnLoading config option (#112)
  • Legacy HTTP endpoints removed (#105)

Upgrade notes for operators

  1. Upgrade Node.js to 22.13.0 or newer before deploying.
  2. Prefer official install/repair scripts from this release tag.
  3. Review config.default.json for new options (wsNode, logging, consensus activation heights).
  4. Stop nodes gracefully (Ctrl+C); do not use kill -9 on live nodes.
  5. After upgrade, verify /api/node/status and peer connectivity (HTTP and WebSocket).

Full changelog

✨ Features & enhancements

🐞 Bug fixes

  • #108 fix: transaction pool doesn't properly remove transactions by @yoxira
  • #113 fix: don't process old blocks by @yoxira
  • #114 fix: includeDirectTransfers by @yoxira
  • #120 fix: skipping delegate slot by @yoxira
  • #121 fix: removeAllListeners is not a function by @yoxira
  • #122 fix: orderBy/offset with returnUnconfirmed by @yoxira
  • #123 fix: disable public access to forging list by @yoxira
  • #125 fix: transactionPool uses wrong config by @yoxira
  • #129 fix: enforce not null after successful migration by @yoxira
  • #133 fix: dependency error by @yoxira
  • #134 fix: bugs related to Express v5 migration by @yoxira
  • #135 fix: minor bugs by @yoxira
  • #138 fix: block process sequence by @yoxira
  • #157 fix: default query parser does not support types[] by @yoxira
  • #210 fix: complete timestampMs response and activation handling by @adamant-al
  • #233 fix: improve WebSocket peer logging visibility by @metalisk
  • #236 fix: limit past-timestamp admission to chat/state transactions by @metalisk
  • #237 fix: prevent stale block backlog during synchronization by @metalisk
  • #246 fix: enforce future-timestamp admission check on P2P transaction relay by @al-onyxprotocol

🚀 Performance

  • #109 perf: optimize chats/get and /chatrooms endpoints by @yoxira

⚙️ Chores & maintenance

📦 Release