-
Notifications
You must be signed in to change notification settings - Fork 198
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
26 additions
and
26 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,4 @@ | ||
From 2789417a7ef31d4b58b2f80783e81a3518dd49af Mon Sep 17 00:00:00 2001 | ||
From eec69a3f42a654a62eacad78164e66b4ae8a68a1 Mon Sep 17 00:00:00 2001 | ||
From: Andrew Chow <[email protected]> | ||
Date: Thu, 4 Jun 2020 23:43:25 -0400 | ||
Subject: [PATCH 1/4] rpc: show both UTXOs in decodepsbt | ||
|
@@ -8,7 +8,7 @@ Subject: [PATCH 1/4] rpc: show both UTXOs in decodepsbt | |
1 file changed, 7 insertions(+), 2 deletions(-) | ||
|
||
diff --git a/src/rpc/rawtransaction.cpp b/src/rpc/rawtransaction.cpp | ||
index e14217c307..45cf6be3a0 100644 | ||
index faec359d1c..5f8c02df65 100644 | ||
--- a/src/rpc/rawtransaction.cpp | ||
+++ b/src/rpc/rawtransaction.cpp | ||
@@ -1104,6 +1104,7 @@ UniValue decodepsbt(const JSONRPCRequest& request) | ||
|
@@ -45,7 +45,7 @@ index e14217c307..45cf6be3a0 100644 | |
2.27.0 | ||
|
||
|
||
From 8b7d74fd0e6d3180be0dfb315b4e190f0ad0057d Mon Sep 17 00:00:00 2001 | ||
From 6aa6d5495299a8e09f2e89a71fd5447351fbcf90 Mon Sep 17 00:00:00 2001 | ||
From: Andrew Chow <[email protected]> | ||
Date: Thu, 4 Jun 2020 23:43:39 -0400 | ||
Subject: [PATCH 2/4] psbt: Allow both non_witness_utxo and witness_utxo | ||
|
@@ -59,7 +59,7 @@ Subject: [PATCH 2/4] psbt: Allow both non_witness_utxo and witness_utxo | |
5 files changed, 53 deletions(-) | ||
|
||
diff --git a/src/psbt.cpp b/src/psbt.cpp | ||
index ef9781817a..4c8b40ca0b 100644 | ||
index 10260740f0..71a3e06708 100644 | ||
--- a/src/psbt.cpp | ||
+++ b/src/psbt.cpp | ||
@@ -35,14 +35,6 @@ bool PartiallySignedTransaction::Merge(const PartiallySignedTransaction& psbt) | ||
|
@@ -96,7 +96,7 @@ index ef9781817a..4c8b40ca0b 100644 | |
void PSBTOutput::FillSignatureData(SignatureData& sigdata) const | ||
{ | ||
if (!redeem_script.empty()) { | ||
@@ -250,11 +230,6 @@ bool SignPSBTInput(const SigningProvider& provider, PartiallySignedTransaction& | ||
@@ -261,11 +241,6 @@ bool SignPSBTInput(const SigningProvider& provider, PartiallySignedTransaction& | ||
bool require_witness_sig = false; | ||
CTxOut utxo; | ||
|
||
|
@@ -108,7 +108,7 @@ index ef9781817a..4c8b40ca0b 100644 | |
if (input.non_witness_utxo) { | ||
// If we're taking our information from a non-witness UTXO, verify that it matches the prevout. | ||
COutPoint prevout = tx.vin[index].prevout; | ||
@@ -345,10 +320,6 @@ TransactionError CombinePSBTs(PartiallySignedTransaction& out, const std::vector | ||
@@ -356,10 +331,6 @@ TransactionError CombinePSBTs(PartiallySignedTransaction& out, const std::vector | ||
return TransactionError::PSBT_MISMATCH; | ||
} | ||
} | ||
|
@@ -120,7 +120,7 @@ index ef9781817a..4c8b40ca0b 100644 | |
} | ||
|
||
diff --git a/src/psbt.h b/src/psbt.h | ||
index 888e0fd119..cbf4296bd2 100644 | ||
index 0a8ea2ea0b..401889e2fe 100644 | ||
--- a/src/psbt.h | ||
+++ b/src/psbt.h | ||
@@ -62,7 +62,6 @@ struct PSBTInput | ||
|
@@ -179,10 +179,10 @@ index 64328fb66e..908e2b16f2 100644 | |
|
||
for (const PSBTOutput& output : psbt.outputs) { | ||
diff --git a/src/wallet/scriptpubkeyman.cpp b/src/wallet/scriptpubkeyman.cpp | ||
index 8a2a798644..9fae27975d 100644 | ||
index 3cc2611524..38d94335a3 100644 | ||
--- a/src/wallet/scriptpubkeyman.cpp | ||
+++ b/src/wallet/scriptpubkeyman.cpp | ||
@@ -595,11 +595,6 @@ TransactionError LegacyScriptPubKeyMan::FillPSBT(PartiallySignedTransaction& psb | ||
@@ -597,11 +597,6 @@ TransactionError LegacyScriptPubKeyMan::FillPSBT(PartiallySignedTransaction& psb | ||
continue; | ||
} | ||
|
||
|
@@ -194,7 +194,7 @@ index 8a2a798644..9fae27975d 100644 | |
// Get the Sighash type | ||
if (sign && input.sighash_type > 0 && input.sighash_type != sighash_type) { | ||
return TransactionError::SIGHASH_MISMATCH; | ||
@@ -2074,11 +2069,6 @@ TransactionError DescriptorScriptPubKeyMan::FillPSBT(PartiallySignedTransaction& | ||
@@ -2086,11 +2081,6 @@ TransactionError DescriptorScriptPubKeyMan::FillPSBT(PartiallySignedTransaction& | ||
continue; | ||
} | ||
|
||
|
@@ -207,10 +207,10 @@ index 8a2a798644..9fae27975d 100644 | |
if (sign && input.sighash_type > 0 && input.sighash_type != sighash_type) { | ||
return TransactionError::SIGHASH_MISMATCH; | ||
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp | ||
index 89737ca7b5..054b312cd7 100644 | ||
index 19acfa3322..974985acbf 100644 | ||
--- a/src/wallet/wallet.cpp | ||
+++ b/src/wallet/wallet.cpp | ||
@@ -2490,11 +2490,6 @@ TransactionError CWallet::FillPSBT(PartiallySignedTransaction& psbtx, bool& comp | ||
@@ -2507,11 +2507,6 @@ TransactionError CWallet::FillPSBT(PartiallySignedTransaction& psbtx, bool& comp | ||
continue; | ||
} | ||
|
||
|
@@ -226,7 +226,7 @@ index 89737ca7b5..054b312cd7 100644 | |
2.27.0 | ||
|
||
|
||
From a656eb32d35d2fdc1df5b8d55eba6a0c3efd1c2f Mon Sep 17 00:00:00 2001 | ||
From 889f7b3ce8ba2fccd58ab352ca622e00648147fe Mon Sep 17 00:00:00 2001 | ||
From: Andrew Chow <[email protected]> | ||
Date: Thu, 4 Jun 2020 23:43:43 -0400 | ||
Subject: [PATCH 3/4] psbt: always put a non_witness_utxo and don't remove it | ||
|
@@ -242,7 +242,7 @@ there. | |
5 files changed, 11 insertions(+), 8 deletions(-) | ||
|
||
diff --git a/src/psbt.cpp b/src/psbt.cpp | ||
index 4c8b40ca0b..51f829d533 100644 | ||
index 71a3e06708..3fb743e5db 100644 | ||
--- a/src/psbt.cpp | ||
+++ b/src/psbt.cpp | ||
@@ -136,8 +136,8 @@ void PSBTInput::Merge(const PSBTInput& input) | ||
|
@@ -255,7 +255,7 @@ index 4c8b40ca0b..51f829d533 100644 | |
} | ||
|
||
partial_sigs.insert(input.partial_sigs.begin(), input.partial_sigs.end()); | ||
@@ -263,10 +263,11 @@ bool SignPSBTInput(const SigningProvider& provider, PartiallySignedTransaction& | ||
@@ -274,10 +274,11 @@ bool SignPSBTInput(const SigningProvider& provider, PartiallySignedTransaction& | ||
if (require_witness_sig && !sigdata.witness) return false; | ||
input.FromSignatureData(sigdata); | ||
|
||
|
@@ -270,7 +270,7 @@ index 4c8b40ca0b..51f829d533 100644 | |
|
||
// Fill in the missing info | ||
diff --git a/src/psbt.h b/src/psbt.h | ||
index cbf4296bd2..275fb03cd8 100644 | ||
index 401889e2fe..0951b76f83 100644 | ||
--- a/src/psbt.h | ||
+++ b/src/psbt.h | ||
@@ -67,12 +67,12 @@ struct PSBTInput | ||
|
@@ -289,23 +289,23 @@ index cbf4296bd2..275fb03cd8 100644 | |
SerializeToVector(s, witness_utxo); | ||
} | ||
diff --git a/src/wallet/test/psbt_wallet_tests.cpp b/src/wallet/test/psbt_wallet_tests.cpp | ||
index b4c65a8665..119457aadf 100644 | ||
index 3f85a48ff3..ce7e661b67 100644 | ||
--- a/src/wallet/test/psbt_wallet_tests.cpp | ||
+++ b/src/wallet/test/psbt_wallet_tests.cpp | ||
@@ -64,7 +64,7 @@ BOOST_AUTO_TEST_CASE(psbt_updater_test) | ||
CDataStream ssTx(SER_NETWORK, PROTOCOL_VERSION); | ||
ssTx << psbtx; | ||
std::string final_hex = HexStr(ssTx.begin(), ssTx.end()); | ||
std::string final_hex = HexStr(ssTx); | ||
- BOOST_CHECK_EQUAL(final_hex, "70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e88701042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000"); | ||
+ BOOST_CHECK_EQUAL(final_hex, "70736274ff01009a020000000258e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd750000000000ffffffff838d0427d0ec650a68aa46bb0b098aea4422c071b2ca78352a077959d07cea1d0100000000ffffffff0270aaf00800000000160014d85c2b71d0060b09c9886aeb815e50991dda124d00e1f5050000000016001400aea9a2e5f0f876a588df5546e8742d1d87008f00000000000100bb0200000001aad73931018bd25f84ae400b68848be09db706eac2ac18298babee71ab656f8b0000000048473044022058f6fc7c6a33e1b31548d481c826c015bd30135aad42cd67790dab66d2ad243b02204a1ced2604c6735b6393e5b41691dd78b00f0c5942fb9f751856faa938157dba01feffffff0280f0fa020000000017a9140fb9463421696b82c833af241c78c17ddbde493487d0f20a270100000017a91429ca74f8a08f81999428185c97b5d852e4063f6187650000000104475221029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f2102dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d752ae2206029583bf39ae0a609747ad199addd634fa6108559d6c5cd39b4c2183f1ab96e07f10d90c6a4f000000800000008000000080220602dab61ff49a14db6a7d02b0cd1fbb78fc4b18312b5b4e54dae4dba2fbfef536d710d90c6a4f0000008000000080010000800001008a020000000158e87a21b56daf0c23be8e7070456c336f7cbaa5c8757924f545887bb2abdd7501000000171600145f275f436b09a8cc9a2eb2a2f528485c68a56323feffffff02d8231f1b0100000017a914aed962d6654f9a2b36608eb9d64d2b260db4f1118700c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e8876500000001012000c2eb0b0000000017a914b7f5faf40e3d40a5a459b1db3535f2b72fa921e88701042200208c2353173743b595dfb4a07b72ba8e42e3797da74e87fe7d9d7497e3b2028903010547522103089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc21023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7352ae2206023add904f3d6dcf59ddb906b0dee23529b7ffb9ed50e5e86151926860221f0e7310d90c6a4f000000800000008003000080220603089dc10c7ac6db54f91329af617333db388cead0c231f723379d1b99030b02dc10d90c6a4f00000080000000800200008000220203a9a4c37f5996d3aa25dbac6b570af0650394492942460b354753ed9eeca5877110d90c6a4f000000800000008004000080002202027f6399757d2eff55a136ad02c684b1838b6556e5f1b6b34282a94b6b5005109610d90c6a4f00000080000000800500008000"); | ||
|
||
// Mutate the transaction so that one of the inputs is invalid | ||
psbtx.tx->vin[0].prevout.n = 2; | ||
diff --git a/src/wallet/wallet.cpp b/src/wallet/wallet.cpp | ||
index 054b312cd7..7816a39ec1 100644 | ||
index 974985acbf..235b269805 100644 | ||
--- a/src/wallet/wallet.cpp | ||
+++ b/src/wallet/wallet.cpp | ||
@@ -2491,7 +2491,7 @@ TransactionError CWallet::FillPSBT(PartiallySignedTransaction& psbtx, bool& comp | ||
@@ -2508,7 +2508,7 @@ TransactionError CWallet::FillPSBT(PartiallySignedTransaction& psbtx, bool& comp | ||
} | ||
|
||
// If we have no utxo, grab it from the wallet. | ||
|
@@ -315,18 +315,18 @@ index 054b312cd7..7816a39ec1 100644 | |
const auto it = mapWallet.find(txhash); | ||
if (it != mapWallet.end()) { | ||
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py | ||
index 9b07c39606..2fe11ef116 100755 | ||
index 660953be9b..7703c4ecb1 100755 | ||
--- a/test/functional/rpc_psbt.py | ||
+++ b/test/functional/rpc_psbt.py | ||
@@ -37,6 +37,7 @@ class PSBTTest(BitcoinTestFramework): | ||
@@ -38,6 +38,7 @@ class PSBTTest(BitcoinTestFramework): | ||
def skip_test_if_missing_module(self): | ||
self.skip_if_no_wallet() | ||
|
||
+ # TODO: Re-enable this test with segwit v1 | ||
def test_utxo_conversion(self): | ||
mining_node = self.nodes[2] | ||
offline_node = self.nodes[0] | ||
@@ -344,7 +345,8 @@ class PSBTTest(BitcoinTestFramework): | ||
@@ -352,7 +353,8 @@ class PSBTTest(BitcoinTestFramework): | ||
for i, signer in enumerate(signers): | ||
self.nodes[2].unloadwallet("wallet{}".format(i)) | ||
|
||
|
@@ -340,7 +340,7 @@ index 9b07c39606..2fe11ef116 100755 | |
2.27.0 | ||
|
||
|
||
From 836d6fc375ae8709c6175d36f46df365776a497c Mon Sep 17 00:00:00 2001 | ||
From 85d143347a9ef8d1be712b7a699da0f1835dc837 Mon Sep 17 00:00:00 2001 | ||
From: Andrew Chow <[email protected]> | ||
Date: Mon, 8 Jun 2020 19:27:16 -0400 | ||
Subject: [PATCH 4/4] tests: Check that segwit inputs in psbt have both UTXO | ||
|
@@ -351,10 +351,10 @@ Subject: [PATCH 4/4] tests: Check that segwit inputs in psbt have both UTXO | |
1 file changed, 4 insertions(+) | ||
|
||
diff --git a/test/functional/rpc_psbt.py b/test/functional/rpc_psbt.py | ||
index 2fe11ef116..df7d501e5b 100755 | ||
index 7703c4ecb1..e5e62fd646 100755 | ||
--- a/test/functional/rpc_psbt.py | ||
+++ b/test/functional/rpc_psbt.py | ||
@@ -149,6 +149,10 @@ class PSBTTest(BitcoinTestFramework): | ||
@@ -157,6 +157,10 @@ class PSBTTest(BitcoinTestFramework): | ||
# spend single key from node 1 | ||
rawtx = self.nodes[1].walletcreatefundedpsbt([{"txid":txid,"vout":p2wpkh_pos},{"txid":txid,"vout":p2sh_p2wpkh_pos},{"txid":txid,"vout":p2pkh_pos}], {self.nodes[1].getnewaddress():29.99})['psbt'] | ||
walletprocesspsbt_out = self.nodes[1].walletprocesspsbt(rawtx) | ||
|