mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-03 09:56:38 -05:00
Merge bitcoin-core/gui#766: Fix coin control input size accounting for taproot spends
00a52e6394
gui: fix coin control input size accounting for taproot spends (Sebastian Falbesoner) Pull request description: If manual coin control is used in the GUI, the input size accounting for P2TR is currently overshooting, as it still assumes P2WPKH (segwitv0) spends which have a larger witness, as ECDSA signatures are longer and the pubkey also has to be provided. Fix that by adding sizes depending on the witness version. Note that the total accounting including outputs is still off and there is some weird logic involved depending on whether SFFO is used, but it's (hopefully) a first step into the right direction. ACKs for top commit: maflcko: lgtm ACK00a52e6394
furszy: utACK00a52e6394
Tree-SHA512: 9633642f8473247cc3d8e6e0ef502fd515e1dde0e2939d28d6754d0cececedd6a328df22a3d4c85eb2846fd0417cf224b92594613f6e84ada82d2d7d84fc455f
This commit is contained in:
commit
9c30f5ef9d
1 changed files with 13 additions and 1 deletions
|
@ -421,7 +421,19 @@ void CoinControlDialog::updateLabels(CCoinControl& m_coin_control, WalletModel *
|
|||
std::vector<unsigned char> witnessprogram;
|
||||
if (out.txout.scriptPubKey.IsWitnessProgram(witnessversion, witnessprogram))
|
||||
{
|
||||
nBytesInputs += (32 + 4 + 1 + (107 / WITNESS_SCALE_FACTOR) + 4);
|
||||
// add input skeleton bytes (outpoint, scriptSig size, nSequence)
|
||||
nBytesInputs += (32 + 4 + 1 + 4);
|
||||
|
||||
if (witnessversion == 0) { // P2WPKH
|
||||
// 1 WU (witness item count) + 72 WU (ECDSA signature with len byte) + 34 WU (pubkey with len byte)
|
||||
nBytesInputs += 107 / WITNESS_SCALE_FACTOR;
|
||||
} else if (witnessversion == 1) { // P2TR key-path spend
|
||||
// 1 WU (witness item count) + 65 WU (Schnorr signature with len byte)
|
||||
nBytesInputs += 66 / WITNESS_SCALE_FACTOR;
|
||||
} else {
|
||||
// not supported, should be unreachable
|
||||
throw std::runtime_error("Trying to spend future segwit version script");
|
||||
}
|
||||
fWitness = true;
|
||||
}
|
||||
else if(ExtractDestination(out.txout.scriptPubKey, address))
|
||||
|
|
Loading…
Add table
Reference in a new issue