From 254b166574787f2146ef766b495df6e41779c458 Mon Sep 17 00:00:00 2001 From: Akio Nakamura Date: Fri, 5 Jul 2019 19:07:26 +0900 Subject: [PATCH 1/2] [rpc]blindrawtransaction accepts more commitments --- src/wallet/rpcwallet.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wallet/rpcwallet.cpp b/src/wallet/rpcwallet.cpp index 2f665bd286..6f9f554a1a 100644 --- a/src/wallet/rpcwallet.cpp +++ b/src/wallet/rpcwallet.cpp @@ -5759,8 +5759,8 @@ UniValue blindrawtransaction(const JSONRPCRequest& request) std::vector > auxiliary_generators; if (request.params.size() > 2) { UniValue assetCommitments = request.params[2].get_array(); - if (assetCommitments.size() != 0 && assetCommitments.size() != tx.vin.size()) { - throw JSONRPCError(RPC_INVALID_PARAMETER, "Asset commitment array must have exactly as many entries as transaction inputs."); + if (assetCommitments.size() != 0 && assetCommitments.size() < tx.vin.size()) { + throw JSONRPCError(RPC_INVALID_PARAMETER, "Asset commitment array must have at least as many entries as transaction inputs."); } for (size_t nIn = 0; nIn < assetCommitments.size(); nIn++) { if (assetCommitments[nIn].isStr()) { From d584b65c18d11af417048d86308cf2043e4d7654 Mon Sep 17 00:00:00 2001 From: Akio Nakamura Date: Fri, 5 Jul 2019 19:10:11 +0900 Subject: [PATCH 2/2] [test]decrese num of inputs on partial blind test --- test/functional/feature_confidential_transactions.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/test/functional/feature_confidential_transactions.py b/test/functional/feature_confidential_transactions.py index 665dc513b2..9e45b244b4 100755 --- a/test/functional/feature_confidential_transactions.py +++ b/test/functional/feature_confidential_transactions.py @@ -496,11 +496,11 @@ def run_test(self): # Create one part of the transaction to partially blind rawtx = self.nodes[0].createrawtransaction( - inputs, {dst_addr2: Decimal("0.01")}) + inputs[:1], {dst_addr2: Decimal("0.01")}) # Create another part of the transaction to partially blind rawtx2 = self.nodes[0].createrawtransaction( - inputs, + inputs[1:], {dst_addr: Decimal("0.1"), dst_addr3: Decimal("1.0")}, 0, False, @@ -523,13 +523,13 @@ def run_test(self): # Combine the transactions # Blinded, but incomplete transaction. - # 3 inputs and 1 output, but no fee output, and + # 1 inputs and 1 output, but no fee output, and # it was blinded with 3 asset commitments, that means # the final transaction should have 3 inputs. btx = CTransaction() btx.deserialize(io.BytesIO(hex_str_to_bytes(blindtx))) - # Unblinded transaction, with 3 inputs and 2 outputs. + # Unblinded transaction, with 2 inputs and 2 outputs. # We will add them to the other transaction to make it complete. ubtx = CTransaction() ubtx.deserialize(io.BytesIO(hex_str_to_bytes(rawtx2))) @@ -538,9 +538,11 @@ def run_test(self): # on top of inputs and outputs of the blinded, but incomplete transaction. # We also append empty witness instances to make witness arrays match # vin/vout arrays + btx.vin.append(ubtx.vin[0]) btx.wit.vtxinwit.append(CTxInWitness()) btx.vout.append(ubtx.vout[0]) btx.wit.vtxoutwit.append(CTxOutWitness()) + btx.vin.append(ubtx.vin[1]) btx.wit.vtxinwit.append(CTxInWitness()) btx.vout.append(ubtx.vout[1]) btx.wit.vtxoutwit.append(CTxOutWitness())