From c45f9ee8941542a99fcd02418bd341daa13049c8 Mon Sep 17 00:00:00 2001 From: sowle Date: Wed, 8 Mar 2023 21:26:09 +0100 Subject: [PATCH] fixed passing of blinded_asset_id for each decoy when requested by RPC from daemon + minor improvements for CLSAG_GGX --- src/crypto/clsag.cpp | 8 ++++---- src/currency_core/blockchain_storage.cpp | 1 + src/wallet/wallet2.cpp | 1 + 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/crypto/clsag.cpp b/src/crypto/clsag.cpp index d07f932b..b783da06 100644 --- a/src/crypto/clsag.cpp +++ b/src/crypto/clsag.cpp @@ -180,7 +180,7 @@ namespace crypto //--------------------------------------------------------------- - bool generate_CLSAG_GGX(const hash& m, const std::vector& ring, const point_t& pseudo_out_amount_commitment, const point_t& pseudo_out_asset_id, const key_image& ki, + bool generate_CLSAG_GGX(const hash& m, const std::vector& ring, const point_t& pseudo_out_amount_commitment, const point_t& pseudo_out_blinded_asset_id, const key_image& ki, const scalar_t& secret_0_xp, const scalar_t& secret_1_f, const scalar_t& secret_2_t, uint64_t secret_index, CLSAG_GGX_signature& sig) { DBG_PRINT("== generate_CLSAG_GGX =="); @@ -196,7 +196,7 @@ namespace crypto CRYPTO_CHECK_AND_THROW_MES(key_image == point_t(ki), "key image 0 mismatch"); CRYPTO_CHECK_AND_THROW_MES((secret_0_xp * c_point_G).to_public_key() == ring[secret_index].stealth_address, "secret_0_xp mismatch"); CRYPTO_CHECK_AND_THROW_MES( secret_1_f * c_point_G == 8 * point_t(ring[secret_index].amount_commitment) - pseudo_out_amount_commitment, "secret_1_f mismatch"); - CRYPTO_CHECK_AND_THROW_MES( secret_2_t * c_point_X == 8 * point_t(ring[secret_index].blinded_asset_id) - pseudo_out_asset_id, "secret_2_t mismatch"); + CRYPTO_CHECK_AND_THROW_MES( secret_2_t * c_point_X == 8 * point_t(ring[secret_index].blinded_asset_id) - pseudo_out_blinded_asset_id, "secret_2_t mismatch"); //CRYPTO_CHECK_AND_THROW_MES( secret_3_q * c_point_G == 8 * point_t(ring[secret_index].concealing_point), ""); //CRYPTO_CHECK_AND_THROW_MES( secret_4_x * c_point_X == extended_amount_commitment - 8 * point_t(ring[secret_index].amount_commitment) - 8 * point_t(ring[secret_index].concealing_point), ""); #endif @@ -232,7 +232,7 @@ namespace crypto DBG_PRINT("ring[" << i << "]: sa:" << ring[i].stealth_address << ", ac:" << ring[i].amount_commitment << ", baid:" << ring[i].blinded_asset_id); } hsc.add_point(c_scalar_1div8 * pseudo_out_amount_commitment); - hsc.add_point(c_scalar_1div8 * pseudo_out_asset_id); + hsc.add_point(c_scalar_1div8 * pseudo_out_blinded_asset_id); hsc.add_key_image(ki); hash input_hash = hsc.calc_hash_no_reduce(); DBG_VAL_PRINT(input_hash); @@ -288,7 +288,7 @@ namespace crypto for(size_t i = 0; i < ring_size; ++i) { W_pub_keys_x.emplace_back( - agg_coeff_2 * (Q_i[i] - pseudo_out_asset_id) + agg_coeff_2 * (Q_i[i] - pseudo_out_blinded_asset_id) ); DBG_VAL_PRINT(W_pub_keys_x[i]); } diff --git a/src/currency_core/blockchain_storage.cpp b/src/currency_core/blockchain_storage.cpp index e591b308..f6b42939 100644 --- a/src/currency_core/blockchain_storage.cpp +++ b/src/currency_core/blockchain_storage.cpp @@ -2572,6 +2572,7 @@ bool blockchain_storage::add_out_to_get_random_outs(COMMAND_RPC_GET_RANDOM_OUTPU oen.stealth_address = toz.stealth_address; oen.amount_commitment = toz.amount_commitment; oen.concealing_point = toz.concealing_point; + oen.blinded_asset_id = toz.blinded_asset_id; // TODO @#@# bad design, too much manual coping, consider redesign -- sowle } VARIANT_SWITCH_END(); diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 7483505b..1b3528af 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -5049,6 +5049,7 @@ bool wallet2::prepare_tx_sources(size_t fake_outputs_count, std::vector= fake_outputs_count) break;