Skip to content

v1.33

Latest

Choose a tag to compare

@rotilho rotilho released this 05 Jul 18:14
2b844f6

Highlights

  • Upgraded to Java 25, Spring Boot 4.1.0, Gradle 9.5.1, GraalVM build tools 1.1.2, Ktor 3.5.1, Springdoc 3.0.3, and commons 6.8.1.
  • POST /transactions now waits for confirmation and returns the confirmed transaction.
  • Added deduplicate support for transaction publishing.
  • Improved transaction, signer, election, and native-image observability.
  • Hardened peer admission, handshake callbacks, peer URI validation, and protocol ingress validation.
  • Reworked election/vote persistence to reduce deadlocks, retry bounded failures, and clean stale votes.

API And Runtime

  • POST /transactions and /transactions/stream now share the same confirmation flow.
  • Publish responses now distinguish confirmed, rejected, dropped, and expired transactions.
  • ALREADY_CONFIRMED is treated as a successful publish result.
  • Transaction rebroadcasting now still happens when validation completes before sender tracking is available.

Election, Votes, And DB

  • Added bounded retry/backoff for election processing.
  • Prevented duplicate pending elections and ignored votes while consensus persistence is pending.
  • Improved vote freshness tracking with persisted last_vote_timestamp.
  • Added stale vote block recording, startup reconciliation, stale vote deletion, and stale marker cleanup.
  • Added migrations:
    • V7: enforce non-null transaction timestamps
    • V8: add/backfill transaction block_type
    • V9: rebuild weights with last_vote_timestamp
    • V10: add stale_vote_block

Network And Protocol

  • Added stricter peer URI validation for scheme, host, path/query/fragment, loopback/private hosts, and allowlisted default nodes.
  • Routed inbound handshakes/websockets through Guardian admission.
  • Banned peers now get 403; rate-limited peers get 429.
  • Tightened validation for keep-alive neighbours, transaction requests, and transaction stream ranges.
  • Added broader protocol ingress tests.

Observability

  • Added signer latency metric: signer.signature.latency.
  • Added transaction pipeline latency by stage/type: transactions.pipeline.latency.
  • Added transaction rejected/dropped counters.
  • Added active election and election processor buffer/batch metrics.

Build, CI, Docs

  • CI now uses GraalVM Java 25.
  • Native image builds use committed reachability metadata.
  • Native image min heap is set to 400m.
  • Added README instructions for regenerating native metadata.
  • Added NETWORK.md and TRANSACTION-PROCESSING.md.
  • Removed the old image cleanup workflow.

Full Changelog: v1.32...v1.33