Commit graph

4018 commits

Author SHA1 Message Date
Andrew Poelstra
6da00c1830 Merge 4effd67bf4 into merged_master (Bitcoin PR #17387) 2020-11-14 16:51:48 +00:00
practicalswift
0ccb3addf6 tests: Remove no longer needed UBSan suppression (float-divide-by-zero in validation.cpp) 2020-11-12 18:58:59 +00:00
Jon Atack
05e82d86b0
wallet: override minfee checks (fOverrideFeeRate) for fee_rate
in RPCs fundrawtransaction and walletcreatefundedpsbt only.

This provides the existing feeRate (BTC/kvB) behavior in these two RPCs to the
new fee_rate (sat/vB) param also.

See these two GitHub review discussions for more info:
https://github.com/bitcoin/bitcoin/pull/10706/#discussion_r126560525
https://github.com/bitcoin/bitcoin/pull/20305#discussion_r520032533
2020-11-12 11:44:15 +01:00
Jon Atack
449b730579
wallet: provide valid values if invalid estimate mode passed
Co-authored-by: Murch <murch@murch.one>
2020-11-12 11:43:17 +01:00
Jon Atack
173b5b5fe0
wallet: update fee rate units, use sat/vB for fee_rate error messages
and BTC/kvB for feeRate error messages.
2020-11-12 11:43:03 +01:00
fanquake
c82336c493
Remove references to CreateWalletFromFile
CWallet::CreateWalletFromFile() was removed in
8b5e7297c0 but these references remain.
2020-11-12 13:12:29 +08:00
Samuel Dobson
c2d8ba6265
Merge #19502: Bugfix: Wallet: Soft-fail exceptions within ListWalletDir file checks
24d2d3341d QA: wallet_multiwallet: Check that recursive symlink directory and wallet.dat loops are ignored (Luke Dashjr)
69f59af54d Bugfix: Wallet: Soft-fail exceptions within ListWalletDir file checks (Luke Dashjr)

Pull request description:

  Previously, an exception would be thrown, which could kill the node in some circumstances.

  Includes test changes to cause failure.

  Review with `?w=1`

ACKs for top commit:
  hebasto:
    re-ACK 24d2d3341d, rebased only since my [previous](https://github.com/bitcoin/bitcoin/pull/19502#pullrequestreview-520552944) review.
  promag:
    Tested ACK 24d2d3341d, test change fails on master.
  meshcollider:
    utACK 24d2d3341d

Tree-SHA512: f701f81b3aa3d3e15cee52ac9e7c31a73c0d8166e56bf077235294507cbcee099829fedc432a1c4b6d8780885f4e37897b44b980b08125771de3c849c000499e
2020-11-12 13:26:38 +13:00
MarcoFalke
d9f5132736
Merge #20344: wallet: fix scanning progress calculation for single block range
5e146022da wallet: fix scanning progress calculation for single block range (Sebastian Falbesoner)

Pull request description:

  If the blockchain is rescanned for a single block (i.e. start and stop hashes are equal, and with that also the estimated start/stop verification progress values) the progress calculation could lead to a NaN value caused by a division by zero (0.0/0.0), resulting in an invalid JSON result for the `getwalletinfo` RPC.  This PR fixes this behaviour by setting the progress to zero in that special case. Fixes #20297.

  The behaviour can easily be reproduced by continuously running single block rescans in an endless loop, e.g. via
  ```bash
  #!/bin/bash
  while true
  do
      bitcoin-cli rescanblockchain $(bitcoin-cli getblockcount)
  done
  ```

  and at the same time perform some `getwalletinfo` RPCs.

  On the master branch, this leads to frequent invalid responses (tested on mainchain):
  ```
  $ bitcoin-cli getwalletinfo
  error: couldn't parse reply from server
  $ curl --user `cat ~/.bitcoin/.cookie` --data-binary '{"jsonrpc": "1.0", "id": "curltest", "method": "getwalletinfo", "params": []}' -H 'content-type: text/plain;' http://127.0.0.1:8332/
  {"result":{"walletname":"","walletversion":169900,"format":"bdb","balance":0.00000000,"unconfirmed_balance":0.00000000,"immature_balance":0.00000000,"txcount":0,"keypoololdest":1603677276,"keypoolsize":1000,"hdseedid":"3196e33ecb47c7130e6ca60f2f895f9259860dca","keypoolsize_hd_internal":1000,"paytxfee":0.00000000,"private_keys_enabled":true,"avoid_reuse":false,"scanning":{"duration":0,"progress":},"descriptors":false},"error":null,"id":"curltest"}
  ```
  (note that missing value for "progress" in the JSON result).

  On the PR branch, the behaviour doesn't occur anymore.

ACKs for top commit:
  MarcoFalke:
    review ACK 5e146022da
  promag:
    Core review ACK 5e146022da.

Tree-SHA512: f0e6aad5a6cd08b36c5fe820fff0ef26663229b39169a4dbe757f3c795a41cf5c69c9dc90efe7515675ae1059307f8971123781a0514d10704123a6f28b125ab
2020-11-11 16:11:01 +01:00
Jon Atack
410e471fa4
wallet: remove redundant bumpfee fee_rate checks
SetFeeEstimateMode() handles these checks now and provides a more actionable
error message.
2020-11-11 15:56:01 +01:00
Jon Atack
a0d4957473
wallet: introduce fee_rate (sat/vB) param/option
Create a fee_rate (sat/vB) RPC param and replace overloading the conf_target and
estimate_mode params in the following 6 RPCs with it:

- sendtoaddress
- sendmany
- send
- fundrawtransaction
- walletcreatefundedpsbt
- bumpfee

In RPC bumpfee, the previously existing fee_rate remains but the unit is changed
from BTC/kvB to sat/vB. This is a breaking change, but it should not be an
overly risky one, as the units change by a factor of 1e5 and any fees specified
in BTC/kvB after this commit will either be too low and raise an error or be 1
sat/vB and can be RBFed.

Update the test coverage for each RPC.

Co-authored-by: Murch <murch@murch.one>
2020-11-11 15:55:59 +01:00
Jon Atack
3f72791613
wallet: fix bug in RPC send options
when empty, options were not being populated by arguments of the same name

found while adding test coverage in 603c0050
2020-11-11 15:55:46 +01:00
Sebastian Falbesoner
5e146022da wallet: fix scanning progress calculation for single block range
If the blockchain is rescanned for a single block (i.e. start and stop hashes
are equal, and with that also the estimated verification progress) the progress
calculation could lead to a NaN value caused by a division by zero, resulting in
an invalid JSON result for the getwalletinfo RPC.  Fixed by setting the progress
to zero in that special case.

Co-authored-by: MarcoFalke <falke.marco@gmail.com>
2020-11-11 13:15:00 +01:00
MarcoFalke
fa949b3c13
test: Suppress epoll_ctl data race 2020-11-11 10:10:31 +01:00
MarcoFalke
42f950cb27
Merge #20322: test: Fix intermittent issue in wallet_listsinceblock
444412821e test: Fix intermittent issue in wallet_listsinceblock (MarcoFalke)

Pull request description:

ACKs for top commit:
  Empact:
    Code Review ACK https://github.com/bitcoin/bitcoin/pull/20322/commits/444412821e5349ce0e0b039d884583edb70c4399

Tree-SHA512: 86d47b1e3c8681dd479654589c894016ac81a3c96a34c3b4a75278b2af85054ea8c6f768e518a5322a4928d82d5e99105bbce0f4fa6a7a18c40e3e0799f9ab54
2020-11-10 09:20:51 +01:00
Andrew Poelstra
f1f5409705 Merge bb862d7864 into merged_master (Bitcoin PR #14384) 2020-11-09 23:10:14 +00:00
Andrew Poelstra
9fdb7c094a Merge 69a6f1ad1f into merged_master (Bitcoin PR #17513) 2020-11-09 23:10:14 +00:00
Andrew Poelstra
01f4eb2404 Merge 5ff798c39b into merged_master (Bitcoin PR #17439) 2020-11-09 23:10:13 +00:00
Andrew Poelstra
2720aad76b Merge 3671c5721d into merged_master (Bitcoin PR #17532) 2020-11-09 23:10:13 +00:00
Andrew Poelstra
db065548fc Merge b4a1da9ef8 into merged_master (Bitcoin PR #17515) 2020-11-09 23:10:12 +00:00
Andrew Poelstra
4cc150cd4a Merge e1df922132 into merged_master (Bitcoin PR #17497) 2020-11-09 23:10:12 +00:00
Andrew Poelstra
f9acc8330d Merge ca1eeba0b0 into merged_master (Bitcoin PR #17488) 2020-11-09 23:10:12 +00:00
Andrew Poelstra
21cb153472 Merge 24647a09e7 into merged_master (Bitcoin PR #17470) 2020-11-09 23:10:12 +00:00
Andrew Poelstra
d0e2b032a8 Merge 422ec33d45 into merged_master (Bitcoin PR #17322) 2020-11-09 23:10:11 +00:00
Andrew Poelstra
2b6199bf17 Merge c7709cbf4c into merged_master (Bitcoin PR #17469) 2020-11-09 23:10:11 +00:00
Andrew Poelstra
19ad9587c8 Merge ccf6697e3b into merged_master (Elements PR #780) 2020-11-09 23:10:11 +00:00
Andrew Poelstra
90d5425abf Merge 8237889e8d into merged_master (Bitcoin PR #17435) 2020-11-09 23:10:10 +00:00
Andrew Poelstra
bce97903cf Merge 1028882eea into merged_master (Bitcoin PR #17437) 2020-11-09 23:10:10 +00:00
Andrew Poelstra
3613ae283d Merge f60e0684d1 into merged_master (Elements PR #773) 2020-11-09 23:10:10 +00:00
Andrew Poelstra
9f605a7f7c Merge 270616228b into merged_master (Bitcoin PR #17362) 2020-11-09 23:10:09 +00:00
Andrew Poelstra
111ab7d824 Merge e65b4160e9 into merged_master (Bitcoin PR #17340) 2020-11-09 23:10:08 +00:00
Andrew Poelstra
23e022906c Merge 22a58811d4 into merged_master (Bitcoin PR #17353) 2020-11-09 23:10:07 +00:00
Andrew Poelstra
1d3555cdaf Merge b05b28183c into merged_master (Bitcoin PR #16899) 2020-11-09 21:20:53 +00:00
Andrew Poelstra
132dcf17c7 Merge 54a337478d into merged_master (Bitcoin PR #17378) 2020-11-09 21:20:52 +00:00
Andrew Poelstra
c3b2f1d8c0 Merge bdda137878 into merged_master (Bitcoin PR #16766) 2020-11-09 21:20:51 +00:00
Andrew Poelstra
47f60c4e53 Merge bfc4c896d6 into merged_master (Bitcoin PR #17258) 2020-11-09 21:20:51 +00:00
Andrew Poelstra
7494bc176f Merge bc38bb9a60 into merged_master (Bitcoin PR #17288) 2020-11-09 21:20:51 +00:00
Andrew Poelstra
00d30ddc6c Merge 94a26b192f into merged_master (Bitcoin PR #17318) 2020-11-09 21:20:51 +00:00
Andrew Poelstra
b9140de11e Merge 6cb10c14c6 into merged_master (Bitcoin PR #17199) 2020-11-09 21:20:51 +00:00
Andrew Poelstra
c82f65f262 Merge 73b26e38d7 into merged_master (Bitcoin PR #17351) 2020-11-09 21:20:50 +00:00
Andrew Poelstra
3875efaaa2 Merge 6a7c40bee4 into merged_master (Bitcoin PR #15888) 2020-11-09 21:20:49 +00:00
Andrew Poelstra
5f236f427b Merge bc3fcf3c0d into merged_master (Bitcoin PR #17327) 2020-11-09 21:20:49 +00:00
Andrew Poelstra
a19375575a Merge 222b7d0ca7 into merged_master (Bitcoin PR #17330) 2020-11-09 21:20:49 +00:00
Andrew Poelstra
d472d58b7b Merge 811c381ab6 into merged_master (Bitcoin PR #17329) 2020-11-09 21:20:49 +00:00
Andrew Poelstra
bde84fefc4 Merge 3c40bc6726 into merged_master (Bitcoin PR #15921) 2020-11-09 21:20:48 +00:00
Andrew Poelstra
cda20329e8 Merge cab94cc074 into merged_master (Bitcoin PR #16943) 2020-11-09 21:20:48 +00:00
Andrew Poelstra
e910b15aa8 Merge 6a97e8a060 into merged_master (Bitcoin PR #17260) (multiple commits)
This is the start of some nontrivial wallet refactoring by achow. See
https://github.com/bitcoin-core/bitcoin-devwiki/wiki/Wallet-Class-Structure-Changes
for a high-level design.

This PR moves some stuff out of CWallet into a dummy "box" LegacyScriptPubKeyMan
which is (currently) very tightly coulped to CWallet. Because of the coupling there
are currently null-checks that cannot fail, things which assume non-nullness which
will eventually be wrong, and a plethora of currently-equivalent ways to get from
a CWallet to a provider or back.

Our approach is basically to ignore the refactoring; leave the blinding key stuff
in CWallet and have it call into the wallet's provider when we are obtaining the
underlying keys.

Later, probably in a post-rebase PR, we should rethink how we manage blinding keys
to more closely match Core's "all keys go into providers" model.
2020-11-09 21:20:47 +00:00
Andrew Poelstra
61e1882a27 Merge 1ff3a39d11 into merged_master (Elements PR #753) 2020-11-09 21:20:46 +00:00
Andrew Poelstra
5a84d5f5b5 Merge badca85e2c into merged_master (Bitcoin PR #16202) 2020-11-09 21:20:46 +00:00
Andrew Poelstra
839ad47472 Merge 9ae468a6d5 into merged_master (Bitcoin PR #17192) 2020-11-09 21:20:46 +00:00
Andrew Poelstra
508fcb020d Merge b688b859db into merged_master (Bitcoin PR #17004) 2020-11-09 21:20:44 +00:00