diff options
-rw-r--r-- | .gitignore | 2 | ||||
-rw-r--r-- | CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/cryptonote_core/blockchain.cpp | 14 | ||||
-rw-r--r-- | src/cryptonote_core/cryptonote_boost_serialization.h | 8 | ||||
-rw-r--r-- | src/cryptonote_core/cryptonote_format_utils.cpp | 18 | ||||
-rw-r--r-- | src/cryptonote_core/cryptonote_format_utils.h | 6 | ||||
-rw-r--r-- | src/ringct/rctOps.cpp | 15 | ||||
-rw-r--r-- | src/ringct/rctOps.h | 3 | ||||
-rw-r--r-- | src/ringct/rctSigs.cpp | 163 | ||||
-rw-r--r-- | src/ringct/rctSigs.h | 17 | ||||
-rw-r--r-- | src/ringct/rctTypes.h | 22 | ||||
-rw-r--r-- | src/simplewallet/simplewallet.cpp | 43 | ||||
-rw-r--r-- | src/wallet/wallet2.cpp | 137 | ||||
-rw-r--r-- | src/wallet/wallet2.h | 14 | ||||
-rw-r--r-- | src/wallet/wallet_rpc_server.cpp | 41 | ||||
-rw-r--r-- | src/wallet/wallet_rpc_server.h | 3 | ||||
-rw-r--r-- | tests/unit_tests/ringct.cpp | 49 | ||||
-rw-r--r-- | tests/unit_tests/serialization.cpp | 14 | ||||
-rw-r--r-- | translations/monero.ts | 1025 |
19 files changed, 815 insertions, 780 deletions
diff --git a/.gitignore b/.gitignore index 1f88b6ad3..a27982af1 100644 --- a/.gitignore +++ b/.gitignore @@ -103,4 +103,4 @@ local.properties .texlipse .idea/ - +/testnet
\ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 020aa0c37..b4b680e84 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -80,7 +80,6 @@ endif() if (ARM_ID STREQUAL "aarch64") set(ARM 1) set(ARM8 1) - set(BUILD_SHARED_LIBS ON) endif() if(WIN32 OR ARM) diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp index df9c0f3f3..efda3f5cf 100644 --- a/src/cryptonote_core/blockchain.cpp +++ b/src/cryptonote_core/blockchain.cpp @@ -91,8 +91,8 @@ static const struct { // version 3 starts from block 1141317, which is on or around the 24th of September, 2016. Fork time finalised on 2016-03-21. { 3, 1141317, 0, 1458558528 }, - // version 4 starts from block 1220517, which is on or around the 5th of January, 2017. Fork time finalised on 2016-09-18. - { 4, 1220517, 0, 1483574400 }, + // version 4 starts from block 1220516, which is on or around the 5th of January, 2017. Fork time finalised on 2016-09-18. + { 4, 1220516, 0, 1483574400 }, // version 5 starts from block 1406997, which is on or around the 20th of September, 2017. Fork time finalised on 2016-09-18. { 5, 1406997, 0, 1505865600 }, @@ -113,7 +113,7 @@ static const struct { // versions 3-5 were passed in rapid succession from September 18th, 2016 { 3, 800500, 0, 1472415034 }, - { 4, 801220, 0, 1472415035 }, + { 4, 801219, 0, 1472415035 }, { 5, 802660, 0, 1472415036 }, }; static const uint64_t testnet_hard_fork_version_1_till = 624633; @@ -832,12 +832,12 @@ bool Blockchain::switch_to_alternative_blockchain(std::list<blocks_ext_by_hash:: // looking into. add_block_as_invalid(ch_ent->second, get_block_hash(ch_ent->second.bl)); LOG_PRINT_L1("The block was inserted as invalid while connecting new alternative chain, block_id: " << get_block_hash(ch_ent->second.bl)); - m_alternative_chains.erase(ch_ent); + m_alternative_chains.erase(*alt_ch_iter++); - for(auto alt_ch_to_orph_iter = ++alt_ch_iter; alt_ch_to_orph_iter != alt_chain.end(); alt_ch_to_orph_iter++) + for(auto alt_ch_to_orph_iter = alt_ch_iter; alt_ch_to_orph_iter != alt_chain.end(); ) { - add_block_as_invalid((*alt_ch_iter)->second, (*alt_ch_iter)->first); - m_alternative_chains.erase(*alt_ch_to_orph_iter); + add_block_as_invalid((*alt_ch_to_orph_iter)->second, (*alt_ch_to_orph_iter)->first); + m_alternative_chains.erase(*alt_ch_to_orph_iter++); } return false; } diff --git a/src/cryptonote_core/cryptonote_boost_serialization.h b/src/cryptonote_core/cryptonote_boost_serialization.h index 19b1a687e..663ef5070 100644 --- a/src/cryptonote_core/cryptonote_boost_serialization.h +++ b/src/cryptonote_core/cryptonote_boost_serialization.h @@ -207,11 +207,11 @@ namespace boost } template <class Archive> - inline void serialize(Archive &a, rct::asnlSig &x, const boost::serialization::version_type ver) + inline void serialize(Archive &a, rct::boroSig &x, const boost::serialization::version_type ver) { - a & x.L1; - a & x.s2; - a & x.s; + a & x.s0; + a & x.s1; + a & x.ee; } template <class Archive> diff --git a/src/cryptonote_core/cryptonote_format_utils.cpp b/src/cryptonote_core/cryptonote_format_utils.cpp index 394a43831..d6dbc400a 100644 --- a/src/cryptonote_core/cryptonote_format_utils.cpp +++ b/src/cryptonote_core/cryptonote_format_utils.cpp @@ -320,26 +320,26 @@ namespace cryptonote return true; } //--------------------------------------------------------------- - crypto::public_key get_tx_pub_key_from_extra(const std::vector<uint8_t>& tx_extra) + crypto::public_key get_tx_pub_key_from_extra(const std::vector<uint8_t>& tx_extra, size_t pk_index) { std::vector<tx_extra_field> tx_extra_fields; parse_tx_extra(tx_extra, tx_extra_fields); tx_extra_pub_key pub_key_field; - if(!find_tx_extra_field_by_type(tx_extra_fields, pub_key_field)) + if(!find_tx_extra_field_by_type(tx_extra_fields, pub_key_field, pk_index)) return null_pkey; return pub_key_field.pub_key; } //--------------------------------------------------------------- - crypto::public_key get_tx_pub_key_from_extra(const transaction_prefix& tx_prefix) + crypto::public_key get_tx_pub_key_from_extra(const transaction_prefix& tx_prefix, size_t pk_index) { - return get_tx_pub_key_from_extra(tx_prefix.extra); + return get_tx_pub_key_from_extra(tx_prefix.extra, pk_index); } //--------------------------------------------------------------- - crypto::public_key get_tx_pub_key_from_extra(const transaction& tx) + crypto::public_key get_tx_pub_key_from_extra(const transaction& tx, size_t pk_index) { - return get_tx_pub_key_from_extra(tx.extra); + return get_tx_pub_key_from_extra(tx.extra, pk_index); } //--------------------------------------------------------------- bool add_tx_pub_key_to_extra(transaction& tx, const crypto::public_key& tx_pub_key) @@ -534,8 +534,10 @@ namespace cryptonote uint64_t summary_inputs_money = 0; //fill inputs + int idx = -1; BOOST_FOREACH(const tx_source_entry& src_entr, sources) { + ++idx; if(src_entr.real_output >= src_entr.outputs.size()) { LOG_ERROR("real_output index (" << src_entr.real_output << ")bigger than output_keys.size()=" << src_entr.outputs.size()); @@ -553,9 +555,11 @@ namespace cryptonote //check that derivated key is equal with real output key if( !(in_ephemeral.pub == src_entr.outputs[src_entr.real_output].second.dest) ) { - LOG_ERROR("derived public key mismatch with output public key! "<< ENDL << "derived_key:" + LOG_ERROR("derived public key mismatch with output public key at index " << idx << ", real out " << src_entr.real_output << "! "<< ENDL << "derived_key:" << string_tools::pod_to_hex(in_ephemeral.pub) << ENDL << "real output_public_key:" << string_tools::pod_to_hex(src_entr.outputs[src_entr.real_output].second) ); + LOG_ERROR("amount " << src_entr.amount << ", rct " << src_entr.rct); + LOG_ERROR("tx pubkey " << src_entr.real_out_tx_key << ", real_output_in_tx_index " << src_entr.real_output_in_tx_index); return false; } diff --git a/src/cryptonote_core/cryptonote_format_utils.h b/src/cryptonote_core/cryptonote_format_utils.h index 9f9ed8625..704b8467d 100644 --- a/src/cryptonote_core/cryptonote_format_utils.h +++ b/src/cryptonote_core/cryptonote_format_utils.h @@ -104,9 +104,9 @@ namespace cryptonote } bool parse_tx_extra(const std::vector<uint8_t>& tx_extra, std::vector<tx_extra_field>& tx_extra_fields); - crypto::public_key get_tx_pub_key_from_extra(const std::vector<uint8_t>& tx_extra); - crypto::public_key get_tx_pub_key_from_extra(const transaction_prefix& tx); - crypto::public_key get_tx_pub_key_from_extra(const transaction& tx); + crypto::public_key get_tx_pub_key_from_extra(const std::vector<uint8_t>& tx_extra, size_t pk_index = 0); + crypto::public_key get_tx_pub_key_from_extra(const transaction_prefix& tx, size_t pk_index = 0); + crypto::public_key get_tx_pub_key_from_extra(const transaction& tx, size_t pk_index = 0); bool add_tx_pub_key_to_extra(transaction& tx, const crypto::public_key& tx_pub_key); bool add_extra_nonce_to_tx_extra(std::vector<uint8_t>& tx_extra, const blobdata& extra_nonce); bool remove_field_from_tx_extra(std::vector<uint8_t>& tx_extra, const std::type_info &type); diff --git a/src/ringct/rctOps.cpp b/src/ringct/rctOps.cpp index cf55897a7..21f29ccf5 100644 --- a/src/ringct/rctOps.cpp +++ b/src/ringct/rctOps.cpp @@ -267,7 +267,7 @@ namespace rct { ge_p3_tobytes(AB.bytes, &A2); } - //checks if A, B are equal as curve points + //checks if A, B are equal in terms of bytes (may say no if one is a non-reduced scalar) //without doing curve operations bool equalKeys(const key & a, const key & b) { bool rv = true; @@ -359,6 +359,19 @@ namespace rct { return rv; } + key cn_fast_hash(const key64 keys) { + key rv; + cn_fast_hash(rv, &keys[0], 64 * sizeof(keys[0])); + //dp(rv); + return rv; + } + + key hash_to_scalar(const key64 keys) { + key rv = cn_fast_hash(keys); + sc_reduce32(rv.bytes); + return rv; + } + key hashToPointSimple(const key & hh) { key pointk; ge_p1p1 point2; diff --git a/src/ringct/rctOps.h b/src/ringct/rctOps.h index cd3a6dc0d..90f54b050 100644 --- a/src/ringct/rctOps.h +++ b/src/ringct/rctOps.h @@ -158,6 +158,9 @@ namespace rct { //for mg sigs key cn_fast_hash(const keyV &keys); key hash_to_scalar(const keyV &keys); + //for ANSL + key cn_fast_hash(const key64 keys); + key hash_to_scalar(const key64 keys); //returns hashToPoint as described in https://github.com/ShenNoether/ge_fromfe_writeup key hashToPointSimple(const key &in); diff --git a/src/ringct/rctSigs.cpp b/src/ringct/rctSigs.cpp index b773be1e5..b7efe3ae7 100644 --- a/src/ringct/rctSigs.cpp +++ b/src/ringct/rctSigs.cpp @@ -40,94 +40,66 @@ using namespace crypto; using namespace std; namespace rct { - //Schnorr Non-linkable - //Gen Gives a signature (L1, s1, s2) proving that the sender knows "x" such that xG = one of P1 or P2 - //Ver Verifies that signer knows an "x" such that xG = one of P1 or P2 - //These are called in the below ASNL sig generation - - void GenSchnorrNonLinkable(key & L1, key & s1, key & s2, const key & x, const key & P1, const key & P2, unsigned int index) { - key c1, c2, L2; - key a = skGen(); - if (index == 0) { - scalarmultBase(L1, a); - hash_to_scalar(c2, L1); - skGen(s2); - addKeys2(L2, s2, c2, P2); - hash_to_scalar(c1, L2); - //s1 = a - x * c1 - sc_mulsub(s1.bytes, x.bytes, c1.bytes, a.bytes); - } - else if (index == 1) { - scalarmultBase(L2, a); - hash_to_scalar(c1, L2); - skGen(s1); - addKeys2(L1, s1, c1, P1); - hash_to_scalar(c2, L1); - sc_mulsub(s2.bytes, x.bytes, c2.bytes, a.bytes); - } - else { - throw std::runtime_error("GenSchnorrNonLinkable: invalid index (should be 0 or 1)"); + namespace { + struct verRangeWrapper_ { + void operator()(const key & C, const rangeSig & as, bool &result) const { + result = verRange(C, as); } - } + }; + constexpr const verRangeWrapper_ verRangeWrapper{}; - //Schnorr Non-linkable - //Gen Gives a signature (L1, s1, s2) proving that the sender knows "x" such that xG = one of P1 or P2 - //Ver Verifies that signer knows an "x" such that xG = one of P1 or P2 - //These are called in the below ASNL sig generation - bool VerSchnorrNonLinkable(const key & P1, const key & P2, const key & L1, const key & s1, const key & s2) { - key c2, L2, c1, L1p; - hash_to_scalar(c2, L1); - addKeys2(L2, s2, c2, P2); - hash_to_scalar(c1, L2); - addKeys2(L1p, s1, c1, P1); - - return equalKeys(L1, L1p); + struct verRctMGSimpleWrapper_ { + void operator()(const key &message, const mgSig &mg, const ctkeyV & pubs, const key & C, bool &result) const { + result = verRctMGSimple(message, mg, pubs, C); + } + }; + constexpr const verRctMGSimpleWrapper_ verRctMGSimpleWrapper{}; } - //Aggregate Schnorr Non-linkable Ring Signature (ASNL) - // c.f. http://eprint.iacr.org/2015/1098 section 5. - // These are used in range proofs (alternatively Borromean could be used) - // Gen gives a signature which proves the signer knows, for each i, - // an x[i] such that x[i]G = one of P1[i] or P2[i] - // Ver Verifies the signer knows a key for one of P1[i], P2[i] at each i - asnlSig GenASNL(key64 x, key64 P1, key64 P2, bits indices) { - DP("Generating Aggregate Schnorr Non-linkable Ring Signature\n"); - key64 s1; - int j = 0; - asnlSig rv; - rv.s = zero(); - for (j = 0; j < ATOMS; j++) { - GenSchnorrNonLinkable(rv.L1[j], s1[j], rv.s2[j], x[j], P1[j], P2[j], indices[j]); - sc_add(rv.s.bytes, rv.s.bytes, s1[j].bytes); + //Borromean (c.f. gmax/andytoshi's paper) + boroSig genBorromean(const key64 x, const key64 P1, const key64 P2, const bits indices) { + key64 L[2], alpha; + key c; + int naught = 0, prime = 0, ii = 0, jj=0; + boroSig bb; + for (ii = 0 ; ii < 64 ; ii++) { + naught = indices[ii]; prime = (indices[ii] + 1) % 2; + skGen(alpha[ii]); + scalarmultBase(L[naught][ii], alpha[ii]); + if (naught == 0) { + skGen(bb.s1[ii]); + c = hash_to_scalar(L[naught][ii]); + addKeys2(L[prime][ii], bb.s1[ii], c, P2[ii]); + } } - return rv; - } - - //Aggregate Schnorr Non-linkable Ring Signature (ASNL) - // c.f. http://eprint.iacr.org/2015/1098 section 5. - // These are used in range proofs (alternatively Borromean could be used) - // Gen gives a signature which proves the signer knows, for each i, - // an x[i] such that x[i]G = one of P1[i] or P2[i] - // Ver Verifies the signer knows a key for one of P1[i], P2[i] at each i - bool VerASNL(const key64 P1, const key64 P2, const asnlSig &as) { - PERF_TIMER(VerASNL); - DP("Verifying Aggregate Schnorr Non-linkable Ring Signature\n"); - key LHS = identity(); - key RHS = scalarmultBase(as.s); - key c2, L2, c1; - int j = 0; - for (j = 0; j < ATOMS; j++) { - hash_to_scalar(c2, as.L1[j]); - addKeys2(L2, as.s2[j], c2, P2[j]); - addKeys(LHS, LHS, as.L1[j]); - hash_to_scalar(c1, L2); - addKeys(RHS, RHS, scalarmultKey(P1[j], c1)); - } - key cc; - sc_sub(cc.bytes, LHS.bytes, RHS.bytes); - return sc_isnonzero(cc.bytes) == 0; + bb.ee = hash_to_scalar(L[1]); //or L[1].. + key LL, cc; + for (jj = 0 ; jj < 64 ; jj++) { + if (!indices[jj]) { + sc_mulsub(bb.s0[jj].bytes, x[jj].bytes, bb.ee.bytes, alpha[jj].bytes); + } else { + skGen(bb.s0[jj]); + addKeys2(LL, bb.s0[jj], bb.ee, P1[jj]); //different L0 + cc = hash_to_scalar(LL); + sc_mulsub(bb.s1[jj].bytes, x[jj].bytes, cc.bytes, alpha[jj].bytes); + } + } + return bb; } + //see above. + bool verifyBorromean(const boroSig &bb, const key64 P1, const key64 P2) { + key64 Lv1; key chash, LL; + int ii = 0; + for (ii = 0 ; ii < 64 ; ii++) { + addKeys2(LL, bb.s0[ii], bb.ee, P1[ii]); + chash = hash_to_scalar(LL); + addKeys2(Lv1[ii], bb.s1[ii], chash, P2[ii]); + } + key eeComputed = hash_to_scalar(Lv1); //hash function fine + return equalKeys(eeComputed, bb.ee); + } + //Multilayered Spontaneous Anonymous Group Signatures (MLSAG signatures) //These are aka MG signatutes in earlier drafts of the ring ct paper // c.f. http://eprint.iacr.org/2015/1098 section 2. @@ -259,6 +231,11 @@ namespace rct { } CHECK_AND_ASSERT_MES(dsRows <= rows, false, "Bad dsRows value"); + for (size_t i = 0; i < rv.ss.size(); ++i) + for (size_t j = 0; j < rv.ss[i].size(); ++j) + CHECK_AND_ASSERT_MES(sc_check(rv.ss[i][j].bytes) == 0, false, "Bad ss slot"); + CHECK_AND_ASSERT_MES(sc_check(rv.cc.bytes) == 0, false, "Bad cc"); + size_t i = 0, j = 0, ii = 0; key c, L, R, Hi; key c_old = copy(rv.cc); @@ -323,7 +300,7 @@ namespace rct { sc_add(mask.bytes, mask.bytes, ai[i].bytes); addKeys(C, C, sig.Ci[i]); } - sig.asig = GenASNL(ai, sig.Ci, CiH, b); + sig.asig = genBorromean(ai, sig.Ci, CiH, b); return sig; } @@ -335,6 +312,8 @@ namespace rct { // mask is a such that C = aG + bH, and b = amount //verRange verifies that \sum Ci = C and that each Ci is a commitment to 0 or 2^i bool verRange(const key & C, const rangeSig & as) { + try + { PERF_TIMER(verRange); key64 CiH; int i = 0; @@ -345,9 +324,12 @@ namespace rct { } if (!equalKeys(C, Ctmp)) return false; - if (!VerASNL(as.Ci, CiH, as.asig)) + if (!verifyBorromean(as.asig, as.Ci, CiH)) return false; return true; + } + // we can get deep throws from ge_frombytes_vartime if input isn't valid + catch (...) { return false; } } key get_pre_mlsag_hash(const rctSig &rv) @@ -371,10 +353,10 @@ namespace rct { for (auto r: rv.p.rangeSigs) { for (size_t n = 0; n < 64; ++n) - kv.push_back(r.asig.L1[n]); + kv.push_back(r.asig.s0[n]); for (size_t n = 0; n < 64; ++n) - kv.push_back(r.asig.s2[n]); - kv.push_back(r.asig.s); + kv.push_back(r.asig.s1[n]); + kv.push_back(r.asig.ee); for (size_t n = 0; n < 64; ++n) kv.push_back(r.Ci[n]); } @@ -513,6 +495,8 @@ namespace rct { //This does a simplified version, assuming only post Rct //inputs bool verRctMGSimple(const key &message, const mgSig &mg, const ctkeyV & pubs, const key & C) { + try + { PERF_TIMER(verRctMGSimple); //setup vars size_t rows = 1; @@ -528,6 +512,8 @@ namespace rct { } //DP(C); return MLSAG_Ver(message, M, mg, rows); + } + catch (...) { return false; } } @@ -790,6 +776,8 @@ namespace rct { //ver RingCT simple //assumes only post-rct style inputs (at least for max anonymity) bool verRctSimple(const rctSig & rv) { + try + { PERF_TIMER(verRctSimple); CHECK_AND_ASSERT_MES(rv.type == RCTTypeSimple, false, "verRctSimple called on non simple rctSig"); @@ -860,6 +848,9 @@ namespace rct { } return true; + } + // we can get deep throws from ge_frombytes_vartime if input isn't valid + catch (...) { return false; } } //RingCT protocol diff --git a/src/ringct/rctSigs.h b/src/ringct/rctSigs.h index a4fecade4..1fe4aa074 100644 --- a/src/ringct/rctSigs.h +++ b/src/ringct/rctSigs.h @@ -66,21 +66,8 @@ using namespace crypto; namespace rct { - //Schnorr Non-linkable - //Gen Gives a signature (L1, s1, s2) proving that the sender knows "x" such that xG = one of P1 or P2 - //Ver Verifies that signer knows an "x" such that xG = one of P1 or P2 - //These are called in the below ASNL sig generation - void GenSchnorrNonLinkable(key & L1, key & s1, key & s2, const key & x, const key & P1, const key & P2, unsigned int index); - bool VerSchnorrNonLinkable(const key & P1, const key & P2, const key & L1, const key & s1, const key & s2); - - //Aggregate Schnorr Non-linkable Ring Signature (ASNL) - // c.f. http://eprint.iacr.org/2015/1098 section 5. - // These are used in range proofs (alternatively Borromean could be used) - // Gen gives a signature which proves the signer knows, for each i, - // an x[i] such that x[i]G = one of P1[i] or P2[i] - // Ver Verifies the signer knows a key for one of P1[i], P2[i] at each i - asnlSig GenASNL(key64 x, key64 P1, key64 P2, bits indices); - bool VerASNL(const key64 P1, const key64 P2, const asnlSig &as); + boroSig genBorromean(const key64 x, const key64 P1, const key64 P2, const bits indices); + bool verifyBorromean(const boroSig &bb, const key64 P1, const key64 P2); //Multilayered Spontaneous Anonymous Group Signatures (MLSAG signatures) //These are aka MG signatutes in earlier drafts of the ring ct paper diff --git a/src/ringct/rctTypes.h b/src/ringct/rctTypes.h index b1921b71a..71cc61ddc 100644 --- a/src/ringct/rctTypes.h +++ b/src/ringct/rctTypes.h @@ -125,12 +125,10 @@ namespace rct { typedef unsigned int bits[ATOMS]; typedef key key64[64]; - //just contains the necessary keys to represent asnlSigs - //c.f. http://eprint.iacr.org/2015/1098 - struct asnlSig { - key64 L1; - key64 s2; - key s; + struct boroSig { + key64 s0; + key64 s1; + key ee; }; //Container for precomp @@ -151,14 +149,14 @@ namespace rct { // FIELD(II) - not serialized, it can be reconstructed END_SERIALIZE() }; - //contains the data for an asnl sig + //contains the data for an Borromean sig // also contains the "Ci" values such that // \sum Ci = C // and the signature proves that each Ci is either // a Pedersen commitment to 0 or to 2^i //thus proving that C is in the range of [0, 2^64] struct rangeSig { - asnlSig asig; + boroSig asig; key64 Ci; BEGIN_SERIALIZE_OBJECT() @@ -452,7 +450,7 @@ inline std::ostream &operator <<(std::ostream &o, const rct::key &v) { return pr BLOB_SERIALIZER(rct::key); BLOB_SERIALIZER(rct::key64); BLOB_SERIALIZER(rct::ctkey); -BLOB_SERIALIZER(rct::asnlSig); +BLOB_SERIALIZER(rct::boroSig); VARIANT_TAG(debug_archive, rct::key, "rct::key"); VARIANT_TAG(debug_archive, rct::key64, "rct::key64"); @@ -464,7 +462,7 @@ VARIANT_TAG(debug_archive, rct::ctkeyM, "rct::ctkeyM"); VARIANT_TAG(debug_archive, rct::ecdhTuple, "rct::ecdhTuple"); VARIANT_TAG(debug_archive, rct::mgSig, "rct::mgSig"); VARIANT_TAG(debug_archive, rct::rangeSig, "rct::rangeSig"); -VARIANT_TAG(debug_archive, rct::asnlSig, "rct::asnlSig"); +VARIANT_TAG(debug_archive, rct::boroSig, "rct::boroSig"); VARIANT_TAG(debug_archive, rct::rctSig, "rct::rctSig"); VARIANT_TAG(binary_archive, rct::key, 0x90); @@ -477,7 +475,7 @@ VARIANT_TAG(binary_archive, rct::ctkeyM, 0x96); VARIANT_TAG(binary_archive, rct::ecdhTuple, 0x97); VARIANT_TAG(binary_archive, rct::mgSig, 0x98); VARIANT_TAG(binary_archive, rct::rangeSig, 0x99); -VARIANT_TAG(binary_archive, rct::asnlSig, 0x9a); +VARIANT_TAG(binary_archive, rct::boroSig, 0x9a); VARIANT_TAG(binary_archive, rct::rctSig, 0x9b); VARIANT_TAG(json_archive, rct::key, "rct_key"); @@ -490,7 +488,7 @@ VARIANT_TAG(json_archive, rct::ctkeyM, "rct_ctkeyM"); VARIANT_TAG(json_archive, rct::ecdhTuple, "rct_ecdhTuple"); VARIANT_TAG(json_archive, rct::mgSig, "rct_mgSig"); VARIANT_TAG(json_archive, rct::rangeSig, "rct_rangeSig"); -VARIANT_TAG(json_archive, rct::asnlSig, "rct_asnlSig"); +VARIANT_TAG(json_archive, rct::boroSig, "rct_boroSig"); VARIANT_TAG(json_archive, rct::rctSig, "rct_rctSig"); #endif /* RCTTYPES_H */ diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp index faeed31ce..d9c1bb4ed 100644 --- a/src/simplewallet/simplewallet.cpp +++ b/src/simplewallet/simplewallet.cpp @@ -949,6 +949,37 @@ void simple_wallet::print_seed(std::string seed) std::cout << seed << std::endl; } //---------------------------------------------------------------------------------------------------- +static bool is_local_daemon(const std::string &address) +{ + // extract host + epee::net_utils::http::url_content u_c; + if (!epee::net_utils::parse_url(address, u_c)) + { + LOG_PRINT_L1("Failed to determine whether daemon is local, assuming not"); + return false; + } + if (u_c.host.empty()) + { + LOG_PRINT_L1("Failed to determine whether daemon is local, assuming not"); + return false; + } + + // resolve to IP + boost::asio::io_service io_service; + boost::asio::ip::tcp::resolver resolver(io_service); + boost::asio::ip::tcp::resolver::query query(u_c.host, ""); + boost::asio::ip::tcp::resolver::iterator i = resolver.resolve(query); + while (i != boost::asio::ip::tcp::resolver::iterator()) + { + const boost::asio::ip::tcp::endpoint &ep = *i; + if (ep.address().is_loopback()) + return true; + ++i; + } + + return false; +} +//---------------------------------------------------------------------------------------------------- bool simple_wallet::init(const boost::program_options::variables_map& vm) { if (!handle_command_line(vm)) @@ -1158,6 +1189,18 @@ bool simple_wallet::init(const boost::program_options::variables_map& vm) CHECK_AND_ASSERT_MES(r, false, tr("failed to open account")); } assert(m_wallet); + + // set --trusted-daemon if local + try + { + if (is_local_daemon(m_wallet->get_daemon_address())) + { + LOG_PRINT_L1(tr("Daemon is local, assuming trusted")); + m_trusted_daemon = true; + } + } + catch (const std::exception &e) { } + m_wallet->callback(this); return true; } diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp index 5ab1ff85e..81472687d 100644 --- a/src/wallet/wallet2.cpp +++ b/src/wallet/wallet2.cpp @@ -846,6 +846,7 @@ void wallet2::process_new_transaction(const cryptonote::transaction& tx, const s td.m_key_image = ki[o]; td.m_key_image_known = !m_watch_only; td.m_amount = tx.vout[o].amount; + td.m_pk_index = pk_index - 1; if (td.m_amount == 0) { td.m_mask = mask[o]; @@ -894,6 +895,7 @@ void wallet2::process_new_transaction(const cryptonote::transaction& tx, const s td.m_tx = (const cryptonote::transaction_prefix&)tx; td.m_txid = txid(); td.m_amount = tx.vout[o].amount; + td.m_pk_index = pk_index - 1; if (td.m_amount == 0) { td.m_mask = mask[o]; @@ -1573,35 +1575,12 @@ void wallet2::refresh(uint64_t start_height, uint64_t & blocks_fetched, bool& re std::list<cryptonote::block_complete_entry> blocks; std::vector<COMMAND_RPC_GET_BLOCKS_FAST::block_output_indices> o_indices; - std::string daemon_height_err = ""; - uint64_t daemon_bc_height = get_daemon_blockchain_height(daemon_height_err); - if(daemon_height_err.size() > 0) { - throw std::runtime_error(daemon_height_err); - } - // pull the first set of blocks get_short_chain_history(short_chain_history); m_run.store(true, std::memory_order_relaxed); if (start_height > m_blockchain.size() || m_refresh_from_block_height > m_blockchain.size()) { - - // even target_height can be zero if the daemon just started and hasn't gotten some sync - // data back from peers .. hmmm, what to do ... O.o (you can see him thinking) - // i'm going with infiniti loop until i get something bigger than zero or err ... moneromoo don't kill me - std::string daemon_target_err = ""; - uint64_t daemon_target_height = 0; - - while(daemon_target_height == 0) - { - daemon_target_height = get_daemon_blockchain_target_height(daemon_target_err); - if(daemon_target_err.size() > 0) { - daemon_target_height = get_approximate_blockchain_height(); // - x? - } - } - - if (m_refresh_from_block_height > daemon_target_height) m_refresh_from_block_height = daemon_target_height - 1; - if (!start_height) start_height = m_refresh_from_block_height; - if (start_height >= daemon_bc_height) start_height = daemon_bc_height - 1; - + if (!start_height) + start_height = m_refresh_from_block_height; // we can shortcut by only pulling hashes up to the start_height fast_refresh(start_height, blocks_start_height, short_chain_history); // regenerate the history now that we've got a full set of hashes @@ -1611,56 +1590,53 @@ void wallet2::refresh(uint64_t start_height, uint64_t & blocks_fetched, bool& re // and then fall through to regular refresh processing } - if(!(m_refresh_from_block_height >= daemon_bc_height)) - { - pull_blocks(start_height, blocks_start_height, short_chain_history, blocks, o_indices); - // always reset start_height to 0 to force short_chain_ history to be used on - // subsequent pulls in this refresh. - start_height = 0; + pull_blocks(start_height, blocks_start_height, short_chain_history, blocks, o_indices); + // always reset start_height to 0 to force short_chain_ history to be used on + // subsequent pulls in this refresh. + start_height = 0; - while(m_run.load(std::memory_order_relaxed)) + while(m_run.load(std::memory_order_relaxed)) + { + try { - try - { - // pull the next set of blocks while we're processing the current one - uint64_t next_blocks_start_height; - std::list<cryptonote::block_complete_entry> next_blocks; - std::vector<cryptonote::COMMAND_RPC_GET_BLOCKS_FAST::block_output_indices> next_o_indices; - bool error = false; - pull_thread = boost::thread([&]{pull_next_blocks(start_height, next_blocks_start_height, short_chain_history, blocks, next_blocks, next_o_indices, error);}); - - process_blocks(blocks_start_height, blocks, o_indices, added_blocks); - blocks_fetched += added_blocks; - pull_thread.join(); - if(!added_blocks) - break; + // pull the next set of blocks while we're processing the current one + uint64_t next_blocks_start_height; + std::list<cryptonote::block_complete_entry> next_blocks; + std::vector<cryptonote::COMMAND_RPC_GET_BLOCKS_FAST::block_output_indices> next_o_indices; + bool error = false; + pull_thread = boost::thread([&]{pull_next_blocks(start_height, next_blocks_start_height, short_chain_history, blocks, next_blocks, next_o_indices, error);}); + + process_blocks(blocks_start_height, blocks, o_indices, added_blocks); + blocks_fetched += added_blocks; + pull_thread.join(); + if(!added_blocks) + break; - // switch to the new blocks from the daemon - blocks_start_height = next_blocks_start_height; - blocks = next_blocks; - o_indices = next_o_indices; + // switch to the new blocks from the daemon + blocks_start_height = next_blocks_start_height; + blocks = next_blocks; + o_indices = next_o_indices; - // handle error from async fetching thread - if (error) - { - throw std::runtime_error("proxy exception in refresh thread"); - } + // handle error from async fetching thread + if (error) + { + throw std::runtime_error("proxy exception in refresh thread"); } - catch (const std::exception&) + } + catch (const std::exception&) + { + blocks_fetched += added_blocks; + if (pull_thread.joinable()) + pull_thread.join(); + if(try_count < 3) { - blocks_fetched += added_blocks; - if (pull_thread.joinable()) - pull_thread.join(); - if(try_count < 3) - { - LOG_PRINT_L1("Another try pull_blocks (try_count=" << try_count << ")..."); - ++try_count; - } - else - { - LOG_ERROR("pull_blocks failed, try_count=" << try_count); - throw; - } + LOG_PRINT_L1("Another try pull_blocks (try_count=" << try_count << ")..."); + ++try_count; + } + else + { + LOG_ERROR("pull_blocks failed, try_count=" << try_count); + throw; } } } @@ -3623,7 +3599,7 @@ void wallet2::transfer_selected(const std::vector<cryptonote::tx_destination_ent real_oe.second.dest = rct::pk2rct(boost::get<txout_to_key>(td.m_tx.vout[td.m_internal_output_index].target).key); real_oe.second.mask = rct::commit(td.amount(), td.m_mask); *it_to_replace = real_oe; - src.real_out_tx_key = get_tx_pub_key_from_extra(td.m_tx); + src.real_out_tx_key = get_tx_pub_key_from_extra(td.m_tx, td.m_pk_index); src.real_output = it_to_replace - src.outputs.begin(); src.real_output_in_tx_index = td.m_internal_output_index; detail::print_source_entry(src); @@ -3699,6 +3675,9 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry uint64_t upper_transaction_size_limit = get_upper_tranaction_size_limit(); uint64_t needed_money = fee; LOG_PRINT_L2("transfer: starting with fee " << print_money (needed_money)); + LOG_PRINT_L0("selected transfers: "); + for (auto t: selected_transfers) + LOG_PRINT_L2(" " << t); // calculate total amount being sent to all destinations // throw if total amount overflows uint64_t @@ -3759,7 +3738,7 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry real_oe.second.dest = rct::pk2rct(boost::get<txout_to_key>(td.m_tx.vout[td.m_internal_output_index].target).key); real_oe.second.mask = rct::commit(td.amount(), td.m_mask); *it_to_replace = real_oe; - src.real_out_tx_key = get_tx_pub_key_from_extra(td.m_tx); + src.real_out_tx_key = get_tx_pub_key_from_extra(td.m_tx, td.m_pk_index); src.real_output = it_to_replace - src.outputs.begin(); src.real_output_in_tx_index = td.m_internal_output_index; src.mask = td.m_mask; @@ -3770,12 +3749,22 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry // we still keep a copy, since we want to keep dsts free of change for user feedback purposes std::vector<cryptonote::tx_destination_entry> splitted_dsts = dsts; cryptonote::tx_destination_entry change_dts = AUTO_VAL_INIT(change_dts); - if (needed_money < found_money) + change_dts.amount = found_money - needed_money; + if (change_dts.amount == 0) + { + // If the change is 0, send it to a random address, to avoid confusing + // the sender with a 0 amount output. We send a 0 amount in order to avoid + // letting the destination be able to work out which of the inputs is the + // real one in our rings + cryptonote::account_base dummy; + dummy.generate(); + change_dts.addr = dummy.get_keys().m_account_address; + } + else { change_dts.addr = m_account.get_keys().m_account_address; - change_dts.amount = found_money - needed_money; - splitted_dsts.push_back(change_dts); } + splitted_dsts.push_back(change_dts); crypto::secret_key tx_key; bool r = cryptonote::construct_tx_and_get_tx_key(m_account.get_keys(), sources, splitted_dsts, extra, tx, unlock_time, tx_key, true); diff --git a/src/wallet/wallet2.h b/src/wallet/wallet2.h index dcb6367d1..616b74edb 100644 --- a/src/wallet/wallet2.h +++ b/src/wallet/wallet2.h @@ -129,6 +129,7 @@ namespace tools uint64_t m_amount; bool m_rct; bool m_key_image_known; + size_t m_pk_index; bool is_rct() const { return m_rct; } uint64_t amount() const { return m_amount; } @@ -147,6 +148,7 @@ namespace tools FIELD(m_amount) FIELD(m_rct) FIELD(m_key_image_known) + FIELD(m_pk_index) END_SERIALIZE() }; @@ -644,7 +646,7 @@ namespace tools }; } BOOST_CLASS_VERSION(tools::wallet2, 15) -BOOST_CLASS_VERSION(tools::wallet2::transfer_details, 6) +BOOST_CLASS_VERSION(tools::wallet2::transfer_details, 7) BOOST_CLASS_VERSION(tools::wallet2::payment_details, 1) BOOST_CLASS_VERSION(tools::wallet2::unconfirmed_transfer_details, 6) BOOST_CLASS_VERSION(tools::wallet2::confirmed_transfer_details, 3) @@ -677,6 +679,10 @@ namespace boost { x.m_key_image_known = true; } + if (ver < 7) + { + x.m_pk_index = 0; + } } template <class Archive> @@ -738,6 +744,12 @@ namespace boost return; } a & x.m_key_image_known; + if (ver < 7) + { + initialize_transfer_details(a, x, ver); + return; + } + a & x.m_pk_index; } template <class Archive> diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp index 5352b0b73..7c08bbe4b 100644 --- a/src/wallet/wallet_rpc_server.cpp +++ b/src/wallet/wallet_rpc_server.cpp @@ -27,6 +27,7 @@ // THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // // Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers +#include <boost/asio/ip/address.hpp> #include <cstdint> #include "include_base_utils.h" using namespace epee; @@ -47,6 +48,8 @@ namespace const command_line::arg_descriptor<std::string, true> arg_rpc_bind_port = {"rpc-bind-port", "Sets bind port for server"}; const command_line::arg_descriptor<std::string> arg_rpc_bind_ip = {"rpc-bind-ip", "Specify ip to bind rpc server", "127.0.0.1"}; const command_line::arg_descriptor<std::string> arg_user_agent = {"user-agent", "Restrict RPC to clients using this user agent", ""}; + + const command_line::arg_descriptor<bool> arg_confirm_external_bind = {"confirm-external-bind", "Confirm rcp-bind-ip value is NOT a loopback (local) IP"}; } namespace tools @@ -84,20 +87,35 @@ namespace tools return epee::http_server_impl_base<wallet_rpc_server, connection_context>::run(1, true); } //------------------------------------------------------------------------------------------------------------------------------ - bool wallet_rpc_server::handle_command_line(const boost::program_options::variables_map& vm) - { - m_bind_ip = command_line::get_arg(vm, arg_rpc_bind_ip); - m_port = command_line::get_arg(vm, arg_rpc_bind_port); - m_user_agent = command_line::get_arg(vm, arg_user_agent); - return true; - } - //------------------------------------------------------------------------------------------------------------------------------ bool wallet_rpc_server::init(const boost::program_options::variables_map& vm) { + std::string bind_ip = command_line::get_arg(vm, arg_rpc_bind_ip); + if (!bind_ip.empty()) + { + // always parse IP here for error consistency + boost::system::error_code ec{}; + const auto parsed_ip = boost::asio::ip::address::from_string(bind_ip, ec); + if (ec) + { + LOG_ERROR(tr("Invalid IP address given for rpc-bind-ip argument")); + return false; + } + + if (!parsed_ip.is_loopback() && !command_line::get_arg(vm, arg_confirm_external_bind)) + { + LOG_ERROR( + tr("The rpc-bind-ip value is listening for unencrypted external connections. Consider SSH tunnel or SSL proxy instead. Override with --confirm-external-bind") + ); + return false; + } + } + m_net_server.set_threads_prefix("RPC"); - bool r = handle_command_line(vm); - CHECK_AND_ASSERT_MES(r, false, "Failed to process command line in core_rpc_server"); - return epee::http_server_impl_base<wallet_rpc_server, connection_context>::init(m_port, m_bind_ip, m_user_agent); + return epee::http_server_impl_base<wallet_rpc_server, connection_context>::init( + command_line::get_arg(vm, arg_rpc_bind_port), + std::move(bind_ip), + command_line::get_arg(vm, arg_user_agent) + ); } //------------------------------------------------------------------------------------------------------------------------------ bool wallet_rpc_server::on_getbalance(const wallet_rpc::COMMAND_RPC_GET_BALANCE::request& req, wallet_rpc::COMMAND_RPC_GET_BALANCE::response& res, epee::json_rpc::error& er) @@ -1115,6 +1133,7 @@ int main(int argc, char** argv) { command_line::add_arg(desc_params, arg_rpc_bind_ip); command_line::add_arg(desc_params, arg_rpc_bind_port); command_line::add_arg(desc_params, arg_user_agent); + command_line::add_arg(desc_params, arg_confirm_external_bind); command_line::add_arg(desc_params, arg_wallet_file); command_line::add_arg(desc_params, arg_from_json); diff --git a/src/wallet/wallet_rpc_server.h b/src/wallet/wallet_rpc_server.h index 7d6f94e56..96ca1af04 100644 --- a/src/wallet/wallet_rpc_server.h +++ b/src/wallet/wallet_rpc_server.h @@ -118,9 +118,6 @@ namespace tools bool on_query_key(const wallet_rpc::COMMAND_RPC_QUERY_KEY::request& req, wallet_rpc::COMMAND_RPC_QUERY_KEY::response& res, epee::json_rpc::error& er); wallet2& m_wallet; - std::string m_port; - std::string m_bind_ip; - std::string m_user_agent; std::atomic<bool> m_stop; }; } diff --git a/tests/unit_tests/ringct.cpp b/tests/unit_tests/ringct.cpp index 1abf2511d..f6409d1ae 100644 --- a/tests/unit_tests/ringct.cpp +++ b/tests/unit_tests/ringct.cpp @@ -40,29 +40,12 @@ using namespace crypto; using namespace rct; -TEST(ringct, SNL) -{ - key x, P1; - skpkGen(x, P1); - - key P2 = pkGen(); - key P3 = pkGen(); - - key L1, s1, s2; - GenSchnorrNonLinkable(L1, s1, s2, x, P1, P2, 0); - - // a valid one - // an invalid one - ASSERT_TRUE(VerSchnorrNonLinkable(P1, P2, L1, s1, s2)); - ASSERT_FALSE(VerSchnorrNonLinkable(P1, P3, L1, s1, s2)); -} - -TEST(ringct, ASNL) +TEST(ringct, Borromean) { int j = 0; - //Tests for ASNL - //#ASNL true one, false one, C != sum Ci, and one out of the range.. + //Tests for Borromean signatures + //#boro true one, false one, C != sum Ci, and one out of the range.. int N = 64; key64 xv; key64 P1v; @@ -74,34 +57,30 @@ TEST(ringct, ASNL) xv[j] = skGen(); if ( (int)indi[j] == 0 ) { - P1v[j] = scalarmultBase(xv[j]); - P2v[j] = pkGen(); - + scalarmultBase(P1v[j], xv[j]); } else { - - P2v[j] = scalarmultBase(xv[j]); - P1v[j] = pkGen(); - + addKeys1(P1v[j], xv[j], H2[j]); } + subKeys(P2v[j], P1v[j], H2[j]); } //#true one - asnlSig L1s2s = GenASNL(xv, P1v, P2v, indi); - ASSERT_TRUE(VerASNL(P1v, P2v, L1s2s)); + boroSig bb = genBorromean(xv, P1v, P2v, indi); + ASSERT_TRUE(verifyBorromean(bb, P1v, P2v)); //#false one indi[3] = (indi[3] + 1) % 2; - L1s2s = GenASNL(xv, P1v, P2v, indi); - ASSERT_FALSE(VerASNL(P1v, P2v, L1s2s)); + bb = genBorromean(xv, P1v, P2v, indi); + ASSERT_FALSE(verifyBorromean(bb, P1v, P2v)); //#true one again indi[3] = (indi[3] + 1) % 2; - L1s2s = GenASNL(xv, P1v, P2v, indi); - ASSERT_TRUE(VerASNL(P1v, P2v, L1s2s)); + bb = genBorromean(xv, P1v, P2v, indi); + ASSERT_TRUE(verifyBorromean(bb, P1v, P2v)); //#false one - L1s2s = GenASNL(xv, P2v, P1v, indi); - ASSERT_FALSE(VerASNL(P1v, P2v, L1s2s)); + bb = genBorromean(xv, P2v, P1v, indi); + ASSERT_FALSE(verifyBorromean(bb, P1v, P2v)); } TEST(ringct, MG_sigs) diff --git a/tests/unit_tests/serialization.cpp b/tests/unit_tests/serialization.cpp index b592f456b..f8afb2e94 100644 --- a/tests/unit_tests/serialization.cpp +++ b/tests/unit_tests/serialization.cpp @@ -457,7 +457,7 @@ TEST(Serialization, serializes_ringct_types) rct::ctkeyV ctkeyv0, ctkeyv1; rct::ctkeyM ctkeym0, ctkeym1; rct::ecdhTuple ecdh0, ecdh1; - rct::asnlSig asnl0, asnl1; + rct::boroSig boro0, boro1; rct::mgSig mg0, mg1; rct::rangeSig rg0, rg1; rct::rctSig s0, s1; @@ -541,13 +541,13 @@ TEST(Serialization, serializes_ringct_types) for (size_t n = 0; n < 64; ++n) { - asnl0.L1[n] = rct::skGen(); - asnl0.s2[n] = rct::skGen(); + boro0.s0[n] = rct::skGen(); + boro0.s1[n] = rct::skGen(); } - asnl0.s = rct::skGen(); - ASSERT_TRUE(serialization::dump_binary(asnl0, blob)); - ASSERT_TRUE(serialization::parse_binary(blob, asnl1)); - ASSERT_TRUE(!memcmp(&asnl0, &asnl1, sizeof(asnl0))); + boro0.ee = rct::skGen(); + ASSERT_TRUE(serialization::dump_binary(boro0, blob)); + ASSERT_TRUE(serialization::parse_binary(blob, boro1)); + ASSERT_TRUE(!memcmp(&boro0, &boro1, sizeof(boro0))); // create a full rct signature to use its innards rct::ctkeyV sc, pc; diff --git a/translations/monero.ts b/translations/monero.ts index 0dcb09d06..f38564244 100644 --- a/translations/monero.ts +++ b/translations/monero.ts @@ -32,109 +32,114 @@ <context> <name>Bitmonero::WalletImpl</name> <message> - <location filename="../src/wallet/api/wallet.cpp" line="604"/> + <location filename="../src/wallet/api/wallet.cpp" line="609"/> <source>payment id has invalid format, expected 16 or 64 character hex string: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="629"/> - <location filename="../src/wallet/api/wallet.cpp" line="723"/> + <location filename="../src/wallet/api/wallet.cpp" line="619"/> + <source>Failed to add short payment id: </source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/wallet/api/wallet.cpp" line="645"/> + <location filename="../src/wallet/api/wallet.cpp" line="739"/> <source>daemon is busy. Please try again later.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="632"/> - <location filename="../src/wallet/api/wallet.cpp" line="726"/> + <location filename="../src/wallet/api/wallet.cpp" line="648"/> + <location filename="../src/wallet/api/wallet.cpp" line="742"/> <source>no connection to daemon. Please make sure daemon is running.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="635"/> - <location filename="../src/wallet/api/wallet.cpp" line="729"/> + <location filename="../src/wallet/api/wallet.cpp" line="651"/> + <location filename="../src/wallet/api/wallet.cpp" line="745"/> <source>RPC error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="638"/> - <location filename="../src/wallet/api/wallet.cpp" line="732"/> + <location filename="../src/wallet/api/wallet.cpp" line="654"/> + <location filename="../src/wallet/api/wallet.cpp" line="748"/> <source>failed to get random outputs to mix</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="645"/> - <location filename="../src/wallet/api/wallet.cpp" line="739"/> + <location filename="../src/wallet/api/wallet.cpp" line="661"/> + <location filename="../src/wallet/api/wallet.cpp" line="755"/> <source>not enough money to transfer, available only %s, sent amount %s</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="654"/> - <location filename="../src/wallet/api/wallet.cpp" line="748"/> + <location filename="../src/wallet/api/wallet.cpp" line="670"/> + <location filename="../src/wallet/api/wallet.cpp" line="764"/> <source>not enough money to transfer, available only %s, transaction amount %s = %s + %s (fee)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="663"/> - <location filename="../src/wallet/api/wallet.cpp" line="757"/> + <location filename="../src/wallet/api/wallet.cpp" line="679"/> + <location filename="../src/wallet/api/wallet.cpp" line="773"/> <source>not enough outputs for specified mixin_count</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="665"/> - <location filename="../src/wallet/api/wallet.cpp" line="759"/> + <location filename="../src/wallet/api/wallet.cpp" line="681"/> + <location filename="../src/wallet/api/wallet.cpp" line="775"/> <source>output amount</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="665"/> - <location filename="../src/wallet/api/wallet.cpp" line="759"/> + <location filename="../src/wallet/api/wallet.cpp" line="681"/> + <location filename="../src/wallet/api/wallet.cpp" line="775"/> <source>found outputs to mix</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="670"/> - <location filename="../src/wallet/api/wallet.cpp" line="764"/> + <location filename="../src/wallet/api/wallet.cpp" line="686"/> + <location filename="../src/wallet/api/wallet.cpp" line="780"/> <source>transaction was not constructed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="674"/> - <location filename="../src/wallet/api/wallet.cpp" line="768"/> + <location filename="../src/wallet/api/wallet.cpp" line="690"/> + <location filename="../src/wallet/api/wallet.cpp" line="784"/> <source>transaction %s was rejected by daemon with status: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="681"/> - <location filename="../src/wallet/api/wallet.cpp" line="775"/> + <location filename="../src/wallet/api/wallet.cpp" line="697"/> + <location filename="../src/wallet/api/wallet.cpp" line="791"/> <source>one of destinations is zero</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="684"/> - <location filename="../src/wallet/api/wallet.cpp" line="778"/> + <location filename="../src/wallet/api/wallet.cpp" line="700"/> + <location filename="../src/wallet/api/wallet.cpp" line="794"/> <source>failed to find a suitable way to split transactions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="687"/> - <location filename="../src/wallet/api/wallet.cpp" line="781"/> + <location filename="../src/wallet/api/wallet.cpp" line="703"/> + <location filename="../src/wallet/api/wallet.cpp" line="797"/> <source>unknown transfer error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="690"/> - <location filename="../src/wallet/api/wallet.cpp" line="784"/> + <location filename="../src/wallet/api/wallet.cpp" line="706"/> + <location filename="../src/wallet/api/wallet.cpp" line="800"/> <source>internal error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="693"/> - <location filename="../src/wallet/api/wallet.cpp" line="787"/> + <location filename="../src/wallet/api/wallet.cpp" line="709"/> + <location filename="../src/wallet/api/wallet.cpp" line="803"/> <source>unexpected error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet.cpp" line="696"/> - <location filename="../src/wallet/api/wallet.cpp" line="790"/> + <location filename="../src/wallet/api/wallet.cpp" line="712"/> + <location filename="../src/wallet/api/wallet.cpp" line="806"/> <source>unknown error</source> <translation type="unfinished"></translation> </message> @@ -142,63 +147,63 @@ <context> <name>Bitmonero::WalletManagerImpl</name> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="144"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="161"/> <source>failed to parse txid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="151"/> - <location filename="../src/wallet/api/wallet_manager.cpp" line="158"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="168"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="175"/> <source>failed to parse tx key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="169"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="186"/> <source>failed to parse address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="180"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="197"/> <source>failed to get transaction from daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="191"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="208"/> <source>failed to parse transaction from daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="198"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="215"/> <source>failed to validate transaction from daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="203"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="220"/> <source>failed to get the right transaction from daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="210"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="227"/> <source>failed to generate key derivation from supplied parameters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="266"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="283"/> <source>error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="272"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="289"/> <source>received</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="272"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="289"/> <source>in txid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/api/wallet_manager.cpp" line="276"/> + <location filename="../src/wallet/api/wallet_manager.cpp" line="293"/> <source>received nothing in txid</source> <translation type="unfinished"></translation> </message> @@ -214,628 +219,624 @@ <context> <name>cryptonote::simple_wallet</name> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="272"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="276"/> <source>Commands: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="350"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="377"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="407"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="453"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="515"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="551"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="588"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="618"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1492"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1499"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="354"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="381"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="411"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="457"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="519"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="555"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="592"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="622"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1495"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1502"/> <source>failed to read wallet password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="358"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="385"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="415"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="461"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="523"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="559"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="596"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="626"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="362"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="389"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="419"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="465"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="527"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="563"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="600"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="630"/> <source>invalid password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="649"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="653"/> <source>start_mining [<number_of_threads>] - Start mining in daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="650"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="654"/> <source>Stop mining in daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="651"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="655"/> <source>Save current blockchain data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="653"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="657"/> <source>Show current wallet balance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="656"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="660"/> <source>Show blockchain height</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="665"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="669"/> <source>Show current wallet public address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="687"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="691"/> <source>Show this help</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="710"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="714"/> <source>set seed: needs an argument. available options: language</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="725"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="729"/> <source>set always-confirm-transfers: needs an argument (0 or 1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="828"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="832"/> <source>set: unrecognized argument(s)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="843"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="847"/> <source>wrong number format, use: set_log <log_level_number_0-4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="848"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="852"/> <source>wrong number range, use: set_log <log_level_number_0-4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1375"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1378"/> <source>wallet file path not valid: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="890"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="894"/> <source>Attempting to generate or restore wallet, but specified file(s) exist. Exiting to not risk overwriting.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="939"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="943"/> <source>PLEASE NOTE: the following 25 words can be used to recover access to your wallet. Please write them down and store them somewhere safe and secure. Please do not store them in your email or on file storage services outside of your immediate control. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="982"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="986"/> <source>specify a recovery parameter with the --electrum-seed="words list here"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1196"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1200"/> <source>wallet failed to connect to daemon: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1224"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1208"/> + <source>Daemon uses a different RPC major version (%u) than the wallet (%u): %s. Either update one of them, or use --allow-mismatched-daemon-version.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/simplewallet/simplewallet.cpp" line="1227"/> <source>List of available languages for your wallet's seed:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1233"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1236"/> <source>Enter the number corresponding to the language of your choice: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1277"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1280"/> <source>You had been using a deprecated version of the wallet. Please use the new seed that we provide. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1301"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1358"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1304"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1361"/> <source>Generated new wallet: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1307"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1363"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1310"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1366"/> <source>failed to generate new wallet: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1390"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1393"/> <source>Opened watch-only wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1390"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1393"/> <source>Opened wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1399"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1402"/> <source>You had been using a deprecated version of the wallet. Please proceed to upgrade your wallet. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1414"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1417"/> <source>You had been using a deprecated version of the wallet. Your wallet file format is being upgraded now. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1422"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1425"/> <source>failed to load wallet: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1430"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1433"/> <source>Use "help" command to see the list of available commands. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1474"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1477"/> <source>Wallet data saved</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1489"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1492"/> <source>Password for the new watch-only wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1496"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1499"/> <source>Enter new password again</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1504"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1507"/> <source>passwords do not match</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1548"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1551"/> <source>invalid arguments. Please use start_mining [<number_of_threads>], <number_of_threads> should be from 1 to </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1557"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1560"/> <source>Mining started in daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1559"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1562"/> <source>mining has NOT been started: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1574"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1577"/> <source>Mining stopped in daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1576"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1579"/> <source>mining has NOT been stopped: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1591"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1594"/> <source>Blockchain saved</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1606"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1618"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1630"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1609"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1621"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1633"/> <source>Height </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1607"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1619"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1631"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1610"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1622"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1634"/> <source>transaction </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1608"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1611"/> <source>received </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1620"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1623"/> <source>spent </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1632"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1635"/> <source>unsupported transaction format</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1649"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1652"/> <source>Starting refresh...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1662"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1665"/> <source>Refresh done, blocks received: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1982"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1985"/> <source>you have cancelled the transfer request</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1988"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1991"/> <source>failed to get a Monero address from: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1994"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1997"/> <source>not yet supported: Multiple Monero addresses found for given URL: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1999"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2002"/> <source>wrong address: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2067"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2572"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2070"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2575"/> <source>payment id has invalid format, expected 16 or 64 character hex string: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2082"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2085"/> <source>bad locked_blocks parameter:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2087"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2090"/> <source>Locked blocks too high, max 1000000 (˜4 yrs)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2106"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2594"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2109"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2597"/> <source>a single transaction cannot use more than one payment id: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2115"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2603"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2118"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2606"/> <source>failed to set up payment id, though it was decoded correctly</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2135"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2612"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2138"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2615"/> <source>No payment id is included with this transaction. Is this okay? (Y/Yes/N/No)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2140"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2224"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2403"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2617"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2662"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2967"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2143"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2227"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2406"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2620"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2665"/> <source>transaction cancelled.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2197"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2945"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2200"/> <source>Sending %s. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2200"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2948"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2203"/> <source>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</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2206"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2954"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2209"/> <source>The transaction fee is %s</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2209"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2957"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2212"/> <source>, of which %s is dust from change</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2210"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2217"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2958"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2960"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2213"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2220"/> <source>.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2210"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2958"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2213"/> <source>A total of %s from dust change will be sent to dust address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2215"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2218"/> <source>. This transaction will unlock on block %llu, in approximately %s days (assuming 2 minutes per block)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2217"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2960"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2220"/> <source>Is this okay? (Y/Yes/N/No)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2238"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2416"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2675"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2241"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2419"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2678"/> <source>Failed to write transaction(s) to file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2242"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2420"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2679"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2245"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2423"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2682"/> <source>Unsigned transaction(s) successfully written to file: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2277"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2455"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2714"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3008"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2280"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2458"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2717"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2960"/> <source>Not enough money in unlocked balance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2286"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2464"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2723"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3017"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2289"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2467"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2726"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2969"/> <source>Failed to find a way to create transactions. This is usually due to dust which is so small it cannot pay for itself in fees, or trying to send more money than the unlocked balance, or not leaving enough for fees</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2306"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2484"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2743"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2309"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2487"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2746"/> <source>Reason: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2318"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2496"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2755"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2321"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2499"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2758"/> <source>failed to find a suitable way to split transactions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2373"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2376"/> <source>No unmixable outputs found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2580"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2583"/> <source>No address given</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2632"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2635"/> <source>No outputs found</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2814"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2817"/> <source>Claimed change does not go to a paid address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2819"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2822"/> <source>Claimed change is larger than payment to the change address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2824"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2827"/> <source>Change does to more than one address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2836"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2839"/> <source>sending %s to %s</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2842"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2845"/> <source>with no destinations</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2888"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2891"/> <source>Failed to sign transaction</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2894"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2897"/> <source>Failed to sign transaction: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2920"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2923"/> <source>Failed to load transaction from file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2988"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2940"/> <source>daemon is busy. Please try later</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1676"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1922"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2266"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2444"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2703"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2997"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1679"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1925"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2269"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2447"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2706"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2949"/> <source>RPC error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1686"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2328"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2506"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2765"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3056"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1689"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2331"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2509"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2768"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3008"/> <source>internal error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1691"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1927"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2333"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2511"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2770"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3061"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1694"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1930"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2336"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2514"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2773"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3013"/> <source>unexpected error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1696"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1932"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2338"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2516"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2775"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3066"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1699"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1935"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2341"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2519"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2778"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3018"/> <source>unknown error</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1701"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1704"/> <source>refresh failed: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1701"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1704"/> <source>Blocks received: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1726"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1729"/> <source>unlocked balance: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1775"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1823"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1778"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1826"/> <source>amount</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1775"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1778"/> <source>spent</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1775"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1778"/> <source>global index</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1775"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1778"/> <source>tx id</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1797"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1800"/> <source>No incoming transfers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1801"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1804"/> <source>No incoming available transfers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1805"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1808"/> <source>No incoming unavailable transfers</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1816"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1819"/> <source>expected at least one payment_id</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1823"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1826"/> <source>payment</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1823"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1826"/> <source>transaction</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1823"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1826"/> <source>height</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1823"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1826"/> <source>unlock time</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1835"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1838"/> <source>No payments with id </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1887"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2160"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1890"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2163"/> <source>failed to get blockchain height: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2033"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2036"/> <source>wrong number of arguments</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2878"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2881"/> <source>This is a watch only wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1960"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1963"/> <source>DNSSEC validation passed</source> <translation type="unfinished"></translation> </message> @@ -850,409 +851,399 @@ This transaction will unlock on block %llu, in approximately %s days (assuming 2 <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="305"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="337"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="309"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="341"/> <source>wallet is watch-only and has no seed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="327"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="342"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="331"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="346"/> <source>wallet is non-deterministic and has no seed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="399"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="429"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="487"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="611"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="403"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="433"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="491"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="615"/> <source>wallet is watch-only and cannot transfer</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="436"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="442"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="471"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="440"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="446"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="475"/> <source>mixin must be an integer >= 2</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="476"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="480"/> <source>could not change default mixin</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="494"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="498"/> <source>priority must be 0, 1, 2, or 3 </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="506"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="510"/> <source>priority must be 0, 1, 2, or 3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="533"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="537"/> <source>priority must be 0, 1, 2 or 3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="538"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="542"/> <source>could not change default priority</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="652"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="656"/> <source>Synchronize transactions and balance</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="654"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="658"/> <source>incoming_transfers [available|unavailable] - Show incoming transfers, all or filtered by availability</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="655"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="659"/> <source>payments <PID_1> [<PID_2> ... <PID_N>] - Show payments for given payment ID[s]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="657"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="661"/> <source>transfer [<mixin_count>] <addr_1> <amount_1> [<addr_2> <amount_2> ... <addr_N> <amount_N>] [payment_id] - Transfer <amount_1>,... <amount_N> to <address_1>,... <address_N>, respectively. <mixin_count> is the number of extra inputs to include for untraceability (from 2 to maximum available)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="658"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="662"/> <source>Same as transfer_original, but using a new transaction building algorithm</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="659"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="663"/> <source>locked_transfer [<mixin_count>] <addr> <amount> <lockblocks>(Number of blocks to lock the transaction for, max 1000000) [<payment_id>]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="660"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="664"/> <source>Send all unmixable outputs to yourself with mixin 0</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="661"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="665"/> <source>sweep_all [mixin] address [payment_id] - Send all unlocked balance an address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="662"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="666"/> <source>Sign a transaction from a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="663"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="667"/> <source>Submit a signed transaction from a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="664"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="668"/> <source>set_log <level> - Change current log detail level, <0-4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="666"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="670"/> <source>integrated_address [PID] - Encode a payment ID into an integrated address for the current wallet public address (no argument uses a random payment ID), or decode an integrated address to standard address and payment ID</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="667"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="671"/> <source>Save wallet data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="668"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="672"/> <source>Save a watch-only keys file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="669"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="673"/> <source>Display private view key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="670"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="674"/> <source>Display private spend key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="671"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="675"/> <source>Display Electrum-style mnemonic seed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="672"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="676"/> <source>Available options: seed language - set wallet seed language; always-confirm-transfers <1|0> - whether to confirm unsplit txes; store-tx-info <1|0> - whether to store outgoing tx info (destination address, payment ID, tx secret key) for future reference; default-mixin <n> - set default mixin (default is 4); auto-refresh <1|0> - whether to automatically sync new blocks from the daemon; refresh-type <full|optimize-coinbase|no-coinbase|default> - set wallet refresh behaviour; priority [1|2|3] - normal/elevated/priority fee; confirm-missing-payment-id <1|0></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="673"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="677"/> <source>Rescan blockchain for spent outputs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="674"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="678"/> <source>Get transaction key (r) for a given <txid></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="675"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="679"/> <source>Check amount going to <address> in <txid></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="676"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="680"/> <source>show_transfers [in|out] [<min_height> [<max_height>]] - Show incoming/outgoing transfers within an optional height range</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="677"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="681"/> <source>Rescan blockchain from scratch</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="678"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="682"/> <source>Set an arbitrary string note for a txid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="679"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="683"/> <source>Get a string note for a txid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="680"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="684"/> <source>Show wallet status information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="681"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="685"/> <source>Sign the contents of a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="682"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="686"/> <source>Verify a signature on the contents of a file</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="683"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="687"/> <source>Export a signed set of key images</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="684"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="688"/> <source>Import signed key images list and verify their spent status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="685"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="689"/> <source>Export a set of outputs owned by this wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="686"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="690"/> <source>Import set of outputs owned by this wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="740"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="744"/> <source>set store-tx-info: needs an argument (0 or 1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="755"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="759"/> <source>set default-mixin: needs an argument (integer >= 2)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="770"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="774"/> <source>set auto-refresh: needs an argument (0 or 1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="785"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="789"/> <source>set refresh-type: needs an argument:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="786"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="790"/> <source>full (slowest, no assumptions); optimize-coinbase (fast, assumes the whole coinbase is paid to a single address); no-coinbase (fastest, assumes we receive no coinbase transaction), default (same as optimize-coinbase)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="801"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="805"/> <source>set priority: needs an argument: 0, 1, 2, or 3</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="816"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="820"/> <source>set confirm-missing-payment-id: needs an argument (0 or 1)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="837"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="841"/> <source>usage: set_log <log_level_number_0-4></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="868"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="872"/> <source>Specify wallet file name (e.g., MyWallet). If the wallet doesn't exist, it will be created. Wallet file name (or Ctrl-C to quit): </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="878"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="882"/> <source>Wallet name not valid. Please try again or use Ctrl-C to quit.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="895"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="899"/> <source>Wallet and key files found, loading...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="901"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="905"/> <source>Key file found but not wallet file. Regenerating...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="907"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="911"/> <source>Key file not found. Failed to open wallet: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="912"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="916"/> <source>No wallet/key file found with that name. Confirm creation of new wallet named: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="913"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="917"/> <source>(y)es/(n)o: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="921"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="925"/> <source>Generating new wallet...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="955"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="959"/> <source>can't specify more than one of --generate-new-wallet="wallet_name", --wallet-file="wallet_name", --generate-from-view-key="wallet_name", --generate-from-json="jsonfilename" and --generate-from-keys="wallet_name"</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="971"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="975"/> <source>can't specify both --restore-deterministic-wallet and --non-deterministic</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="989"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="993"/> <source>Electrum-style word list failed verification</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1004"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1008"/> <source>bad m_restore_height parameter:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1017"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1034"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1069"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1086"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1102"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1021"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1038"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1073"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1090"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1106"/> <source>No data supplied, cancelled</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1025"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1077"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3147"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3685"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1029"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1081"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3099"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3639"/> <source>failed to parse address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1040"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1108"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1044"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1112"/> <source>failed to parse view key secret key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1050"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1126"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1054"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1130"/> <source>failed to verify view key secret key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1054"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1130"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1058"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1134"/> <source>view key does not match standard address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1059"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1134"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1147"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1063"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1138"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1151"/> <source>account creation failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1092"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1096"/> <source>failed to parse spend key secret key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1118"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1122"/> <source>failed to verify spend key secret key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1122"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1126"/> <source>spend key does not match standard address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1154"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1158"/> <source>failed to open account</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1197"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1201"/> <source>Daemon either is not started or wrong port was passed. Please make sure daemon is running or restart the wallet with the correct daemon address.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1204"/> - <source>Daemon uses a different RPC version that the wallet: </source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1205"/> - <source>Either update one of them, or use --allow-mismatched-daemon-version.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1242"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1247"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1245"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1250"/> <source>invalid language choice passed. Please try again. </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1303"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1306"/> <source>View key: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1318"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1321"/> <source>Your wallet has been generated! To start synchronizing with the daemon, use "refresh" command. Use "help" command to see the list of available commands. @@ -1263,509 +1254,509 @@ your wallet again (your wallet keys are NOT at risk in any case). <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1425"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1428"/> <source>You may want to remove the file "%s" and try again</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1451"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1454"/> <source>failed to deinitialize wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1517"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1895"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1520"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1898"/> <source>this command requires a trusted daemon. Enable with --trusted-daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1593"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1596"/> <source>blockchain can't be saved: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1667"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1909"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2257"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2435"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2694"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1670"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1912"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2260"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2438"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2697"/> <source>daemon is busy. Please try again later.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1671"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1913"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2261"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2439"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2698"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1674"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1916"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2264"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2442"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2701"/> <source>no connection to daemon. Please make sure daemon is running.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1681"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1684"/> <source>refresh error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1725"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1728"/> <source>Balance: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1774"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1777"/> <source>pubkey</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1774"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1777"/> <source>key image</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1775"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="1785"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1778"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1788"/> <source>unlocked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1775"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1778"/> <source>ringct</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1784"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1787"/> <source>T</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1784"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1787"/> <source>F</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1785"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1788"/> <source>locked</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1786"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1789"/> <source>RingCT</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1786"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1789"/> <source>-</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1856"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1859"/> <source>payment ID has invalid format, expected 16 or 64 character hex string: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1917"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1920"/> <source>failed to get spent status</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1964"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1967"/> <source>WARNING: DNSSEC validation was unsuccessful, this address may not be correct!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1967"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1970"/> <source>For URL: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1969"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1972"/> <source> Monero Address = </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="1971"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="1974"/> <source>Is this OK? (Y/n) </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3523"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3475"/> <source>usage: integrated_address [payment ID]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3546"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3498"/> <source>Integrated address: account %s, payment ID %s</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3551"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3503"/> <source>Standard address: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3556"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3508"/> <source>failed to parse payment ID or address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3564"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3516"/> <source>usage: set_tx_note [txid] free text note</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3592"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3544"/> <source>usage: get_tx_note [txid]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3640"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3594"/> <source>usage: sign <filename></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3645"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3599"/> <source>wallet is watch-only and cannot sign</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3653"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3676"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3763"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3886"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3607"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3630"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3717"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3840"/> <source>failed to read file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3665"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3619"/> <source>usage: verify <filename> <address> <signature></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3692"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3646"/> <source>Bad signature from </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3696"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3650"/> <source>Good signature from </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3705"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3659"/> <source>usage: export_key_images <filename></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3710"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3664"/> <source>wallet is watch-only and cannot export key images</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3735"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3858"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3689"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3812"/> <source>failed to save file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3746"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3700"/> <source>Signed key images exported to </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3754"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3708"/> <source>usage: import_key_images <filename></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3836"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3790"/> <source>usage: export_outputs <filename></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3869"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3823"/> <source>Outputs exported to </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3877"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3831"/> <source>usage: import_outputs <filename></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2124"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2127"/> <source>amount is wrong: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2125"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2128"/> <source>expected number from 0 to </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2249"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2252"/> <source>Money successfully sent, transaction </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2992"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2944"/> <source>no connection to daemon. Please, make sure daemon is running.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2270"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2448"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2707"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3001"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2273"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2451"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2710"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2953"/> <source>failed to get random outputs to mix</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2291"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2469"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2728"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3022"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2294"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2472"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2731"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2974"/> <source>not enough outputs for specified mixin_count</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2294"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2472"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2731"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3025"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2297"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2475"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2734"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2977"/> <source>output amount</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2294"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2472"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2731"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3025"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2297"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2475"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2734"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2977"/> <source>found outputs to mix</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2299"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2477"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2736"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3030"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2302"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2480"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2739"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2982"/> <source>transaction was not constructed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2303"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2481"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2740"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3034"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2306"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2484"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2743"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2986"/> <source>transaction %s was rejected by daemon with status: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2314"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2492"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2751"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3042"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2317"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2495"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2754"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2994"/> <source>one of destinations is zero</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3046"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2998"/> <source>Failed to find a suitable way to split transactions</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2323"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2501"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2760"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3051"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2326"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2504"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2763"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3003"/> <source>unknown transfer error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2386"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2389"/> <source>Sweeping </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2388"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2647"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2391"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2650"/> <source>Sweeping %s in %llu transactions for a total fee of %s. Is this okay? (Y/Yes/N/No)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2394"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2653"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2397"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2656"/> <source>Sweeping %s for a total fee of %s. Is this okay? (Y/Yes/N/No)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2427"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2686"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="2980"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2430"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2689"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2932"/> <source>Money successfully sent, transaction: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2848"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2851"/> <source>%s change to %s</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2851"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2854"/> <source>no change</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2854"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2857"/> <source>Loaded %lu transactions, for %s, fee %s, %s, %s, with min mixin %lu. %sIs this okay? (Y/Yes/N/No)</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="2905"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="2908"/> <source>Transaction successfully signed to file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3077"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3029"/> <source>usage: get_tx_key <txid></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3084"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3121"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3571"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3599"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3036"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3073"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3523"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3551"/> <source>failed to parse txid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3095"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3047"/> <source>Tx key: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3100"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3052"/> <source>no tx keys found for this txid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3110"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3062"/> <source>usage: check_tx_key <txid> <txkey> <address></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3130"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3137"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3082"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3089"/> <source>failed to parse tx key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3157"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3109"/> <source>failed to get transaction from daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3168"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3120"/> <source>failed to parse transaction from daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3175"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3127"/> <source>failed to validate transaction from daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3180"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3132"/> <source>failed to get the right transaction from daemon</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3187"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3139"/> <source>failed to generate key derivation from supplied parameters</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3243"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3195"/> <source>error: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3249"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3201"/> <source>received</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3249"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3201"/> <source>in txid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3253"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3205"/> <source>received nothing in txid</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3257"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3209"/> <source>WARNING: this transaction is not yet included in the blockchain!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3266"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3218"/> <source>This transaction has %u confirmations</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3270"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3222"/> <source>WARNING: failed to determine number of confirmations!</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3310"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3262"/> <source>usage: show_transfers [in|out|all|pending|failed] [<min_height> [<max_height>]]</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3349"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3301"/> <source>bad min_height parameter:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3361"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3313"/> <source>bad max_height parameter:</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3407"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3359"/> <source>in</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3407"/> - <location filename="../src/simplewallet/simplewallet.cpp" line="3445"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3359"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3397"/> <source>out</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3445"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3397"/> <source>failed</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3445"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3397"/> <source>pending</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3498"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3450"/> <source>wallet</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3529"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3481"/> <source>Random payment ID: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3530"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3482"/> <source>Matching integrated address: </source> <translation type="unfinished"></translation> </message> @@ -1833,7 +1824,7 @@ your wallet again (your wallet keys are NOT at risk in any case). <translation type="unfinished"></translation> </message> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3994"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3948"/> <source>Failed to initialize wallet</source> <translation type="unfinished"></translation> </message> @@ -1891,86 +1882,86 @@ your wallet again (your wallet keys are NOT at risk in any case). <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="207"/> + <location filename="../src/wallet/wallet2.cpp" line="206"/> <source>failed to read wallet password</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="220"/> + <location filename="../src/wallet/wallet2.cpp" line="219"/> <source>Failed to load file </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="226"/> + <location filename="../src/wallet/wallet2.cpp" line="225"/> <source>Failed to parse JSON</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="233"/> + <location filename="../src/wallet/wallet2.cpp" line="232"/> <source>Version %u too new, we can only grok up to %u</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="251"/> + <location filename="../src/wallet/wallet2.cpp" line="250"/> <source>failed to parse view key secret key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="257"/> - <location filename="../src/wallet/wallet2.cpp" line="324"/> - <location filename="../src/wallet/wallet2.cpp" line="366"/> + <location filename="../src/wallet/wallet2.cpp" line="256"/> + <location filename="../src/wallet/wallet2.cpp" line="323"/> + <location filename="../src/wallet/wallet2.cpp" line="365"/> <source>failed to verify view key secret key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="269"/> + <location filename="../src/wallet/wallet2.cpp" line="268"/> <source>failed to parse spend key secret key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="275"/> - <location filename="../src/wallet/wallet2.cpp" line="336"/> - <location filename="../src/wallet/wallet2.cpp" line="387"/> + <location filename="../src/wallet/wallet2.cpp" line="274"/> + <location filename="../src/wallet/wallet2.cpp" line="335"/> + <location filename="../src/wallet/wallet2.cpp" line="386"/> <source>failed to verify spend key secret key</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="288"/> + <location filename="../src/wallet/wallet2.cpp" line="287"/> <source>Electrum-style word list failed verification</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="299"/> + <location filename="../src/wallet/wallet2.cpp" line="298"/> <source>At least one of Electrum-style word list and private view key must be specified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="304"/> + <location filename="../src/wallet/wallet2.cpp" line="303"/> <source>Both Electrum-style word list and private key(s) specified</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="317"/> + <location filename="../src/wallet/wallet2.cpp" line="316"/> <source>invalid address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="328"/> + <location filename="../src/wallet/wallet2.cpp" line="327"/> <source>view key does not match standard address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="340"/> + <location filename="../src/wallet/wallet2.cpp" line="339"/> <source>spend key does not match standard address</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="349"/> + <location filename="../src/wallet/wallet2.cpp" line="348"/> <source>Cannot create deprecated wallets from JSON</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet2.cpp" line="396"/> + <location filename="../src/wallet/wallet2.cpp" line="395"/> <source>failed to generate new wallet: </source> <translation type="unfinished"></translation> </message> @@ -1978,59 +1969,69 @@ your wallet again (your wallet keys are NOT at risk in any case). <context> <name>tools::wallet_rpc_server</name> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1115"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="100"/> + <source>Invalid IP address given for rpc-bind-ip argument</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="107"/> + <source>The rpc-bind-ip value is listening for unencrypted external connections. Consider SSH tunnel or SSL proxy instead. Override with --confirm-external-bind</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1161"/> <source>Can't specify more than one of --wallet-file and --generate-from-json</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1121"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1167"/> <source>Must specify --wallet-file or --generate-from-json</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1125"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1171"/> <source>Loading wallet...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1150"/> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1173"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1196"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1219"/> <source>Storing wallet...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1152"/> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1175"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1198"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1221"/> <source>Stored ok</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1155"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1201"/> <source>Loaded ok</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1159"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1205"/> <source>Wallet initialization failed: </source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1164"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1210"/> <source>Failed to initialize wallet rpc server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1168"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1214"/> <source>Starting wallet rpc server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1170"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1216"/> <source>Stopped wallet rpc server</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1179"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1225"/> <source>Failed to store wallet: </source> <translation type="unfinished"></translation> </message> @@ -2038,8 +2039,8 @@ your wallet again (your wallet keys are NOT at risk in any case). <context> <name>wallet_args</name> <message> - <location filename="../src/simplewallet/simplewallet.cpp" line="3961"/> - <location filename="../src/wallet/wallet_rpc_server.cpp" line="1086"/> + <location filename="../src/simplewallet/simplewallet.cpp" line="3915"/> + <location filename="../src/wallet/wallet_rpc_server.cpp" line="1131"/> <source>Wallet options</source> <translation type="unfinished"></translation> </message> |