Commit graph

33997 commits

Author SHA1 Message Date
fanquake
345d860f38
Merge bitcoin/bitcoin#25166: doc: Add link to NetBSD release
174f58c185 Add link to NetBSD release (Marnix)

Pull request description:

  For consistency with other Build Guides, like `doc/build-freebsd.md` & `doc/build-openbsd.md`

ACKs for top commit:
  theStack:
    Code-review ACK 174f58c185
  vincenzopalazzo:
    ACK 174f58c185

Tree-SHA512: 08297aac82ee8fab2bbcb486b13b9c6ca12fb4fba573e9979e94204bd7340c2d13f1e54e07b314498603c291c25e29f2e89141ee150478951f699772538b709c
2022-05-19 09:59:32 +01:00
fanquake
fdb82a30be
Merge bitcoin/bitcoin#25147: Net processing: follow ups to #20799 (removing support for v1 compact blocks)
bf6526f4a0 [test] Remove segwit argument from build_block_on_tip() (John Newbery)
c65bf50b44 Remove fUseWTXID parameter from CBlockHeaderAndShortTxIDs constructor (John Newbery)

Pull request description:

  This implements two of the suggestions from code reviews of PR 20799:

  - Remove fUseWTXID parameter from CBlockHeaderAndShortTxIDs constructor
  - Remove segwit argument from build_block_on_tip()

ACKs for top commit:
  dergoegge:
    Code review ACK bf6526f4a0
  naumenkogs:
    ACK bf6526f4a0

Tree-SHA512: d553791d1364b9e655183755e829b195c9b47f59c62371dbae49d9c0f8d84fec58cf18f4dde89591672ef5658e18c9cf0206c2efd70606980f87e506bc3bd4e5
2022-05-19 09:37:32 +01:00
fanquake
986bae8e72
Merge bitcoin/bitcoin#22778: net processing: Reduce resource usage for inbound block-relay-only connections
9db82f1bca [net processing] Don't initialize TxRelay for non-tx-relay peers. (John Newbery)
b0a4ac9c26 [net processing] Add m_tx_relay_mutex to protect m_tx_relay ptr (John Newbery)
290a8dab02 [net processing] Comment all TxRelay members (John Newbery)
42e3250497 [net processing] [refactor] Move m_next_send_feefilter and m_fee_filter_sent (John Newbery)

Pull request description:

  block-relay-only connections are additional outbound connections that bitcoind makes since v0.19. They participate in block relay, but do not propagate transactions or addresses. They were introduced in #15759.

  When creating an outbound block-relay-only connection, since we know that we're never going to announce transactions over that connection, we can save on memory usage by not a `TxRelay` data structure for that connection. When receiving an inbound connection, we don't know whether the connection was opened by the peer as block-relay-only or not, and therefore we always construct a `TxRelay` data structure for inbound connections.

  However, it is possible to tell whether an inbound connection will ever request that we start announcing transactions to it. The `fRelay` field in the `version` message may be set to `0` to indicate that the peer does not wish to receive transaction announcements. The peer may later request that we start announcing transactions to it by sending a `filterload` or `filterclear` message, **but only if we have offered `NODE_BLOOM` services to that peer**. `NODE_BLOOM` services are disabled by default, and it has been recommended for some time that users not enable `NODE_BLOOM` services on public connections, for privacy and anti-DoS reasons.

  Therefore, if we have not offered `NODE_BLOOM` to the peer _and_ it has set `fRelay` to `0`, then we know that it will never request transaction announcements, and that we can save resources by not initializing the `TxRelay` data structure.

ACKs for top commit:
  MarcoFalke:
    review ACK 9db82f1bca 🖖
  dergoegge:
    Code review ACK 9db82f1bca
  naumenkogs:
    ACK 9db82f1bca

Tree-SHA512: 83a449a56cd6bf6ad05369f5ab91516e51b8c471c07ae38c886d51461e942d492ca34ae63d329c46e56d96d0baf59a3e34233e4289868f911db3b567072bdc41
2022-05-19 09:27:24 +01:00
MacroFake
fafae678f6
build: Enable RPC_DOC_CHECK on --enable-debug 2022-05-19 07:54:57 +02:00
MacroFake
bb83aba6c9
Merge bitcoin/bitcoin#25161: rpc: Put undocumented JSON failure mode behind a runtime flag
b953ea6cc6 rpc: Put undocumented JSON failure mode behind a runtime flag (Suhail Saqan)

Pull request description:

  Fixes #24695 (Put undocumented JSON failure mode behind a runtime flag)

ACKs for top commit:
  luke-jr:
    utACK b953ea6cc6
  vincenzopalazzo:
    ACK b953ea6cc6

Tree-SHA512: 2005ee1b1f3b637918390b2ecd4166f2fd8c86e3c59fba3da8a0cbd5b1dffd03190c92f6dca3c489ecce4276eaf3108b2edcf9cd6224b713adb52f5bb848163b
2022-05-19 06:44:55 +02:00
Suhail Saqan
b953ea6cc6 rpc: Put undocumented JSON failure mode behind a runtime flag
rpc: Put undocumented JSON failure mode behind a runtime flag
2022-05-18 10:50:59 -07:00
MacroFake
7b3343f300
Merge bitcoin/bitcoin#25108: tidy: add modernize-use-default-member-init
ac6fbf2c83 tidy: use modernize-use-default-member-init (fanquake)
7aa40f5563 refactor: use C++11 default initializers (fanquake)

Pull request description:

  Refactor and then enable [`modernize-use-default-member-init`](https://clang.llvm.org/extra/clang-tidy/checks/modernize-use-default-member-init.html) in our `clang-tidy` job.

Top commit has no ACKs.

Tree-SHA512: 536b406f20639f8c588fe9e96175ec60c7bb825506b2670b562370b2f572801c24203c483443be3c199e1b958c0765d4532e57c57a4e78689162a1dd422d844f
2022-05-18 19:19:55 +02:00
MacroFake
fa9af21878
scripted-diff: Use getInt<T> over get_int/get_int64
-BEGIN VERIFY SCRIPT-
 sed -i 's|\<get_int64\>|getInt<int64_t>|g' $(git grep -l get_int ':(exclude)src/univalue')
 sed -i 's|\<get_int\>|getInt<int>|g'       $(git grep -l get_int ':(exclude)src/univalue')
-END VERIFY SCRIPT-
2022-05-18 19:15:03 +02:00
MacroFake
e016c00e98
Merge bitcoin/bitcoin#25126: test: add BIP157 message parsing support (via MESSAGEMAP)
5dc6d92077 test: make BIP157 messages default-constructible (MESSAGEMAP compatibility) (Sebastian Falbesoner)
71e4cfefe7 test: p2p: add missing BIP157 message types to MESSAGEMAP (Sebastian Falbesoner)

Pull request description:

  The script [message-capture-parser.py](https://github.com/bitcoin/bitcoin/blob/master/contrib/message-capture/message-capture-parser.py) currently doesn't support parsing the BIP157 messages `getcfilters`, `getcfheaders` and `getcfcheckpt`, e.g.
  ```
  $ ./contrib/message-capture/message-capture-parser.py msgs_recv.dat
  ...
      WARNING - Unrecognized message type b'getcfcheckpt' in /home/thestack/bitcoin/msgs_recv.dat
  ...
  ```

  This PR fixes this by adding the missing message type mappings to the [`MESSAGEMAP`](225e5b57b2/test/functional/test_framework/p2p.py (L95-L127)) in the test framework and add default-constructors for the corresponding `msg_`... classes.

  Without the second commit, the following error message would occur:
  ```
    File "/home/thestack/bitcoin/./contrib/message-capture/message-capture-parser.py", line 141, in process_file
      msg = MESSAGEMAP[msgtype]()
  TypeError: __init__() missing 2 required positional arguments: 'filter_type' and 'stop_hash'
  ```

ACKs for top commit:
  dunxen:
    tACK [5dc6d92](5dc6d92077)

Tree-SHA512: d656c4d38a856373f01d7c293ae7d2b27378a9fc248048ebf2a64725ef8b498b3ddf4f420704abdb20d0c68ca548f1777602c5e73b66821a20c97ae618f1d63f
2022-05-18 19:08:48 +02:00
MarcoFalke
fa305fd92c
Add mockable clock type and TicksSinceEpoch helper 2022-05-18 18:58:05 +02:00
MacroFake
fa1b76aeb0
Do not call global Params() when chainman is in scope 2022-05-18 18:46:48 +02:00
MacroFake
fa30234be8
Do not pass CChainParams& to PeerManager::make 2022-05-18 18:46:27 +02:00
MacroFake
fafe5c0ca2
Do not pass CChainParams& to BlockAssembler constructor 2022-05-18 18:46:07 +02:00
MacroFake
faf012b438
Do not pass Consensus::Params& to Chainstate helpers 2022-05-18 18:45:30 +02:00
MacroFake
fa4ee53dca
Do not pass time getter to Chainstate helpers 2022-05-18 18:44:04 +02:00
John Newbery
9db82f1bca [net processing] Don't initialize TxRelay for non-tx-relay peers.
Delay initializing the TxRelay data structure for a peer until we receive
a version message from that peer. At that point we'll know whether it
will ever relay transactions. We only initialize the m_tx_relay
data structure if:

- this isn't an outbound block-relay-only connection; AND
- fRelay=true OR we're offering NODE_BLOOM to this peer
  (NODE_BLOOM means that the peer may turn on tx relay later)
2022-05-18 17:08:24 +01:00
John Newbery
b0a4ac9c26 [net processing] Add m_tx_relay_mutex to protect m_tx_relay ptr 2022-05-18 17:02:23 +01:00
John Newbery
290a8dab02 [net processing] Comment all TxRelay members
This fully comments all the TxRelay members. The only significant change
is to the comment for m_relay_txs. Previously the comment stated that
one of the purposes of the field was that "We don't relay tx invs before
receiving the peer's version message". However, even without the
m_relay_txs flag, we would not send transactions to the peer before
receiving the `version` message, since SendMessages() returns
immediately if fSuccessfullyConnected is not set to true, which only
happens once a `version` and `verack` message have been received.
2022-05-18 17:02:11 +01:00
John Newbery
42e3250497 [net processing] [refactor] Move m_next_send_feefilter and m_fee_filter_sent
Move m_next_send_feefilter and m_fee_filter_sent out of the `TxRelay`
data structure. All of the other members of `TxRelay` are related to
sending transactions _to_ the peer, whereas m_fee_filter_sent and
m_next_send_feefilter are both related to receiving transactions _from_
the peer. A node's tx relay behaviour is not always symmetrical (eg a
blocksonly node will ignore incoming transactions, but may still send
out its own transactions), so it doesn't make sense to group the
feefilter sending data with the TxRelay data in a single structure.

This does not change behaviour, since IsBlockOnlyConn() is always equal
to !peer.m_tx_relay. We still don't send feefilter messages to outbound
block-relay-only peers (tested in p2p_feefilter.py).
2022-05-18 17:01:37 +01:00
MacroFake
002411dc53
Merge bitcoin/bitcoin#25157: Fix -rpcwait with -netinfo returning negative time durations
3a998d2e37 Use steady_clock in ConnectAndCallRPC and inline time call in loop conditional (Jon Atack)
3799d2dcdd Fix -rpcwait with -netinfo printing negative time durations (Jon Atack)

Pull request description:

  - Fix `bitcoin-cli -rpcwait -netinfo 1` returning negative time durations on its first invocation after node startup in the "send", "recv", and "age" columns (potentially the "txn" and "blk" columns also). To reproduce, start bitcoind on mainnet (for a longer startup time) and run `bitcoin-cli -rpcwait -netinfo <n>` where n is 1 or larger. The negative time durations are larger with a slower CPU speed or e.g. higher `checkblocks`/`checklevel` config option settings.

  Examples:
  ```
  <->   type   net  mping   ping send recv  txn  blk  hb addrp addrl  age id
  out manual onion               -126 -126                             -2  0
                       ms     ms  sec  sec  min  min                  min
  ```

  ```
  <->   type   net  mping   ping send recv  txn  blk  hb addrp addrl  age id
  out manual cjdns                -64  -64                             -1  0
                       ms     ms  sec  sec  min  min                  min
  ```
  ```
  <->   type   net  mping   ping send recv  txn  blk  hb addrp addrl  age id
  out manual  ipv4                -89  -89    *              .         -1  0
                       ms     ms  sec  sec  min  min                  min
  ```
  ```
  <->   type   net  mping   ping send recv  txn  blk  hb addrp addrl  age id
  out manual  ipv6               -133         *              .         -2  0
                       ms     ms  sec  sec  min  min                  min
  ```

  - Use `steady_clock` in ConnectAndCallRPC and inline the time call in the loop conditional to avoid unnecessary invocations and an unneeded local variable allocation.

ACKs for top commit:
  MarcoFalke:
    cr ACK 3a998d2e37

Tree-SHA512: 141430d47189ad9f646ce8e51cb31c21b395f6294bb27ba9f7ae4c1e1505a63209a4a19662a0b462806437a9cfd07f1ea114e775adc2872d87397fe823f8b8dc
2022-05-18 16:56:56 +02:00
MacroFake
629e250cbd
Merge bitcoin/bitcoin#25148: refactor: Remove NO_THREAD_SAFETY_ANALYSIS from non-test/benchmarking code
a55db4ea1c Add more proper thread safety annotations (Hennadii Stepanov)
8cfe93e3fc Add proper thread safety annotation to `CWallet::GetTxConflicts()` (Hennadii Stepanov)
ca446f2c59 Add proper thread safety annotation to `CachedTxGetAvailableCredit()` (Hennadii Stepanov)

Pull request description:

  In non-test/benchmarking code, there are three cases of the `NO_THREAD_SAFETY_ANALYSIS` annotation which are accompanied with `TODO` comments.

  This PR adds proper thread safety annotations instead of `NO_THREAD_SAFETY_ANALYSIS`.

ACKs for top commit:
  laanwj:
    Code review ACK a55db4ea1c

Tree-SHA512: 806d72eebc1edf088bfa435c8cd11465be0de6789798dd92abd008425516768acb864a73d834a49d412bb10f7fccfb47473f998cb72739dab6caeef6bcfaf191
2022-05-18 16:23:43 +02:00
MacroFake
139f789d7a
Merge bitcoin/bitcoin#25124: test: Fix intermittent race in p2p_unrequested_blocks.py
faac67cab0 test: Fix intermittent race in p2p_unrequested_blocks.py (MacroFake)

Pull request description:

  Disconnect may also result in an `OSError`, not only an `AssertionError`. Instead of maintaining a dead code path and enumerating disconnect reasons, just assume disconnection happens every time.

ACKs for top commit:
  jamesob:
    Code review ACK faac67cab0

Tree-SHA512: d2cec003168e421a5faed275cb2e1ef9fc63f9e8514f41d21da17e8964c79e5b453ccd72cd7ec62805f45293cf877be5bc8124ae98a515c0aa42d6e053409653
2022-05-18 15:39:20 +02:00
Marnix
174f58c185
Add link to NetBSD release 2022-05-18 14:48:01 +02:00
John Newbery
bf6526f4a0 [test] Remove segwit argument from build_block_on_tip()
The only place that segwit=True is for a block that contains only the
coinbase transaction. Since the witness commitment is optional if none
of the transactions have a witness, we can leave it out. This doesn't
change the test coverage, which is testing p2p compact block logic.

Suggested in https://github.com/bitcoin/bitcoin/pull/20799#discussion_r867782119
2022-05-18 13:47:54 +01:00
fanquake
84bf31f8e9
Merge bitcoin/bitcoin#25076: guix: native GCC 10 toolchain for Linux builds
6b9d53e1ff guix: native GCC 10 toolchain for Linux builds (fanquake)
88fd3f81ec guix: use -fcommon when building glibc 2.24 (fanquake)
0e51913595 guix: fix glibc 2.27 multiple definition warnings with GCC 10 (fanquake)
508bd4d357 guix: adjust RISC-V __has_include() patch to work with GCC 10 (fanquake)
c9c5b3060d guix: compile glibc without -werror (fanquake)

Pull request description:

  Completes the migration to using a native GCC 10 toolchain for all HOSTS. This change means we'll now use GCC 10 when compiling glibc and friends (currently we use GCC 7), which is the same as our release compiler, except for macOS (Clang 10). See each commit for more details.

  Guix build (x86_64):
  ```bash
  9f7ef2dc4421aded7f594c272c4feb1fe04f70b6c3f1ab85ed40242851cc6193  guix-build-6b9d53e1ff00/output/aarch64-linux-gnu/SHA256SUMS.part
  216fde83c860a59d14a03c0a5f27c1d11ba40388da280dd42843d7c24b652a47  guix-build-6b9d53e1ff00/output/aarch64-linux-gnu/bitcoin-6b9d53e1ff00-aarch64-linux-gnu-debug.tar.gz
  55b8bef29285dcd066156c2eaccd99f7d6956c3d9691363ac7482ad459856fdc  guix-build-6b9d53e1ff00/output/aarch64-linux-gnu/bitcoin-6b9d53e1ff00-aarch64-linux-gnu.tar.gz
  f190e12f5d2fe8bfd891421752c8f31f728c7db66736ca46f97c1c2f3a346583  guix-build-6b9d53e1ff00/output/arm-linux-gnueabihf/SHA256SUMS.part
  ac4abd22b115896ba870a3f2149c66b3ce9bd25b401a75cf560681276bacc99d  guix-build-6b9d53e1ff00/output/arm-linux-gnueabihf/bitcoin-6b9d53e1ff00-arm-linux-gnueabihf-debug.tar.gz
  9a9a26f15b90ca5e22687272b7c9487863106f358f54b4a4cd9bcc844e96259f  guix-build-6b9d53e1ff00/output/arm-linux-gnueabihf/bitcoin-6b9d53e1ff00-arm-linux-gnueabihf.tar.gz
  96f73e9f17e19720e3517ebfed06a4b5295759906186770627fb8c0beb18508a  guix-build-6b9d53e1ff00/output/arm64-apple-darwin/SHA256SUMS.part
  4c9937e7221c56373808feacff38492f4530a4db986a07da3e56d1a293a59569  guix-build-6b9d53e1ff00/output/arm64-apple-darwin/bitcoin-6b9d53e1ff00-arm64-apple-darwin-unsigned.dmg
  f7c447fb40fa0d1382db0ec6b20a45c6dbc8660c004d41fa7418e40cc684200f  guix-build-6b9d53e1ff00/output/arm64-apple-darwin/bitcoin-6b9d53e1ff00-arm64-apple-darwin-unsigned.tar.gz
  067bbc0f7a50be93e469af855ab8bbb9dd598ee970db9ccfc99621a93d725348  guix-build-6b9d53e1ff00/output/arm64-apple-darwin/bitcoin-6b9d53e1ff00-arm64-apple-darwin.tar.gz
  d8ac116bec19dde955c5d19c85d41e3899a75def3e1c27bc047aa17906d094af  guix-build-6b9d53e1ff00/output/dist-archive/bitcoin-6b9d53e1ff00.tar.gz
  822085203ae9a64de3443141cd0a5f222a344451a7fdc69820efd0aeee8eca5e  guix-build-6b9d53e1ff00/output/powerpc64-linux-gnu/SHA256SUMS.part
  78a488dad3acf22d99f97d7874c5bf0fc0bd83bd33d27af8f1a723cd949df1d9  guix-build-6b9d53e1ff00/output/powerpc64-linux-gnu/bitcoin-6b9d53e1ff00-powerpc64-linux-gnu-debug.tar.gz
  918477bee628771f3b927dba0e0e0ca0d0708cfe60a0cb47c10b98c403c9b266  guix-build-6b9d53e1ff00/output/powerpc64-linux-gnu/bitcoin-6b9d53e1ff00-powerpc64-linux-gnu.tar.gz
  738e2771d4a6141cd69838bb65f54d853032075c077e428c6daf1eabc9046fc0  guix-build-6b9d53e1ff00/output/powerpc64le-linux-gnu/SHA256SUMS.part
  5e7ce848931c790780154f276fae9d2b8dc03c0e995bb123d950e432a54803bb  guix-build-6b9d53e1ff00/output/powerpc64le-linux-gnu/bitcoin-6b9d53e1ff00-powerpc64le-linux-gnu-debug.tar.gz
  8caaf8bdc5e0a13a2e1c7242940d505c28a5fd2f2727c592b18f55530558f8c3  guix-build-6b9d53e1ff00/output/powerpc64le-linux-gnu/bitcoin-6b9d53e1ff00-powerpc64le-linux-gnu.tar.gz
  8aeed7814f839aa0624752090ae75dc77f6098d2ac2b4d526945e42efeff16b8  guix-build-6b9d53e1ff00/output/riscv64-linux-gnu/SHA256SUMS.part
  e694fa6a3ca56fd121afe3cbf26cf9c17d0b4bac424e1b9086a095d63fc6f0fb  guix-build-6b9d53e1ff00/output/riscv64-linux-gnu/bitcoin-6b9d53e1ff00-riscv64-linux-gnu-debug.tar.gz
  8241e6c1f1a669ca5144b90796235d2a4b9c08bf75d6d2bf1b2862df8da626b3  guix-build-6b9d53e1ff00/output/riscv64-linux-gnu/bitcoin-6b9d53e1ff00-riscv64-linux-gnu.tar.gz
  84d0d1391e07ac55684e107492def79fa0a6e404f2ec10f3130bd0734d031ad9  guix-build-6b9d53e1ff00/output/x86_64-apple-darwin/SHA256SUMS.part
  cde5bf4c3b1880b81b887b1b13293c1e91aac3f4ca9895aba515675e3dc69d1a  guix-build-6b9d53e1ff00/output/x86_64-apple-darwin/bitcoin-6b9d53e1ff00-x86_64-apple-darwin-unsigned.dmg
  906cebff955e514202a0d93fcf0782441f42c7592ade3205c908554086322440  guix-build-6b9d53e1ff00/output/x86_64-apple-darwin/bitcoin-6b9d53e1ff00-x86_64-apple-darwin-unsigned.tar.gz
  c8a4522380d5ff22c800d73968b4758ed5edde346fc6720558285ce02251dec0  guix-build-6b9d53e1ff00/output/x86_64-apple-darwin/bitcoin-6b9d53e1ff00-x86_64-apple-darwin.tar.gz
  de2e24dfe08f31bfeca03aff70f3e38b2671272f357b430ce8a3d3879020745f  guix-build-6b9d53e1ff00/output/x86_64-linux-gnu/SHA256SUMS.part
  32c01add177f3a1c7fb85f1c687b502105a98919a0fa9e8675917c68cb651dfb  guix-build-6b9d53e1ff00/output/x86_64-linux-gnu/bitcoin-6b9d53e1ff00-x86_64-linux-gnu-debug.tar.gz
  c2af2390d8232463c824756ba4d88194f6fc3bfd0f71286237f2d3067d67ff25  guix-build-6b9d53e1ff00/output/x86_64-linux-gnu/bitcoin-6b9d53e1ff00-x86_64-linux-gnu.tar.gz
  b3fa5cc4dbe908274f84ca4ee4bd8fad7b0d0678b5e47ca8e0134b8872d1262c  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/SHA256SUMS.part
  69cff7bfa42918434f7aee4a5c1f87c824bfe387d5a40bea502437e320703b68  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/bitcoin-6b9d53e1ff00-win64-debug.zip
  6c4ce699bdc9cd0fd5b3626b7c740b0d9f381f126a6581b38d481bddca74c25d  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/bitcoin-6b9d53e1ff00-win64-setup-unsigned.exe
  f5ca2fc6988e9a90ed7c47bd05c120a8d5a2c2a0bc0abcc076739d27869779b7  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/bitcoin-6b9d53e1ff00-win64-unsigned.tar.gz
  73862bfc4c6a614e467b0b4f07a7264e4a758bacbf75c0ac49b76d253385dcec  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/bitcoin-6b9d53e1ff00-win64.zip
  ```

  Guix build (arm64):
  ```bash
  63fd172e3bf01fe47e845c7b5af76b56b40ecd26f77363c9e5782c12997a1f3b  guix-build-6b9d53e1ff00/output/arm-linux-gnueabihf/SHA256SUMS.part
  6007a3ab95315a9e7206f32f13b6fc574833afd3e3d1ea0ed905800016fbf786  guix-build-6b9d53e1ff00/output/arm-linux-gnueabihf/bitcoin-6b9d53e1ff00-arm-linux-gnueabihf-debug.tar.gz
  a172a098403a29cc6c2fdb8fdd388fab10e0e2477f78cb8c7ee0d8112442c5f4  guix-build-6b9d53e1ff00/output/arm-linux-gnueabihf/bitcoin-6b9d53e1ff00-arm-linux-gnueabihf.tar.gz
  e07565d39160db87a857edc8ea4dc4444476837fc9d85fb17245efaa68b4ec41  guix-build-6b9d53e1ff00/output/arm64-apple-darwin/SHA256SUMS.part
  b9cc419a750afd5688c5f2dbfb717fccb5f177fb60b07bfede792336f7a4c563  guix-build-6b9d53e1ff00/output/arm64-apple-darwin/bitcoin-6b9d53e1ff00-arm64-apple-darwin-unsigned.dmg
  d9105b702f6756645efba5a4e47fc1efbca178e0a76b30c46dd6333f2362c1a2  guix-build-6b9d53e1ff00/output/arm64-apple-darwin/bitcoin-6b9d53e1ff00-arm64-apple-darwin-unsigned.tar.gz
  d46ecdc6f485d78d8afe4e6d679e97844dc6f817cd470226290843b9e0a5c677  guix-build-6b9d53e1ff00/output/arm64-apple-darwin/bitcoin-6b9d53e1ff00-arm64-apple-darwin.tar.gz
  d8ac116bec19dde955c5d19c85d41e3899a75def3e1c27bc047aa17906d094af  guix-build-6b9d53e1ff00/output/dist-archive/bitcoin-6b9d53e1ff00.tar.gz
  8f35311efd75f1a2a27c5090a3134648a3e58d40692d363f1fe0afce08925bcb  guix-build-6b9d53e1ff00/output/powerpc64-linux-gnu/SHA256SUMS.part
  b012ce67aa18f54ea688961a01de30f9b4127fee7184d1292ac8f664449972f5  guix-build-6b9d53e1ff00/output/powerpc64-linux-gnu/bitcoin-6b9d53e1ff00-powerpc64-linux-gnu-debug.tar.gz
  3ebd59090b02a295965923a1d74a2ce0aa23774d59116f62668e2a246343d971  guix-build-6b9d53e1ff00/output/powerpc64-linux-gnu/bitcoin-6b9d53e1ff00-powerpc64-linux-gnu.tar.gz
  2017c04652d18a29107e06a1efee44d93d01607f12f7af626e687a72eca06a7c  guix-build-6b9d53e1ff00/output/powerpc64le-linux-gnu/SHA256SUMS.part
  4520225674157af40168813a2497a2f79df8131b0a73251a3d44dbe67cb002d2  guix-build-6b9d53e1ff00/output/powerpc64le-linux-gnu/bitcoin-6b9d53e1ff00-powerpc64le-linux-gnu-debug.tar.gz
  9e7660470d56573c9c08470383d745910f2834586182a51b661eb10cc41fbf1d  guix-build-6b9d53e1ff00/output/powerpc64le-linux-gnu/bitcoin-6b9d53e1ff00-powerpc64le-linux-gnu.tar.gz
  2015b8d13798746e4d7e3a75250a2b83bb8cb9289410a1576f0e9892732e1931  guix-build-6b9d53e1ff00/output/riscv64-linux-gnu/SHA256SUMS.part
  735c1a285933499406a4f6c396a12b13fcf79188100b541d532055c06092741c  guix-build-6b9d53e1ff00/output/riscv64-linux-gnu/bitcoin-6b9d53e1ff00-riscv64-linux-gnu-debug.tar.gz
  f541d5397e28558dea1976a79f6bfdb01f12d7b4031925247cb32ace2360782e  guix-build-6b9d53e1ff00/output/riscv64-linux-gnu/bitcoin-6b9d53e1ff00-riscv64-linux-gnu.tar.gz
  84d0d1391e07ac55684e107492def79fa0a6e404f2ec10f3130bd0734d031ad9  guix-build-6b9d53e1ff00/output/x86_64-apple-darwin/SHA256SUMS.part
  cde5bf4c3b1880b81b887b1b13293c1e91aac3f4ca9895aba515675e3dc69d1a  guix-build-6b9d53e1ff00/output/x86_64-apple-darwin/bitcoin-6b9d53e1ff00-x86_64-apple-darwin-unsigned.dmg
  906cebff955e514202a0d93fcf0782441f42c7592ade3205c908554086322440  guix-build-6b9d53e1ff00/output/x86_64-apple-darwin/bitcoin-6b9d53e1ff00-x86_64-apple-darwin-unsigned.tar.gz
  c8a4522380d5ff22c800d73968b4758ed5edde346fc6720558285ce02251dec0  guix-build-6b9d53e1ff00/output/x86_64-apple-darwin/bitcoin-6b9d53e1ff00-x86_64-apple-darwin.tar.gz
  51c1c6f683896a23767af2a7c6afe07030b6d5ad5a136b65f31b7e1f685c0f28  guix-build-6b9d53e1ff00/output/x86_64-linux-gnu/SHA256SUMS.part
  6276d1ee54575b16386866f4898033d4dce9ea5a4e4635f7ae65d5bddecba35b  guix-build-6b9d53e1ff00/output/x86_64-linux-gnu/bitcoin-6b9d53e1ff00-x86_64-linux-gnu-debug.tar.gz
  c553c0dfdd85f9af8e41741557c9eb5a6ee48a9f4a025df84eed21330927be89  guix-build-6b9d53e1ff00/output/x86_64-linux-gnu/bitcoin-6b9d53e1ff00-x86_64-linux-gnu.tar.gz
  3dc586f08f454cfba3e8f66588a1017490fc6014bcd2aee0b0c5f557267aa961  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/SHA256SUMS.part
  bc5ed4302603fe2f574e83a0e5612cff306081f65c74d817bb0f977bef01fb7a  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/bitcoin-6b9d53e1ff00-win64-debug.zip
  6c4ce699bdc9cd0fd5b3626b7c740b0d9f381f126a6581b38d481bddca74c25d  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/bitcoin-6b9d53e1ff00-win64-setup-unsigned.exe
  f5ca2fc6988e9a90ed7c47bd05c120a8d5a2c2a0bc0abcc076739d27869779b7  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/bitcoin-6b9d53e1ff00-win64-unsigned.tar.gz
  761c97a37473f91dee8630a1409597ee400a8c8c99937f0a111e4572f084bdd9  guix-build-6b9d53e1ff00/output/x86_64-w64-mingw32/bitcoin-6b9d53e1ff00-win64.zip
  ```

  Closes #24701.

ACKs for top commit:
  hebasto:
    ACK 6b9d53e1ff

Tree-SHA512: 128981d6ee68a9824bf9f19f90502b26e9d0fc5d55bf70b44c49fc8bdd25d4c6adf6fe2a5f6e48b35eb6e1b6ba55db59528cd53e75ddc34fc74f5d0ab0a33cb1
2022-05-18 09:57:03 +01:00
Andrew Chow
f7a1e676d5
Merge bitcoin/bitcoin#25159: test: use sendall in wallet_taproot.py tests
c6122f560b test: use sendall in wallet_taproot.py tests (ishaanam)

Pull request description:

  Fixes #25129 (subtractfeefromamount=true fails with insufficient
  funds)

ACKs for top commit:
  achow101:
    ACK c6122f560b
  Xekyo:
    tACK c6122f560b
  brunoerg:
    ACK c6122f560b

Tree-SHA512: c73512852ced6216eab80f4079d6e3d5ba949fbc6bfea5f4034c7fa200b0048e97a1451274a142deb4f698de0702a8940957be8a00ebd2c19cf50604b21016d4
2022-05-17 19:51:54 -04:00
ishaanam
c6122f560b test: use sendall in wallet_taproot.py tests
Fixes #25129 (subtractfeefromamount=true fails with insufficient
funds)
2022-05-17 13:40:15 -04:00
fanquake
ac6fbf2c83
tidy: use modernize-use-default-member-init 2022-05-17 17:19:07 +01:00
fanquake
7aa40f5563
refactor: use C++11 default initializers 2022-05-17 17:18:58 +01:00
fanquake
d5d40d59f8
Merge bitcoin/bitcoin#23679: Sanitize port in addpeeraddress()
ada8358ef5 Sanitize port in `addpeeraddress()` (amadeuszpawlik)

Pull request description:

  In connection to #22087, it has been [pointed out](https://github.com/bitcoin/bitcoin/pull/22087#pullrequestreview-674786285) that `addpeeraddress` needs to get its port-value sanitized.

ACKs for top commit:
  fanquake:
    ACK ada8358ef5

Tree-SHA512: 48771cd4f6940aa7840fa23488565c09dea86bd5ec5a5a1fc0374afb4857aebcd2a1f51e2d4cb7348460e0ad9793dc5d2962df457084ed2b8d8142cae650003f
2022-05-17 16:39:10 +01:00
fanquake
dd8a2df488
Merge bitcoin/bitcoin#25107: bench: Add --sanity-check flag, use it in make check
4f31c21b7f bench: Make all arguments -kebab-case (laanwj)
652b54e532 bench: Add `--sanity-check` flag, use it in `make check` (laanwj)

Pull request description:

  The benchmarks are run as part of `make check` for a crash-sanity check. The actual results are being ignored. So only run them for one iteration.

  This makes the `bench_bitcoin` part take 2m00 instead of 5m20 here. Which is still too long (imo), but this needs to be solved in the `WalletLoading*` benchmarks which take that long per iteration.

  Also change all `bench_bitcoin` arguments to kebab-case to be consistent with the other tools (in a separate commit).

ACKs for top commit:
  jonatack:
    ACK 4f31c21b7f on the sanity-check version per  `git diff c52a71e 4f31c28` (modulo s/--sanity check/--sanity-check/ in src/bench/bench.cpp::L61)
  hebasto:
    ACK 4f31c21b7f, tested on Ubuntu 22.04.

Tree-SHA512: 2661d130fd82e57c9041755190997a4af588fadddcdd05e04fd024f75da1202480e9feab5764566e8dfe7930e8ae0ec71e93f40ac373274953d274072723980d
2022-05-17 16:19:07 +01:00
Jon Atack
3a998d2e37 Use steady_clock in ConnectAndCallRPC and inline time call in loop conditional
to avoid unnecessary invocations and an unneeded local variable allocation.
2022-05-17 16:56:50 +02:00
Jon Atack
3799d2dcdd Fix -rpcwait with -netinfo printing negative time durations
Fixes negative time duration values in the "send", "recv",
and "age" columns (potentially the "txn" and "blk" columns also)
for the first run of -rpcwait -netinfo after bitcoind startup.

To reproduce, start bitcoind on mainnet and run
`bitcoin-cli -rpcwait -netinfo <n>` where n is 1 or larger.

The negative times will be larger/more apparent with a slower
CPU speed or e.g. higher checkblocks/checklevel config option
settings.
2022-05-17 16:18:22 +02:00
fanquake
1ab389b1ba
Merge bitcoin/bitcoin#20640: wallet, refactor: return out-params of CreateTransaction() as optional struct
4c5ceb040c wallet: CreateTransaction(): return out-params as (optional) struct (Sebastian Falbesoner)
c9fdaa5e3a wallet: CreateTransactionInternal(): return out-params as (optional) struct (Sebastian Falbesoner)

Pull request description:

  The method `CWallet::CreateTransaction` currently returns several values in the form of out-parameters:
  * the actual newly created transaction (`CTransactionRef& tx`)
  * its required fee (`CAmount& nFeeRate`)
  * the position of the change output (`int& nChangePosInOut`) -- as the name suggests, this is both an in- and out-param

  By returning these values in an optional structure (which returns no value a.k.a. `std::nullopt` if an error occured), the interfaces is shorter, cleaner (requested change position is now in-param and can be passed by value) and callers don't have to create dummy variables for results that they are not interested in.

  Note that the names of the replaced out-variables were kept in `CreateTransactionInternal` to keep the diff minimal. Also, the fee calculation data (`FeeCalculation& fee_calc_out`) would be another candidate to put into the structure, but `FeeCalculation` is currently an opaque data type in the wallet interface and I think it should stay that way.

  As a potential follow-up, I think it would make sense to also do the same refactoring for `CWallet::FundTransaction`, which has a very similar parameter structure.

  Suggested by laanwj in https://github.com/bitcoin/bitcoin/pull/20588#issuecomment-739838428.

ACKs for top commit:
  achow101:
    re-ACK 4c5ceb040c
  Xekyo:
    ACK 4c5ceb040c
  w0xlt:
    crACK 4c5ceb040c

Tree-SHA512: 27e5348bbf4f698713002d40c834dcda59c711c93207113e14522fc6d9ae7f4d8edf1ef6d214c5dd62bb52943d342878960ca333728828bf39b645a27d55d524
2022-05-17 11:04:43 +01:00
John Newbery
c65bf50b44 Remove fUseWTXID parameter from CBlockHeaderAndShortTxIDs constructor
All uses of CBlockHeaderAndShortTxIDs in the product code are
constructed with fUseWTXID=true, so remove the parameter.

There is one use of the CBlockHeaderAndShortTxIDs constructor with
fUseWTXID=false in the unit tests. This is used to construct a
CBlockHeaderAndShortTxIDs for a block with only the coinbase
transaction, so setting fUseWTXID to true or false makes no difference.

Suggested in https://github.com/bitcoin/bitcoin/pull/20799#pullrequestreview-963480278
2022-05-17 10:37:10 +01:00
laanwj
4f31c21b7f bench: Make all arguments -kebab-case
This is customary for UNIX-style arguments, and more consistent with our
other tools
2022-05-17 11:32:25 +02:00
laanwj
652b54e532 bench: Add --sanity-check flag, use it in make check
The benchmarks are run as part of `make check` for a minimum sanity
check. The actual results are being ignored. So only run them for one
iteration.

This makes the `bench_bitcoin` part take 2m00 instead of 5m20 here.
Which is still too long (imo), but this needs to be solved in the
`WalletLoading*` benchmarks which take that long per iteration.
2022-05-17 11:32:25 +02:00
MacroFake
0be1dc1f56
Merge bitcoin/bitcoin#24062: refactor: replace RecursiveMutex m_most_recent_block_mutex with Mutex
83003ffe04 refactor: replace RecursiveMutex `m_most_recent_block_mutex` with Mutex (Sebastian Falbesoner)
8edd0d31ac refactor: reduce scope of lock `m_most_recent_block_mutex` (Sebastian Falbesoner)

Pull request description:

  This PR is related to #19303 and gets rid of the RecursiveMutex `m_most_recent_block_mutex`. All of the critical sections (5 in total) only directly access the guarded elements, i.e. it is not possible that within one section another one is called, and we can use a regular Mutex:

  b019cdc036/src/net_processing.cpp (L1650-L1655)

  b019cdc036/src/net_processing.cpp (L1861-L1865)

  b019cdc036/src/net_processing.cpp (L3149-L3152)

  b019cdc036/src/net_processing.cpp (L3201-L3206)

  b019cdc036/src/net_processing.cpp (L4763-L4769)

  The scope of the last critical section is reduced in the first commit, in order to avoid calling the non-trivial method `CConnman::PushMessage` while the lock is held.

ACKs for top commit:
  furszy:
    Code ACK 83003ffe with a small comment.
  hebasto:
    ACK 83003ffe04
  w0xlt:
    ACK 83003ffe04

Tree-SHA512: 3df290cafd2f6c4d40afb9f14e822a77d9c1828e66f5e2233f3ac1deccc2b0a8290bc5fb8eb992f49d39e887b50bc0e9aad63e05db2d870791a8d409fb95695f
2022-05-17 08:44:09 +02:00
MacroFake
8270740bef
Merge bitcoin/bitcoin#25114: rpc: remove deprecated "softforks" field from getblockchaininfo
a01b92ad86 doc: add release notes about removal of the `deprecatedrpc=softforks` flag (Sebastian Falbesoner)
8c5533c7a9 rpc: remove deprecated "softforks" field from getblockchaininfo (Sebastian Falbesoner)

Pull request description:

  Information on soft fork status has been moved from the `getblockchaininfo` RPC to the `getdeploymentinfo` RPC in #23508. The "softfork" result in `getblockchaininfo` was still available for 23.0 with the `-deprecatedrpc=softforks` configuration option, but this can be fully removed now for the next release (24.0).

ACKs for top commit:
  shaavan:
    ACK a01b92ad86
  ajtowns:
    ACK a01b92ad86

Tree-SHA512: 692d9d02fdf0b3c18376644a85b24b57efebf612738084c01ef47d47e41861e773688613a808e81f10ab6eec340de00eef96987a1e34d612aaf7f0a0b134d89e
2022-05-17 08:25:25 +02:00
Andrew Chow
91a42d63ef
Merge bitcoin/bitcoin#25019: parse external signer master fp as bytes in ExternalSigner::SignTransaction
2a22f034ca parsing external signer master fingerprint string as bytes instead of caring for lower/upper case in ExternalSigner::SignTransaction (avirgovi)

Pull request description:

  Some external signers scripts may provide master fingerprint in uppercase format. In that case core will fail with `Signer fingerprint 00000000 does not match any of the inputs` as it only works with lowercase format. Even if the fingerprints match, yet one is lowercase the other uppercase.

  ExternalSigner::SignTransaction is the only place where it is needed IMO, as changing it in other places may break the communication with the external signer (i.e. enumerating with lowercase may not find the device).

ACKs for top commit:
  achow101:
    ACK 2a22f034ca
  theStack:
    Code-review ACK 2a22f034ca
  Sjors:
    utACK 2a22f034ca

Tree-SHA512: f3d84b83fb0b5e06c405eaf9bf20a2fa864bf4172fd4de113b80b9b9a525a76f2f8cf63031b480358b3a7666023a2aef131fb89ff50448c66df3ed541da10f99
2022-05-16 15:57:07 -04:00
Andrew Chow
98f4db3305
Merge bitcoin/bitcoin#25088: Wallet: Ensure m_attaching_chain is set before registering for signals
ba10b90915 Wallet: Ensure m_attaching_chain is set before registering for signals (Luke Dashjr)

Pull request description:

  Avoids a race where chainStateFlushed could be called before rescanning began, yet rescan gets interrupted or fails

  Followup for #24984 avoiding a race between registering and setting the flag.

ACKs for top commit:
  mzumsande:
    Code Review ACK ba10b90915
  achow101:
    ACK ba10b90915

Tree-SHA512: 1d2fa2db189d3e87f2d0863cf2ab62166094436483f0da16760b1083a4743bf08e476a3277e0d36564213d65dd6f0a1fc16a4bf68d3338c991a14d1de9fc0fee
2022-05-16 15:29:40 -04:00
Hennadii Stepanov
a55db4ea1c
Add more proper thread safety annotations 2022-05-16 20:51:40 +02:00
Hennadii Stepanov
8cfe93e3fc
Add proper thread safety annotation to CWallet::GetTxConflicts() 2022-05-16 20:51:39 +02:00
Hennadii Stepanov
ca446f2c59
Add proper thread safety annotation to CachedTxGetAvailableCredit() 2022-05-16 20:51:39 +02:00
Andrew Chow
187504b038
Merge bitcoin/bitcoin#23662: rpc: improve getreceivedby{address,label} performance
f336ff7f21 rpc: avoid expensive `IsMine` calls in `GetReceived` tally (Sebastian Falbesoner)
a7b65af2a4 rpc: avoid scriptPubKey<->CTxDestination conversions in `GetReceived` tally (Sebastian Falbesoner)

Pull request description:

  The RPC calls `getreceivedbyaddress`/`getreceivedbylabel` both use the internal helper function `GetReceived` which was introduced in PR #17579 to deduplicate tallying code. For every wallet-related transaction output, the following unnecessary operations are currently performed in the tally loop, leading to a quite bad performance (as reported in #23645):
  - converting from CScript -> TxDestination (`ExtractDestination(...)`), converting from TxDestination -> CScript (`CWallet::IsMine(const CTxDestination& dest)`); this can be avoided by directly using output scripts in the search set instead of addresses (first commit)
  - checking if the iterated output script belongs to the wallet by calling `IsMine`; this can be avoided by only adding addresses to the search set which fulfil `IsMine` in the first place (second commit)

  ### Benchmark results
  The functional test [wallet_pr23662.py](https://github.com/theStack/bitcoin/blob/pr23662_benchmarks/test/functional/wallet_pr23662.py) (not part of this PR) creates transactions with 15000 different addresses:
  - 5000 outputs (500 txs with 10 outputs each) with label set, IsMine set (received)
  - 5000 outputs (500 txs with 10 outputs each) with label set, IsMine not set (sent)
  - 5000 outputs (500 txs with 10 outputs each) without label set, IsMine not set (sent)

  Then, the time is measured for calling `getreceivedbyaddress` and `getreceivedbylabel`, the latter with two variants. Results on my machine:

  | branch             | `getreceivedbyaddress` (single) | `getreceivedbylabel` (single) | `getreceivedbylabel` (10000) |
  |--------------------|---------------------------------|-------------------------------|------------------------------|
  | master             |             406.13ms            |          425.33ms             |          446.58ms            |
  | PR (first commit)  |             367.18ms            |          365.81ms             |          426.33ms            |
  | PR (second commit) |               3.96ms            |            4.83ms             |          339.69ms            |

  Fixes #23645.

ACKs for top commit:
  achow101:
    ACK f336ff7f21
  w0xlt:
    ACK f336ff7f21
  furszy:
    Code ACK f336ff7f

Tree-SHA512: 9cbf402b9e269713bd3feda9e31719d9dca8a0dfd526de12fd3d561711589195d0c50143432c65dae279c4eab90a4fc3f99e29fbc0452fefe05113e92d129b8f
2022-05-16 14:35:42 -04:00
Sebastian Falbesoner
4c5ceb040c wallet: CreateTransaction(): return out-params as (optional) struct 2022-05-16 17:46:34 +02:00
Sebastian Falbesoner
c9fdaa5e3a wallet: CreateTransactionInternal(): return out-params as (optional) struct 2022-05-16 17:37:10 +02:00
MacroFake
07cb4dee5d
Merge bitcoin/bitcoin#24962: prevector: enforce is_trivially_copyable_v
11e7908484 prevector: only allow trivially copyable types (Martin Leitner-Ankerl)

Pull request description:

  prevector uses `memmove` to move around data, that means it can only be used with types that are trivially copyable. That implies that the types are trivially destructible, thus the checks for `is_trivially_destructible` are not needed.

ACKs for top commit:
  w0xlt:
    ACK 11e7908484
  MarcoFalke:
    review ACK 11e7908484 🏯
  ajtowns:
    ACK 11e7908484 -- code review only

Tree-SHA512: cbb4d8bfa095100677874b552d92c324c7d6354fcf7adab2ed52f57bd1793762871798b5288064ed1af2d2903a0ec9dbfec48d99955fc428f18cc28d6840dccc
2022-05-16 16:25:47 +02:00
fanquake
6b87fa540c
Merge bitcoin/bitcoin#25125: test: Slim down versionbits_tests.cpp
fae3200bbf test: Slim down versionbits_tests.cpp (MacroFake)

Pull request description:

  Seems confusing to spin up a full chainman that isn't even used.

  Fix that by only spinning up logging. Also, remove the chainman include and comment.

ACKs for top commit:
  fanquake:
    ACK fae3200bbf

Tree-SHA512: 35261e9116c0c276f807453db3d635d83916ec2ffd99cf5641f8732736a30a542213096dcec550ef4522d97b3cafe384fdc6068138bc0b577c66fa61256719f8
2022-05-16 14:29:18 +01:00
Sebastian Falbesoner
83003ffe04 refactor: replace RecursiveMutex m_most_recent_block_mutex with Mutex
In each of the critical sections, only the the guarded variables are
accessed, without any chance that within one section another one is
called.  Hence, we can use an ordinary Mutex instead of RecursiveMutex.
2022-05-16 15:26:39 +02:00