diff options
| author | Wladimir J. van der Laan <[email protected]> | 2019-07-01 16:00:33 +0200 |
|---|---|---|
| committer | Wladimir J. van der Laan <[email protected]> | 2019-07-01 16:03:37 +0200 |
| commit | 1212808762f63185bbde980c154d3e1a6c6eb819 (patch) | |
| tree | 777647dbd7e17ceed44d545e9a635f001ca1c654 /src/util | |
| parent | Merge #16309: [MSVC] allow user level project customization (diff) | |
| parent | [wallet] abort when attempting to fund a transaction above maxtxfee (diff) | |
| download | discoin-1212808762f63185bbde980c154d3e1a6c6eb819.tar.xz discoin-1212808762f63185bbde980c154d3e1a6c6eb819.zip | |
Merge #16257: [wallet] abort when attempting to fund a transaction above -maxtxfee
806b0052c3b45415862f74f20ba5f389e5b673de [wallet] abort when attempting to fund a transaction above maxtxfee (Sjors Provoost)
Pull request description:
`FundTransaction` calls `GetMinimumFee` which, when the fee rate is absurdly high, quietly reduces the fee to `-maxtxfee`.
Becaue an absurdly high fee rate is usually the result of a fat finger, aborting seems safer behavior.
Before:
```
bitcoin-cli walletcreatefundedpsbt '[]' '[{"tb1q...": 0.01}]' 0 '{"feeRate": 10}' true
{
"psbt": "cHNidP8...gAA=",
"fee": 0.10000000,
"changepos": 1
}
```
After:
```
bitcoin-cli walletcreatefundedpsbt '[]' '[{"tb1q...": 0.01}]' 0 '{"feeRate": 10}' true
error code: -25
error message:
Fee exceeds maximum configured by -maxtxfee
```
QT still checks the max fee rate as expected:
<img width="566" alt="Schermafbeelding 2019-06-20 om 19 52 00" src="https://user-images.githubusercontent.com/10217/59888424-a2aa7100-9395-11e9-8ae6-8a3c1f7de585.png">
ACKs for top commit:
laanwj:
Code review ACK 806b0052c3b45415862f74f20ba5f389e5b673de
Tree-SHA512: bee95811711cdab100b614d2347921407af3b400aea613ca156953ed3f60b924ad29a1d335bd0e240c0b7c0fbb360226bab03294d226a5560cdf2a3f21e6d406
Diffstat (limited to 'src/util')
| -rw-r--r-- | src/util/error.cpp | 2 | ||||
| -rw-r--r-- | src/util/error.h | 1 | ||||
| -rw-r--r-- | src/util/fees.cpp | 1 |
3 files changed, 3 insertions, 1 deletions
diff --git a/src/util/error.cpp b/src/util/error.cpp index 68ffd8b04..9331a92ad 100644 --- a/src/util/error.cpp +++ b/src/util/error.cpp @@ -27,6 +27,8 @@ std::string TransactionErrorString(const TransactionError err) return "PSBTs not compatible (different transactions)"; case TransactionError::SIGHASH_MISMATCH: return "Specified sighash value does not match existing value"; + case TransactionError::MAX_FEE_EXCEEDED: + return "Fee exceeds maximum configured by -maxtxfee"; // no default case, so the compiler can warn about missing cases } assert(false); diff --git a/src/util/error.h b/src/util/error.h index d93309551..0fd474b96 100644 --- a/src/util/error.h +++ b/src/util/error.h @@ -27,6 +27,7 @@ enum class TransactionError { INVALID_PSBT, PSBT_MISMATCH, SIGHASH_MISMATCH, + MAX_FEE_EXCEEDED, }; std::string TransactionErrorString(const TransactionError error); diff --git a/src/util/fees.cpp b/src/util/fees.cpp index 5fdaa1284..cf16d5e44 100644 --- a/src/util/fees.cpp +++ b/src/util/fees.cpp @@ -18,7 +18,6 @@ std::string StringForFeeReason(FeeReason reason) { {FeeReason::PAYTXFEE, "PayTxFee set"}, {FeeReason::FALLBACK, "Fallback fee"}, {FeeReason::REQUIRED, "Minimum Required Fee"}, - {FeeReason::MAXTXFEE, "MaxTxFee limit"} }; auto reason_string = fee_reason_strings.find(reason); |