21151 Commits

Author SHA1 Message Date
Jon Atack
2b7a8180a9
net, init: assert each network reachability is true by default
The default network reachability values are implicitly set
by this line in net.cpp:

static bool vfLimited[NET_MAX] GUARDED_BY(g_maplocalhost_mutex) = {};

This commit asserts that each network is reachable during
the first loop through them during bitcoind init.
2022-03-01 21:03:18 +01:00
laanwj
848b11615b
Merge bitcoin/bitcoin#22834: net: respect -onlynet= when making outbound connections
0eea83a85ec6b215d44facc2b16ee1b035275a6b scripted-diff: rename `proxyType` to `Proxy` (Vasil Dimov)
e53a8505dbb6f9deaae8ac82793a4fb760a1e0a6 net: respect -onlynet= when making outbound connections (Vasil Dimov)

Pull request description:

  Do not make outbound connections to hosts which belong to a network
  which is restricted by `-onlynet`.

  This applies to hosts that are automatically chosen to connect to and to
  anchors.

  This does not apply to hosts given to `-connect`, `-addnode`,
  `addnode` RPC, dns seeds, `-seednode`.

  Fixes https://github.com/bitcoin/bitcoin/issues/13378
  Fixes https://github.com/bitcoin/bitcoin/issues/22647
  Supersedes https://github.com/bitcoin/bitcoin/pull/22651

ACKs for top commit:
  naumenkogs:
    utACK 0eea83a85ec6b215d44facc2b16ee1b035275a6b
  prayank23:
    reACK 0eea83a85e
  jonatack:
    ACK 0eea83a85ec6b215d44facc2b16ee1b035275a6b code review, rebased to master, debug built, and did some manual testing with various config options on signet

Tree-SHA512: 37d68b449dd6d2715843fc84d85f48fa2508be40ea105a7f4a28443b318d0b6bd39e3b2ca2a6186f2913836adf08d91038a8b142928e1282130f39ac81aa741b
2022-03-01 18:32:01 +01:00
laanwj
b67ef6d59b qt: Pre-branch translation updates for 23.x
Pull the translations from transifex once before the 23.x branch-off, so
that master has at least somewhat-relevant translations.
2022-02-28 16:59:56 +01:00
laanwj
159f89c118
Merge bitcoin/bitcoin#24365: wallet: Don't generate keys for wallets with private keys disabled during upgradewallet
c7376cc8d728f3a7c40f79bd57e7cef685def723 tests: Test upgrading wallet with privkeys disabled (Andrew Chow)
3d985d4f43b5344f998bcf6db22d02782e647a2a wallet: Don't generate keys when privkeys disabled when upgrading (Andrew Chow)

Pull request description:

  When we're upgrading a wallet, we shouldn't be trying to generate new keys for wallets where private keys are disabled.

  Fixes #23610

ACKs for top commit:
  laanwj:
    Code review ACK c7376cc8d728f3a7c40f79bd57e7cef685def723
  benthecarman:
    tACK c7376cc8d728f3a7c40f79bd57e7cef685def723 this fixed the issue for me

Tree-SHA512: fa07cf37df9196ff98671bb1ce5c9aa0bab46495066b4dab796d7e8e5d5c7adb414ff56adae4fd3e15658a610995bd19a9e1edb00c46144b0df635c5b343f3a6
2022-02-28 13:15:11 +01:00
MarcoFalke
c7da61dcc3
Merge bitcoin/bitcoin#24403: Avoid implicit-integer-sign-change in VerifyLoadedChainstate
fa7991601c93761bc12ef33b672a927d48a95569 Fixup style of VerifyDB (MarcoFalke)
fa462ea787d124c56d6ba7ef79a9b5b23f0411c5 Avoid implicit-integer-sign-change in VerifyLoadedChainstate (MarcoFalke)

Pull request description:

  This happens when checking all blocks (`-1`).

  To test:

  ```
  ./configure CC=clang CXX=clang++ --with-sanitizers=undefined,integer
  make
  UBSAN_OPTIONS="suppressions=$(pwd)/test/sanitizer_suppressions/ubsan:print_stacktrace=1:halt_on_error=1:report_error_type=1" ./test/functional/rpc_blockchain.py

ACKs for top commit:
  theStack:
    Code-review ACK fa7991601c93761bc12ef33b672a927d48a95569
  brunoerg:
    crACK fa7991601c93761bc12ef33b672a927d48a95569

Tree-SHA512: bcbe6becf2fbedd21bbde83a544122e79465937346802039532143b2e4165784905a8852c0ccb088b964874df5e5550931fdde3629cbcee3ae237f2f63c43a8e
2022-02-28 12:33:32 +01:00
fanquake
b71a07778f
Merge bitcoin/bitcoin#24417: net: Update hardcoded seeds for 23.x
d80dc12097ee2f16e3edfcf39363cc4d240e5c57 net: Update hardcoded seeds for 23.x (laanwj)
9f27157894ee689736d0d0936d1af1620fd8f7d8 contrib: make-seeds updates for 23.x (laanwj)

Pull request description:

  Update hardcoded P2P network seeds for 23.x, and update the generation script and documentation as necessary

  Tool output:
  ```
    IPv4   IPv6  Onion Pass
  469910  72944      0 Initial
  469910  72944      0 Skip entries with invalid address
  469910  72944      0 After removing duplicates
  469909  72944      0 Skip entries from suspicious hosts
  165760  65113      0 Enforce minimal number of blocks
  160668  63183      0 Require service bit 1
    4951   1376      0 Require minimum uptime
    4406   1051      0 Require a known and recent user agent
    4307   1031      0 Filter out hosts with multiple bitcoin ports
  ERR: Could not resolve ASN for "2001:678:7dc:8::2": The DNS query name does not exist: 8.0.0.0.c.d.7.0.8.7.6.0.1.0.0.2.origin6.asn.cymru.com.
     512    134      0 Look up ASNs and limit results per ASN and per net
  ```.

ACKs for top commit:
  achow101:
    ACK d80dc12097ee2f16e3edfcf39363cc4d240e5c57
  jonatack:
    ACK d80dc12097ee2f16e3edfcf39363cc4d240e5c57 reviewed the changes and ran the README steps

Tree-SHA512: c651b0501cc28d397cc0778eff6aed4273669082d6ef207ce58ce198b443be66532bf1e8d618ccae3ba671ae4cccfd9b4dd2dfebacc97f3c3bd4e9fa58a3d7a3
2022-02-28 11:20:51 +00:00
MarcoFalke
40ab879f11
Merge bitcoin/bitcoin#24418: Chainparams update for 23.x
dca693e08e66279c5497cb3d30285ed41ae6983c Update nMinimumChainWork, defaultAssumeValid for 23.x (laanwj)
85e71a3baab613eab059c99485bf04c2ab2ce621 Update chainTxData for 23.x (laanwj)
37282dcf789fac0bcc4c3445ac9deec33797bb93 Update m_assumed_* chain parameters for 23.x (laanwj)

Pull request description:

  Update chain parameters for upcoming major release. See [doc/release-process.md](https://github.com/bitcoin/bitcoin/blob/master/doc/release-process.md) for review instructions.

  - `m_assumed_blockchain_size`, `m_assumed_chain_state_size`:

  ```
  bitcoin$ du -h .
  105M    ./blocks/index
  415G    ./blocks
  4.5G    ./chainstate
  420G    .
  bitcoin$ python3
  Python 3.9.10 (main, Jan 16 2022, 17:12:18)
  [GCC 11.2.0] on linux
  Type "help", "copyright", "credits" or "license" for more information.
  >>> 420 * 1.1
  462.00000000000006
  >>> 5 * 1.1
  5.5
  ```

  - `chainTxData`:
  ```
  cli getchaintxstats 4096 000000000000000000052d314a259755ca65944e68df6b12a067ea8f1f5a7091
  {
    "time": 1645542140,
    "txcount": 712531200,
    "window_final_block_hash": "000000000000000000052d314a259755ca65944e68df6b12a067ea8f1f5a7091",
    "window_final_block_height": 724466,
    "window_block_count": 4096,
    "window_tx_count": 6950257,
    "window_interval": 2404071,
    "txrate": 2.891036496010309
  }
  ```

  - `nMinimumChainWork`, `defaultAssumeValid`:

  ```
  $ cli getblockhash 724466 # was two from the tip at the time
  000000000000000000052d314a259755ca65944e68df6b12a067ea8f1f5a7091
  $ cli getblockheader 000000000000000000052d314a259755ca65944e68df6b12a067ea8f1f5a7091
  {
    "hash": "000000000000000000052d314a259755ca65944e68df6b12a067ea8f1f5a7091",
    "confirmations": 3,
    "height": 724466,
    "version": 939515908,
    "versionHex": "37ffe004",
    "merkleroot": "35a08d9647972e7c3ec39ee7f4ab434f03445de7c446a4d1acc1254b4546bbbe",
    "time": 1645542140,
    "mediantime": 1645539567,
    "nonce": 188699556,
    "bits": "170a1078",
    "difficulty": 27967152532434.23,
    "chainwork": "00000000000000000000000000000000000000002927cdceccbd5209e81e80db",
    "nTx": 1948,
    "previousblockhash": "000000000000000000075e26c23c2ecec4e34699411ccd712ff6f2d252f65a78",
    "nextblockhash": "0000000000000000000905369cd69f68323e3e8da2933a78bea0b2cdb8baa89f"
  }
  ```

ACKs for top commit:
  Sjors:
    ACK dca693e08e66279c5497cb3d30285ed41ae6983c
  achow101:
    ACK dca693e08e66279c5497cb3d30285ed41ae6983c
  prayank23:
    ACK dca693e08e
  darosior:
    ACK dca693e08e66279c5497cb3d30285ed41ae6983c -- only checked mainnet (on muliple nodes). Didn't do a reindex.

Tree-SHA512: 6d5d59f00717fce5f7ce10ec8d59f806ef11b0af21440cec112f70c8e13ebb884ba6c70e744e691fcc31fe7aec7aae968268c9207ccc820d64fdf7e7f98f0cff
2022-02-28 12:09:41 +01:00
eugene
fc471814dc
fuzz: FuzzedFileProvider::write should not return negative value
Doing so can lead to a glibc crash. Also the manpage for fopencookie
warns against this: https://man7.org/linux/man-pages/man3/fopencookie.3.html
2022-02-27 17:03:35 -05:00
MarcoFalke
aaaa4dbab4
Avoid implicit-integer-sign-change in bech32.cpp 2022-02-25 09:43:54 +01:00
MarcoFalke
b00b60ed4f
Merge bitcoin/bitcoin#24201: p2p: Avoid InitError when downgrading peers.dat
d41ed3215355582879c8eb6c99c2da33852f6cb1 p2p: Avoid InitError when downgrading peers.dat (junderw)

Pull request description:

  fixes #24188 (also see https://github.com/bitcoin/bitcoin/pull/22762#issuecomment-951063826)
  When downgrading, a peers.dat with a future version that has a minimum
  required version larger than the downgraded Bitcoin Core version would cause an InitError.

  This commit changes this behavior to overwrite the existing peers.dat with
  a new empty one.

ACKs for top commit:
  prayank23:
    reACK d41ed32153
  kallewoof:
    reACK d41ed3215355582879c8eb6c99c2da33852f6cb1

Tree-SHA512: c8e625fe36ce0b1aab6c8ef7241c8954038bb856f2de27bdc4814dc9a60e51be28815c7d77d0f96eace49687a0cea02deb713978bbd3a5add742f50a675f2a40
2022-02-25 08:45:11 +01:00
junderw
d41ed32153
p2p: Avoid InitError when downgrading peers.dat
fixes #24188
When downgrading, a peers.dat with a future version that has a minimum
required version larger than the downgraded version would cause an InitError.

This commit changes this behavior to overwrite the existing peers.dat with
a new empty one, while creating a backup in peers.dat.bak.
2022-02-25 09:53:10 +09:00
laanwj
dca693e08e Update nMinimumChainWork, defaultAssumeValid for 23.x
Co-authored-by: Suhas Daftuar <sdaftuar@gmail.com>
2022-02-24 16:19:09 +01:00
laanwj
85e71a3baa Update chainTxData for 23.x
Co-authored-by: Suhas Daftuar <sdaftuar@gmail.com>
2022-02-24 16:19:09 +01:00
laanwj
37282dcf78 Update m_assumed_* chain parameters for 23.x
- `m_assumed_chain_state_size` doesn't seem to need to be changed for mainnet.
- No change needed for testnet/signet.

Co-authored-by: Suhas Daftuar <sdaftuar@gmail.com>
2022-02-24 14:06:53 +01:00
laanwj
38020c4f2e qt: English (source) translations update
Last-minute update for bitcoin/bitcoin#24434 and bitcoin/bitcoin#24401.
2022-02-24 12:40:00 +01:00
Hennadii Stepanov
ff33c5ae63
Add missed word to error message 2022-02-24 02:59:38 +02:00
Andrew Chow
8d6f9210d9
Merge bitcoin/bitcoin#24401: wallet: Add external-signer-support specific error message
7f3a6a9495fafbf77f221297615fa56dc3ecc64a wallet: Add external-signer-support specific error message (Hennadii Stepanov)

Pull request description:

  On master (5f44c5c428b696af4214b2519cb2bbeb0e4a1027) an attempt to load an external signer wallet using Bitcoin Core compiled without external signer support fails with the following log messages:
  ```
  2022-02-20T19:01:11Z [qt-walletctrl] Using SQLite Version 3.31.1
  2022-02-20T19:01:11Z [qt-walletctrl] Using wallet /home/hebasto/.bitcoin/testnet3/wallets/coldcard-0220
  2022-02-20T19:01:11Z [qt-walletctrl] init message: Loading wallet…
  2022-02-20T19:01:11Z [qt-walletctrl] [coldcard-0220] Error: External signer wallet being loaded without external signer support compiled
  2022-02-20T19:01:11Z [qt-walletctrl] [coldcard-0220] Releasing wallet
  ```

  While log messages are good, a message in the GUI window is completely misleading:

  ![Screenshot from 2022-02-20 20-43-46](https://user-images.githubusercontent.com/32963518/154859854-b87032e0-c428-4e11-8009-39e38200482c.png)

  This PR fixes this issue:

  ![Screenshot from 2022-02-20 21-01-18](https://user-images.githubusercontent.com/32963518/154859868-e3a2c89d-4f0f-424e-96cb-7accaa48acc0.png)

ACKs for top commit:
  achow101:
    ACK 7f3a6a9495fafbf77f221297615fa56dc3ecc64a
  kristapsk:
    ACK 7f3a6a9495fafbf77f221297615fa56dc3ecc64a
  brunoerg:
    crACK 7f3a6a9495fafbf77f221297615fa56dc3ecc64a

Tree-SHA512: a4842751c0ca8a37ccc3ea00503678f6b712a7f53d6cbdc07ce02dcb85ca8a94890d1c2da20307be043faa347747abeba29185c88ba12edd5253bfca56531585
2022-02-23 17:19:49 -05:00
laanwj
358fe779cb
Merge bitcoin/bitcoin#24381: test: Run symlink regression tests on Windows
fad7ddf9e3710405d727f61d8200d5efed1e705b test: Run symlink regression tests on Windows (MarcoFalke)

Pull request description:

  Seems odd to add tests, but not run them on the platform that needs them most.

ACKs for top commit:
  laanwj:
    Code review ACK fad7ddf9e3710405d727f61d8200d5efed1e705b
  ryanofsky:
    Code review ACK fad7ddf9e3710405d727f61d8200d5efed1e705b, just removing new test. Would be nice if the test could be added later, of course.

Tree-SHA512: 64b235967a38c2eb90657e8d7a0447bcc8ce81d1b75a275b6c48bd42efd9ea7e7939257e484f297ee84598def3738eaeb289561aeba1dd6a99b258d389995139
2022-02-23 15:48:55 +01:00
fanquake
9977e1658c
Merge bitcoin/bitcoin#24372: bench: Avoid deprecated use of volatile +=
9999f891d1c9093e552492cf8ccc3168370c7a39 bench: Avoid deprecated use of volatile += (MarcoFalke)

Pull request description:

  Deprecated in C++20 according to https://eel.is/c++draft/expr.ass#6 .

  ```
  bench/examples.cpp:16:13: warning: compound assignment with ‘volatile’-qualified left operand is deprecated [-Wvolatile]
     16 |         sum += sin(d);
        |         ~~~~^~~~~~~~~
  ```

  While C++20 is currently unsupported, I don't see any downside to a minor fixup to an example benchmark. This will also make a hypothetical C++20 patch smaller.

ACKs for top commit:
  fanquake:
    ACK 9999f891d1c9093e552492cf8ccc3168370c7a39

Tree-SHA512: ca7d660fa8eba347a4648408a8b97a0ecb8263a825da7abd59129d783058102581e05b273667989f95480436a66d5384bd1e92d9ae79408f5b30e2178935cc38
2022-02-23 11:29:39 +00:00
fanquake
16d05cf6b9
Merge bitcoin/bitcoin#24406: test: Fix Wambiguous-reversed-operator compiler warnings
fafc4eb3637be0a85644c89c355fe68678a62c17 test: Fix Wambiguous-reversed-operator compiler warnings (MarcoFalke)

Pull request description:

  Add a missing const to avoid the C++20 clang **compiler warning**:

  ```
  test/fuzz/addrman.cpp:325:22: error: ISO C++20 considers use of overloaded operator '==' (with operand types 'AddrManDeterministic' and 'AddrManDeterministic') to be ambiguous despite there being a unique best viable function [-Werror,-Wambiguous-reversed-operator]
      assert(addr_man1 == addr_man2);
             ~~~~~~~~~ ^  ~~~~~~~~~
  /usr/include/assert.h:93:27: note: expanded from macro 'assert'
       (static_cast <bool> (expr)                                         \
                            ^~~~
  test/fuzz/addrman.cpp:140:10: note: ambiguity is between a regular call to this operator and a call with the argument order reversed
      bool operator==(const AddrManDeterministic& other)
           ^
  1 error generated.
  ```

  This patch also fixes the **compile error** if the first operand is `const`:

  ```
  test/fuzz/addrman.cpp:326:23: error: invalid operands to binary expression ('const AddrManDeterministic' and 'AddrManDeterministic')
      assert(addr_man_1 == addr_man2);
             ~~~~~~~~~~ ^  ~~~~~~~~~
  /usr/include/assert.h:90:27: note: expanded from macro 'assert'
       (static_cast <bool> (expr)                                         \
                            ^~~~
  test/fuzz/addrman.cpp:140:10: note: candidate function not viable: 'this' argument has type 'const AddrManDeterministic', but method is not marked const
      bool operator==(const AddrManDeterministic& other)
           ^
  1 error generated.

ACKs for top commit:
  hebasto:
    ACK fafc4eb3637be0a85644c89c355fe68678a62c17, I have reviewed the code and it looks OK, I agree it can be merged.

Tree-SHA512: 92cd62ae06ee1393a6dc2ea6f3f553595a8f8d66f51592d231b42122bfb71ed4801a016daafc85360040339c5ae59b76888265cec37449c4688d6c7768f4567e
2022-02-23 11:19:02 +00:00
fanquake
2618fb8d15
Output license info when binaries are passed -version
Consolidate to outputting the licensing info when we pass -version to a binary,
i.e bitcoind -version:
```bash
itcoin Core version v22.99.0-fc1f355913f6-dirty
Copyright (C) 2009-2022 The Bitcoin Core developers

Please contribute if you find Bitcoin Core useful. Visit
<https://bitcoincore.org/> for further information about the software.
The source code is available from <https://github.com/bitcoin/bitcoin>.

This is experimental software.
Distributed under the MIT software license, see the accompanying file COPYING
or <https://opensource.org/licenses/MIT>
```
2022-02-22 15:36:19 +00:00
fanquake
4c3e3c5746
refactor: shift CopyrightHolders() and LicenseInfo() to clientversion.cpp 2022-02-22 15:36:19 +00:00
laanwj
d80dc12097 net: Update hardcoded seeds for 23.x 2022-02-22 15:15:27 +01:00
Hennadii Stepanov
c5158290af
qt: Update translation source file 2022-02-22 14:12:20 +02:00
laanwj
8add59d77d
Merge bitcoin/bitcoin#24367: User-facing content and codebase doc fixups from transifex translator feedback
48742693acc9de837735674057c9aae2fe90bd1d Replace "can not" with "cannot" in docs, user messages, and tests (Jon Atack)
e670edd43441ecb6e5978d65348501c57d856030 User-facing content fixups from transifex translator feedback (Jon Atack)

Pull request description:

  Closes #24366.

ACKs for top commit:
  laanwj:
    Code review re-ACK 48742693acc9de837735674057c9aae2fe90bd1d
  hebasto:
    re-ACK 48742693acc9de837735674057c9aae2fe90bd1d, only suggested change since my previous [review](https://github.com/bitcoin/bitcoin/pull/24367#pullrequestreview-885938219).

Tree-SHA512: 4dcdcb417251a413e65fab6070515e13a1267c8e0dbcf521386b842511391f24c84a0c2168fe13458c977682034466509bf2a3453719d4d94d3c568fd9f4adb4
2022-02-22 13:08:08 +01:00
MarcoFalke
e200919cbe
Merge bitcoin/bitcoin#24305: Docs: [policy] Remove outdated confusing comment
e50a9be1540c769a99fcdc1f7a109a6bf1c7516b Remove outdated comment on CFeeRate (Murch)

Pull request description:

  This comment described how the constructor of CFeeRate was previously indirectly used to parse fee rate arguments from RPCs. The command line input was actually in sat/vB but due to the use of AmountFromValue() it got converted to BTC/vB which then got rectified in the constructor by creating a CFeeRate from that given value and COIN as the transaction size. Since this usage pattern was removed from the codebase some months ago, the comment is now obsolete.

ACKs for top commit:
  michaelfolkson:
    ACK e50a9be1540c769a99fcdc1f7a109a6bf1c7516b
  jonatack:
    ACK e50a9be1540c769a99fcdc1f7a109a6bf1c7516b

Tree-SHA512: f17bf0baeeca85a5c7883edadd407da845f6e3af1c949e93116bd67c02e601682a5f7f1ab2497172472e3acf1c4e3c234b01161a77e7d7f028e3551da34777f0
2022-02-22 11:19:38 +01:00
fanquake
bc49650b7c
Merge bitcoin/bitcoin#24310: docs / fixups from RBF and packages
77202f0554dcbbbb167d0ed3927cca0bf4609ce8 [doc] package deduplication (glozow)
d35a3cb3968d7584c7d5c42b121a80f34ea656bf [doc] clarify inaccurate comment about replacements paying higher feerate (glozow)
5ae187f8761f5f85a1ef41d24f75afb7eecf366f [validation] look up transaction by txid (glozow)

Pull request description:

  - Use txid, not wtxid, for `mempool.GetIter()`: https://github.com/bitcoin/bitcoin/pull/22674#discussion_r772934994
  - Fix a historically inaccurate comment about RBF during the refactors: https://github.com/bitcoin/bitcoin/pull/22855#discussion_r777130441
  - Add a section about package deduplication to policy/packages.md: https://github.com/bitcoin/bitcoin/pull/24152#discussion_r802955759 and https://github.com/bitcoin/bitcoin/pull/24152#discussion_r802723149

  (I'm intending for this to be in v23 since it's fixups for things that are already merged, which is why I split it from #24152)

ACKs for top commit:
  t-bast:
    LGTM, ACK 77202f0554
  darosior:
    ACK 77202f0554dcbbbb167d0ed3927cca0bf4609ce8
  LarryRuane:
    ACK 77202f0554dcbbbb167d0ed3927cca0bf4609ce8

Tree-SHA512: a428e791dfa59c359d3ccc67e8d3a4c1239815d2f6b29898e129700079271c00b3a45f091f70b65a6e54aa00a3d5b678b6da29d2a76b6cd6f946eaa7082ea696
2022-02-22 09:17:02 +00:00
Hennadii Stepanov
00f8492eeb
Merge bitcoin-core/gui#547: Override BitcoinApplication::event() to handle QEvent::Quit
e7fc50681e99e3c726db2bc4d3d425ed8a0fc6b3 qt: Override BitcoinApplication::event() to handle QEvent::Quit (Hennadii Stepanov)

Pull request description:

  bitcoin-core/gui#336 introduced a regression when termination requests from a platform are not handled properly.

  This PR fixes this regression. On macOS shutdown after clicking "Quit" in Dock icon menu, and during logout works again.

  Fixes bitcoin-core/gui#545.

ACKs for top commit:
  RandyMcMillan:
    tACK e7fc50681e99e3c726db2bc4d3d425ed8a0fc6b3
  Sjors:
    tACK e7fc50681e99e3c726db2bc4d3d425ed8a0fc6b3 (rebased on master) indeed fixes the crash described in #545
  promag:
    Tested ACK e7fc50681e99e3c726db2bc4d3d425ed8a0fc6b3 on macOS 10.15 with Qt 5.15.2.

Tree-SHA512: 236a483dc0828f22999469e133b8ac9f0b6267ec2a27004c3ebaa967689ddb972ea1fa90c1dd41f3bff3d17bf571a707babcef53bd79fd711fda98cfbf120131
2022-02-22 10:35:15 +02:00
Jon Atack
48742693ac
Replace "can not" with "cannot" in docs, user messages, and tests 2022-02-21 19:07:29 +01:00
MarcoFalke
48a90c61e2
Merge bitcoin/bitcoin#24370: rpc, cli: describe quality/recency filtering in getnodeaddresses and -addrinfo
ce690847b69eb80b0232f818152dbb1db7c4c61a cli: describe quality/recency filtering in -addrinfo (Jon Atack)
7c975614c0fc6ff2084a1708a4c1f0368a4bc98f rpc: describe quality/recency filtering in getnodeaddresses (Jon Atack)

Pull request description:

  Addresses #24278.

  ```
  $ bitcoin-cli help getnodeaddresses
  getnodeaddresses ( count "network" )

  Return known addresses, after filtering for quality and recency.
  These can potentially be used to find new peers in the network.
  The total number of addresses known to the node may be higher.
  ```
  ```
  $ bitcoin-cli -help | grep -A3 addrinfo
    -addrinfo
         Get the number of addresses known to the node, per network and total,
         after filtering for quality and recency. The total number of
         addresses known to the node may be higher.
  ```

ACKs for top commit:
  mzumsande:
    Thanks, Code Review ACK ce690847b69eb80b0232f818152dbb1db7c4c61a
  prayank23:
    reACK ce690847b6

Tree-SHA512: 82d23b15e64a99411eb8e70d7267a1b4f23182fabe072e824277569d9677e392b466be63f00e3d157d7db94bbe032d53f12ad4ab30b55b7b8a629c37d80d1d8c
2022-02-21 16:44:22 +01:00
MarcoFalke
fafc4eb363
test: Fix Wambiguous-reversed-operator compiler warnings 2022-02-21 16:36:59 +01:00
MarcoFalke
faa7d8a3f7
util: Add SaturatingAdd helper 2022-02-21 14:32:53 +01:00
Jon Atack
ce690847b6
cli: describe quality/recency filtering in -addrinfo
Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
2022-02-21 14:16:48 +01:00
Jon Atack
7c975614c0
rpc: describe quality/recency filtering in getnodeaddresses
Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
2022-02-21 14:16:34 +01:00
MarcoFalke
1337b93f50
Merge bitcoin/bitcoin#24339: rpc: Improve RPC help by explicitly mentioning output types
c821ab8be8dffb749853c05e05cb515c11e6328a Use `GetAllOutputTypes` in `getblock` RPC function (Kiminuo)
d970a85d335202cc85f6604f794c43af6645673f Move `GetAllOutputTypes` function from `rpc/rawtransaction.cpp` to `rpc/util.{h|cpp}` (Kiminuo)

Pull request description:

  This PR attempts to replicate 0ccf9b2e55/src/rpc/rawtransaction.cpp (L547) to one other place (at the moment) so that users have better idea what RPC methods can actually return.

  I created this PR as a follow-up to the idea mentioned here https://github.com/bitcoin/bitcoin/pull/23320#discussion_r732458112 (resolved).

ACKs for top commit:
  kristapsk:
    re-ACK c821ab8be8dffb749853c05e05cb515c11e6328a

Tree-SHA512: 5ff66a41ad7c43ec769f4a99933d2d070feea7c617286d94b6f9bfa1a2547a42211915778210a89074ad4b14d99f34852cc6871efed5e6f1e2ffedd40d669386
2022-02-21 13:58:09 +01:00
fanquake
85ae549a46
Merge bitcoin/bitcoin#24137: doc: Rework generate* doc
fa30e62cc609ff29f0acaa5047d3f437cb04a67b doc: Rework generate* doc (MarcoFalke)

Pull request description:

  Hide the test-only calls and clarify the short description

ACKs for top commit:
  0xB10C:
    reACK fa30e62cc609ff29f0acaa5047d3f437cb04a67b. changes since fa3bb584dcc742a767b2141cd7324877e3cf5302 are: dropping the `immediately` + formatting the touched line and a rebase

Tree-SHA512: 07439f39660bbf144c2cc406b6010b64dcdd27150d78654fe04a36a982a519f837a0cf0f030c9f30af69c451ccf7a3b7287a275637aa81904c202029b9efc661
2022-02-21 12:19:11 +00:00
Kiminuo
c821ab8be8 Use GetAllOutputTypes in getblock RPC function 2022-02-21 12:56:43 +01:00
fanquake
72f97289c4
Merge bitcoin/bitcoin#24343: Add descriptor_tests covering tr(), and fix minor bugs
0683f377e1588758da86368f82efee765f89d890 Add tr() descriptor unit tests (Pieter Wuille)
4b2e31a7ae630e68735e9c8e32f1df422ef4aff0 Bugfix: make ToPrivateString work with x-only keys (Pieter Wuille)
18ad54c3b21804ad540631dd4527cbad6d6ccc75 Bugfix: set x-only flag when inferring pk() inside tr() (Pieter Wuille)

Pull request description:

  This fixes two bugs in the current logic for `tr()` descriptors:
  * ToPrivateString does not always work, because the provided private key may mismatch the parity of the x-only public key.
  * The descriptors inferred for `pk()` inside `tr()` have the wrong x-only flag, leading to such descriptors generating the wrong scriptPubKey (roundtripping through ToString does fix it however, so this seems unobservable in the current code).

  These were discovered while adding unit tests to descriptor_tests that cover various aspects of `tr()` descriptors, which are now also added here.

ACKs for top commit:
  achow101:
    ACK 0683f377e1588758da86368f82efee765f89d890
  instagibbs:
    ACK 0683f377e1
  jonatack:
    Code review ACK 0683f377e1588758da86368f82efee765f89d890

Tree-SHA512: fc0e11b45da53054a108effff2029d67b64e508b160a6e22e00c98b506c39ec12ccc95afd21ea68a6c691eb62930afc7af18908f2fa3a954d102afdc67bc355a
2022-02-21 10:16:42 +00:00
MarcoFalke
fa30e62cc6
doc: Rework generate* doc
Can be reviewed with --word-diff-regex=. --ignore-all-space
2022-02-21 11:02:20 +01:00
MarcoFalke
fa7991601c
Fixup style of VerifyDB 2022-02-21 10:39:41 +01:00
MarcoFalke
fa462ea787
Avoid implicit-integer-sign-change in VerifyLoadedChainstate 2022-02-21 10:29:37 +01:00
MarcoFalke
cf22191fd8
Merge bitcoin/bitcoin#24072: doc: fix wording of alertnotify to match behaviour
6981de4435573ad44ee53fd5efc10894866ed2f9 doc: fix wording of alertnotify (willcl-ark)

Pull request description:

  The documentation of the `alertnotify` startup option no longer matches the implementation.

  Currently the alert is only triggered by `DoWarning` (as part of `CChainstate::UpdateTip` when blocks containing unknown versionbits are detected on the network, indicating that there may be an upcoming softfork which you don't know about), but not when we see a "really long fork":

  2825c41a61/src/validation.cpp (L2418-L2433)

  I think it would be desirable in a follow-up PR to implement the logic to alert on a (really) long fork, but not to alert for "partition detection" (abnormally slow/fast blocks). `PartitionChecker` code was removed in ab8be98fdb25b678a8cd7e89adf06d1b1f6bdd62

ACKs for top commit:
  josibake:
    ACK 6981de4435
  achow101:
    ACK 6981de4435573ad44ee53fd5efc10894866ed2f9

Tree-SHA512: ea124f53ca1db803ba93d649f4bc983484c47fb5fe7fa61a8eb32fcbc7425f67d8578e66a6ba70202e13868fe8add0103306dede3b1edd1d3261ffb9c1042b87
2022-02-21 08:16:31 +01:00
MarcoFalke
4acf2332d4
Merge bitcoin/bitcoin#24376: doc: bitcoin-wallet fixes (help output and code comment)
62cc138ecb9cc7afcbe6fdb42b060a8f149826de Rename wallet-tool to bitcoin-wallet in code comment (Kristaps Kaupe)
0db3ad3ba41a76dff80bcb5f292e587da400ebf1 Mention -signet in bitcoin-wallet help output (Kristaps Kaupe)

Pull request description:

  * Mention `-signet` in sentence where there is already `-testnet/-signet` in help output.
  * Rename `wallet-tool` to `bitcoin-wallet` in single remaining place in code comments (was already done in #17648 at other places).

ACKs for top commit:
  RandyMcMillan:
    tACK 62cc138ecb

Tree-SHA512: c5df7811b8200f61943908dcf3b2b788fe991bf00bef28f069ab8784924556ffd5d86fc0ba2ad0b3c3f9be2ba73a34bc67059d7c057bba646c1801ffa3cb2070
2022-02-21 08:14:44 +01:00
MarcoFalke
abaf943477
Merge bitcoin/bitcoin#24231: streams: Fix read-past-the-end and integer overflows
fa1b89a6bdbab50bdb0504782afd4bb3375d1b57 scripted-diff: Rename nReadPos to m_read_pos in streams.h (MarcoFalke)
fa56c79df91e5d87533af38b64f4f4148a48a276 Make CDataStream work properly on 64-bit systems (MarcoFalke)
fab02f799194c75af7def3a2ab45c443b75de230 streams: Fix read-past-the-end and integer overflows (MarcoFalke)

Pull request description:

  This is a follow-up to commit e26b62093ae21e89ed7d36a24a6b863f38ec631d with the following fixes:

  * Fix unsigned integer overflow in `ignore()`, when `nReadPos` wraps.
  * Fix unsigned integer overflow in `read()`, when `nReadPos` wraps.
  * Fix read-past-the-end in `read()`, when `nReadPos` wraps.

  This shouldn't be remote-exploitable, because it requires a stream of more than 1GB of size. However, it might be exploitable if the attacker controls the datadir (I haven't checked).

  A unit test for the overflow in `ignore()` looks like following. It is left as an excercise to the reader to replace `foo.ignore(7)` with the appropriate call to `read()` to reproduce the overflow and read-error in `read()`.

  ```diff
  diff --git a/src/test/coins_tests.cpp b/src/test/coins_tests.cpp
  index 922fd8e513..ec6ea93919 100644
  --- a/src/test/coins_tests.cpp
  +++ b/src/test/coins_tests.cpp
  @@ -534,6 +534,20 @@ BOOST_AUTO_TEST_CASE(ccoins_serialization)
       } catch (const std::ios_base::failure&) {
       }

  +    CDataStream foo{0, 0};
  +    auto size{std::numeric_limits<uint32_t>::max()};
  +    foo.resize(size);
  +    BOOST_CHECK_EQUAL(foo.size(), size);
  +    foo.ignore(std::numeric_limits<int32_t>::max());
  +    size -= std::numeric_limits<int32_t>::max();
  +    BOOST_CHECK_EQUAL(foo.size(), size);
  +    foo.ignore(std::numeric_limits<int32_t>::max());
  +    size -= std::numeric_limits<int32_t>::max();
  +    BOOST_CHECK_EQUAL(foo.size(), size);
  +    BOOST_CHECK_EQUAL(foo.size(), 1);
  +    foo.ignore(7); // Should overflow, as the size is only 1
  +    BOOST_CHECK_EQUAL(foo.size(), uint32_t(1 - 7));
  +
       // Very large scriptPubKey (3*10^9 bytes) past the end of the stream
       CDataStream tmp(SER_DISK, CLIENT_VERSION);
       uint64_t x = 3000000000ULL;
  ```

ACKs for top commit:
  klementtan:
    Code Review ACK fa1b89a6bdbab50bdb0504782afd4bb3375d1b57:

Tree-SHA512: 67f0a1baafe88eaf1dc844ac55b638d5cf168a18c945e3bf7a2cb03c9a5976674a8e3af2487d8a2c3eae21e5c0e7a519c8b16ee7f104934442e2769d100660e9
2022-02-21 08:09:18 +01:00
MarcoFalke
7cc39b1838
Merge bitcoin/bitcoin#24347: rpc: Fix implicit-integer-sign-change in verifychain
fa8dad0e078c577d740a9667636733957586c035 rpc: Fix implicit-integer-sign-change in verifychain (MarcoFalke)

Pull request description:

  It doesn't really make sense to treat `DEFAULT_CHECKLEVEL` as unsigned as long as `VerifyDB` accepts a signed integer.

  Making it signed also avoids a cast round trip from signed->unsigned->signed in the RPC.

ACKs for top commit:
  luke-jr:
    utACK fa8dad0e078c577d740a9667636733957586c035
  theStack:
    Code-review ACK fa8dad0e078c577d740a9667636733957586c035

Tree-SHA512: 75499dbe4ace2962792e5fbec7defb10c25fdbbfde951d5e542a91daa880cc50395da0287173e2c84a28e18267c74af7b44b9f38ce364bcb0216c402f65b7641
2022-02-21 07:52:57 +01:00
Hennadii Stepanov
7f3a6a9495
wallet: Add external-signer-support specific error message 2022-02-20 21:04:23 +02:00
fanquake
5f44c5c428
Merge bitcoin/bitcoin#24133: index: Improve robustness of coinstatsindex at restart
820c03aff5295fff68a4577aa51667198036e372 index: check muhash is in sync on coinstatsindex launch (Fabian Jahr)
38ed58b8503f2809e555036f4e98ff9b40a950c8 index: remove txindex references from base index (Fabian Jahr)

Pull request description:

  This change lets the `coinstatsindex` fail loudly in case the internal `muhash` state differs from the last finalized output saved on disk, which would indicate that the `muhash` state somehow got out of sync. This should generally not happen since both are written to disk in a batch but #24076 seems to indicate that the might still be an issue.

  Since #24076 so far can not be reproduced reliably, the issue should not be closed yet. Further investigation and testing needs to be done.

ACKs for top commit:
  Sjors:
    re-ACK 820c03aff5295fff68a4577aa51667198036e372
  mzumsande:
    re-ACK 820c03aff5295fff68a4577aa51667198036e372
  ryanofsky:
    Code review ACK 820c03aff5295fff68a4577aa51667198036e372. Good to catch the error earlier

Tree-SHA512: 3c985d7152698d25bad95d4ad512ff87dff13fabef790589c5a6cf93ca4251ad599e12feb7251a084503e2a213b022eaacfbaaa601464114ad372b029f64f204
2022-02-20 11:30:42 +00:00
fanquake
ffcbaf569e
Merge bitcoin/bitcoin#24369: util: Add missing rseq to syscall sandbox
6c4fd36089d016447c8199d752a328979f0d56d5 util: Add missing rseq to syscall sandbox (laanwj)

Pull request description:

  Fixes #24368.

ACKs for top commit:
  prusnak:
    Approach ACK 6c4fd36

Tree-SHA512: fc01b99483581280fc5dcbd3367975677849eadf2aabb66850dd0fa40bba9c3979c67d96427c1f4feff948b68744797c4a3ec0a12fc983d91642da794fcea824
2022-02-20 11:29:29 +00:00
fanquake
2b0735d183
Merge bitcoin/bitcoin#23907: tracing: utxocache tracepoints follow up for #22902
799968e8b38833dc7fd7b6d488a66a14580ef674 tracing: misc follow-ups to 22902 (0xb10c)
36a65847033540cf2203252c7baf42bc5ec97579 tracing: correctly scope utxocache:flush tracepoint (Arnab Sen)

Pull request description:

  This PR is a follow-up to the [#22902](https://github.com/bitcoin/bitcoin/pull/22902).

  Previously, the tracepoint `utxocache:flush` was called, even when it was not flushing. So, the tracepoint is now scoped to write only when coins cache to disk.

ACKs for top commit:
  0xB10C:
    ACK 799968e8b38833dc7fd7b6d488a66a14580ef674

Tree-SHA512: ebb096cbf991c551c81e4339821f10d9768c14cf3d8cb14d0ad851acff5980962228a1c746914c6aba3bdb27e8be53b33349c41efe8bab5542f639916e437b5f
2022-02-20 11:27:54 +00:00
MarcoFalke
a6c3da131c
Merge bitcoin/bitcoin#24350: Primitives: Correct CTransaction deserialization docstring
d4b3483cece9c27d58e4026df35725655ce06cf5 Primitives: Correct CTransaction deserialization docstring (TheCharlatan)

Pull request description:

  Since https://github.com/bitcoin/bitcoin/pull/8589 CTxWitness was removed and instead replaced with CScriptWitness inside each CTxIn.

ACKs for top commit:
  w0xlt:
    ACK d4b3483

Tree-SHA512: 02bb73e8a7d1fc449e4776a162009261baecc573837fade74ad7d76b3cd63200424e02fd0abd000c63706072f2ab3c95d3053139495b81347463f43e56192ca9
2022-02-19 09:35:10 +01:00