From 83df289765c3c6bdf4697d792e48e1e18d94712f Mon Sep 17 00:00:00 2001 From: Gregory Sanders Date: Thu, 29 Nov 2018 16:02:57 -0500 Subject: [PATCH] fixup BlindTransaction issuance counting assertion --- src/blind.cpp | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/src/blind.cpp b/src/blind.cpp index 703b0f0bd7..d14d7dcfed 100644 --- a/src/blind.cpp +++ b/src/blind.cpp @@ -174,12 +174,28 @@ void CreateValueCommitment(CConfidentialValue& confValue, secp256k1_pedersen_com assert(confValue.IsValid()); } +size_t GetNumIssuances(const CMutableTransaction& tx) +{ + unsigned int numIssuances = 0; + for (unsigned int i = 0; i < tx.vin.size(); i++) { + if (!tx.vin[i].assetIssuance.IsNull()) { + if (!tx.vin[i].assetIssuance.nAmount.IsNull()) { + numIssuances++; + } + if (!tx.vin[i].assetIssuance.nInflationKeys.IsNull()) { + numIssuances++; + } + } + } + return numIssuances; +} + int BlindTransaction(std::vector& input_blinding_factors, const std::vector& input_asset_blinding_factors, const std::vector& input_assets, const std::vector& input_amounts, std::vector& output_blinding_factors, std::vector& output_asset_blinding_factors, const std::vector& output_pubkeys, const std::vector& vBlindIssuanceAsset, const std::vector& vBlindIssuanceToken, CMutableTransaction& tx, std::vector >* auxiliary_generators) { // Sanity check input data and output_pubkey size, clear other output data assert(tx.vout.size() >= output_pubkeys.size()); - assert(tx.vin.size() >= vBlindIssuanceAsset.size()); - assert(tx.vin.size() >= vBlindIssuanceToken.size()); + assert(tx.vin.size()+GetNumIssuances(tx) >= vBlindIssuanceAsset.size()); + assert(tx.vin.size()+GetNumIssuances(tx) >= vBlindIssuanceToken.size()); output_blinding_factors.clear(); output_blinding_factors.resize(tx.vout.size()); output_asset_blinding_factors.clear();