mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-12 23:18:14 +01:00
wallet: skip available coins fetch if "other inputs" are disallowed
no need to waste resources calculating the wallet available coins if they are not going to be used. The 'm_allow_other_inputs=true` default value change is to correct an ugly misleading behavior: The tx creation process was having a workaround patch to automatically fall back to select coins from the wallet if `m_allow_other_inputs=false` (previous default value) and no manual inputs were selected. This could be seen in master in flows like `sendtoaddress`, `sendmany` and even the GUI, where the `m_allow_other_inputs` value isn't customized and the wallet still selects and adds coins to the tx internally.
This commit is contained in:
@@ -1095,6 +1095,8 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||
# Expect: only preset inputs are used.
|
||||
# 5. Explicit add_inputs=true, no preset inputs (same as (1) but with an explicit set):
|
||||
# Expect: include inputs from the wallet.
|
||||
# 6. Explicit add_inputs=false, no preset inputs:
|
||||
# Expect: failure as we did not provide inputs and the process cannot automatically select coins.
|
||||
|
||||
# Case (1), 'send' command
|
||||
# 'add_inputs' value is true unless "inputs" are specified, in such case, add_inputs=false.
|
||||
@@ -1146,6 +1148,10 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||
tx = wallet.send(outputs=[{addr1: 8}], options=options)
|
||||
assert tx["complete"]
|
||||
|
||||
# 6. Explicit add_inputs=false, no preset inputs:
|
||||
options = {"add_inputs": False}
|
||||
assert_raises_rpc_error(-4, "Insufficient funds", wallet.send, outputs=[{addr1: 3}], options=options)
|
||||
|
||||
################################################
|
||||
|
||||
# Case (1), 'walletcreatefundedpsbt' command
|
||||
@@ -1187,6 +1193,10 @@ class RawTransactionsTest(BitcoinTestFramework):
|
||||
}
|
||||
assert "psbt" in wallet.walletcreatefundedpsbt(inputs=[], outputs=outputs, options=options)
|
||||
|
||||
# Case (6). Explicit add_inputs=false, no preset inputs:
|
||||
options = {"add_inputs": False}
|
||||
assert_raises_rpc_error(-4, "Insufficient funds", wallet.walletcreatefundedpsbt, inputs=[], outputs=outputs, options=options)
|
||||
|
||||
self.nodes[2].unloadwallet("test_preset_inputs")
|
||||
|
||||
def test_weight_calculation(self):
|
||||
|
||||
Reference in New Issue
Block a user