btcd/netsync
Boris Nagaev 74f48480e0
tests: fix stale regtest assumptions after #2467
PR #2467 changed regtest to match Core's BIP34/65/66 activation rules, and
the merged stack carries that (commit cd4e5426 "regtest: align activations
with Bitcoin Core"). Height-1 regtest blocks now need a BIP34-compliant
coinbase height and a post-BIP66 block version.

The failing tests came from commits added after PR #2467 was opened on
December 25, 2025 but before it merged on April 30, 2026:

- c1a46122 ("blockchain: add ProcessBlockHeader")
- f9645f07 ("blockchain: reuse existing header node in maybeAcceptBlock")
- dc6e096c ("netsync: add TestSyncStateMachine for end-to-end IBD sync flow")
- ce094262 ("netsync: add TestStartSyncBlockFallback for block-only sync path")
- 2aae8a6d ("netsync: add TestStartSyncChainCurrent for chain-current noop path")

Because those tests landed later, they kept the old regtest assumptions even
though #2467 had already been authored and tested against the older tree.
Once #2467 finally merged, these newer tests started building invalid regtest
blocks and headers.

Fix them by setting the genesis tip height to 0 before generating descendants,
using Version 4 in the regtest block/header helpers, and encoding the test
coinbase height with a minimal BIP34 push plus padding for the generic coinbase
script-length rule.
2026-05-06 17:16:25 -05:00
..
testdata netsync: add checkHeadersList 2026-02-26 16:33:47 +09:00
blocklogger.go blockchain, netsync, main, cmd/addblock: Use utxocache 2023-12-16 16:53:17 +09:00
doc.go netsync: Change name of blockManager to syncManager. 2017-08-25 13:41:22 -05:00
interface.go multi: Run gofmt on the entire repository 2023-06-21 22:31:09 +09:00
log.go netsync: Use package-local logger. 2017-08-25 13:41:22 -05:00
manager.go netsync: allow sync with non-localhost peers on regtest/simnet 2026-03-23 21:13:48 -04:00
manager_test.go tests: fix stale regtest assumptions after #2467 2026-05-06 17:16:25 -05:00
README.md docs: update shields 2021-03-05 07:45:19 -05:00

netsync

Build Status ISC License GoDoc

Overview

This package implements a concurrency safe block syncing protocol. The SyncManager communicates with connected peers to perform an initial block download, keep the chain and unconfirmed transaction pool in sync, and announce new blocks connected to the chain. Currently the sync manager selects a single sync peer that it downloads all blocks from until it is up to date with the longest chain the sync peer is aware of.

Installation and Updating

$ go get -u github.com/btcsuite/btcd/netsync

License

Package netsync is licensed under the copyfree ISC License.