v0.16.0-beta-3
Pre-release
Pre-release
What's Changed
- style(diag): use [[ ]] instead of [ ] in teranode-diag shell scripts by @liam in #1183
- fix(security): patch 9 Dependabot vulns + CodeQL integer-conversion alert by @oskarszoon in #1185
- fix: example how to pass secret to teranode operator by @teracoder in #1180
- MvP-4491 Enforce BIP68 on non-coinbase txs in NewBlockFromMsgBlock by @ctnguyen in #1177
- fix(scripts): shell hygiene — errors to stderr + [[ ]] conditionals by @liam in #1184
- refactor(blockchain/sql): rename GenerationalCache.Begin to NewOp by @liam in #1194
- fix(utxo): stamp setMined delete-at-height from the mined block height by @icellan in #1186
- fix(reliability): fix context handling flagged by SonarQube by @liam in #1199
- blockvalidation: low-risk micro-optimizations (IsEqual, redundant mutex, defensive copy, dead nil-check) by @gokutheengineer in #1200
- fix(utxo): serialize unmined CreatedAt as int64 to prevent UnixMilli truncation by @ordishs in #1195
- fix(blockvalidation): clear fork mined_set only after fork-depth/secret-mining checks pass by @ordishs in #1196
- perf(utxo): cut allocations on the tx-meta decorate + cache-repopulate hot path by @icellan in #1202
- test(main): accept non-semver v-prefixed tags in version format check by @icellan in #1212
- fix(blockvalidation): build orphan fork ID from full block hash by @gokutheengineer in #1205
- fix(asset,blockvalidation): drop chunked terminator on mid-stream failure; classify all-peers-failed as ErrExternal by @icellan in #1209
- fix(subtreevalidation): restore set_tx_meta_cache_kafka_count per-entry counter + expose pointer bucket type by @icellan in #1211
- chore(sonar): exclude test files from cognitive complexity rule by @liam in #1216
- fix(model): clamp disk-map capacity to 1 for empty (coinbase-only) blocks by @icellan in #1210
- fix(sonar): stop mistyped code-smells inflating the reliability rating by @liam in #1219
- fix(rpc,settings): complete reflect.Ptr → reflect.Pointer modernization by @liam in #1223
- fix(blockvalidation): serialize setTxMined via setMinedChan worker + prevent startup/retry deadlock by @icellan in #1208
- test: consolidate duplicate mocks onto canonical mocks by @icellan in #1203
- fix(utxo/sql): don't clear parent locked flag on unflagged Unspend by @ordishs in #1193
- chore(sonar): raise coverage above 80% — exclude tooling + test blob_deletion.go by @liam in #1224
- Add TTL to blockvalidation processBlockNotify cache by @gokutheengineer in #1215
- chore(deps): bump bsv aerospike-client-go fork to v8.7.1-bsv5 (fixes concurrent map read/write crash) by @icellan in #1229
- chore(sonar): knock out low-risk major code smells by @liam in #1230
- feat(utxo): group-completion protocol for batched UTXO ops + PutBatch/greedy adoption by @icellan in #1232
- refactor: reduce cognitive complexity in two functions (S3776) by @liam in #1233
- docs: consolidate AI context into a single lean AGENTS.md by @oskarszoon in #1227
- fix(blockvalidation): reuse precomputed fullSubtreeExists on write path by @gokutheengineer in #1221
- blockvalidation: avoid full queue copy in BlockPriorityQueue.Get steady-state path by @gokutheengineer in #1222
- fix(blockvalidation): drop throwaway BlockPriorityQueue in updateQueueSizeMetrics by @gokutheengineer in #1207
- fix blockvalidation WaitForBlock fork-blocked spin by @gokutheengineer in #1206
- fix(blockvalidation): re-open store reader on mmap fallback in readSubtree to avoid corrupt subtree by @gokutheengineer in #1138
- docs: correct maxReorgDepth, bloom-filter, and optimistic-mining claims by @ordishs in #1181
- fix(blockassembly): stable-sort unmined reload with parents-first tiebreak by @ordishs in #1198
- feat(utxopersister): one-shot --end-height UTXO-set build by @ordishs in #1220
- refactor(asset/httpimpl): extract handler bodies to reduce cognitive complexity (S3776) by @liam in #1236
- refactor(blockvalidation): remove dead subtreeDeDuplicator (#4661) by @gokutheengineer in #1204
- feat(blockvalidation,legacy): below-checkpoint outpoint-only IBD fast path (SQL, p2p + legacy, default-off) by @freemans13 in #1178
- MvP-1141 Enforce coinbase scriptSig length in Block.Valid by @ctnguyen in #1240
- fix(blockvalidation): gate secret-mining verdict on chainwork, not fork depth by @ordishs in #1197
- test(settings): guard profiler contention-profiling loader wiring by @icellan in #1225
- blockvalidation: collapse redundant RPCs in findCommonAncestor by @gokutheengineer in #1094
- fix(blockvalidation): off-load setMined retry backoff to a cancellable goroutine (#4655) by @gokutheengineer in #1133
- test(blockvalidation): fix broken main — catch-all GetBlockHeader mock in catchup fork scenario by @oskarszoon in #1247
- fix(ci): harden gitleaks workflow (template injection + HTTPS enforcement) by @liam in #1241
- MvP-1140 Add Go-side satoshi-range/no-inflation backstop on SkipScriptValidati… by @ctnguyen in #1235
- fix(model): overflow-safe coinbase reward/fee check by @liam in #1246
- fix(expiringmap): make TTL clean() eviction send non-blocking by @liam in #1245
- fix(util): avoid input aliasing in BuildMerkleRootFromCoinbase by @liam in #1244
- ci(sonar): post Quality Gate result as PR commit status by @oskarszoon in #1248
- fix(rpc): bound legacy ban RPC calls with a timeout (#591) by @liam in #1242
- fix(validator): correct off-by-one in parent-tx input bounds guard by @liam in #1243
- perf(tracing): eliminate disabled-path per-span allocations in UTracer.Start by @oskarszoon in #1191
- fix(util/aerospike): set MaxBufferSize once in init to fix data race by @liam in #1258
- feat(blockvalidation): skip unspendable tx storage during quick-validate catchup by @oskarszoon in #1111
- fix(uaerospike): drain in-flight BatchOperate before closing the client by @icellan in #1231
- Remove dead code from p2p service by @gokutheengineer in #1271
- MvP-1159 Harden P2P sync-peer selection against unvalidated peer claims by @ctnguyen in #1201
- ci(sonar): bind Quality Gate to tested merge by @oskarszoon in #1259
Full Changelog: v0.16.0-beta-2...v0.16.0-beta-3