Commit graph

20930 commits

Author SHA1 Message Date
Martin Zumsande
ea4c9fd4ab test: Cover eviction by timeout in addrman_evictionworks 2022-01-03 22:25:45 +01:00
Martin Zumsande
4f1bb467b5 test: Add test for multiplicity in addrman new tables 2022-01-03 22:25:40 +01:00
MarcoFalke
75a227e39e
Merge bitcoin/bitcoin#23683: bug fix: valid but different LockPoints after a reorg
b4adc5ad67 [bugfix] update lockpoints correctly during reorg (glozow)
b6002b07a3 MOVEONLY: update_lock_points to txmempool.h (glozow)

Pull request description:

  I introduced a bug in #22677 (sorry! 😅)

  Mempool entries cache `LockPoints`, containing the first height/blockhash/`CBlockIndex*` at which the transaction becomes valid. During a reorg, we re-check timelocks on all mempool entries using `CheckSequenceLocks(useExistingLockPoints=false)` and remove any now-invalid entries. `CheckSequenceLocks()` also mutates the `LockPoints` passed in, and we update valid entries' `LockPoints` using `update_lock_points`. Thus, `update_lock_points(lp)` needs to be called right after `CheckSequenceLocks(lp)`, otherwise we lose the data in `lp`. I incorrectly assumed they could be called in separate loops.

  The incorrect behavior introduced is: if we have a reorg in which a timelocked mempool transaction is still valid but becomes valid at a different block, the cached `LockPoints` will be incorrect.

  This PR fixes the bug, adds a test, and adds an assertion at the end of `removeForReorg()` to check that all mempool entries' lockpoints are valid. You can reproduce the bug by running the test added in the [test] commit on the code before the [bugfix] commit.

ACKs for top commit:
  jnewbery:
    ACK b4adc5ad67
  vasild:
    ACK b4adc5ad67
  mzumsande:
    Code Review ACK b4adc5ad67
  hebasto:
    ACK b4adc5ad67
  MarcoFalke:
    re-ACK b4adc5ad67 🏁

Tree-SHA512: 16b59f6ff8140d0229079ca1c6b04f2f4a00a2e49931275150e4f3fe5ac4ec109698b083fa6b223ba9511f328271cc1ab081263669d5da020af7fee83c13e401
2022-01-03 14:34:39 +01:00
Hennadii Stepanov
29e1794ba5
build, qt: No need to set inapplicable QPA backend for Android 2022-01-03 14:45:39 +02:00
MarcoFalke
fa7efc915b
Fixup style of moved code
Can be reviewed with --word-diff-regex=. -U0 --ignore-all-space
2022-01-02 17:05:22 +01:00
MarcoFalke
fade2a44f4
Move BlockManager to node/blockstorage
Can be reviewed with --color-moved=dimmed-zebra
2022-01-02 17:05:14 +01:00
MarcoFalke
fa5d2e678c
Remove unused char serialize 2022-01-02 11:52:11 +01:00
MarcoFalke
fa24493d63
Use spans of std::byte in serialize
This switches .read() and .write() to take spans of bytes.
2022-01-02 11:40:31 +01:00
MarcoFalke
fa65bbf217
span: Add BytePtr helper 2022-01-02 11:13:40 +01:00
MarcoFalke
faa9e461ab
doc: Fix dumptxoutset RPC help doc 2022-01-02 10:53:49 +01:00
MarcoFalke
fa5bb37611
rpc: Use EnsureAnyArgsman in rpc/blockchain 2022-01-02 10:43:17 +01:00
MarcoFalke
fa98b6f644
rpc: Add EnsureArgsman helper 2022-01-02 10:29:11 +01:00
MarcoFalke
8b5a4de904
Merge bitcoin/bitcoin#23795: refactor: Remove implicit-integer-sign-change suppressions in validation
fadd73037e refactor: Remove implicit-integer-sign-change suppressions in validation.cpp (MarcoFalke)

Pull request description:

  A file-wide suppression is problematic because it will wave through future violations, potentially bugs.

  Fix that by using per-statement casts.

ACKs for top commit:
  shaavan:
    ACK fadd73037e
  theStack:
    Code-review ACK fadd73037e

Tree-SHA512: a8a05613be35382b92d7970f958a4e8f4332432056eaa9d72f6719495134b93aaaeea692899d9035654d0e0cf56bcd759671eeeacfd0535582c0ea048ab58a56
2022-01-02 10:24:02 +01:00
fanquake
9d099b02d8
Merge bitcoin/bitcoin#23836: rest: Expose block filters follow-ups
4523d28b6b [test] compare filter and header with the result of the getblockfilter RPC (Niklas Gögge)
3a2464f216 [rest] drop superfluous rpc serializations flags for block filters (Niklas Gögge)
064abd14a5 [rest] add a more verbose error message for invalid header counts (Niklas Gögge)
83b8f3a896 [refactor] various style fix-ups (Niklas Gögge)

Pull request description:

  This PR addresses unresolved review comments from [#17631](https://github.com/bitcoin/bitcoin/pull/17631).
  This includes:
  * various style fix-ups
  * returning a more verbose error message for invalid header counts
  * removing superfluous rpc serializations flags for block filters
  * improving the test to include comparing the block filters returned from the rest  with the ones returned from the `getblockfilter` RPC.

ACKs for top commit:
  jnewbery:
    ACK 4523d28b6b
  brunoerg:
    tACK 4523d28b6b

Tree-SHA512: 634e6b2ae3e1d5f31675a50cfe11a5e74bf5a51b9e7b512d9e18879bf2ed424fc0ac6ec633023f192e3ad12cf0c73b0b51de79dd7ec00844dba3e1493d823b8c
2022-01-02 08:37:12 +08:00
fanquake
6535772510
Merge bitcoin/bitcoin#23882: doc: testnet3 was not reset and is doing BIP30 checks again
fa1a51cbc1 doc: testnet3 was not reset and is doing BIP30 checks again (MarcoFalke)

Pull request description:

ACKs for top commit:
  theStack:
    ACK fa1a51cbc1

Tree-SHA512: 793eccda583a3edb056b142c36a09a5c867f61d90b96e15e6643417d62eb651eb2f3429c5f245bdb062d18ab9bb05b5048c0888aa5a492cb7bb21a2f3f52324e
2022-01-02 08:14:34 +08:00
Sebastian Falbesoner
2e42050b7f doc: fix undo data filename (s/undo???.dat/rev???.dat/) 2022-01-01 13:00:07 +01:00
w0xlt
1831d43e8f Change 'Show' icon 2021-12-31 14:13:20 -03:00
MarcoFalke
fa4c599145
rpc: Quote user supplied descriptor in error msg 2022-01-01 00:26:08 +13:00
Hennadii Stepanov
f47dda2c58
scripted-diff: Bump copyright headers
-BEGIN VERIFY SCRIPT-
./contrib/devtools/copyright_header.py update ./
-END VERIFY SCRIPT-

Commits of previous years:
* 2020: fa0074e2d8
* 2019: aaaaad6ac9
2021-12-30 19:36:57 +02:00
Ben Woosley
c337b27d7c Require that input amount is provided for bitcoin-tx witness transactions
Co-authored-by: Sebastian Falbesoner <sebastian.falbesoner@gmail.com>
2021-12-29 21:12:12 +01:00
Martin Zumsande
e880bb7836 test: Add test for updating addrman entries
This covers Connected() which updates nTime, and SetServices()
which updates nServices
2021-12-28 21:54:51 +01:00
Martin Zumsande
f02eee8c87 test: introduce utility function to retrieve an addrman 2021-12-28 21:54:51 +01:00
Martin Zumsande
f0e5efb824 test: Remove unused AddrManTest class 2021-12-28 21:54:51 +01:00
Martin Zumsande
b696d7870b test: Remove tests for internal helper functions
The logic of these functions is already covered by existing unit tests
using publicly exposed functions of the interface.
Therefore, removing them does not decrease test coverage.
2021-12-28 21:54:51 +01:00
Martin Zumsande
0538520091 test: use AddrMan instead of AddrManTest where possible
Switches to AddrMan for tests that use no features of AddrManTest.
Also removes unusued AddrManTest variables

Co-Authored-By: Amiti Uttarwar <amiti@uttarwar.org>
2021-12-28 21:54:49 +01:00
Martin Zumsande
1c65d427bb test: Inline SimConnFail function
No need for a function, since it is only used once.

Co-Authored-By: Amiti Uttarwar <amiti@uttarwar.org>
2021-12-28 19:36:22 +01:00
Amiti Uttarwar
5b7aac34f2 test: delete unused GetBucketAndEntry function 2021-12-28 17:26:24 +01:00
Amiti Uttarwar
2ba1e74e59 test: Update addrman_serialization unit test to use AddrMan's interface
By updating the test to use FindEntry, it no longer needs to reach into
AddrMan's internals (via GetBucketAndEntry) to assert expected
behaviors.
2021-12-28 17:26:24 +01:00
Amiti Uttarwar
dad5f76021 addrman: Introduce a test-only function to lookup addresses
Co-Authored-By: Martin Zumsande <mzumsande@gmail.com>
2021-12-28 17:26:24 +01:00
fanquake
1292334bf5
Merge bitcoin/bitcoin#23878: doc: Remove TODO comment in tx_verify
fa50d8b66e doc: Remove TODO comment in tx_verify (MarcoFalke)

Pull request description:

  The comment has no clear motivation, so it seems better to remove it and fix it when there is a reason.

  An alternative (if a fix isn't possible when there is a clear motivation) would be to create an issue thread for easier discussion.

ACKs for top commit:
  fanquake:
    ACK fa50d8b66e

Tree-SHA512: e9c25bab46a73b7c2db288c62ed9838a5e794b3b72db494173f4502da60b58dec4383064964c0842932cd30e4251fc01ad0c28681e2ef6cb442482eea2bad595
2021-12-28 20:31:46 +08:00
fanquake
5d2344885b
Merge bitcoin/bitcoin#23840: doc: Fix -changetype help text
fa993d0e7e doc: Fix -changetype help text (MarcoFalke)

Pull request description:

  This was forgotten in commit 3ac38058ce

ACKs for top commit:
  shaavan:
    ACK fa993d0e7e
  w0xlt:
    ACK fa993d0
  josibake:
    ACK fa993d0e7e

Tree-SHA512: 9f84b1168e3b3ab06e5c1f4915a1874598b273099eb5878ed28c3a66f1484e34c836fd3c68c4131bee541f3428052f6b66e02b192170752d1082de689d44cd4d
2021-12-28 20:23:31 +08:00
fanquake
bb655a6aac
Merge bitcoin/bitcoin#23883: doc: Remove fixed TODO from wallet/feebumper
fa562fdd5e doc: Remove fixed TODO from wallet/feebumper (MarcoFalke)

Pull request description:

  Fixed in commit 9522b53a91

ACKs for top commit:
  shaavan:
    ACK fa562fdd5e

Tree-SHA512: 968fda0994020c369b7acfc01db109d0f50d4c137fadf533ae55d0e14a353ebbde4320e798cf89e5489f1020c459712631b3967976c1f73d99db8a2d1cbad982
2021-12-28 20:22:38 +08:00
MarcoFalke
fa8e01a5b8
doc: Remove outdated scriptChange TODO comment 2021-12-27 19:35:22 +01:00
MarcoFalke
fa562fdd5e
doc: Remove fixed TODO from wallet/feebumper
Fixed in commit 9522b53a91
2021-12-27 19:26:33 +01:00
MarcoFalke
fa1a51cbc1
doc: testnet3 was not reset and is doing BIP30 checks again 2021-12-27 18:56:54 +01:00
MarcoFalke
fa5d0b6ecd
doc: Remove TODO from block fuzz test 2021-12-27 18:40:01 +01:00
MarcoFalke
fa50d8b66e
doc: Remove TODO comment in tx_verify 2021-12-27 16:47:24 +01:00
Andrew Chow
ac617cc141 wallettool: Check that the dumpfile checksum is the correct size
After parsing the checksum, make sure that it is the size that we expect
it to be.
2021-12-26 12:33:23 -05:00
Sjors Provoost
923312fbf6
rpc: use peer_id, block_hash for FetchBlock 2021-12-24 16:29:04 +01:00
Sjors Provoost
34d5399211
rpc: more detailed errors for getblockfrompeer 2021-12-24 16:29:03 +01:00
Sjors Provoost
60243cac72
rpc: turn already downloaded into error in getblockfrompeer 2021-12-24 16:29:03 +01:00
Sjors Provoost
809d66bb65
rpc: clarify getblockfrompeer behavior when called multiple times 2021-12-24 16:28:54 +01:00
Sjors Provoost
0e3d7c5ee1
refactor: drop redundant hash argument from FetchBlock 2021-12-24 16:28:53 +01:00
Sjors Provoost
8d1a3e6498
rpc: allow empty JSON object result 2021-12-24 16:28:53 +01:00
MarcoFalke
dada92fed2
Merge bitcoin/bitcoin#22875: util: Fix Racy ParseOpCode function initialization
7b481f015a Fix Racy ParseOpCode function initialization (Jeremy Rubin)

Pull request description:

  If multiple callers call ParseOpCode concurrently it will cause a race condition. We can either move the static to it's own area and require init be called explicitly, or just allow concurrent first callers to race to fill in an atomic variable that never changes thereafter. The second approach is taken here.

  Static initialization *is* threadsafe, but only insofar as definining the variable being guaranteed to be called once. This is used incorrectly here.

  practicalswift --> are there tools we can deploy to catch usage like this?

ACKs for top commit:
  MarcoFalke:
    re-ACK 7b481f015a 🗣

Tree-SHA512: cbf9dc3af26d7335305026f32ce8472a018309b89b3d81a67357e59fbeed72c37b5b8a6e30325ea68145c3b2403867be82de01f22decefb6e6717cf0c0045633
2021-12-24 10:02:59 +01:00
Jeremy Rubin
7b481f015a Fix Racy ParseOpCode function initialization 2021-12-23 15:53:36 -08:00
Carl Dong
e3544c864e init: Use clang-tidy named args syntax 2021-12-23 17:38:09 -05:00
Carl Dong
3401630417 style-only: Rename *Chainstate return values 2021-12-23 17:28:30 -05:00
Carl Dong
1dd582782d docs: Make LoadChainstate comment more accurate 2021-12-23 17:20:46 -05:00
Carl Dong
6b83576388 node/chainstate: Use MAX_FUTURE_BLOCK_TIME 2021-12-23 17:13:36 -05:00