aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGlenn Willen <gwillen@nerdnet.org>2018-10-26 15:26:16 -0700
committerPieter Wuille <pieter.wuille@gmail.com>2018-12-03 10:35:34 -0800
commit70ee1f8709a54a9aeac004d8589faa08f665587a (patch)
treee4354a95bd1d8e8737fb5dd50e11fc3e436308fb /src
parenta9eab081d5a31cec3138685fef21e428f833db03 (diff)
downloadbitcoin-70ee1f8709a54a9aeac004d8589faa08f665587a.tar.xz
New PartiallySignedTransaction constructor from CTransction
New constructor that creates a PartiallySignedTransaction from a CTransaction, automatically sizing the inputs and outputs vectors for convenience. Github-Pull: #14588 Rebased-From: 65166d4cf828909dc4bc49dd68a58103d015f1fd
Diffstat (limited to 'src')
-rw-r--r--src/script/sign.cpp6
-rw-r--r--src/script/sign.h1
-rw-r--r--src/wallet/rpcwallet.cpp9
3 files changed, 8 insertions, 8 deletions
diff --git a/src/script/sign.cpp b/src/script/sign.cpp
index 1ab5051ff7..190c0bf687 100644
--- a/src/script/sign.cpp
+++ b/src/script/sign.cpp
@@ -491,6 +491,12 @@ bool IsSolvable(const SigningProvider& provider, const CScript& script)
return false;
}
+PartiallySignedTransaction::PartiallySignedTransaction(const CTransaction& tx) : tx(tx)
+{
+ inputs.resize(tx.vin.size());
+ outputs.resize(tx.vout.size());
+}
+
bool PartiallySignedTransaction::IsNull() const
{
return !tx && inputs.empty() && outputs.empty() && unknown.empty();
diff --git a/src/script/sign.h b/src/script/sign.h
index 2b45df85a0..79cd6dc53f 100644
--- a/src/script/sign.h
+++ b/src/script/sign.h
@@ -550,6 +550,7 @@ struct PartiallySignedTransaction
bool IsSane() const;
PartiallySignedTransaction() {}
PartiallySignedTransaction(const PartiallySignedTransaction& psbt_in) : tx(psbt_in.tx), inputs(psbt_in.inputs), outputs(psbt_in.outputs), unknown(psbt_in.unknown) {}
+ explicit PartiallySignedTransaction(const CTransaction& tx);
// Only checks if they refer to the same transaction
friend bool operator==(const PartiallySignedTransaction& a, const PartiallySignedTransaction &b)
diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp
index 24df23edd1..ec103c6763 100644
--- a/src/wallet/rpcwallet.cpp
+++ b/src/wallet/rpcwallet.cpp
@@ -4737,14 +4737,7 @@ UniValue walletcreatefundedpsbt(const JSONRPCRequest& request)
FundTransaction(pwallet, rawTx, fee, change_position, request.params[3]);
// Make a blank psbt
- PartiallySignedTransaction psbtx;
- psbtx.tx = rawTx;
- for (unsigned int i = 0; i < rawTx.vin.size(); ++i) {
- psbtx.inputs.push_back(PSBTInput());
- }
- for (unsigned int i = 0; i < rawTx.vout.size(); ++i) {
- psbtx.outputs.push_back(PSBTOutput());
- }
+ PartiallySignedTransaction psbtx(rawTx);
// Fill transaction with out data but don't sign
bool bip32derivs = request.params[4].isNull() ? false : request.params[4].get_bool();