diff --git a/src/currency_core/currency_format_utils.cpp b/src/currency_core/currency_format_utils.cpp index 4b25df1d..01854db1 100644 --- a/src/currency_core/currency_format_utils.cpp +++ b/src/currency_core/currency_format_utils.cpp @@ -1672,8 +1672,8 @@ namespace currency size_t output_index = tx.vout.size(); // in case of append mode we need to start output indexing from the last one + 1 uint64_t range_proof_start_index = output_index; std::set deriv_cache; - crypto::scalar_vec_t blinding_masks(destinations.size()); // vector of secret blinging masks for each output. For range proof generation - crypto::scalar_vec_t amounts(destinations.size()); // vector of amounts, converted to scalars. For ranage proof generation + crypto::scalar_vec_t blinding_masks(tx.vout.size() + destinations.size()); // vector of secret blinging masks for each output. For range proof generation + crypto::scalar_vec_t amounts(tx.vout.size() + destinations.size()); // vector of amounts, converted to scalars. For ranage proof generation crypto::scalar_t blinding_masks_sum = 0; for(const tx_destination_entry& dst_entr : shuffled_dsts) { @@ -2275,7 +2275,7 @@ namespace currency VARIANT_CASE_CONST(txout_multisig, t) if (is_out_to_acc(acc, t, derivation, output_index)) { - outs.emplace_back(output_index, 0); // TODO: @#@# consider this + outs.emplace_back(output_index, o.amount); // TODO: @#@# consider this //don't cout this money } VARIANT_CASE_CONST(txout_htlc, htlc) diff --git a/src/currency_core/currency_format_utils.h b/src/currency_core/currency_format_utils.h index 24199d97..d60f68d2 100644 --- a/src/currency_core/currency_format_utils.h +++ b/src/currency_core/currency_format_utils.h @@ -422,23 +422,22 @@ namespace currency template inline bool is_out_burned(const out_t& out) { CHECK_AND_ASSERT_THROW_MES(false, "incorrect out type: " << typeid(out).name()); } - inline bool is_out_burned(const tx_out_bare& o) { return is_out_burned(o.target); } + template<> inline bool is_out_burned(const txout_to_key& o) { return o.key == null_pkey; } + template<> inline bool is_out_burned(const tx_out_zarcanum& o) { return o.stealth_address == null_pkey; } struct zz_is_out_burned_helper_visitor : boost::static_visitor { template bool operator()(const T& v) const { return is_out_burned(v); } }; - inline bool is_out_burned(const tx_out_v& v) - { - return boost::apply_visitor(zz_is_out_burned_helper_visitor(), v); - } - inline bool is_out_burned(const txout_target_v& v) - { - return boost::apply_visitor(zz_is_out_burned_helper_visitor(), v); - } - + template<> + inline bool is_out_burned(const txout_target_v& v) { return boost::apply_visitor(zz_is_out_burned_helper_visitor(), v); } + template<> + inline bool is_out_burned(const tx_out_v& v) { return boost::apply_visitor(zz_is_out_burned_helper_visitor(), v); } + template<> + inline bool is_out_burned(const tx_out_bare& o) { return is_out_burned(o.target); } + template bool add_attachments_info_to_extra(t_extra_container& extra_container, const std::vector& attachments) { diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index aefc80ac..26f191f1 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -714,6 +714,7 @@ void wallet2::process_new_transaction(const currency::transaction& tx, uint64_t transfer_details_base& tdb = m_multisig_transfers[multisig_id]; tdb.m_ptx_wallet_info = pwallet_info; tdb.m_internal_output_index = o; + tdb.m_amount = outs[i_in_outs].amount; WLT_LOG_L0("Received multisig, multisig out id: " << multisig_id << ", amount: " << tdb.amount() << ", with tx: " << get_transaction_hash(tx)); } }