Merge #15996: rpc: Deprecate totalfee argument in bumpfee

2f7eb772f6 Add RPC bumpfee totalFee deprecation test (Jon Atack)
a92d9ce8cf deprecate totalFee argument in bumpfee RPC call (Gregory Sanders)

Pull request description:

  totalFee argument is of questionable use, and should be removed in favor of feerate-based features.

  I first moved IsDeprecatedRPCEnabled because `bitcoin-wallet` doesn't link `libbitcoin_server`.

ACKs for top commit:
  ryanofsky:
    utACK 2f7eb772f6. Only change since last review is leaving IsDeprecatedRPCEnabled in its happy home, and switching to rpcEnableDeprecated instead. (Thanks!)
  jonatack:
    ACK 2f7eb772f6. Built locally, manually tested rpc bumpfee, help output ([gist](https://gist.github.com/jonatack/863673eacc02f9da39ff6d6712f9d837)), all tests pass. Travis failures appears to be unrelated, the [bitcoin builds are green](https://bitcoinbuilds.org/index.php?build=121).
  meshcollider:
    Code Review ACK 2f7eb772f6

Tree-SHA512: c97465205ee59575df37894bcbb6c4ecf8858dd8fe9d89503f9342b226768c1dcb553153bc9eb3055f7bf5eb41573e48b8efa57e083cd255793cbe5280f0026a
This commit is contained in:
MeshCollider
2019-07-27 22:21:42 +12:00
4 changed files with 62 additions and 3 deletions

View File

@@ -175,6 +175,7 @@ BASE_SCRIPTS = [
'rpc_bind.py --nonloopback',
'mining_basic.py',
'wallet_bumpfee.py',
'wallet_bumpfee_totalfee_deprecation.py',
'rpc_named_arguments.py',
'wallet_listsinceblock.py',
'p2p_leak.py',

View File

@@ -37,6 +37,7 @@ class BumpFeeTest(BitcoinTestFramework):
self.extra_args = [[
"-walletrbf={}".format(i),
"-mintxfee=0.00002",
"-deprecatedrpc=totalFee",
] for i in range(self.num_nodes)]
def skip_test_if_missing_module(self):

View File

@@ -0,0 +1,54 @@
#!/usr/bin/env python3
# Copyright (c) 2019 The Bitcoin Core developers
# Distributed under the MIT software license, see the accompanying
# file COPYING or http://www.opensource.org/licenses/mit-license.php.
"""Test deprecation of passing `totalFee` to the bumpfee RPC."""
from decimal import Decimal
from test_framework.messages import BIP125_SEQUENCE_NUMBER
from test_framework.test_framework import BitcoinTestFramework
from test_framework.util import assert_raises_rpc_error
class BumpFeeWithTotalFeeArgumentDeprecationTest(BitcoinTestFramework):
def set_test_params(self):
self.num_nodes = 2
self.extra_args = [[
"-walletrbf={}".format(i),
"-mintxfee=0.00002",
] for i in range(self.num_nodes)]
def skip_test_if_missing_module(self):
self.skip_if_no_wallet()
def run_test(self):
peer_node, rbf_node = self.nodes
peer_node.generate(110)
self.sync_all()
peer_node.sendtoaddress(rbf_node.getnewaddress(), 0.001)
self.sync_all()
peer_node.generate(1)
self.sync_all()
rbfid = spend_one_input(rbf_node, peer_node.getnewaddress())
self.log.info("Testing bumpfee with totalFee argument raises RPC error with deprecation message")
assert_raises_rpc_error(
-8,
"totalFee argument has been deprecated and will be removed in 0.20. " +
"Please use -deprecatedrpc=totalFee to continue using this argument until removal.",
rbf_node.bumpfee, rbfid, {"totalFee": 2000})
self.log.info("Testing bumpfee without totalFee argument does not raise")
rbf_node.bumpfee(rbfid)
def spend_one_input(node, dest_address, change_size=Decimal("0.00049000")):
tx_input = dict(sequence=BIP125_SEQUENCE_NUMBER,
**next(u for u in node.listunspent() if u["amount"] == Decimal("0.00100000")))
destinations = {dest_address: Decimal("0.00050000")}
destinations[node.getrawchangeaddress()] = change_size
rawtx = node.createrawtransaction([tx_input], destinations)
signedtx = node.signrawtransactionwithwallet(rawtx)
txid = node.sendrawtransaction(signedtx["hex"])
return txid
if __name__ == "__main__":
BumpFeeWithTotalFeeArgumentDeprecationTest().main()