Commit Graph

21046 Commits

Author SHA1 Message Date
Wladimir J. van der Laan
9263b1c27d
Merge #18616: refactor: Cleanup clientversion.cpp
c269e618cf53634d3cf270273ab1b0354dc3c119 Drop unused GIT_COMMIT_DATE macro (Hennadii Stepanov)
8f9f4ba5e2b738fb63c2d6cdcfdce5c169d4e88c refactor: Remove duplicated code (Hennadii Stepanov)
35f1189ea7365c1fdaf7dd9ac5e90fc8af69eae7 build: Rename BUILD_* macros and the code self-descriptive (Hennadii Stepanov)
dc1fba9389de130809834b7832d780ecf4161496 scripted-diff: Rename share/genbuild.sh macros to more meaningful ones (Hennadii Stepanov)
1e06bb68bed84e525c55022f789416ffd4793e8d Drop unused CLIENT_VERSION_SUFFIX macro (Hennadii Stepanov)

Pull request description:

  This PR:
  - removes unused macros and duplicated code
  - renames macros in a way, that makes the code self-descriptive.

ACKs for top commit:
  dongcarl:
    Yup! ACK c269e618cf53634d3cf270273ab1b0354dc3c119

Tree-SHA512: c469f6269b578ccfae33d960e317eca8efaf27d49638f4c3830948c11b12ef728494d7e18c31e4a410945b7d83af5b246c7b83661b4eca17cf41ee4c4583649b
2021-12-28 00:27:10 -05:00
MarcoFalke
1c3be8f61b
Merge #18753: test: Fix intermittent failure in wallet_importmulti
fa8b9b5d1f48ad95eecf47ebbd7bf374777fc621 test: Fix intermittent failure in wallet_importmulti (MarcoFalke)

Pull request description:

  The wallet is async, so after generating a block, we must call `syncwithvalidationinterfacequeue`. Otherwise the timestamp will be of the previous block.

  https://travis-ci.org/github/bitcoin/bitcoin/jobs/677685073#L2648

ACKs for top commit:
  promag:
    ACK fa8b9b5d1f48ad95eecf47ebbd7bf374777fc621.

Tree-SHA512: c21f9912aabbe22019d4ac9d0da06d6e46ef7f2a84d2781110e04c9836eb0ecf90a22cf2bae7f608be611670d17b20600135d1c5e5404aa1e762839816285fb4
2021-12-28 00:27:10 -05:00
Wladimir J. van der Laan
b330a1adbd
Merge #18553: Avoid non-trivial global constants in SHA-NI code
850847309458f43fc7ce6c13fa08c86e1cae042a Avoid non-trivial global constants in SHA-NI code (Pieter Wuille)

Pull request description:

  This is a potential solution for #18456.

  It seems that the compiler cannot turn `_mm_set_epi64x(<constant>,<constnant>)` into a constant itself, and thus emits a global initializer for the `MASK`, `INIT0`, and `INIT1` global constants in the sha-ni SHA256 implementation.

  Change this by turning them into dumb byte arrays, loading them into an SSE variable whenever needed.

  Tested on a SHA-NI capable machine. I do not observe any obvious performance impact (but this is hard to measure, it's already very fast...).

ACKs for top commit:
  laanwj:
    Code review ACK 850847309458f43fc7ce6c13fa08c86e1cae042a
  elichai:
    ACK 850847309458f43fc7ce6c13fa08c86e1cae042a

Tree-SHA512: 07049cf1a33624c22df2be48b814d5636c037b368861eb13ee073bdce2b7c902a56e96518218961f55a2a1631a40825ded6dbbc28d7fe0e7fec267d704e39112
2021-12-28 00:27:10 -05:00
MarcoFalke
affb7a472f
Merge #17831: rpc: doc: Fix and extend getblockstats examples
709998467e1c1bc7980662c9f88fbc7964602d33 rpc: doc: Fix and extend getblockstats examples (Adam Soltys)

Pull request description:

  This pull fixes the example curl command for `getblockstats` which doesn't work as is because it's missing a comma between the params and has single quotes around the second parameter.

  It also adds an additional example of getting block stats by hash by using a known workaround (#15412) to get bitcoin-cli to treat the hash parameter as JSON instead of a string since there is ongoing deliberation about how or whether to fix the root issue (#15448).

ACKs for top commit:
  theStack:
    ACK 709998467e

Tree-SHA512: 84a5b7f449f06fff785bc0afbc1a7dfd55454bc76c52a8945e91556f87f3edfdc5a1780faab8fcfd6c415b734295b7c67d2e04ba7b6cfa91a77758af5dda53ae
2021-12-28 00:27:09 -05:00
Wladimir J. van der Laan
1e30366c40
Merge #16995: Fix gcc 9 warnings
ff9c671b11d40e5d0623eff3dd12e48cbaafb34e refactor: Work around GCC 9 `-Wredundant-move` warning (Russell Yanofsky)
b837b334db5dd6232725fd2350928ff4fbd3feee net: Fail instead of truncate command name in CMessageHeader (Wladimir J. van der Laan)

Pull request description:

  Fixes all 3 from #16992 (see commits)

  - net: Fail instead of truncate command name in CMessageHeader
  - refactor: Use std::move workaround for unique_ptr upcast only when necessary

ACKs for top commit:
  practicalswift:
    ACK ff9c671b11d40e5d0623eff3dd12e48cbaafb34e -- patch looks correct
  sipa:
    utACK ff9c671b11d40e5d0623eff3dd12e48cbaafb34e
  ryanofsky:
    Code review ACK ff9c671b11d40e5d0623eff3dd12e48cbaafb34e. Looks good and seems to pass travis, modulo a timeout on one build
  hebasto:
    ACK ff9c671b11d40e5d0623eff3dd12e48cbaafb34e, tested on Fedora 31:

Tree-SHA512: 52d8c13aaf0d56f9bc546a98d7f853eae21f7e325b202fdeb2286b19a9a0ee308634c644b039f60ad8043421e382381cbf1bce58d9f807547f928621c7d245d0
2021-12-28 00:27:09 -05:00
fanquake
e99f1ee057
Merge #18398: rpc: fix broken RPCExamples for waitforblock(height)
ef35604c9c88e7800e9be106b791b1c0fa8b310a rpc: fix broken RPCExamples for waitforblock(height) (Sebastian Falbesoner)

Pull request description:

  This PR fixes several broken RPCExamples from the "blockchain" category:
  - `HelpExampleCli` for `waitforblock` (disturbing comma between arguments)
  - `HelpExampleCli` for `waitforblockheight` (disturbing comma between arguments)
  - `HelpExampleRpc` for `waitforblockheight` (disturbing quotation marks around integer argument)

  Note that the CLI example for `waitforblockheight` would also work with the first argument in quotation marks (in contrast to the RPC example), but I removed them as well as they are not needed.

  Outputs for the non-working examples in the master branch:
  ```
  $ ./bitcoin-cli waitforblock "0000000000079f8ef3d2c688c244eb7a4570b24c9ed7b4a8c619eb02596f8862", 1000
  error code: -8
  error message:
  blockhash must be of length 64 (not 65, for '0000000000079f8ef3d2c688c244eb7a4570b24c9ed7b4a8c619eb02596f8862,')
  ```

  ```
  $ ./bitcoin-cli waitforblockheight "100", 1000
  error: Error parsing JSON:100,
  ```

  ```
  $ curl --user __cookie__ --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "waitforblockheight", "params": ["100", 1000]}' -H 'content-type: text/plain;' http://127.0.0.1:8332/
  Enter host password for user '__cookie__':
  {"result":null,"error":{"code":-1,"message":"JSON value is not an integer as expected"},"id":"curltest"}
  ```

  Outputs for the fixed examples in the PR branch:
  ```
  $ ./bitcoin-cli waitforblock "0000000000079f8ef3d2c688c244eb7a4570b24c9ed7b4a8c619eb02596f8862" 1000
  {
    "hash": "0000000000000000000910ae4d56120e0ddd55c0552e80ed12dba147abc68080",
    "height": 622416
  }
  ```

  ```
  $ ./bitcoin-cli waitforblockheight 100 1000
  {
    "hash": "0000000000000000000910ae4d56120e0ddd55c0552e80ed12dba147abc68080",
    "height": 622416
  }
  ```

  ```
  $ curl --user __cookie__ --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "waitforblockheight", "params": [100, 1000]}' -H 'content-type: text/plain;' http://127.0.0.1:8332/
  Enter host password for user '__cookie__':
  {"result":{"hash":"0000000000000000000910ae4d56120e0ddd55c0552e80ed12dba147abc68080","height":622416},"error":null,"id":"curltest"}
  ```

ACKs for top commit:
  fanquake:
    ACK ef35604c9c88e7800e9be106b791b1c0fa8b310a

Tree-SHA512: b98c6681d1aa24b3ee3ef4ef450cb630082a9f8695af18f3b6d418e5b0b1e472b787ccf6397cd719b4d5fe0082ea5f1d0ca553c1cc56066ee2d288be34c601e3
2021-12-28 00:27:09 -05:00
MarcoFalke
be1f098260
Merge #18371: test: use fs namespace in dbwrapper unicodepath test
6afaf2f680d8d4b048352e695d3b1f884db22e61 test: use fs namespace in dbwrapper unicodepath test (fanquake)

Pull request description:

  Use our `fs` namespace rather than `boost::filesystem`. Test was added in #17641.

ACKs for top commit:
  sipsorcery:
    ACK 6afaf2f680d8d4b048352e695d3b1f884db22e61.

Tree-SHA512: 5ee024a6d90183b6c344f6a94cfbcacb006973f1f6d98cc421c1c6ef08c09b590d31c78b70b86d855e825241ffea25989cfc40d1bdd53e38a75cda0718ac4489
2021-12-28 00:27:09 -05:00
MarcoFalke
37634112f2
Merge #18228: test: Add missing syncwithvalidationinterfacequeue
faf6f156ffd1a8ed1aed047428d791a8c13c162b test: Add missing syncwithvalidationinterfacequeue (MarcoFalke)

Pull request description:

  The wallet rebroadcast functionality learns about new blocks via the validation interface queue. To avoid test failures such as https://ci.appveyor.com/project/DrahtBot/bitcoin/builds/31119387#L466 , we can sync with the queue before advancing the test.

ACKs for top commit:
  jonatack:
    ACK faf6f156 this makes sense; the fix was previously added to mempool_persist.py and wallet_zapwallettxes.py in #12217 and to wallet_balance.py in #16302. It is also used in src/test/validation_block_tests.cpp (processnewblock_signals_ordering) and src/bench/wallet_balance.cpp.

Tree-SHA512: d72fd4b597b669d8111007902b523e946712913cd6eea6f9a695b0f04ecbe2321d05019873af999a95b9e0aa0f5c140a17109b37503723e40c9eab24ec358eb7
2021-12-28 00:27:09 -05:00
Wladimir J. van der Laan
a60f648ed7
Merge #17965: qt: Revert changes of pr17943
70e4706093fd7b08a32f9638dace178852a9d249 Revert "refactor: Remove never used default parameter" (Hennadii Stepanov)
219417b388a0373f9eb71446e1b0499ab55dd3e2 Revert "refactor: Simplify connection syntax" (Hennadii Stepanov)

Pull request description:

  The code, the `bool* ret = nullptr` parameter in the `BitcoinGUI::message()` slot, removed in #17943 is not dead actually. It is used in `ThreadSafeMessageBox()` function:
  a654626f07/src/qt/bitcoingui.cpp (L1363-L1368)

  Now in master (a654626f076a72416a3d354218d7107571d6caaf):
  ```
  $ ./src/qt/bitcoin-qt -prune=-1
  Error: Prune cannot be configured with a negative value.
  bitcoin-qt: qt/bitcoingui.cpp:1369: bool ThreadSafeMessageBox(BitcoinGUI*, const string&, const string&, unsigned int): Assertion `invoked' failed.
  Aborted (core dumped)
  ```

  This PR reverts all commits of #17943

  Additional notes: the bug was missed due to dynamic function call `QMetaObject::invokeMethod()` which cannot be checked at compile time. See #16348 for more discussion.

  Sorry for introducing a bug.

ACKs for top commit:
  Sjors:
    ACK 70e4706093fd7b08a32f9638dace178852a9d249
  laanwj:
    ACK 70e4706093fd7b08a32f9638dace178852a9d249

Tree-SHA512: b968a026eaa4f5f39fd36ddc715d8e233f3c6420e6580f11d4ca422a5ff5d1d9d3df9ac11b353c3d4f434d67d6a69e37d2e26b8248d72bedd14ecba0a545a327
2021-12-28 00:27:09 -05:00
fanquake
5dbec5163e
Merge #17943: qt, refactor: Remove never used default parameter
1a53b0da60097cd7fd423c519f01ceca0fd0aa14 refactor: Simplify connection syntax (Hennadii Stepanov)
7d0a8f4f530885cbf3870291f10f667326373bd1 refactor: Remove never used default parameter (Hennadii Stepanov)

Pull request description:

  In `BitcoinGUI::message()` slot the `bool* ret = nullptr` parameter is never used.

  This PR removes it and simplifies connections syntax by replacing lambdas with the `&BitcoinGUI::message` slot.

ACKs for top commit:
  promag:
    Code review ACK 1a53b0da60097cd7fd423c519f01ceca0fd0aa14.
  Sjors:
    Tested ACK 1a53b0da60097cd7fd423c519f01ceca0fd0aa14
  Empact:
    Code review ACK 1a53b0da60

Tree-SHA512: e287c3218d31a387338d50da3de79c27e8691829449c3a75a2f75bb1c680bd81eb9de43e4dd3646560a422d4a45c84debfce9783c4376b50aa5cde491f300688
2021-12-28 00:27:08 -05:00
Wladimir J. van der Laan
ae20d30726
Merge #17728: rpc: require second argument only for scantxoutset start action
7d263571bee8c36fbe3c854b69c6f31cf1ee3b9b rpc: require second argument only for scantxoutset start action (Andrew Chow)

Pull request description:

  It was reported on [IRC](http://www.erisian.com.au/bitcoin-core-dev/log-2019-12-11.html#l-377) that `scantxoutset`'s API was broken in 0.19.0:

  ```
  <belcher> i think scantxoutset may have been broken in bitcoin core 0.19 ? regardless of what parameters i run it with (e.g. "scantxoutset abort", "scantxoutset status") it just returns the help doc, according to the release notes the only change was https://github.com/bitcoin/bitcoin/pull/16285/files but i dont see anything that wouldve broken it, it works fine in 0.18
  <belcher> im on regtest, in case its important
  <harding> I can confirm `scantxoutset abort` returns the help doc on latest master.  Waiting for 0.18.1 to start now to attempt to reproduce there.
  <harding> It looks like it's expecting a second parameter (even though that doesn't make sense with "abort").
  <jonatack> Same for me as well
  <harding> Can also confirm that `scantxoutset abort` returns the expected result on 0.18.1.
  ```

  As noted in the conversation, previously, the second argument of `scanobjects` is only required for the `start` action. `Stop` and `abort` actions did not and could work without them.

  It appears that this was broken by #16240 which enforced the size of the arguments to match the listed required arguments.

  To fix this issue, this PR makes the `scanobjects` argument an optional argument. Then only in the `start` action do we check whether the `scanobjects` argument is there and throw an informative error about that. Also a test is added for this case.

ACKs for top commit:
  laanwj:
    ACK 7d263571bee8c36fbe3c854b69c6f31cf1ee3b9b
  promag:
    ACK 7d263571bee8c36fbe3c854b69c6f31cf1ee3b9b.

Tree-SHA512: 828bdfe47f4fffa5d00a2cf88db6cea4a2714d9c49276841ca5cbdd1603b87bb6862147b86edcf36d7b40314ddb80b1a07fd399faf288572c55cc788c5cf9526
2021-12-28 00:27:08 -05:00
Wladimir J. van der Laan
9d65ed0dd5
Merge #17676: depends: don't use OpenGL in Qt on macOS
2359a4790d93ffd17b8afc2fea3775dd858ef50d depends: don't use OpenGL in Qt on macOS (fanquake)
ba0cad2702e01860d3539f170343d8d9f9c5b75a build: pass -dead_strip_dylibs to ld on macOS (fanquake)

Pull request description:

  Based on #17663. OpenGL on macOS was also deprecated in 10.14.

  This also removes the `/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL` dylib from `bitcoin-qt`.

ACKs for top commit:
  laanwj:
    ACK 2359a4790d93ffd17b8afc2fea3775dd858ef50d
  jonasschnelli:
    utACK 2359a4790d93ffd17b8afc2fea3775dd858ef50d
  hebasto:
    ACK 2359a4790d93ffd17b8afc2fea3775dd858ef50d

Tree-SHA512: 39b0151832c829f6ebdc4910eb28ebbeba64539cd04eba6ce3ec75fc0f231569956ca51a1e0bffc76dd27e85643c65a155320b9b450c49e9841e12b108406d41
2021-12-28 00:27:08 -05:00
fanquake
0b6ec2fc1f
Merge #17521: depends: only use D-Bus with Qt on linux
6fdf5dab26e87888c3511fecef5d4d612b8247d6 depends: only use dbus with qt on linux (fanquake)

Pull request description:

  Since #8210 we've been passing `-dbus-runtime` when configuring Qt, however D-Bus isn't used on macOS or Windows. So rather than blanket passing `-dbus-runtime`, only use D-Bus when building for linux, and disable it for Windows and macOS. This also saves some time building qt in depends (for windows or macOS).

  This gist contains a diff of the symbols in a macOS bitcoin-qt after applying this change: https://gist.github.com/fanquake/317e5c9c7d1b5e37a0c1ce8001af18c4.

ACKs for top commit:
  laanwj:
    ACK 6fdf5dab26e87888c3511fecef5d4d612b8247d6

Tree-SHA512: 7c7df6036f27dae6adb807edf94cd26b4dafa3728976d219a68f7388b6477777b35acebd507320e4469c9f2fcf016b311c82e0b12d50546cb5ab66a1e955e464
2021-12-28 00:27:08 -05:00
fanquake
d202707939
Merge #17539: doc: Update and improve Developer Notes
794fe91395c79f46a6d920bc08de5a0551b359a3 doc: Update and improve Developer Notes (Hennadii Stepanov)

Pull request description:

  This PR:
  - removes outdated things, e.g., global pointer `pwalletMain` etc
  - adds "Sanitizers" to the TOC
  - makes filenames, `peer.dat` and `debug.log`, monospaced
  - specifies that _compile-time_ constant names are all uppercase
  - rewords using `explicit` with constructors

ACKs for top commit:
  jamesob:
    lazy ACK 794fe91395
  practicalswift:
    ACK 794fe91395c79f46a6d920bc08de5a0551b359a3 -- nice improvements!

Tree-SHA512: 2c5f035b1627f5fac8dc2453199d9e46bd101f86771de567cd95698de3c61cc459444ec1a68710e1d280195e1e40b42d9f40906297d12f12bf37749eca58297d
2021-12-28 00:27:08 -05:00
MarcoFalke
af9cf0534b
Merge #17497: test: skip tests when utils haven't been compiled
a67352161c68fea9764cc31aff199f112d8572c6 test: skip tool_wallet test when bitcoin-wallet isn't compiled (fanquake)
e9277baed64e1d4054a102e40b39a9aed7839c2f test: skip wallet_listreceivedby test when the cli isn't compiled (fanquake)
621d398750d9f5ce3e7ec75ccb160b3534dcc436 test: skip bitcoin_cli test when the cli isn't compiled (fanquake)

Pull request description:

  Don't try and run the `interface_bitcoin_cli.py` test when `bitcoin-cli` isn't available.

  ```bash
  stdout:
  2019-11-17T01:51:41.623000Z TestFramework (INFO): Initializing test directory /var/folders/z2/cn877pxd3czdfh47mfkmbwgm0000gn/T/test_runner_₿_🏃_20191116_205141/interface_bitcoin_cli_0
  2019-11-17T01:51:41.890000Z TestFramework (ERROR): Unexpected exception caught during testing
  Traceback (most recent call last):
    File "/Users/michael/github/bitcoin/test/functional/test_framework/test_framework.py", line 111, in main
      self.run_test()
    File "/Users/michael/github/bitcoin/test/functional/interface_bitcoin_cli.py", line 18, in run_test
      cli_response = self.nodes[0].cli("-version").send_cli()
    File "/Users/michael/github/bitcoin/test/functional/test_framework/test_node.py", line 528, in send_cli
      process = subprocess.Popen(p_args, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
    File "/Users/michael/.pyenv/versions/3.5.6/lib/python3.5/subprocess.py", line 676, in __init__
      restore_signals, start_new_session)
    File "/Users/michael/.pyenv/versions/3.5.6/lib/python3.5/subprocess.py", line 1289, in _execute_child
      raise child_exception_type(errno_num, err_msg)
  FileNotFoundError: [Errno 2] No such file or directory: '/Users/michael/github/bitcoin/src/bitcoin-cli'
  ```

Top commit has no ACKs.

Tree-SHA512: de27513a615d9d21271a0948e012c3209351e7374efd19bfa1bb9cda77e8fffe15d99e3424e4dbfa8cf826084f8af1670726f4703bd2b6093e7d37df4bea64f0
2021-12-28 00:27:02 -05:00
MarcoFalke
601f39505b Merge #16978: test: Seed test RNG context for each test case, print seed
fae43a97ca947cd0802392e9bb86d9d0572c0fba test: Seed test RNG context for each test case, print seed (MarcoFalke)

Pull request description:

  Debugging failing unit tests is hard if the failure is non-deterministic and the seed is not known.

  Fix that by printing the seed and making it possible to set the seed from outside.

ACKs for top commit:
  davereikher:
    Tested ACK fae43a97ca947cd0802392e9bb86d9d0572c0fba

Tree-SHA512: 33d848dd1f4180d3664ecf60e9810c2a93590c05276b2c46b1e4fe6e376b45916a46b90c803bb602750ab666da3a05ce499e550024685a90b8cc38fab6667cb8
2021-12-22 10:23:41 -06:00
MarcoFalke
94a6e7c5a1 Merge #17365: depends: update README.md with working Android targets and API levels
3fe1aba6016c6501c8a02d8bd812f06397279100 depends: move README.md Android instructions to a separate section (Igor Cota)
aa9b84acee8beda82861ad69139efeefadcd19bb depends: update README.md with working Android targets and API levels (Igor Cota)

Pull request description:

  Per @Sjors comments in https://github.com/bitcoin/bitcoin/pull/16110#pullrequestreview-310821810

ACKs for top commit:
  Sjors:
    ACK 3fe1aba

Tree-SHA512: 7a2e676070d51c7a4291b0d4b638f52321c08cc6ebe2bd2c02ba62f6cc3dd8a73227df4693c6ce9201863eb0bf26e0133805347b9016cb0f9a389a49cc9492aa
2021-12-22 10:23:41 -06:00
Wladimir J. van der Laan
10749445e1 Merge #17286: Fix help-debug -checkpoints
a8b82867d544d221de00f6a0e26dbcc389326629 Fix incorrect help-debug for -checkpoints (Antoine Riard)

Pull request description:

ACKs for top commit:
  jnewbery:
    ACK a8b82867d544d221de00f6a0e26dbcc389326629 for improving the `-prune` help text.
  MarcoFalke:
    ACK a8b82867d544d221de00f6a0e26dbcc389326629

Tree-SHA512: 973fa97436be09a9939386dc00023420a7296a9e268356bf26aa06468f9f0d2c822205a4f1ce8f44a0562aa64ad90a43dec5697af656ef28ba6829e4e4360e94
2021-12-22 10:23:41 -06:00
fanquake
5201f45782 Merge #17121: test: speedup wallet_backup by whitelisting peers (immediate tx relay)
581c9be0d8bff46cd68bd6a3bf72f22d11c09aea test: speedup wallet_backup by whitelisting peers (immediate tx relay) (Sebastian Falbesoner)

Pull request description:

  approaches part of #16613 ("Functional test suite bottlenecks")

  The majority of the test time is spent in `sync_mempools()` after sending to
  addresses, i.e. the bottleneck is in relaying transactions. By whitelisting the
  peers via `-whitelist`, the inventory is transmissioned immediately rather than
  on average every 5 seconds, speeding up the test by at least a factor of two:

  before:
  ```
  $ time ./wallet_backup.py
  real    2m2.523s
  user    0m6.093s
  sys 0m2.454s
  ```
  with this PR:
  ```
  $ time ./wallet_backup_with_whitelist.py
  real    0m36.570s
  user    0m5.365s
  sys 0m1.696s
  ```
  Note that the test is not deterministic (the `sendtoaddress` RPC in function
  `one_send()` is executed with a probability of 50%), hence the times could vary
  between individual runs.

ACKs for top commit:
  MarcoFalke:
    ACK 581c9be0d8bff46cd68bd6a3bf72f22d11c09aea, this test is testing the backup behaviour, not the tx relay behaviour
  fanquake:
    ACK 581c9be0d8bff46cd68bd6a3bf72f22d11c09aea

Tree-SHA512: d016f39cdb85501e17a74a4c4db5a9f7404baa76fbcc3675a34d3cd7bf03d7a4cb4fd3e5f17cb0597248120bb5ac8b15d3db7663007b76b010902be72954bde0
2021-12-22 10:15:40 -06:00
Wladimir J. van der Laan
afaee16d44 Merge #17074: build: Added double quotes
dd85166b6c8200265ff222226305e6823149de19 Added double quotes (Ava Barron)

Pull request description:

  Added double quotes to prevent globbing and word splitting.

ACKs for top commit:
  laanwj:
    ~~ACK dd85166b6c8200265ff222226305e6823149de19~~
  practicalswift:
    ACK dd85166b6c8200265ff222226305e6823149de19 -- diff looks correct
  hebasto:
    ACK dd85166b6c8200265ff222226305e6823149de19, tested locally on Linux Mint 19.2.

Tree-SHA512: 503ed8c4a5dafd3868465fbb66b13e15862c114573609f681b69259703e76fe85260b782c45a1e0780b7d3fdf34d8fd2f627b59f4013b99eeb1b771a652e7b10
2021-12-22 10:15:40 -06:00
MarcoFalke
481a42e0f8 Merge #16987: test: Correct docstring param name.
e28d8f893656a5b60dd9c0ec11a88611a56d2ab4 Correct docstring param name. (John Bampton)

Pull request description:

  Small fix to correct the Python docstring.

ACKs for top commit:
  laanwj:
    ACK e28d8f893656a5b60dd9c0ec11a88611a56d2ab4
  MarcoFalke:
     ACK e28d8f8

Tree-SHA512: 7bec1c6b166c768dd69fc6b94eb80ceeaa0258985b9a11956e336940d403785e7d09d0084d9b870b637ec784db044cf4c0f8ac3f0fcdf431090f003016ef13a9
2021-12-22 10:15:40 -06:00
Wladimir J. van der Laan
c80e6c1ce2 Merge #16285: rpc: Improve scantxoutset response and help message
bdd6a4fd5da44c2575be9195ecb4213a13e74511 qa: Check scantxoutset result against gettxoutsetinfo (João Barbosa)
fc0c410d6e19dd8e3abbc9b0fc13c836e6678750 rpc: Improve scantxoutset response and help message (João Barbosa)

Pull request description:

  The new response keys `height` and `bestblock` allow the client to know at what point the scan took place.

  The help message now has all the response keys (`result` and `txouts` were missing) and it's improved a bit. Note that `searched_items` key is renamed to `txouts`, considering `scantxoutset` is marked experimental.

ACKs for top commit:
  laanwj:
    ACK bdd6a4fd5da44c2575be9195ecb4213a13e74511

Tree-SHA512: 6bb7c3464b19857b756b8bc491ab7c58b0d948aad8c005b26ed27c55a1278f5639217e11a315bb505b4f44ebe86f413068c1e539c8a5f7a4007735586cc6443c
2021-12-22 10:15:40 -06:00
MarcoFalke
c1c1b83fd9 Merge #15659: [docs] fix findFork comment
c968780785 [docs] fix comment: the return value of findFork is _not_ an ancestor when the specified block is on the active chain (r8921039)

Pull request description:

  The return value of findFork is an ancestor of the specified block only when specified block is _not_ on the active chain. When it is on the active chain, the return value is the specified block itself, not an ancestor of it.

ACKs for commit c96878:
  promag:
    utACK c968780, however comment could be shorter.
  ryanofsky:
    utACK c968780785c18bd6d0a8659c9e251ccf8fdc91dc. Only change since last review is squash

Tree-SHA512: bb05d734059898784c4a59b5b0344719eb4dfb2d49a0f7f705fcb2eb630702e66be81c01299185faf0c219fa9f9aa64cbdf6d5f91e0b3dce0ff420909a454a18
2021-12-22 10:15:40 -06:00
Wladimir J. van der Laan
7d72c07722 Merge #15426: [Doc] importmulti: add missing description of keypool option
a607c9ae4c2730fca5ce340c400c95c87e498a7c [Doc] importmulti: add missing description of keypool option (David A. Harding)

Pull request description:

  Option was added in #14075 but not documented there.

  CC: @achow101

Tree-SHA512: dcb6421fa1be3d733d7a00c1b57ffd591fe76c02d1c479e729089c118bec52f53bd7ebdb5454b3b1c7603ab189e91682a688b673a7f6b04fa8610c4249711217
2021-12-22 10:15:40 -06:00
PastaPastaPasta
0645d47320
Merge #15292: Remove 'boost::optional'-related false positive -Wmaybe-uninitialized warnings on GCC compiler (#4635)
2d483142a7051389afe74c57a216843e6306f1a8 Remove 'boost::optional'-related gcc warnings (Hennadii Stepanov)

Pull request description:

  #14711 introduced some warnings when building with gcc compiler.

  See:
  - https://github.com/bitcoin/bitcoin/pull/14711#issuecomment-454760017 by @laanwj
  - https://github.com/bitcoin/bitcoin/pull/14711#pullrequestreview-193702611 by @ryanofsky

  This gcc [issue](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=47679) has been known since version 4.6.0 and last updated in 2017.
  From the boost [docs](https://www.boost.org/doc/libs/1_69_0/libs/optional/doc/html/boost_optional/quick_start/optional_automatic_variables.html):
  > The default constructor of `optional` creates an _uninitialized_ `optional` object.

  Also: [False positive with -Wmaybe-uninitialized](https://www.boost.org/doc/libs/1_69_0/libs/optional/doc/html/boost_optional/tutorial/gotchas/false_positive_with__wmaybe_uninitialized.html) ([pointed out](https://github.com/bitcoin/bitcoin/pull/15292#issuecomment-459063170) by @Empact)

  This PR removes these warnings.

  cc: @Empact @practicalswift

Tree-SHA512: 752ae3c3ca6282bbf98726236fbc3069ab9d1aee57ae2ec2668b32e4541e7bc1acb15b7d6fa9e2b6daf1ec29c0987a1053ee1ca0f523b71367ff911221c58c94

Co-authored-by: Wladimir J. van der Laan <laanwj@gmail.com>
2021-12-22 12:59:27 +03:00
PastaPastaPasta
5bc79fefc9
Remove KeePass integration (#4628)
* Remove KeePass integration

This integration is not actively supported. It has zero tests, little documentation, and has not really been actively maintained. As far as I can tell, noone uses this integration, and even if they do, they will simply have to copy/paste password from keepass instead of using this integration.

* continued
2021-12-22 12:53:11 +03:00
PastaPastaPasta
e95c13c207
Merge pull request #4606 from kittywhiskers/portsportsports
merge bitcoin#14700...#16854: backports
2021-12-21 11:25:20 -06:00
PastaPastaPasta
f2c603b45c
util: add ranges.h to emulate c++20 std::ranges (#4622)
* refactor: introduce ranges.h for prettier std algo. Also use it in dash core

* fix formatting, use ranges instead of std

* remove commented out code

* introduce ranges find_if_opt, count_if, find_if. Use them all, and more

* use std::accumulate

* capture everything so that threadsaftey analysis is happy

* fix linter

* fix linter

* remove pessimizing move
2021-12-21 15:05:29 +03:00
UdjinM6
87288d0d2b
Merge pull request #4627 from UdjinM6/empty_wallets
backport 15006 and 15226: Empty wallets
2021-12-21 15:02:10 +03:00
Kittywhiskers Van Gogh
c29d0c5cf6 merge bitcoin#16854: Prevent UpdateTip log message from being broken up 2021-12-21 12:25:17 +05:30
Kittywhiskers Van Gogh
15ebd14886 merge bitcoin#15146: Solve SmartOS FD_ZERO build issue 2021-12-21 12:25:17 +05:30
Kittywhiskers Van Gogh
5a69b857e9 merge bitcoin#16725: Don't show addresses or P2PK in decoderawtransaction 2021-12-21 12:25:17 +05:30
Kittywhiskers Van Gogh
afad681789 partial bitcoin#13932: Additional utility RPCs for PSBT 2021-12-21 12:25:15 +05:30
Kittywhiskers Van Gogh
73ce859de2 merge bitcoin#14719: Check specific reject reasons in feature_block 2021-12-18 16:51:40 +05:30
Kittywhiskers Van Gogh
d9f8518d1a merge bitcoin#14700: Avoid race in p2p_invalid_block by waiting for the block request 2021-12-18 16:51:40 +05:30
Wladimir J. van der Laan
d25c0f21b7
Merge #15006: Add option to create an encrypted wallet
662d1171d9e29964b039ba4c5bc8a2304426c003 Add option to create an encrypted wallet (Andrew Chow)

Pull request description:

  This PR adds a new `passphrase` argument to `createwallet` which will create a wallet that is encrypted with that passphrase.

  This is built on #15226 because it needs to first create an empty wallet, then encrypt the empty wallet and generate new keys that have only been stored in an encrypted state.

ACKs for commit 662d11:
  laanwj:
    utACK 662d1171d9e29964b039ba4c5bc8a2304426c003
  jnewbery:
    Looks great. utACK 662d1171d9e29964b039ba4c5bc8a2304426c003

Tree-SHA512: a53fc9a0f341eaec1614eb69abcf2d48eb4394bc89041ab69bfc05a63436ed37c65ad586c07fd37dc258ac7c7d5e4f7f93b4191407f5824bbf063b4c50894c4a
2021-12-17 21:11:25 +03:00
MeshCollider
254e122217
Merge #15226: Allow creating blank (empty) wallets (alternative)
7687f7873 [wallet] Support creating a blank wallet (Andrew Chow)

Pull request description:

  Alternative (kind of) to #14938

  This PR adds a `blank` parameter to the `createwallet` RPC to create a wallet that has no private keys initially. `sethdseed` can then be used to make a clean wallet with a custom seed. `encryptwallet` can also be used to make a wallet that is born encrypted.

  Instead of changing the version number as done in #14938, a wallet flag is used to indicate that the wallet should be blank. This flag is set at creation, and then unset when the wallet is no longer blank. A wallet becomes non-blank when a HD seed is set or anything is imported. The main change to create a blank wallet is primarily taken from #14938.

  Also with this, the term "blank wallet" is used instead of "empty wallet" to avoid confusion with wallets that have balance which would also be referred to as "empty".

  This is built on top of #15225 in order to fix GUI issues.

Tree-SHA512: 824d685e11ac2259a26b5ece99c67a7bda94a570cd921472c464243ee356b7734595ad35cc439b34357135df041ed9cba951e6edac194935c3a55a1dc4fcbdea
2021-12-17 21:11:10 +03:00
PastaPastaPasta
a472a85ab6
refactor: remove all the unneeded and unused (probably broken) travis stuff (#4621) 2021-12-17 20:24:00 +03:00
PastaPastaPasta
72e1d79fb8
refactor: misc spork refactoring (#4620)
* Use string_view instead of string for SERIALIZATION_VERSION_STRING. Also introduces string_view serialization. Also use string_view where (trivially) possible for params

* separate GetSporks and sporks net msg processing into its own method

* refactor: spork, use c++17 if-init

* refactor: spork, remove unused params, make param pt

* refactor: spork, use simplier construction

* refactor: spork, make strError part of if-init, also w/o redundant initialization

* refactor: spork, use structured binding

* refactor: spork, use for instead of while

* clang-format: spork.cpp

* resolve cppcheck linter warning about unused variable
2021-12-17 20:22:11 +03:00
UdjinM6
5bdd245105
Merge pull request #4619 from PastaPastaPasta/remove-includes
refactor: Remove includes; backport 16659
2021-12-17 20:21:12 +03:00
PastaPastaPasta
d9c994a100
Merge pull request #4607 from humbleDasher/dec042021
Backport 17015, 16397, 15459
2021-12-17 11:04:02 -06:00
pasta
f04cf7bf47
16659 continuation
Signed-off-by: pasta <pasta@dashboost.org>
2021-12-17 12:02:16 -05:00
PastaPastaPasta
8489da58e6
Merge pull request #4610 from vijaydasmp/bp196
merge bitcoin #16953 #16918 #16917 #16898 #14696 #16888 #16737 #16404 #15687 #16294 : Backport
2021-12-17 10:56:10 -06:00
PastaPastaPasta
993816daef
Merge pull request #4572 from Munkybooty/backports-0.19-mempool_package_onemore.py
Backports 0.19 mempool_package_onemore.py
2021-12-17 10:44:25 -06:00
Wladimir J. van der Laan
c31713b401 Merge #16471: [mempool] log correct messages when CPFP fails
42a5e912ee4e91a5191d659588f0605e1ada2f33 [mempool] log correct messages when CPFP fails (John Newbery)

Pull request description:

  Fixes a logging issue introduced in #15681

ACKs for top commit:
  laanwj:
    ACK 42a5e912ee4e91a5191d659588f0605e1ada2f33 (+utACK from bluematt that isn't registered because it has no commit id)

Tree-SHA512: ff5f423cc4d22838eea00c5b1d39ceda89cd61474c72f256a97c698eb0ec3f2156a97139f537669376132902c1e3943bf84c356a4b98a9a306b4ec57302c2761
2021-12-16 16:20:59 -05:00
Wladimir J. van der Laan
507c871ed5 Merge #15681: [mempool] Allow one extra single-ancestor transaction per package
50cede3f5a4d4fbfbb7c420b94e661a6a159bced [mempool] Allow one extra single-ancestor transaction per package (Matt Corallo)

Pull request description:

  This implements the proposed policy change from [1], which allows
  certain classes of contract protocols involving revocation
  punishments to use CPFP. Note that some such use-cases may still
  want some form of one-deep package relay, though even this alone
  may greatly simplify some lightning fee negotiation.

  [1] https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2018-November/016518.html

ACKs for top commit:
  ajtowns:
    ACK 50cede3f5a4d4fbfbb7c420b94e661a6a159bced -- looked over code again, compared with previous commit, compiles, etc.
  sdaftuar:
    ACK 50cede3f5a4d4fbfbb7c420b94e661a6a159bced
  ryanofsky:
    utACK 50cede3f5a4d4fbfbb7c420b94e661a6a159bced. Changes since last review: adding EXTRA_DESCENDANT_TX_SIZE_LIMIT constant, changing max ancestor size from 1,000,000 to nLimitAncestorSize constant (101,000), fixing test comment and getting rid of unused test node.

Tree-SHA512: b052c2a0f384855572b4579310131897b612201214b5abbb225167224e4f550049e300b471dbf320928652571e92ca2d650050b7cf39ac92b3bc1d2bcd386c1c
2021-12-16 16:20:59 -05:00
Wladimir J. van der Laan
91310cf78a Merge #15459: doc: add how to calculate blockchain and chainstate size variables to release process
eb4c43e49f625895670866b89bb56ca641c4eeb7 doc: documents how to calculate m_assumed_blockchain_size and m_assumed_chain_state_size on the release process. (marcoagner)

Pull request description:

  Regarding [this](https://github.com/bitcoin/bitcoin/pull/15183#issuecomment-463133734) on https://github.com/bitcoin/bitcoin/pull/15183.
  Added an "Additional information" section for this which seems reasonable to me but may not be the best place for this. Also, let me know if anything else should be documented here (like more details).

ACKs for top commit:
  laanwj:
    ACK eb4c43e49f625895670866b89bb56ca641c4eeb7

Tree-SHA512: 7e6fc46740daa01dd9be5a8da7846e7a9f7fa866bf31fdc2cb252f90c698cfd6ef954f9588f7abcebda2355ec2b2a380635e14a164e53e77d38abefa3e2cc698
2021-12-15 13:06:44 -05:00
Wladimir J. van der Laan
a6fcc52743
Merge #16953: doc: Improve test READMEs
43e7d576f590e90ad7d1ba3d550671a7958f1188 doc: Improve test READMEs (Fabian Jahr)

Pull request description:

  General improvements on READMEs for unit tests and functional tests:
  - Give unit test readme a headline
  - Move general information on `src/test` folder to the top
  - Add information on logging and debugging unit tests
  - Improve debugging and logging information in functional testing
  - Include all available log levels in functional tests

ACKs for top commit:
  laanwj:
    ACK 43e7d576f590e90ad7d1ba3d550671a7958f1188

Tree-SHA512: 22b27644992ba5d99a885cd51b7a474806714396fcea1fd2d6285e41bdf3b28835ad8c81449099e3ee15a63d57b3ab9acb89c425d9855ed1d9b4af21db35ab03
2021-12-15 20:10:01 +05:30
MarcoFalke
a03af87cf7
Merge #16918: test: Make PORT_MIN in test runner configurable
fa69588537bc91c0aedbc89ef1760d89cbffad75 test: Make PORT_MIN in test runner configurable (MarcoFalke)

Pull request description:

  This is needed when some ports in the port range are used by other processes. Note that simply assigning the ports dynamically does not work:

  * We spin up several nodes per test (each node gets its own port)
  * We run several tests in parallel

  So to avoid nodes from different tests colliding on ports, the port assignment must be deterministic (can not be dynamic).

  Fixes: #10869

ACKs for top commit:
  practicalswift:
    ACK fa69588537bc91c0aedbc89ef1760d89cbffad75 -- diff looks correct
  promag:
    ACK fa69588537bc91c0aedbc89ef1760d89cbffad75.

Tree-SHA512: e79adb015e7de79064e2d14336c38bc9672bd779ad6c52917721897e73f617c39d32c068a369c26670002a6c4ab95a71ef3a6878ebdd9710e02f410e2f7bcd14
2021-12-15 20:10:00 +05:30
fanquake
a7d94ed55f
Merge #16917: tests: Move common function assert_approx() into util.py
96299a9d6c0a6b9125a58a63ee3147e55d1b086b Test: Move common function assert_approx() into util.py (fridokus)

Pull request description:

  To reduce code duplication, move `assert_approx` into common framework `util.py`.

  `assert_approx()` is used in two functional tests.

ACKs for top commit:
  theStack:
    ACK 96299a9
  practicalswift:
    ACK 96299a9d6c0a6b9125a58a63ee3147e55d1b086b -- DRY is good and diff looks correct
  fanquake:
    ACK 96299a9d6c0a6b9125a58a63ee3147e55d1b086b - thanks for contributing 🍻

Tree-SHA512: 8e9d397222c49536c7b3d6d0756cc5af17113e5af8707ac48a500fff1811167fb2e03f3c0445b0b9e80f34935f4d57cfb935c4790f6f5463a32a67df5f736939
2021-12-15 20:10:00 +05:30