Skip to content

chore(deps): bump go-chaincfg to v1.5.8#849

Merged
oskarszoon merged 1 commit into
bsv-blockchain:mainfrom
oskarszoon:chore/go-chaincfg-v1.5.8
May 12, 2026
Merged

chore(deps): bump go-chaincfg to v1.5.8#849
oskarszoon merged 1 commit into
bsv-blockchain:mainfrom
oskarszoon:chore/go-chaincfg-v1.5.8

Conversation

@oskarszoon

Copy link
Copy Markdown
Contributor

Bump github.com/bsv-blockchain/go-chaincfg from v1.5.5 to v1.5.8.

What's in v1.5.8

Checkpoints (the main change):

  • mainnet: height 945000 (0x00000000000000000c39d94e19d6a55cfb0454918df1814fbcd919353a6e1f82)
  • testnet: height 1730000 (0x00000000000e61efa6a236cd94662eefc814a24affb9f24b002ebc4b018e4256)
  • teratestnet: height 18000 (0x00000000174095c3c94343b28d29f45010b44bf221e22df5cea6e0ce547a10b5)

These extend the hard-coded checkpoint list to speed up IBD and harden against deep reorgs.

Collateral dependency bumps in go-chaincfg (no API surface changes):

  • go-wire: 1.2.1 → 1.2.3
  • go-bt/v2: 2.6.1 → 2.6.3
  • go-sdk: 1.2.18 → 1.2.23
  • golang.org/x/crypto: 0.48.0 → 0.50.0
  • CI toolchain: Go 1.24 → 1.25 (go-chaincfg module only)

No exported symbols were added, removed, or renamed. Checkpoints flow through ChainCfgParams.Checkpoints into catchup.go; there are no hardcoded duplicate checkpoint heights in Teranode.

Test plan

  • go build ./... — clean
  • go test ./settings/... ./services/blockchain/... ./services/blockvalidation/... — 1550 tests, all pass
  • TestHighestCheckpointHeight/mainnet_params updated to expect 945000 (new highest checkpoint)
  • Verified checkpoints are consumed from ChainCfgParams.Checkpoints; no hardcoded duplicates in Teranode

Brings in three new checkpoints added in v1.5.8:
- mainnet: 945000 (0x00000000000000000c39d94...)
- testnet: 1730000 (0x00000000000e61ef...)
- teratestnet: 18000 (0x000000001740...)

These speed up initial block download and harden the chain against
deep reorgs by extending the hard-coded checkpoint list.

Collateral changes from go-chaincfg v1.5.5 → v1.5.8:
- go-wire: 1.2.1 → 1.2.3 (transitive)
- go-bt/v2: 2.6.1 → 2.6.3 (transitive, pulled into Teranode go.mod)
- go-sdk: 1.2.18 → 1.2.23 (transitive, pulled into Teranode go.mod)
- go-chaincfg itself: Go toolchain bump from 1.24 → 1.25; no exported
  API surface changes

TestHighestCheckpointHeight/mainnet_params updated to expect 945000
(the new highest checkpoint) instead of the previous 938000.
@github-actions

github-actions Bot commented May 12, 2026

Copy link
Copy Markdown
Contributor

🤖 Claude Code Review

Status: Complete


Current Review:

This is a clean dependency bump with appropriate test updates. The PR correctly updates go-chaincfg from v1.5.5 to v1.5.8, which adds new checkpoints for mainnet (height 945000), testnet (height 1730000), and teratestnet (height 18000).

Key observations:

  1. Test update is correct: The change in server_fsm_run_gate_test.go:41 correctly updates the expected highest checkpoint from 938000 to 945000, matching the new mainnet checkpoint in go-chaincfg v1.5.8.

  2. No hardcoded duplicates: Verified that Teranode consumes checkpoints exclusively from ChainCfgParams.Checkpoints with no hardcoded checkpoint heights elsewhere in the codebase, as claimed in the PR description.

  3. Transitive dependency bumps are safe: The collateral bumps (go-wire, go-bt, go-sdk, golang.org/x/crypto) are documented in the PR description and contain no API surface changes.

  4. Security consideration: The checkpoint update strengthens protection against deep reorgs during IBD by extending the checkpoint list to more recent blocks.

Checkpoint usage verified in:

  • services/blockchain/Server.go: HighestCheckpointHeight() helper and guardRunBelowHighestCheckpoint() gate logic
  • services/blockvalidation/catchup.go: Checkpoint verification during sync
  • services/blockvalidation/BlockValidation.go: Skipping difficulty validation for checkpointed blocks

No issues found.

@sonarqubecloud

Copy link
Copy Markdown

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark Comparison Report

Baseline: main (unknown)

Current: PR-849 (b70cc7c)

Summary

  • Regressions: 0
  • Improvements: 0
  • Unchanged: 142
  • Significance level: p < 0.05
All benchmark results (sec/op)
Benchmark Baseline Current Change p-value
_NewBlockFromBytes-4 1.597µ 1.551µ ~ 0.400
SplitSyncedParentMap_SetIfNotExists/256_buckets-4 71.12n 71.05n ~ 0.800
SplitSyncedParentMap_SetIfNotExists/16_buckets-4 70.93n 71.28n ~ 0.100
SplitSyncedParentMap_SetIfNotExists/1_bucket-4 71.19n 70.98n ~ 0.200
SplitSyncedParentMap_ConcurrentSetIfNotExists/256_buckets... 34.73n 32.76n ~ 0.100
SplitSyncedParentMap_ConcurrentSetIfNotExists/16_buckets_... 58.81n 55.18n ~ 0.100
SplitSyncedParentMap_ConcurrentSetIfNotExists/1_bucket_pa... 139.4n 131.9n ~ 0.100
MiningCandidate_Stringify_Short-4 217.7n 222.2n ~ 0.100
MiningCandidate_Stringify_Long-4 1.641µ 1.635µ ~ 1.000
MiningSolution_Stringify-4 854.6n 847.8n ~ 0.100
BlockInfo_MarshalJSON-4 1.744µ 1.761µ ~ 0.600
NewFromBytes-4 130.2n 131.8n ~ 0.100
Mine_EasyDifficulty-4 66.82µ 67.24µ ~ 0.700
Mine_WithAddress-4 6.889µ 6.855µ ~ 0.100
DirectSubtreeAdd/4_per_subtree-4 58.58n 62.71n ~ 0.100
DirectSubtreeAdd/64_per_subtree-4 28.67n 31.14n ~ 0.100
DirectSubtreeAdd/256_per_subtree-4 27.11n 30.16n ~ 0.100
DirectSubtreeAdd/1024_per_subtree-4 26.18n 28.98n ~ 0.100
DirectSubtreeAdd/2048_per_subtree-4 25.83n 28.70n ~ 0.100
SubtreeProcessorAdd/4_per_subtree-4 278.9n 279.2n ~ 0.700
SubtreeProcessorAdd/64_per_subtree-4 270.0n 274.0n ~ 0.700
SubtreeProcessorAdd/256_per_subtree-4 274.2n 273.5n ~ 0.400
SubtreeProcessorAdd/1024_per_subtree-4 266.0n 266.5n ~ 0.700
SubtreeProcessorAdd/2048_per_subtree-4 266.7n 264.6n ~ 0.700
SubtreeProcessorRotate/4_per_subtree-4 270.7n 272.6n ~ 0.600
SubtreeProcessorRotate/64_per_subtree-4 268.1n 271.5n ~ 0.600
SubtreeProcessorRotate/256_per_subtree-4 268.6n 271.6n ~ 0.400
SubtreeProcessorRotate/1024_per_subtree-4 269.2n 269.1n ~ 1.000
SubtreeNodeAddOnly/4_per_subtree-4 53.78n 54.03n ~ 0.300
SubtreeNodeAddOnly/64_per_subtree-4 34.17n 34.30n ~ 0.800
SubtreeNodeAddOnly/256_per_subtree-4 33.25n 33.43n ~ 0.300
SubtreeNodeAddOnly/1024_per_subtree-4 32.62n 32.73n ~ 0.300
SubtreeCreationOnly/4_per_subtree-4 111.2n 111.4n ~ 1.000
SubtreeCreationOnly/64_per_subtree-4 390.1n 398.2n ~ 0.200
SubtreeCreationOnly/256_per_subtree-4 1.336µ 1.435µ ~ 0.100
SubtreeCreationOnly/1024_per_subtree-4 4.557µ 4.481µ ~ 0.400
SubtreeCreationOnly/2048_per_subtree-4 7.971µ 8.199µ ~ 0.700
SubtreeProcessorOverheadBreakdown/64_per_subtree-4 272.2n 270.8n ~ 0.200
SubtreeProcessorOverheadBreakdown/1024_per_subtree-4 277.1n 268.9n ~ 0.100
ParallelGetAndSetIfNotExists/1k_nodes-4 802.6µ 803.6µ ~ 1.000
ParallelGetAndSetIfNotExists/10k_nodes-4 1.600m 1.592m ~ 0.700
ParallelGetAndSetIfNotExists/50k_nodes-4 6.722m 6.751m ~ 0.400
ParallelGetAndSetIfNotExists/100k_nodes-4 13.58m 13.57m ~ 1.000
SequentialGetAndSetIfNotExists/1k_nodes-4 651.7µ 658.5µ ~ 0.100
SequentialGetAndSetIfNotExists/10k_nodes-4 2.927m 2.730m ~ 0.100
SequentialGetAndSetIfNotExists/50k_nodes-4 10.48m 10.33m ~ 0.700
SequentialGetAndSetIfNotExists/100k_nodes-4 20.02m 19.71m ~ 0.200
ProcessOwnBlockSubtreeNodesParallel/1k_nodes-4 627.9µ 620.0µ ~ 0.200
ProcessOwnBlockSubtreeNodesParallel/10k_nodes-4 4.135m 4.123m ~ 0.700
ProcessOwnBlockSubtreeNodesParallel/100k_nodes-4 16.58m 16.36m ~ 0.100
ProcessOwnBlockSubtreeNodesSequential/1k_nodes-4 694.3µ 681.7µ ~ 0.100
ProcessOwnBlockSubtreeNodesSequential/10k_nodes-4 5.633m 5.789m ~ 0.100
ProcessOwnBlockSubtreeNodesSequential/100k_nodes-4 38.71m 37.72m ~ 0.100
DiskTxMap_SetIfNotExists-4 3.594µ 3.990µ ~ 0.100
DiskTxMap_SetIfNotExists_Parallel-4 3.361µ 3.596µ ~ 0.400
DiskTxMap_ExistenceOnly-4 300.7n 316.8n ~ 0.100
Queue-4 196.0n 197.6n ~ 0.100
AtomicPointer-4 4.447n 4.593n ~ 0.400
ReorgOptimizations/DedupFilterPipeline/Old/10K-4 890.4µ 876.3µ ~ 0.700
ReorgOptimizations/DedupFilterPipeline/New/10K-4 828.3µ 868.1µ ~ 0.100
ReorgOptimizations/AllMarkFalse/Old/10K-4 127.3µ 118.7µ ~ 0.100
ReorgOptimizations/AllMarkFalse/New/10K-4 62.24µ 62.84µ ~ 0.200
ReorgOptimizations/HashSlicePool/Old/10K-4 66.52µ 64.55µ ~ 0.400
ReorgOptimizations/HashSlicePool/New/10K-4 11.99µ 11.57µ ~ 0.400
ReorgOptimizations/NodeFlags/Old/10K-4 5.753µ 5.687µ ~ 0.700
ReorgOptimizations/NodeFlags/New/10K-4 2.005µ 1.852µ ~ 0.100
ReorgOptimizations/DedupFilterPipeline/Old/100K-4 9.518m 10.180m ~ 0.100
ReorgOptimizations/DedupFilterPipeline/New/100K-4 9.396m 11.271m ~ 0.100
ReorgOptimizations/AllMarkFalse/Old/100K-4 1.110m 1.172m ~ 0.200
ReorgOptimizations/AllMarkFalse/New/100K-4 681.5µ 690.1µ ~ 0.100
ReorgOptimizations/HashSlicePool/Old/100K-4 724.5µ 663.1µ ~ 0.100
ReorgOptimizations/HashSlicePool/New/100K-4 320.2µ 301.1µ ~ 0.400
ReorgOptimizations/NodeFlags/Old/100K-4 56.38µ 57.78µ ~ 0.400
ReorgOptimizations/NodeFlags/New/100K-4 20.30µ 19.98µ ~ 0.700
TxMapSetIfNotExists-4 52.08n 51.53n ~ 0.700
TxMapSetIfNotExistsDuplicate-4 38.31n 38.29n ~ 0.700
ChannelSendReceive-4 584.5n 624.4n ~ 0.100
BlockAssembler_AddTx-4 0.03169n 0.02975n ~ 0.400
AddNode-4 12.34 12.34 ~ 0.700
AddNodeWithMap-4 12.61 12.56 ~ 1.000
CalcBlockWork-4 503.8n 507.9n ~ 0.300
CalculateWork-4 695.5n 680.9n ~ 0.100
BuildBlockLocatorString_Helpers/Size_10-4 1.292µ 1.502µ ~ 0.200
BuildBlockLocatorString_Helpers/Size_100-4 12.79µ 12.38µ ~ 0.400
BuildBlockLocatorString_Helpers/Size_1000-4 156.6µ 122.5µ ~ 0.400
CatchupWithHeaderCache-4 103.9m 104.2m ~ 0.100
_prepareTxsPerLevel-4 413.1m 404.7m ~ 0.200
_prepareTxsPerLevelOrdered-4 3.495m 3.982m ~ 0.700
_prepareTxsPerLevel_Comparison/Original-4 414.2m 411.5m ~ 0.100
_prepareTxsPerLevel_Comparison/Optimized-4 3.480m 3.533m ~ 1.000
_BufferPoolAllocation/16KB-4 3.299µ 3.400µ ~ 0.100
_BufferPoolAllocation/32KB-4 6.885µ 8.540µ ~ 0.100
_BufferPoolAllocation/64KB-4 16.51µ 17.11µ ~ 0.200
_BufferPoolAllocation/128KB-4 28.73µ 32.39µ ~ 0.100
_BufferPoolAllocation/512KB-4 113.9µ 109.1µ ~ 0.100
_BufferPoolConcurrent/32KB-4 16.63µ 18.27µ ~ 0.100
_BufferPoolConcurrent/64KB-4 26.35µ 26.35µ ~ 1.000
_BufferPoolConcurrent/512KB-4 138.8µ 139.3µ ~ 1.000
_SubtreeDeserializationWithBufferSizes/16KB-4 618.6µ 611.7µ ~ 0.100
_SubtreeDeserializationWithBufferSizes/32KB-4 614.7µ 616.2µ ~ 1.000
_SubtreeDeserializationWithBufferSizes/64KB-4 620.0µ 620.9µ ~ 1.000
_SubtreeDeserializationWithBufferSizes/128KB-4 623.5µ 611.0µ ~ 0.100
_SubtreeDeserializationWithBufferSizes/512KB-4 619.2µ 619.1µ ~ 0.700
_SubtreeDataDeserializationWithBufferSizes/16KB-4 35.37m 35.32m ~ 1.000
_SubtreeDataDeserializationWithBufferSizes/32KB-4 35.31m 35.71m ~ 0.200
_SubtreeDataDeserializationWithBufferSizes/64KB-4 35.37m 35.07m ~ 0.400
_SubtreeDataDeserializationWithBufferSizes/128KB-4 35.51m 35.38m ~ 1.000
_SubtreeDataDeserializationWithBufferSizes/512KB-4 35.08m 35.14m ~ 1.000
_PooledVsNonPooled/Pooled-4 830.3n 833.5n ~ 1.000
_PooledVsNonPooled/NonPooled-4 6.710µ 6.979µ ~ 0.400
_MemoryFootprint/Current_512KB_32concurrent-4 6.955µ 6.858µ ~ 0.700
_MemoryFootprint/Proposed_32KB_32concurrent-4 10.026µ 9.099µ ~ 0.100
_MemoryFootprint/Alternative_64KB_32concurrent-4 9.383µ 8.805µ ~ 0.100
SubtreeSizes/10k_tx_4_per_subtree-4 1.352m 1.303m ~ 0.400
SubtreeSizes/10k_tx_16_per_subtree-4 306.5µ 302.1µ ~ 0.400
SubtreeSizes/10k_tx_64_per_subtree-4 73.72µ 73.05µ ~ 1.000
SubtreeSizes/10k_tx_256_per_subtree-4 18.42µ 18.01µ ~ 0.100
SubtreeSizes/10k_tx_512_per_subtree-4 8.893µ 8.853µ ~ 0.400
SubtreeSizes/10k_tx_1024_per_subtree-4 4.468µ 4.373µ ~ 0.100
SubtreeSizes/10k_tx_2k_per_subtree-4 2.213µ 2.193µ ~ 0.200
BlockSizeScaling/10k_tx_64_per_subtree-4 70.46µ 70.32µ ~ 0.200
BlockSizeScaling/10k_tx_256_per_subtree-4 17.79µ 17.50µ ~ 0.100
BlockSizeScaling/10k_tx_1024_per_subtree-4 4.449µ 4.358µ ~ 0.100
BlockSizeScaling/50k_tx_64_per_subtree-4 371.3µ 371.9µ ~ 1.000
BlockSizeScaling/50k_tx_256_per_subtree-4 89.05µ 87.72µ ~ 0.200
BlockSizeScaling/50k_tx_1024_per_subtree-4 21.88µ 21.70µ ~ 0.400
SubtreeAllocations/small_subtrees_exists_check-4 152.3µ 152.2µ ~ 0.700
SubtreeAllocations/small_subtrees_data_fetch-4 161.9µ 159.4µ ~ 1.000
SubtreeAllocations/small_subtrees_full_validation-4 312.1µ 307.7µ ~ 0.200
SubtreeAllocations/medium_subtrees_exists_check-4 9.131µ 8.891µ ~ 0.200
SubtreeAllocations/medium_subtrees_data_fetch-4 9.535µ 9.393µ ~ 0.100
SubtreeAllocations/medium_subtrees_full_validation-4 17.73µ 17.59µ ~ 0.700
SubtreeAllocations/large_subtrees_exists_check-4 2.105µ 2.108µ ~ 1.000
SubtreeAllocations/large_subtrees_data_fetch-4 2.244µ 2.277µ ~ 0.400
SubtreeAllocations/large_subtrees_full_validation-4 4.372µ 4.360µ ~ 0.200
StoreBlock_Sequential/BelowCSVHeight-4 336.9µ 326.3µ ~ 0.700
StoreBlock_Sequential/AboveCSVHeight-4 329.8µ 337.6µ ~ 0.400
GetUtxoHashes-4 255.4n 259.7n ~ 0.400
GetUtxoHashes_ManyOutputs-4 47.29µ 48.30µ ~ 0.400
_NewMetaDataFromBytes-4 238.6n 239.6n ~ 0.600
_Bytes-4 626.1n 627.2n ~ 1.000
_MetaBytes-4 569.0n 569.2n ~ 1.000

Threshold: >10% with p < 0.05 | Generated: 2026-05-12 12:21 UTC

@oskarszoon oskarszoon self-assigned this May 12, 2026
@oskarszoon oskarszoon enabled auto-merge (squash) May 12, 2026 14:23

@ordishs ordishs left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Clean dependency bump. Test fixture correctly updated to match new mainnet checkpoint at 945000. Verified no hardcoded checkpoint heights elsewhere in the codebase — checkpoints flow through ChainCfgParams.Checkpoints as expected. All CI green, SonarQube clean, no benchmark regressions. LGTM.

@oskarszoon oskarszoon merged commit fab9b5a into bsv-blockchain:main May 12, 2026
25 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants