84 LOG_PRINT_L3(
"m_pending_tx size: " << m_pending_tx.size());
88 if (!filename.empty()) {
89 boost::system::error_code ignore;
90 bool tx_file_exists = boost::filesystem::exists(filename, ignore);
91 if(tx_file_exists && !overwrite){
92 m_errorString =
string(
tr(
"Attempting to save transaction to file, but specified file(s) exist. Exiting to not risk overwriting. File:")) + filename;
97 bool r = m_wallet.m_wallet->save_tx(m_pending_tx, filename);
99 m_errorString =
tr(
"Failed to write transaction(s) to file");
107 auto multisigState = m_wallet.
multisig();
108 if (multisigState.isMultisig && m_signers.size() < multisigState.threshold) {
109 throw runtime_error(
"Not enough signers to send multisig transaction");
114 const bool tx_cold_signed = m_wallet.m_wallet->get_account().get_device().has_tx_cold_sign();
116 std::unordered_set<size_t> selected_transfers;
118 for(
size_t s : ptx.selected_transfers){
119 selected_transfers.insert(s);
123 m_wallet.m_wallet->cold_tx_aux_import(m_pending_tx, m_tx_device_aux);
124 bool r = m_wallet.m_wallet->import_key_images(m_key_images, 0, selected_transfers);
126 throw runtime_error(
"Cold sign transaction submit failed - key image sync fail");
130 while (!m_pending_tx.empty()) {
131 auto & ptx = m_pending_tx.back();
132 m_wallet.m_wallet->commit_tx(ptx);
134 m_pending_tx.pop_back();
139 m_errorString =
tr(
"daemon is busy. Please try again later.");
142 m_errorString =
tr(
"no connection to daemon. Please make sure daemon is running.");
145 std::ostringstream writer(m_errorString);
149 m_errorString = writer.str();
151 m_errorString +=
string(
tr(
". Reason: ")) + reason;
152 }
catch (
const std::exception &e) {
153 m_errorString =
string(
tr(
"Unknown exception: ")) + e.what();
156 m_errorString =
tr(
"Unhandled exception");
virtual void startRefresh() override
StartRefresh - Start/resume refresh thread (refresh every 10 seconds)
virtual void pauseRefresh() override
pauseRefresh - pause refresh thread
MultisigState multisig() const override
multisig - returns current state of multisig wallet creation process
crypto::hash get_transaction_hash(const transaction &t)