Commit graph

36051 commits

Author SHA1 Message Date
dergoegge
c9ba3f836e [netaddress] Make OnionToString public 2022-11-17 14:52:45 +00:00
fanquake
b93beef5ed
doc: Mac -> macOS in release notes template
https://github.com/bitcoin/bitcoin/pull/26503#discussion_r1023782259
2022-11-17 14:43:56 +00:00
fanquake
2747adb68a
doc: Add 24.0 release notes 2022-11-17 14:38:22 +00:00
Hennadii Stepanov
fb01af6c77
Merge bitcoin-core/gui#680: Fixes MacOS 13 segfault by preventing certain notifications after main window is destroyed
8a5014cd8a Fixes bitcoin#26490 by preventing notifications (John Moffett)

Pull request description:

  This is a PR to address https://github.com/bitcoin/bitcoin/issues/26490

  The menu bar currently subscribes to window focus change notifications to enable or disable certain menu options in response to the window status.

  Notifications are automatically unsubscribed (disconnected in Qt parlance) if the sender is deleted -- in this case, the sender is the QTApplication object (`qApp`). However, MacOS 13 sends a window focus change notification *after* the main window has been destroyed but *before* `qApp` has been fully destroyed.

  Since the menu bar is deleted in the main window's destructor, it no longer exists when it receives these notifications (in two different places via lambda expressions). The solution is to pass the main window (`this`) as context when subscribing to the notifications. In this [overloaded version](https://doc.qt.io/qt-5/qobject.html#connect-1) of `connect`, Qt automatically unsubscribes to notifications if the sender OR context (here the main window object) is destroyed. Since the spurious notifications are sent after the main window object is destroyed, this change prevents them from being sent.

  Tested on Mac OS 13 and 12 only.

ACKs for top commit:
  hebasto:
    ACK 8a5014cd8a

Tree-SHA512: 3dff0a252fe0e93dd68cf5503135ecf6a72bcf385ba38407d6021ab77cca323f8bbe58aeca90ec124aa2a22ab9d35b706946179ac3b5d171c96a7010de51a090
2022-11-17 14:30:11 +00:00
Sebastian Falbesoner
31d0067f8b doc: test: update/fix TestShell example instructions
Tackles two issues in the TestShell documentation:
- add missing instruction for creating a wallet prior to the
  `getnewaddress` call (needed as there is no default wallet created
  anymore since v0.21)
- fix `generatetoaddress` call syntax (the scripted-diff in commit
  fa0b916971 only worked for tests using
  `BitcoinTestFramework`)
2022-11-17 12:04:13 +01:00
MacroFake
fa68d086f3
test: Add getpeerinfo test for missing version message 2022-11-17 11:20:33 +01:00
MacroFake
82fe672ea0
Merge bitcoin-core/gui#681: Fix Transaction Relay tooltip text in Peers details window
7a53033303 Fix Transaction Relay tooltip text in Peers details window (Jon Atack)

Pull request description:

  as a value of N/A could occur due to a lock or a disconnection race but not during connection setup -- see https://github.com/bitcoin/bitcoin/pull/26457#pullrequestreview-1181641835.  Credit to Martin Zumsande for finding this.

ACKs for top commit:
  jarolrod:
    ACK 7a53033303

Tree-SHA512: 031779567e927f05f6fae02394a8c97ba5c45ba9fffd7f1e2c006e152df5f724d92a06f18a4c2540436476eca6b40a3a5cbc4421666cd576439b823668acfcfb
2022-11-17 10:22:36 +01:00
Randall Naar
6fb102c9f3 test: Changed small_txpuzzle_randfee to return the virtual size instead of the transaction hex for feerate calculation. 2022-11-17 00:11:08 -05:00
Jon Atack
7a53033303 Fix Transaction Relay tooltip text in Peers details window
as a value of N/A could occur due to a lock or a disconnection race
but not during connection setup.
2022-11-16 20:54:54 -08:00
Hennadii Stepanov
c8dc0e3eaa
refactor: Inline CTxMemPoolEntry class's functions 2022-11-16 20:17:05 +00:00
Hennadii Stepanov
75bbe594e5
refactor: Move CTxMemPoolEntry class to its own module
This change nukes the policy/fees->mempool circular dependency.

Easy to review using `diff --color-moved=dimmed-zebra`.
2022-11-16 20:16:07 +00:00
Aurèle Oulès
07dfbb5bb8
Make static nLastFlush and nLastWrite Chainstate members 2022-11-16 16:51:53 +01:00
MacroFake
6863ad79a6
Merge bitcoin/bitcoin#25112: util: Move error message formatting of NonFatalCheckError to cpp
2222ec71fd util: Move error message formatting of NonFatalCheckError to cpp (MacroFake)

Pull request description:

  This allows to strip down the header file.

ACKs for top commit:
  hebasto:
    re-ACK 2222ec71fd, only rebased and suggested changes since my recent [review](https://github.com/bitcoin/bitcoin/pull/25112#pullrequestreview-1182361605).
  aureleoules:
    ACK 2222ec71fd

Tree-SHA512: 313b3c891bb000cf606df1793b068f93df99915a254fbd67a45f003d440cce7355cdcc6b196f35757cc02d3697970d30e9de0d675f2aa8eb74107c13d663927a
2022-11-16 15:04:43 +01:00
MacroFake
2222ec71fd
util: Move error message formatting of NonFatalCheckError to cpp
This allows to strip down the header file
2022-11-16 12:21:33 +01:00
Andrew Chow
f0c646f026
Merge bitcoin/bitcoin#25730: RPC: listunspent, add "include immature coinbase" flag
fa84df1f03 scripted-diff: wallet: rename AvailableCoinsParams members to snake_case (furszy)
61c2265629 wallet: group AvailableCoins filtering parameters in a single struct (furszy)
f0f6a3577b RPC: listunspent, add "include immature coinbase" flag (furszy)

Pull request description:

  Simple PR; adds a "include_immature_coinbase" flag to `listunspent` to include the immature coinbase UTXOs on the response.  Requested by #25728.

ACKs for top commit:
  danielabrozzoni:
    reACK fa84df1f03
  achow101:
    ACK fa84df1f03
  aureleoules:
    reACK fa84df1f03
  kouloumos:
    reACK fa84df1f03
  theStack:
    Code-review ACK fa84df1f03

Tree-SHA512: 0f3544cb8cfd0378a5c74594480f78e9e919c6cfb73a83e0f3112f8a0132a9147cf846f999eab522cea9ef5bd3ffd60690ea2ca367dde457b0554d7f38aec792
2022-11-15 19:53:04 -05:00
Luke Dashjr
f9869843a6 RPC/blockchain: scan{blocks,txoutset>: Further doc improvements 2022-11-16 00:43:11 +00:00
Luke Dashjr
54b45e155e RPC/Blockchain: Clarify invalid-action error in scanblocks & scantxoutset 2022-11-16 00:43:07 +00:00
Andrew Chow
5602cc7ccf
Merge bitcoin/bitcoin#16981: Improve runtime performance of --reindex
db929893ef Faster -reindex by initially deserializing only headers (Larry Ruane)
c72de9990a util: add CBufferedFile::SkipTo() to move ahead in the stream (Larry Ruane)
48a68908ba Add LoadExternalBlockFile() benchmark (Larry Ruane)

Pull request description:

  ### Background
  During the first part of reindexing, `LoadExternalBlockFile()` sequentially reads raw blocks from the `blocks/blk00nnn.dat` files (rather than receiving them from peers, as with initial block download) and eventually adds all of them to the block index. When an individual block is initially read, it can't be immediately added unless all its ancestors have been added, which is rare (only about 8% of the time), because the blocks are not sorted by height. When the block can't be immediately added to the block index, its disk location is saved in a map so it can be added later. When its parent is later added to the block index, `LoadExternalBlockFile()` reads and deserializes the block from disk a second time and adds it to the block index. Most blocks (92%) get deserialized twice.

  ### This PR
  During the initial read, it's rarely useful to deserialize the entire block; only the header is needed to determine if the block can be added to the block index immediately. This change to `LoadExternalBlockFile()` initially deserializes only a block's header, then deserializes the entire block only if it can be added immediately. This reduces reindex time on mainnet by 7 hours on a Raspberry Pi, which translates to around a 25% reduction in the first part of reindexing (adding blocks to the index), and about a 6% reduction in overall reindex time.

  Summary: The performance gain is the result of deserializing each block only once, except its header which is deserialized twice, but the header is only 80 bytes.

ACKs for top commit:
  andrewtoth:
    ACK db929893ef
  achow101:
    ACK db929893ef
  aureleoules:
    ACK db929893ef - minor changes and new benchmark since last review
  theStack:
    re-ACK db929893ef
  stickies-v:
    re-ACK db929893e

Tree-SHA512: 5a5377192c11edb5b662e18f511c9beb8f250bc88aeadf2f404c92c3232a7617bade50477ebf16c0602b9bd3b68306d3ee7615de58acfd8cae664d28bb7b0136
2022-11-15 19:23:39 -05:00
MacroFake
547a963628
Merge bitcoin/bitcoin#26489: test: Split overly large util_tests.cpp file
fa4ec1be51 test: Split overly large util_tests.cpp file (MacroFake)

Pull request description:

  The file has ~3kLOC and is slow to compile.

  Fix both issues by splitting it. (On my machine the compilation goes from 25 seconds previously to 17+10 seconds for the two smaller files)

  To review, `--color-moved=dimmed-zebra` can be used.

ACKs for top commit:
  RandyMcMillan:
    ACK fa4ec1be51 for:
  shaavan:
    ACK fa4ec1be51
  aureleoules:
    ACK fa4ec1be51

Tree-SHA512: 4719439c7ee0c6c06b6f6ccf07b3a037c0cae58b1bd6e6e929ebfeab8403be3d1905581669ed733bff0cbf4e385c27ae58d519ce031e145e6889bd5bce1c1d03
2022-11-15 21:48:07 +01:00
John Moffett
8a5014cd8a Fixes bitcoin#26490 by preventing notifications
MacOS 13 sends a window focus change notification after the main
window has been destroyed but before the QTApplication has been
destroyed. This results in the menu bar receiving a notification
despite it no longer existing. The solution is to pass the main
window as context when subscribing to the notifications. Qt
automatically unsubscribes to notifications if the sender OR
context is destroyed.
2022-11-15 10:41:03 -05:00
@RandyMcMillan
cc597bd56d
src/bitcoin-cli.cpp: -getinfo help - grammar correction 2022-11-15 09:41:23 -05:00
MacroFake
fa10f193b5
test: Set default in add_wallet_options if only one type can be chosen 2022-11-15 10:03:56 +01:00
Hennadii Stepanov
f97892d21a
doc: Mention required workload when building with MSVC 2022-11-14 14:46:02 +00:00
MacroFake
fa4ec1be51
test: Split overly large util_tests.cpp file 2022-11-14 14:22:43 +01:00
MacroFake
48174c0f28
Merge bitcoin/bitcoin#26240: rpc: Adjust RPCTypeCheckObj error string
2dede9f675 Adjust RPCTypeCheckObj error string (Leonardo Araujo)

Pull request description:

  Unifies the JSON type error strings as mentioned in #26214. Also refer to #25737.

ACKs for top commit:
  furszy:
    ACK 2dede9f6

Tree-SHA512: c918889e347ba32cb6d0e33c0de5956c2077dd40c996151e16741b0c4983ff098c60258206ded76ad7bbec4876c780c6abb494a97e4f1e05717d28a59b9167a6
2022-11-14 12:09:06 +01:00
Gleb Naumenko
46339d29b1 test, refactor: Reorder sendtxrcncl tests for better readability 2022-11-14 12:04:08 +02:00
Gleb Naumenko
14263c13f1 p2p, refactor: Extend logs for unexpected sendtxrcncl 2022-11-14 12:04:07 +02:00
Gleb Naumenko
87493e112e p2p, test, refactor: Minor code improvements 2022-11-14 11:49:49 +02:00
Gleb Naumenko
00c5dec818 p2p: Clarify sendtxrcncl policies 2022-11-14 11:40:17 +02:00
Gleb Naumenko
ac6ee5ba21 test: Expand unit and functional tests for txreconciliation 2022-11-14 11:40:15 +02:00
Gleb Naumenko
bc84e24a4f p2p, refactor: Switch to enum class for ReconciliationRegisterResult
While doing this, add a new value: ALREADY_REGISTERED.
2022-11-14 11:37:28 +02:00
MacroFake
59e00c7e03
Merge bitcoin/bitcoin#25714: univalue: Avoid std::string copies
fa09525751 univalue: string_view test (MacroFake)
1111c7e3f1 univalue: Avoid std::string copies (MacroFake)

Pull request description:

  This shouldn't matter too much, unless a really large string is pushed into a json struct, but I think it also clarifies the code.

ACKs for top commit:
  martinus:
    Code review ACK fa09525751
  aureleoules:
    reACK fa09525751
  ryanofsky:
    Code review ACK fa09525751

Tree-SHA512: 74c441912bd0b00cdb9ea7890121f71ae5d62a7594e7d29aa402c9e3f033710c5d3afb27a37c552e6513804b249aa37e375ce013a3db853a25d1fd7b6e6cd3a8
2022-11-14 10:17:54 +01:00
Andrew Chow
7ef730ca84
Merge bitcoin/bitcoin#26483: test: Don't pass add_to_wallet option to walletcreatefundedpsbt
737c285f69 test: Don't pass add_to_wallet option to walletcreatefundedpsbt (Ryan Ofsky)

Pull request description:

  It's not a documented option. Noticed while working on #19762

ACKs for top commit:
  achow101:
    ACK 737c285f69

Tree-SHA512: 1bf4186fae4390233b2f23389eb6c515c7f0209f12553592df5166e75c452ccd1fb125d9246047c08cff0b869fdda7793812d15da01441e2c4777514446f3ed6
2022-11-10 15:13:58 -05:00
Ryan Ofsky
737c285f69 test: Don't pass add_to_wallet option to walletcreatefundedpsbt
It's not a documented option. Noticed while working on #19762.
2022-11-10 11:48:50 -05:00
MacroFake
555519d082
test: Remove wallet option from non-wallet tests
Review note: The changes are complete, because self.options.descriptors
is set to None in parse_args (test_framework.py).

A value of None implies -disablewallet, see the previous commit.

So if a call to add_wallet_options is missing, it will lead to a test
failure when the wallet is compiled in.
2022-11-10 17:19:13 +01:00
MacroFake
fac8d59d31
test: Set -disablewallet when no wallet has been compiled
self.descriptors is None when no wallet has been compiled, so it is safe
to completely disable the wallet. This change will enhance a future
commit.
2022-11-10 14:39:26 +01:00
MacroFake
fa68937b89
test: Make requires_wallet private
The bool is only used to call a public helper, which some tests already
do. So use the public helper in all tests consistently and make the
confusingly named bool private.
2022-11-10 10:01:31 +01:00
Gleb Naumenko
a60f729e29 p2p: Drop roles from sendtxrcncl
This feature was currently redundant (although could have provided
more flexibility in the future), and already been causing confusion.
2022-11-10 09:21:57 +02:00
MacroFake
9dce30194b
Merge bitcoin/bitcoin#26472: test: add missing bech32m / BIP86 test-cases to wallet_descriptor.py
887d85e43d test: add missing bech32m / BIP86 test-cases to wallet_descriptor.py (Sebastian Falbesoner)

Pull request description:

  This small PR adds missing "bech32m" address type / BIP86 checks w.r.t. to the `getnewaddress`/`getrawchangeaddress` RPC and descriptor export functionality to the functional test `wallet_descriptor.py`.

ACKs for top commit:
  shaavan:
    ACK 887d85e43d
  kristapsk:
    ACK 887d85e43d

Tree-SHA512: 05b443ae14138769dc3c87a0178f21db2698fa5bcbeaa953c50ed0c9cf5dcd1effcf4afd09551ca9f4ce73898a7882caaf4c57078767beb6a6a65eb3a662726d
2022-11-09 15:34:19 +01:00
MacroFake
44ca5d5e87
Merge bitcoin/bitcoin#26473: test: Avoid collision with valid path names in getarg_tests/logargs
c8f91478c1 test: Avoid collision with valid path names in `getarg_tests/logargs` (Hennadii Stepanov)

Pull request description:

  This PR prevents test failure when "private" is a part of a valid path.

  For example, `/private/var` is a valid path on macOS for temporary files, which in turn causes test failure on CI for tests managed by the [CTest](https://github.com/bitcoin/bitcoin/pull/25797) framework.

ACKs for top commit:
  MarcoFalke:
    ACK c8f91478c1

Tree-SHA512: 09d257f8fa6be903ec8092b2ae92887a4bec2d05085c76c110637657f4a4bfe2714bf87e2e4727719b3624c8fa4c835ce2ca259c2c9c93033837f997b2057e4f
2022-11-09 12:14:31 +01:00
Hennadii Stepanov
c8f91478c1
test: Avoid collision with valid path names in getarg_tests/logargs 2022-11-09 09:30:21 +00:00
Sebastian Falbesoner
887d85e43d test: add missing bech32m / BIP86 test-cases to wallet_descriptor.py 2022-11-08 18:43:39 +01:00
Hennadii Stepanov
d3e5779f11
guix: Drop non-existent directories 2022-11-08 13:13:45 +00:00
Hennadii Stepanov
43c4afc407
guix: Drop no longer used prepend_to_search_env_var()
It was introduced in c1ae726a13, and it
has no longer been used since 1dd8cbfbc6.
2022-11-08 13:13:44 +00:00
Sebastian Falbesoner
3198e4239e test: check that loading descriptor wallet with legacy entries throws error 2022-11-08 12:29:16 +01:00
Sebastian Falbesoner
349ed2a0ee wallet: throw error if legacy entries are present on loading descriptor wallets
In the wallet key-value-loading routine, most legacy type entries
require a LegacyScriptPubKeyMan instance after successful
deserialization. On a descriptor wallet, creating that (via method
`GetOrCreateLegacyScriptPubKeyMan`) fails and then leads to a
null-pointer dereference crash. Fix this by throwing an error if
if the wallet flags indicate that we have a descriptor wallet and there
is a legacy entry found.
2022-11-08 12:29:12 +01:00
Gleb Naumenko
6772cbf69c tests: stabilize sendtxrcncl test 2022-11-08 12:18:48 +02:00
Vasil Dimov
f362920c2c
doc: clarify that NetPermissionFlags::Implicit is only about whitelists
Co-authored-by: Jon Atack <jon@atack.com>
2022-11-07 15:20:20 +01:00
MacroFake
fa09525751
univalue: string_view test 2022-11-07 09:41:19 +01:00
Ryan Ofsky
d8b12a75db rpc: Allow named and positional arguments to be used together
It's nice to be able to use named options and positional arguments together.

Most shell tools accept both, and python functions combine options and
arguments allowing them to be passed with even more flexibility. This change
adds support for python's approach so as a motivating example:

    bitcoin-cli -named createwallet wallet_name=mywallet load_on_startup=1

Can be shortened to:

    bitcoin-cli -named createwallet mywallet load_on_startup=1

JSON-RPC standard doesn't have a convention for passing named and positional
parameters together, so this implementation makes one up and interprets any
unused "args" named parameter as a positional parameter array.
2022-11-05 05:32:39 -04:00