go mod init github.com/lbryio/chain
go mod edit --replace github.com/btcsuite/btcd=./
go mod edit --replace github.com/btcsuite/btcutil=github.com/lbryio/lbcutil@f93c78a8bc21
go mod tidy
Some test files failed to build as the go module "replace" doesn't work
with test and internal packages yet.
The other tests need updates to the testdata.
adjusted := target + (actual - target) / 8
max := target + (target / 2)
min := target - (target / 8)
if adjusted > max {
adjusted = max
} else if adj < min {
adjusted = min
}
diffculty := lastDifficulty * adjusted / target
TODO & FIXME:
btcd allows user to config the algorithm parameters.
We'll update those config / commandline accordingly.
Testnet settings are ignored here, will fix it later.
Currently, we only change the places where they impact runtime.
Mostly are filenames or paths for executables and databases.
Docs and other textual changes will be updated later to reduce
conflicts when we rebase.
rename
In this commit, we add an additional test case for inherited RBF
replacement. This test case asserts that if a parent is marked as being
replaceable, but the child isn't, then the child can still be replaced
as according to BIP 125 it shoudl _inhreit_ the replaceability of its
parent.
The addition of this test case was prompted by the recently discovered
Bitcoin Core "CVE" [1]. It turns out that bitcoind doesn't properly
implement BIP 125. Namely it fails to allow a child to "inherit"
replaceability if its parent is also replaceable. Our implementation
makes this trait rather explicit due to its recursive implementation.
Kudos to the original implementer @wpaulino for getting this correct.
[1]: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2021-May/018893.html.
On signet all previous soft forks and also taproot are always activated,
meaning the version is always 0x20000000 for all blocks. To make sure
they activate properly in `btcd` we therefore need to use the correct
bit to mask the version.
This means that on any custom signet there would need to be 2016 blocks
mined before SegWit or Taproot can be used.