diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index 515fc5b2..462cdf58 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -2923,57 +2923,6 @@ bool simple_wallet::submit_transfer(const std::vector &args_) return true; } - // if more than one tx necessary, prompt user to confirm - if (m_wallet->always_confirm_transfers()) - { - uint64_t total_sent = 0; - uint64_t total_fee = 0; - uint64_t dust_not_in_fee = 0; - uint64_t dust_in_fee = 0; - for (size_t n = 0; n < ptx_vector.size(); ++n) - { - total_fee += ptx_vector[n].fee; - for (auto i: ptx_vector[n].selected_transfers) - total_sent += m_wallet->get_transfer_details(i).amount(); - total_sent -= ptx_vector[n].change_dts.amount + ptx_vector[n].fee; - - if (ptx_vector[n].dust_added_to_fee) - dust_in_fee += ptx_vector[n].dust; - else - dust_not_in_fee += ptx_vector[n].dust; - } - - std::stringstream prompt; - prompt << boost::format(tr("Sending %s. ")) % print_money(total_sent); - if (ptx_vector.size() > 1) - { - prompt << boost::format(tr("Your transaction needs to be split into %llu transactions. " - "This will result in a transaction fee being applied to each transaction, for a total fee of %s")) % - ((unsigned long long)ptx_vector.size()) % print_money(total_fee); - } - else - { - prompt << boost::format(tr("The transaction fee is %s")) % - print_money(total_fee); - } - if (dust_in_fee != 0) prompt << boost::format(tr(", of which %s is dust from change")) % print_money(dust_in_fee); - if (dust_not_in_fee != 0) prompt << tr(".") << ENDL << boost::format(tr("A total of %s from dust change will be sent to dust address")) - % print_money(dust_not_in_fee); - prompt << tr(".") << ENDL << "Full transaction details are available in the log file" << ENDL << tr("Is this okay? (Y/Yes/N/No)"); - - std::string accepted = command_line::input_line(prompt.str()); - if (std::cin.eof()) - return true; - if (accepted != "Y" && accepted != "y" && accepted != "Yes" && accepted != "yes") - { - fail_msg_writer() << tr("transaction cancelled."); - - // would like to return false, because no tx made, but everything else returns true - // and I don't know what returning false might adversely affect. *sigh* - return true; - } - } - // actually commit the transactions while (!ptx_vector.empty()) { diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 42deb337..ea399443 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -2756,7 +2756,7 @@ void wallet2::add_unconfirmed_tx(const cryptonote::transaction& tx, uint64_t amo utd.m_amount_out = 0; for (const auto &d: dests) utd.m_amount_out += d.amount; - utd.m_amount_out += change_amount; + utd.m_amount_out += change_amount; // dests does not contain change utd.m_change = change_amount; utd.m_sent_time = time(NULL); utd.m_tx = (const cryptonote::transaction_prefix&)tx; @@ -3083,7 +3083,7 @@ bool wallet2::sign_tx(const std::string &unsigned_filename, const std::string &s ptx.change_dts = sd.change_dts; ptx.selected_transfers = sd.selected_transfers; ptx.tx_key = rct::rct2sk(rct::identity()); // don't send it back to the untrusted view wallet - ptx.dests = sd.splitted_dsts; + ptx.dests = sd.dests; ptx.construction_data = sd; txs.push_back(ptx); @@ -3682,6 +3682,7 @@ void wallet2::transfer_selected(const std::vector dsts, const std::list selected_transfers, size_t fake_outputs_count, @@ -3802,6 +3803,7 @@ void wallet2::transfer_selected_rct(std::vector sources; cryptonote::tx_destination_entry change_dts; - std::vector splitted_dsts; + std::vector splitted_dsts; // split, includes change std::list selected_transfers; std::vector extra; uint64_t unlock_time; bool use_rct; + std::vector dests; // original setup, does not include change BEGIN_SERIALIZE_OBJECT() FIELD(sources) @@ -205,12 +206,16 @@ namespace tools FIELD(extra) VARINT_FIELD(unlock_time) FIELD(use_rct) + FIELD(dests) END_SERIALIZE() }; typedef std::vector transfer_container; typedef std::unordered_multimap payment_container; + // The convention for destinations is: + // dests does not include change + // splitted_dsts (in construction_data) does struct pending_tx { cryptonote::transaction tx; @@ -1048,6 +1053,7 @@ namespace tools ptx.construction_data.extra = tx.extra; ptx.construction_data.unlock_time = unlock_time; ptx.construction_data.use_rct = false; + ptx.construction_data.dests = dsts; }