mirror of
https://github.com/ElementsProject/elements.git
synced 2026-08-13 12:33:42 +02:00
Merge #846: [RFC] Remove GetNumIssuance from BlindTransaction assert
34ef25072Move GetNumIssuances to issuance.cpp (Steven Roose)f9925853cRemove the GetNumIssuances in the assertion (Steven Roose) Pull request description: This is in response to @dgpv 's https://github.com/ElementsProject/elements/issues/842. I'm not 100% confident this is correct, but it seems so. It also passed all tests on my machine. Tree-SHA512: 65206ac5e464a222b379043ca7943e9764382d25db6afc3ade89a1c637404c9f902d9ac21e1671722f1a29592a135b69c2c9164932958929d6a6588a12a14ac2
This commit is contained in:
commit
51f62dcbbf
4 changed files with 23 additions and 20 deletions
|
|
@ -206,28 +206,12 @@ void CreateValueCommitment(CConfidentialValue& conf_value, secp256k1_pedersen_co
|
|||
assert(conf_value.IsValid());
|
||||
}
|
||||
|
||||
size_t GetNumIssuances(const CTransaction& tx)
|
||||
{
|
||||
unsigned int num_issuances = 0;
|
||||
for (unsigned int i = 0; i < tx.vin.size(); i++) {
|
||||
if (!tx.vin[i].assetIssuance.IsNull()) {
|
||||
if (!tx.vin[i].assetIssuance.nAmount.IsNull()) {
|
||||
num_issuances++;
|
||||
}
|
||||
if (!tx.vin[i].assetIssuance.nInflationKeys.IsNull()) {
|
||||
num_issuances++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return num_issuances;
|
||||
}
|
||||
|
||||
int BlindTransaction(std::vector<uint256 >& input_value_blinding_factors, const std::vector<uint256 >& input_asset_blinding_factors, const std::vector<CAsset >& input_assets, const std::vector<CAmount >& input_amounts, std::vector<uint256 >& out_val_blind_factors, std::vector<uint256 >& out_asset_blind_factors, const std::vector<CPubKey>& output_pubkeys, const std::vector<CKey>& issuance_blinding_privkey, const std::vector<CKey>& token_blinding_privkey, CMutableTransaction& tx, std::vector<std::vector<unsigned char> >* 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()+GetNumIssuances(CTransaction(tx)) >= issuance_blinding_privkey.size());
|
||||
assert(tx.vin.size()+GetNumIssuances(CTransaction(tx)) >= token_blinding_privkey.size());
|
||||
assert(tx.vin.size() >= issuance_blinding_privkey.size());
|
||||
assert(tx.vin.size() >= token_blinding_privkey.size());
|
||||
out_val_blind_factors.clear();
|
||||
out_val_blind_factors.resize(tx.vout.size());
|
||||
out_asset_blind_factors.clear();
|
||||
|
|
|
|||
|
|
@ -63,6 +63,4 @@ int BlindTransaction(std::vector<uint256 >& input_value_blinding_factors, const
|
|||
*/
|
||||
void RawFillBlinds(CMutableTransaction& tx, std::vector<uint256>& output_value_blinds, std::vector<uint256>& output_asset_blinds, std::vector<CPubKey>& output_pubkeys);
|
||||
|
||||
size_t GetNumIssuances(const CTransaction& tx);
|
||||
|
||||
#endif //BITCOIN_BLIND_H
|
||||
|
|
|
|||
|
|
@ -4,6 +4,22 @@
|
|||
#include <primitives/transaction.h>
|
||||
#include <amount.h>
|
||||
|
||||
size_t GetNumIssuances(const CTransaction& tx)
|
||||
{
|
||||
unsigned int num_issuances = 0;
|
||||
for (unsigned int i = 0; i < tx.vin.size(); i++) {
|
||||
if (!tx.vin[i].assetIssuance.IsNull()) {
|
||||
if (!tx.vin[i].assetIssuance.nAmount.IsNull()) {
|
||||
num_issuances++;
|
||||
}
|
||||
if (!tx.vin[i].assetIssuance.nInflationKeys.IsNull()) {
|
||||
num_issuances++;
|
||||
}
|
||||
}
|
||||
}
|
||||
return num_issuances;
|
||||
}
|
||||
|
||||
void GenerateAssetEntropy(uint256& entropy, const COutPoint& prevout, const uint256& contracthash)
|
||||
{
|
||||
// E : entropy
|
||||
|
|
|
|||
|
|
@ -7,6 +7,11 @@
|
|||
#include <hash.h>
|
||||
#include <consensus/merkle.h>
|
||||
|
||||
/**
|
||||
* Get the number of issuances in the given transaction.
|
||||
*/
|
||||
size_t GetNumIssuances(const CTransaction& tx);
|
||||
|
||||
/**
|
||||
* Calculate the asset entropy from an COutPoint and a tx-author specified
|
||||
* Ricardian contract. See Definition 18 of the confidential assets paper.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue