Releases: bsv-blockchain/teranode
Releases · bsv-blockchain/teranode
v0.14.0-beta-3
What's Changed
- refactor(blockassembly): optimize transaction handling during reorg by @freemans13 in #503
- test: add multistream test for legacy sync by @sugh01 in #511
- MvP-4458 Implementation for bip68 by @ctnguyen in #514
- Feat: grpc configurable settings by @teracoder in #530
Full Changelog: v0.14.0-beta-2...v0.14.0-beta-3
v0.14.0-beta-2
What's Changed
- fix: remove singleton Quorum pattern from subtree validation Server by @freemans13 in #521
- blockchain subscription heartbeat by @freemans13 in #463
- Decrement spentExtraRecs on unspend NOTALLSPENT signal by @oskarszoon in #524
Full Changelog: v0.14.0-beta-1...v0.14.0-beta-2
v0.14.0-beta-1
What's Changed
- Handle invalid processeAt time for block headers by @galt-tr in #469
- test: svnode with teranode with other additional tests by @sugh01 in #450
- Fixed possible concurrency when getting best block header when calculating difficulty for mining candidate by @icellan in #474
- peer selection - backoff when no peers available by @freemans13 in #458
- Add interaction failure tracking for invalid subtree handling by @galt-tr in #476
- test: add invalidate fork testcases by @sugh01 in #399
- fix(errors): prevent infinite recursion in (*Error).As causing 100% CPU by @freemans13 in #459
- 3409: add QUIC settings to documentation by @liam in #484
- feat(pruner): add metrics for pruner operations by @ordishs in #486
- feat(pruner): add TTL-based expiration mode for UTXO records by @ordishs in #488
- pruner block assembly wait and retention tweak by @freemans13 in #489
- test: fix flakiness by @sugh01 in #487
- Tx Meta Cache: Generation Stats, Prometheus Metrics by @gokutheengineer in #481
- Fix subtree meta NOT_FOUND when block assembly creates subtree without metadata by @oskarszoon in #480
- test: fixes test env and related flakiness by @sugh01 in #482
- feat(pruner): add skip flags for parent updates and deletions by @ordishs in #491
- BlockValidation - regenerate missing subtreemeta by @freemans13 in #468
- feat(pruner): add incremental Prometheus metrics for real-time monitoring by @ordishs in #492
- feat(pruner): add skipped metrics for idempotent operations by @ordishs in #493
- refactor(pruner): remove persisted height coordination by @freemans13 in #494
- feat(pruner): implement timeout handling and retry logic in pruning operations by @freemans13 in #495
- fix(blockvalidation>setTxMined): ensure cache is updated before SetTxMined() call by @freemans13 in #497
- feat(pruner): trigger initial pruning on startup based on block trigger mode by @freemans13 in #498
- feat(pruner): process multiple blob deletion batches per prune event by @ordishs in #496
- [Fix] otel logging and tracing integration by @teracoder in #483
- refactor(pruner): simplify notification system with drain-and-replace signals by @freemans13 in #500
- e2e: pruner tests by @sugh01 in #502
- Optimized GetMiningCandidate to use a pre-computed list of subtrees, removed cache by @icellan in #501
- fix(pruner): reduce Aerospike bandwidth by 90-99% during pruning by @icellan in #504
- fix(pruner): prevent notification handler deadlock by moving channel creation to New() by @freemans13 in #505
- fix(dashboard): align numeric columns with tabular figures by @ordishs in #508
- 1788: add multistream support for legacy peers by @liam in #507
- Feature/documentation by @liam in #510
- Feature/documentation2 by @liam in #515
- Upgraded s3 package, replaced deprecated manager package by @icellan in #516
- feat: Error sanitization for user-facing services by @gokutheengineer in #413
- build: upgrade Go from 1.25.2 to 1.26.0 by @ordishs in #517
- Changed map in block validation to swiss map from sync map by @icellan in #513
- Download missing subtree files before block revalidation by @freemans13 in #454
- Feature/asset subtreedata on demand creation by @freemans13 in #422
- feat(asset): add ARC-compatible /v1/policy endpoint by @freemans13 in #456
- perf(aerospike): optimize MarkTransactionsOnLongestChain for reorg performance by @freemans13 in #499
- fix(storage): make block persister the authority for permanent file promotion by @freemans13 in #506
- 3576: allow blockchain subscribers to be queried by @liam in #522
Full Changelog: v0.13.2...v0.14.0-beta-1
v0.13.3-beta-4
What's Changed
- Handle invalid processeAt time for block headers by @galt-tr in #469
- test: svnode with teranode with other additional tests by @sugh01 in #450
- Fixed possible concurrency when getting best block header when calculating difficulty for mining candidate by @icellan in #474
- peer selection - backoff when no peers available by @freemans13 in #458
- Add interaction failure tracking for invalid subtree handling by @galt-tr in #476
- test: add invalidate fork testcases by @sugh01 in #399
- fix(errors): prevent infinite recursion in (*Error).As causing 100% CPU by @freemans13 in #459
- 3409: add QUIC settings to documentation by @liam in #484
- feat(pruner): add metrics for pruner operations by @ordishs in #486
- feat(pruner): add TTL-based expiration mode for UTXO records by @ordishs in #488
- pruner block assembly wait and retention tweak by @freemans13 in #489
- test: fix flakiness by @sugh01 in #487
- Tx Meta Cache: Generation Stats, Prometheus Metrics by @gokutheengineer in #481
- Fix subtree meta NOT_FOUND when block assembly creates subtree without metadata by @oskarszoon in #480
- test: fixes test env and related flakiness by @sugh01 in #482
- feat(pruner): add skip flags for parent updates and deletions by @ordishs in #491
- BlockValidation - regenerate missing subtreemeta by @freemans13 in #468
- feat(pruner): add incremental Prometheus metrics for real-time monitoring by @ordishs in #492
- feat(pruner): add skipped metrics for idempotent operations by @ordishs in #493
Full Changelog: v0.13.2...v0.13.3-beta-4
v0.13.3-beta-3
What's Changed
- Handle invalid processeAt time for block headers by @galt-tr in #469
- test: svnode with teranode with other additional tests by @sugh01 in #450
- Fixed possible concurrency when getting best block header when calculating difficulty for mining candidate by @icellan in #474
- peer selection - backoff when no peers available by @freemans13 in #458
- Add interaction failure tracking for invalid subtree handling by @galt-tr in #476
- test: add invalidate fork testcases by @sugh01 in #399
- fix(errors): prevent infinite recursion in (*Error).As causing 100% CPU by @freemans13 in #459
- 3409: add QUIC settings to documentation by @liam in #484
- feat(pruner): add metrics for pruner operations by @ordishs in #486
- feat(pruner): add TTL-based expiration mode for UTXO records by @ordishs in #488
- pruner block assembly wait and retention tweak by @freemans13 in #489
- test: fix flakiness by @sugh01 in #487
- Tx Meta Cache: Generation Stats, Prometheus Metrics by @gokutheengineer in #481
- Fix subtree meta NOT_FOUND when block assembly creates subtree without metadata by @oskarszoon in #480
Full Changelog: v0.13.2...v0.13.3-beta-3
v0.13.3-beta-2
What's Changed
- Handle invalid processeAt time for block headers by @galt-tr in #469
- test: svnode with teranode with other additional tests by @sugh01 in #450
- Fixed possible concurrency when getting best block header when calculating difficulty for mining candidate by @icellan in #474
- peer selection - backoff when no peers available by @freemans13 in #458
- Add interaction failure tracking for invalid subtree handling by @galt-tr in #476
- test: add invalidate fork testcases by @sugh01 in #399
- fix(errors): prevent infinite recursion in (*Error).As causing 100% CPU by @freemans13 in #459
- 3409: add QUIC settings to documentation by @liam in #484
- feat(pruner): add metrics for pruner operations by @ordishs in #486
- feat(pruner): add TTL-based expiration mode for UTXO records by @ordishs in #488
- pruner block assembly wait and retention tweak by @freemans13 in #489
Full Changelog: v0.13.2...v0.13.3-beta-2
v0.13.3-beta-1
What's Changed
- Handle invalid processeAt time for block headers by @galt-tr in #469
- test: svnode with teranode with other additional tests by @sugh01 in #450
- Fixed possible concurrency when getting best block header when calculating difficulty for mining candidate by @icellan in #474
Full Changelog: v0.13.2...v0.13.3-beta-1
v0.13.2
What's Changed
- Fix use-after-free and nil pointer in block coinbase deserialization by @freemans13 in #377
- fix(aerospike): prevent .dah file creation when BlockHeightRetention is 0 by @ordishs in #379
- test: tests with external records by @sugh01 in #326
- refactor(aerospike): remove preserveUntil logic for external files by @ordishs in #381
- feat(utxo): add V2 utxo-headers format with coinbase transactions by @ordishs in #383
- Address teranode-review issues: documentation updates, config fixes, and code improvements by @ordishs in #384
- Integrate wip-scale-2 performance improvements into main by @ordishs in #385
- SPIKE: subsystem debug toggles for file operations by @gokutheengineer in #258
- Remove unneeded alternative view that broke mkdoc builds by @oskarszoon in #394
- Two-phase double-spend detection in setTxMined for reduced memory usage by @icellan in #371
- feat(chainintegrity): use hardcoded URLs and exclude coinbase service… by @sugh01 in #397
- P2P: Add on-demand HTTP health checking for sync peer selection by @freemans13 in #364
- Fix duplicate header bug in multi-iteration catchup by @icellan in #398
- fix(propagation): handle duplicate transactions gracefully (#382) by @icellan in #400
- Fix uint32 overflow in GetBlockForks API for large blocks by @icellan in #403
- feat: remove transition from catchup to idle in fsm by @gokutheengineer in #410
- Fix legacy block wire response to avoid duplicating coinbase by @galt-tr in #395
- Fix reopened and new teranode-review issues by @ordishs in #408
- docs(utxo): correct BlockAssembly notification flow comment by @ordishs in #353
- Upgrade to Teranode v0.13.1 with pruner service by @oskarszoon in #407
- test(e2e): add catchup test after pruner with observer pattern by @ordishs in #409
- Logger - Cache os.GetWd() - reduce CPU overhead on each log call by @freemans13 in #404
- Optimize subtree validation with parent metadata caching by @freemans13 in #387
- feat(asset): add pagination to subtree JSON endpoint by @ordishs in #415
- Switch to testnet-eu-1 as bootstrap by @oskarszoon in #418
- Fix data race in TestDaemon.Stop by adding runtime.Gosched after cont… by @sugh01 in #419
- test(e2e): move INTERACTIVE check to start of subtree pagination tests by @ordishs in #420
- Fix stale difficulty cache causing block rejection during sync by @oskarszoon in #414
- Added scripts to start aerospike TN by @icellan in #423
- Add Settings Portal for runtime configuration visibility by @icellan in #424
- Fixed missing auth handling in settings page in UI, fixed long description markdown rendering by @icellan in #429
- tests: added block persister tests to e2e suite and chain integrity by @sugh01 in #417
- fix: span propagation across microservices by @teracoder in #427
- Fix quick validation by adding BlockAssembly synchronization by @icellan in #401
- small fixes for review by @liam in #426
- Update docs to correct public Teranode images by @oskarszoon in #432
- Feature/k8s resolver by @icellan in #433
- errors As() optimisation by @freemans13 in #434
- fix: potential panic on closed channel by @gokutheengineer in #388
- feat(dashboard): enhance settings UI with resizable columns and markdown support by @ordishs in #430
- feat: implement retry in sql by @gokutheengineer in #396
- fix: GetHashOfAncestorBlock() timeout by @freemans13 in #435
- feat(pruner): add scheduled blob deletion and remove GetDAH from blob.Store interface by @ordishs in #431
- always store invalid block before returning ErrBlockInvalid error by @freemans13 in #438
- blockchain SQL optimisations by @freemans13 in #436
- always release semaphore when closing close, even on error by @freemans13 in #439
- Release semaphore before streaming block by @galt-tr in #437
- Remove bitcoin-sv dependencies in favor of new org by @galt-tr in #425
- feat: add configurable propagation URL in node status messages by @galt-tr in #411
- Block Validation - wait for pending blocks fix by @freemans13 in #444
- Review2 by @liam in #442
- fix(pruner): reinstate blob deletion e2e test and decouple pruner from DB by @ordishs in #443
- fix(blockchain): reduce blob deletion log verbosity by @ordishs in #447
- BlockValidation - isParentMined() fix by @freemans13 in #448
- Re-added infinite read deadline to RPC calls by @icellan in #449
- Add initial system requirements doc by @oskarszoon in #452
- fix(blockvalidation): peer reputation and subtree analyzer by @ordishs in #453
- fix(asset): use proper Close() instead of CloseWithError for subtree … by @freemans13 in #460
- fix(blockvalidation): set block height during catchup and fix race condition by @ordishs in #461
- Fixed txmeta raw output of Aerospike record by @icellan in #464
- subtree processor - sleep 10ms when nothing to do by @freemans13 in #457
- 4470: implement txmetacache method stubs by @liam in #467
- preserve parents logic back in pruner by @freemans13 in #465
- feat: circuit breaker for postgres by @gokutheengineer in #451
- Made sure setTxMined is only run once per block by @icellan in #470
New Contributors
- @teracoder made their first contribution in #427
Full Changelog: v0.13.1...v0.13.2
v0.13.1
What's Changed
- semaphore-leak-fix by @freemans13 in #373
- catchup forked block fails to update tx status to unmined by @freemans13 in #302
- feat: add postgres pool connection setting by @gokutheengineer in #309
Full Changelog: v0.13.0...v0.13.1
v0.13.0
What's Changed
- blockpersister fork recovery by @freemans13 in #216
- Implement scenario 07 combined by @rid3thespiral in #210
- Add automatic nightly schedule to workflow by @rid3thespiral in #197
- Upgrade Teranode to v0.12.4 by @oskarszoon in #212
- Limit block batches to 10k during checkpoint syncs by @oskarszoon in #215
- 4363: aerospike conflict handling by @liam in #208
- Docs/dashboard documentation by @torrejonv in #202
- Reduced memory usage and allocations in block validation by @icellan in #218
- Docs/periodic review protobuf docs 4361 by @torrejonv in #203
- Enhance Block Validation service documentation by @torrejonv in #214
- Add Aerospike UTXO store to e2e daemon ready tests, removed sqlite te… by @sugh01 in #220
- Docs/november 2025 features by @torrejonv in #192
- Improve legacy checkpoints sync performance and large block handling by @oskarszoon in #219
- Fix documentation issues in blockchain.md by @torrejonv in #223
- Fix documentation issues in legacy.md by @torrejonv in #224
- Fix documentation issues in propagation.md by @torrejonv in #225
- load unmined tx defensive checks - bug fix by @freemans13 in #183
- fix(blockvalidation): remove unsafe concurrent access to block.SubtreeSlices in logging by @ordishs in #229
- 4364: Test with blocks which have early duplicates which are fully sp… by @liam in #198
- Update nightly workflow by @rid3thespiral in #230
- Pruner service… by @freemans13 in #114
- feat(settings): add distributor settings to coinbase configuration by @ordishs in #232
- refactor(utxo): remove redundant spendQueueSem and add timeout-aware aerospike semaphore by @ordishs in #226
- Added script and config for the nginx reverse proxy by @icellan in #190
- refactor(rpc,p2p,daemon): improve peer client clarity and type safety by @ordishs in #201
- docs: remove open-rpc documentation by @torrejonv in #236
- Security improvements by @oskarszoon in #234
- Fix pagination on all pages by @oskarszoon in #227
- Stu/prune external txs by @freemans13 in #213
- subtree full fix by @freemans13 in #237
- blob-batcher-idle-cpu-optimisation by @freemans13 in #217
- Fix/flaky blockvalidation test by @gokutheengineer in #231
- fix: data race circuit breakers by @gokutheengineer in #171
- feat: add grpc updates by @gokutheengineer in #133
- Block validation stress test on high memory usage, update nightly workflow with ready test folder by @rid3thespiral in #233
- 4377: subtree benchmarks by @liam in #238
- Refactor test infrastructure to use centralized container management by @sugh01 in #245
- Enhance Kafka documentation with comprehensive configuration and reli… by @torrejonv in #240
- Fix technical inaccuracies in alert.md documentation by @torrejonv in #241
- Improve Block Assembly service documentation accuracy and completeness by @torrejonv in #242
- Fix blockPersister.md formatting and directory structure by @torrejonv in #243
- 4390: tests for memory leaks by @liam in #251
- Performance improvements in external files handling by @oskarszoon in #253
- Docs/pruner service documentation by @torrejonv in #257
- Fix TTL behaviour for lock records by @oskarszoon in #254
- test: move settings to settings_test.conf by @sugh01 in #249
- Docs/simplify kafka documentation by @torrejonv in #259
- Document peer reputation system and new API endpoints by @torrejonv in #256
- Disable invalid subtree penalties - likely network issues not malicious by @oskarszoon in #260
- Stream legacy blocks straight to legacy without deserialization by @oskarszoon in #250
- Test/fix skipped by @sugh01 in #261
- Docs/kafka settings validation 4389 by @torrejonv in #248
- Fix HTTP connection pool exhaustion during P2P catchup by @oskarszoon in #264
- Fix race condition in TestDeleteByBin by @rid3thespiral in #263
- Fix bootstrap servers by @oskarszoon in #280
- Reorganize Asset Server HTTP endpoints by resource type by @torrejonv in #275
- Docs/godoc corrections by @torrejonv in #276
- docs: comprehensive review and update of two-phase commit documentation by @torrejonv in #285
- Feature/tuis by @liam in #265
- fix(blockpersister): derive state file path from persister store by @ordishs in #283
- rename aerospike_ee.sh to aerospike.sh by @liam in #286
- bestblock-dev.sh - more info by @freemans13 in #277
- Delete at height safely by @freemans13 in #187
- Revert recent Aerospike cold-start change addition by @oskarszoon in #294
- process transactions by level ordered by @freemans13 in #288
- asset repository throttling by @freemans13 in #293
- get external tx optimisations by @freemans13 in #287
- fix: restrict teranode to 64-bit architectures only by @ordishs in #295
- check block subtree memory consumption tweaks by @freemans13 in #266
- docs: add missing protobuf API documentation by @torrejonv in #289
- Downgrade Aerospike client to 8.2.0 by @oskarszoon in #301
- Improve TestBlockchainSubscriptionReconnection by @rid3thespiral in #291
- fix(blob/file): prevent header-only files when reader is empty by @ordishs in #307
- Move utxo pruner interface package location by @freemans13 in #299
- Do not invalidate block on storage errors by @galt-tr in #279
- refactor(blob/file): hold read semaphore for entire read operation by @ordishs in #308
- fix(tracing): ensure logging and metrics work when tracing disabled by @ordishs in #269
- Update block_header_data_model.md with merkle root calculation details by @galt-tr in #317
- fix: block-subtree-slicesdata-race-fix-without-locks by @freemans13 in #319
- Check peerID in all subscribed messages by @galt-tr in #222
- fix: ParseInputReferencesOnly to handle Extended Format transactions by @freemans13 in #304
- test: fix skipped tests inside pkg and utils by @sugh01 in #300
- test: fix skipped test by @sugh01 in #292
- fix-test-docker-compose-host by @freemans13 in #335
- block-persister-utxo-processing-toggle by @freemans13 in #327
- docs: Add missing aerospikekafkaconnec...