Remove redundant txConst parameter to FillPSBT
Github-Pull: #14588
Rebased-From: 4f3f5cb4b1
This commit is contained in:
parent
cfdd6b2f6c
commit
a9eab081d5
3 changed files with 9 additions and 21 deletions
|
@ -4502,13 +4502,13 @@ void AddKeypathToMap(const CWallet* pwallet, const CKeyID& keyID, std::map<CPubK
|
||||||
hd_keypaths.emplace(vchPubKey, keypath);
|
hd_keypaths.emplace(vchPubKey, keypath);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const CTransaction* txConst, int sighash_type, bool sign, bool bip32derivs)
|
bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, int sighash_type, bool sign, bool bip32derivs)
|
||||||
{
|
{
|
||||||
LOCK(pwallet->cs_wallet);
|
LOCK(pwallet->cs_wallet);
|
||||||
// Get all of the previous transactions
|
// Get all of the previous transactions
|
||||||
bool complete = true;
|
bool complete = true;
|
||||||
for (unsigned int i = 0; i < txConst->vin.size(); ++i) {
|
for (unsigned int i = 0; i < psbtx.tx->vin.size(); ++i) {
|
||||||
const CTxIn& txin = txConst->vin[i];
|
const CTxIn& txin = psbtx.tx->vin[i];
|
||||||
PSBTInput& input = psbtx.inputs.at(i);
|
PSBTInput& input = psbtx.inputs.at(i);
|
||||||
|
|
||||||
// If we don't know about this input, skip it and let someone else deal with it
|
// If we don't know about this input, skip it and let someone else deal with it
|
||||||
|
@ -4559,8 +4559,8 @@ bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const C
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fill in the bip32 keypaths and redeemscripts for the outputs so that hardware wallets can identify change
|
// Fill in the bip32 keypaths and redeemscripts for the outputs so that hardware wallets can identify change
|
||||||
for (unsigned int i = 0; i < txConst->vout.size(); ++i) {
|
for (unsigned int i = 0; i < psbtx.tx->vout.size(); ++i) {
|
||||||
const CTxOut& out = txConst->vout.at(i);
|
const CTxOut& out = psbtx.tx->vout.at(i);
|
||||||
PSBTOutput& psbt_out = psbtx.outputs.at(i);
|
PSBTOutput& psbt_out = psbtx.outputs.at(i);
|
||||||
|
|
||||||
// Dummy tx so we can use ProduceSignature to get stuff out
|
// Dummy tx so we can use ProduceSignature to get stuff out
|
||||||
|
@ -4637,14 +4637,10 @@ UniValue walletprocesspsbt(const JSONRPCRequest& request)
|
||||||
// Get the sighash type
|
// Get the sighash type
|
||||||
int nHashType = ParseSighashString(request.params[2]);
|
int nHashType = ParseSighashString(request.params[2]);
|
||||||
|
|
||||||
// Use CTransaction for the constant parts of the
|
|
||||||
// transaction to avoid rehashing.
|
|
||||||
const CTransaction txConst(*psbtx.tx);
|
|
||||||
|
|
||||||
// Fill transaction with our data and also sign
|
// Fill transaction with our data and also sign
|
||||||
bool sign = request.params[1].isNull() ? true : request.params[1].get_bool();
|
bool sign = request.params[1].isNull() ? true : request.params[1].get_bool();
|
||||||
bool bip32derivs = request.params[3].isNull() ? false : request.params[3].get_bool();
|
bool bip32derivs = request.params[3].isNull() ? false : request.params[3].get_bool();
|
||||||
bool complete = FillPSBT(pwallet, psbtx, &txConst, nHashType, sign, bip32derivs);
|
bool complete = FillPSBT(pwallet, psbtx, nHashType, sign, bip32derivs);
|
||||||
|
|
||||||
UniValue result(UniValue::VOBJ);
|
UniValue result(UniValue::VOBJ);
|
||||||
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
|
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
|
||||||
|
@ -4750,13 +4746,9 @@ UniValue walletcreatefundedpsbt(const JSONRPCRequest& request)
|
||||||
psbtx.outputs.push_back(PSBTOutput());
|
psbtx.outputs.push_back(PSBTOutput());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use CTransaction for the constant parts of the
|
|
||||||
// transaction to avoid rehashing.
|
|
||||||
const CTransaction txConst(*psbtx.tx);
|
|
||||||
|
|
||||||
// Fill transaction with out data but don't sign
|
// Fill transaction with out data but don't sign
|
||||||
bool bip32derivs = request.params[4].isNull() ? false : request.params[4].get_bool();
|
bool bip32derivs = request.params[4].isNull() ? false : request.params[4].get_bool();
|
||||||
FillPSBT(pwallet, psbtx, &txConst, 1, false, bip32derivs);
|
FillPSBT(pwallet, psbtx, 1, false, bip32derivs);
|
||||||
|
|
||||||
// Serialize the PSBT
|
// Serialize the PSBT
|
||||||
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
|
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
|
||||||
|
|
|
@ -30,5 +30,5 @@ bool EnsureWalletIsAvailable(CWallet *, bool avoidException);
|
||||||
|
|
||||||
UniValue getaddressinfo(const JSONRPCRequest& request);
|
UniValue getaddressinfo(const JSONRPCRequest& request);
|
||||||
UniValue signrawtransactionwithwallet(const JSONRPCRequest& request);
|
UniValue signrawtransactionwithwallet(const JSONRPCRequest& request);
|
||||||
bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, const CTransaction* txConst, int sighash_type = 1, bool sign = true, bool bip32derivs = false);
|
bool FillPSBT(const CWallet* pwallet, PartiallySignedTransaction& psbtx, int sighash_type = 1, bool sign = true, bool bip32derivs = false);
|
||||||
#endif //BITCOIN_WALLET_RPCWALLET_H
|
#endif //BITCOIN_WALLET_RPCWALLET_H
|
||||||
|
|
|
@ -59,12 +59,8 @@ BOOST_AUTO_TEST_CASE(psbt_updater_test)
|
||||||
CDataStream ssData(ParseHex("70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f000000000000000000"), SER_NETWORK, PROTOCOL_VERSION);
|
CDataStream ssData(ParseHex("70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f000000000000000000"), SER_NETWORK, PROTOCOL_VERSION);
|
||||||
ssData >> psbtx;
|
ssData >> psbtx;
|
||||||
|
|
||||||
// Use CTransaction for the constant parts of the
|
|
||||||
// transaction to avoid rehashing.
|
|
||||||
const CTransaction txConst(*psbtx.tx);
|
|
||||||
|
|
||||||
// Fill transaction with our data
|
// Fill transaction with our data
|
||||||
FillPSBT(&m_wallet, psbtx, &txConst, 1, false, true);
|
FillPSBT(&m_wallet, psbtx, 1, false, true);
|
||||||
|
|
||||||
// Get the final tx
|
// Get the final tx
|
||||||
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
|
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION);
|
||||||
|
|
Loading…
Reference in a new issue