aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md2
-rw-r--r--src/cryptonote_basic/cryptonote_boost_serialization.h8
-rw-r--r--src/cryptonote_core/blockchain.cpp9
-rw-r--r--src/daemon/main.cpp2
-rw-r--r--src/daemon/rpc.h18
-rw-r--r--src/ringct/bulletproofs.cc103
-rw-r--r--src/ringct/rctSigs.cpp60
-rw-r--r--src/ringct/rctTypes.h18
-rw-r--r--src/rpc/rpc_args.cpp2
-rw-r--r--src/simplewallet/simplewallet.cpp20
-rw-r--r--src/wallet/api/address_book.cpp2
-rw-r--r--src/wallet/api/wallet.cpp4
-rw-r--r--src/wallet/wallet2.cpp18
-rw-r--r--src/wallet/wallet_rpc_server.cpp18
-rw-r--r--translations/monero.ts34
-rw-r--r--translations/monero_fr.ts40
-rw-r--r--translations/monero_it.ts48
17 files changed, 227 insertions, 179 deletions
diff --git a/README.md b/README.md
index 00a2cac36..81db79575 100644
--- a/README.md
+++ b/README.md
@@ -251,7 +251,7 @@ Tested on a Raspberry Pi Zero with a clean install of minimal Raspbian Stretch (
```
git clone https://github.com/monero-project/monero.git
cd monero
- git checkout tags/v0.11.0.0
+ git checkout tags/v0.11.1.0
```
* Build:
```
diff --git a/src/cryptonote_basic/cryptonote_boost_serialization.h b/src/cryptonote_basic/cryptonote_boost_serialization.h
index 80bd2fdc9..143133163 100644
--- a/src/cryptonote_basic/cryptonote_boost_serialization.h
+++ b/src/cryptonote_basic/cryptonote_boost_serialization.h
@@ -299,7 +299,7 @@ namespace boost
throw boost::archive::archive_exception(boost::archive::archive_exception::other_exception, "Unsupported rct type");
// a & x.message; message is not serialized, as it can be reconstructed from the tx data
// a & x.mixRing; mixRing is not serialized, as it can be reconstructed from the offsets
- if (x.type == rct::RCTTypeSimple || x.type == rct::RCTTypeSimpleBulletproof)
+ if (x.type == rct::RCTTypeSimple) // moved to prunable with bulletproofs
a & x.pseudoOuts;
a & x.ecdhInfo;
serializeOutPk(a, x.outPk, ver);
@@ -313,6 +313,8 @@ namespace boost
if (x.rangeSigs.empty())
a & x.bulletproofs;
a & x.MGs;
+ if (x.rangeSigs.empty())
+ a & x.pseudoOuts;
}
template <class Archive>
@@ -325,7 +327,7 @@ namespace boost
throw boost::archive::archive_exception(boost::archive::archive_exception::other_exception, "Unsupported rct type");
// a & x.message; message is not serialized, as it can be reconstructed from the tx data
// a & x.mixRing; mixRing is not serialized, as it can be reconstructed from the offsets
- if (x.type == rct::RCTTypeSimple || x.type == rct::RCTTypeSimpleBulletproof)
+ if (x.type == rct::RCTTypeSimple)
a & x.pseudoOuts;
a & x.ecdhInfo;
serializeOutPk(a, x.outPk, ver);
@@ -335,6 +337,8 @@ namespace boost
if (x.p.rangeSigs.empty())
a & x.p.bulletproofs;
a & x.p.MGs;
+ if (x.type == rct::RCTTypeSimpleBulletproof)
+ a & x.p.pseudoOuts;
}
}
}
diff --git a/src/cryptonote_core/blockchain.cpp b/src/cryptonote_core/blockchain.cpp
index 178479f3c..7ee9ade80 100644
--- a/src/cryptonote_core/blockchain.cpp
+++ b/src/cryptonote_core/blockchain.cpp
@@ -127,7 +127,8 @@ static const struct {
{ 5, 802660, 0, 1472415036 + 86400*180 }, // add 5 months on testnet to shut the update warning up since there's a large gap to v6
{ 6, 971400, 0, 1501709789 },
- { 7, 1057028, 0, 1512211236 },
+ { 7, 1057027, 0, 1512211236 },
+ { 8, 1057058, 0, 1515967497 },
};
static const uint64_t testnet_hard_fork_version_1_till = 624633;
@@ -2395,11 +2396,11 @@ bool Blockchain::check_tx_outputs(const transaction& tx, tx_verification_context
}
}
- // from v7, allow bulletproofs
- if (hf_version < 7 || !m_testnet) {
+ // from v8, allow bulletproofs
+ if (hf_version < 8) {
if (!tx.rct_signatures.p.bulletproofs.empty())
{
- MERROR("Bulletproofs are not allowed before v7 or on mainnet");
+ MERROR("Bulletproofs are not allowed before v8");
tvc.m_invalid_output = true;
return false;
}
diff --git a/src/daemon/main.cpp b/src/daemon/main.cpp
index f4d8fad5e..7bac2d3d8 100644
--- a/src/daemon/main.cpp
+++ b/src/daemon/main.cpp
@@ -287,7 +287,7 @@ int main(int argc, char const * argv[])
MINFO("Moving from main() into the daemonize now.");
- return daemonizer::daemonize(argc, argv, daemonize::t_executor{}, vm);
+ return daemonizer::daemonize(argc, argv, daemonize::t_executor{}, vm) ? 0 : 1;
}
catch (std::exception const & ex)
{
diff --git a/src/daemon/rpc.h b/src/daemon/rpc.h
index c1c2329ac..17f6c7f67 100644
--- a/src/daemon/rpc.h
+++ b/src/daemon/rpc.h
@@ -60,28 +60,28 @@ public:
)
: m_server{core.get(), p2p.get()}, m_description{description}
{
- MGINFO("Initializing " << m_description << " rpc server...");
+ MGINFO("Initializing " << m_description << " RPC server...");
if (!m_server.init(vm, restricted, testnet, port))
{
- throw std::runtime_error("Failed to initialize " + m_description + " rpc server.");
+ throw std::runtime_error("Failed to initialize " + m_description + " RPC server.");
}
- MGINFO(m_description << " rpc server initialized OK on port: " << m_server.get_binded_port());
+ MGINFO(m_description << " RPC server initialized OK on port: " << m_server.get_binded_port());
}
void run()
{
- MGINFO("Starting " << m_description << " rpc server...");
+ MGINFO("Starting " << m_description << " RPC server...");
if (!m_server.run(2, false))
{
- throw std::runtime_error("Failed to start " + m_description + " rpc server.");
+ throw std::runtime_error("Failed to start " + m_description + " RPC server.");
}
- MGINFO(m_description << " rpc server started ok");
+ MGINFO(m_description << " RPC server started ok");
}
void stop()
{
- MGINFO("Stopping " << m_description << " rpc server...");
+ MGINFO("Stopping " << m_description << " RPC server...");
m_server.send_stop_signal();
m_server.timed_wait_server_stop(5000);
}
@@ -93,11 +93,11 @@ public:
~t_rpc()
{
- MGINFO("Deinitializing " << m_description << " rpc server...");
+ MGINFO("Deinitializing " << m_description << " RPC server...");
try {
m_server.deinit();
} catch (...) {
- MERROR("Failed to deinitialize " << m_description << " rpc server...");
+ MERROR("Failed to deinitialize " << m_description << " RPC server...");
}
}
};
diff --git a/src/ringct/bulletproofs.cc b/src/ringct/bulletproofs.cc
index 67e877326..fd15ffbc4 100644
--- a/src/ringct/bulletproofs.cc
+++ b/src/ringct/bulletproofs.cc
@@ -297,6 +297,39 @@ static rct::keyV slice(const rct::keyV &a, size_t start, size_t stop)
return res;
}
+static rct::key hash_cache_mash(rct::key &hash_cache, const rct::key &mash0, const rct::key &mash1)
+{
+ rct::keyV data;
+ data.reserve(3);
+ data.push_back(hash_cache);
+ data.push_back(mash0);
+ data.push_back(mash1);
+ return hash_cache = rct::hash_to_scalar(data);
+}
+
+static rct::key hash_cache_mash(rct::key &hash_cache, const rct::key &mash0, const rct::key &mash1, const rct::key &mash2)
+{
+ rct::keyV data;
+ data.reserve(4);
+ data.push_back(hash_cache);
+ data.push_back(mash0);
+ data.push_back(mash1);
+ data.push_back(mash2);
+ return hash_cache = rct::hash_to_scalar(data);
+}
+
+static rct::key hash_cache_mash(rct::key &hash_cache, const rct::key &mash0, const rct::key &mash1, const rct::key &mash2, const rct::key &mash3)
+{
+ rct::keyV data;
+ data.reserve(5);
+ data.push_back(hash_cache);
+ data.push_back(mash0);
+ data.push_back(mash1);
+ data.push_back(mash2);
+ data.push_back(mash3);
+ return hash_cache = rct::hash_to_scalar(data);
+}
+
/* Given a value v (0..2^N-1) and a mask gamma, construct a range proof */
Bulletproof bulletproof_PROVE(const rct::key &sv, const rct::key &gamma)
{
@@ -329,6 +362,7 @@ Bulletproof bulletproof_PROVE(const rct::key &sv, const rct::key &gamma)
}
PERF_TIMER_STOP(PROVE_aLaR);
+ rct::key hash_cache = rct::hash_to_scalar(V);
// DEBUG: Test to ensure this recovers the value
#ifdef DEBUG_BP
@@ -361,11 +395,8 @@ Bulletproof bulletproof_PROVE(const rct::key &sv, const rct::key &gamma)
rct::addKeys(S, ve, rct::scalarmultBase(rho));
// PAPER LINES 43-45
- rct::keyV hashed;
- hashed.push_back(A);
- hashed.push_back(S);
- rct::key y = rct::hash_to_scalar(hashed);
- rct::key z = rct::hash_to_scalar(y);
+ rct::key y = hash_cache_mash(hash_cache, A, S);
+ rct::key z = hash_cache = rct::hash_to_scalar(y);
// Polynomial construction before PAPER LINE 46
rct::key t0 = rct::zero();
@@ -427,11 +458,7 @@ Bulletproof bulletproof_PROVE(const rct::key &sv, const rct::key &gamma)
rct::key T2 = rct::addKeys(rct::scalarmultKey(rct::H, t2), rct::scalarmultBase(tau2));
// PAPER LINES 49-51
- hashed.clear();
- hashed.push_back(z);
- hashed.push_back(T1);
- hashed.push_back(T2);
- rct::key x = rct::hash_to_scalar(hashed);
+ rct::key x = hash_cache_mash(hash_cache, z, T1, T2);
// PAPER LINES 52-53
rct::key taux = rct::zero();
@@ -460,12 +487,7 @@ Bulletproof bulletproof_PROVE(const rct::key &sv, const rct::key &gamma)
#endif
// PAPER LINES 32-33
- hashed.clear();
- hashed.push_back(x);
- hashed.push_back(taux);
- hashed.push_back(mu);
- hashed.push_back(t);
- rct::key x_ip = rct::hash_to_scalar(hashed);
+ rct::key x_ip = hash_cache_mash(hash_cache, x, taux, mu, t);
// These are used in the inner product rounds
size_t nprime = N;
@@ -509,20 +531,7 @@ Bulletproof bulletproof_PROVE(const rct::key &sv, const rct::key &gamma)
rct::addKeys(R[round], R[round], rct::scalarmultKey(rct::H, tmp));
// PAPER LINES 21-22
- hashed.clear();
- if (round == 0)
- {
- hashed.push_back(L[0]);
- hashed.push_back(R[0]);
- w[0] = rct::hash_to_scalar(hashed);
- }
- else
- {
- hashed.push_back(w[round - 1]);
- hashed.push_back(L[round]);
- hashed.push_back(R[round]);
- w[round] = rct::hash_to_scalar(hashed);
- }
+ w[round] = hash_cache_mash(hash_cache, L[round], R[round]);
// PAPER LINES 24-25
const rct::key winv = invert(w[round]);
@@ -563,6 +572,7 @@ bool bulletproof_VERIFY(const Bulletproof &proof)
{
init_exponents();
+ CHECK_AND_ASSERT_MES(proof.V.size() == 1, false, "V does not have exactly one element");
CHECK_AND_ASSERT_MES(proof.L.size() == proof.R.size(), false, "Mismatched L and R sizes");
CHECK_AND_ASSERT_MES(proof.L.size() > 0, false, "Empty proof");
CHECK_AND_ASSERT_MES(proof.L.size() == 6, false, "Proof is not for 64 bits");
@@ -573,26 +583,15 @@ bool bulletproof_VERIFY(const Bulletproof &proof)
// Reconstruct the challenges
PERF_TIMER_START_BP(VERIFY);
PERF_TIMER_START_BP(VERIFY_start);
- rct::keyV hashed;
- hashed.push_back(proof.A);
- hashed.push_back(proof.S);
- rct::key y = rct::hash_to_scalar(hashed);
- rct::key z = rct::hash_to_scalar(y);
- hashed.clear();
- hashed.push_back(z);
- hashed.push_back(proof.T1);
- hashed.push_back(proof.T2);
- rct::key x = rct::hash_to_scalar(hashed);
+ rct::key hash_cache = rct::hash_to_scalar(proof.V[0]);
+ rct::key y = hash_cache_mash(hash_cache, proof.A, proof.S);
+ rct::key z = hash_cache = rct::hash_to_scalar(y);
+ rct::key x = hash_cache_mash(hash_cache, z, proof.T1, proof.T2);
PERF_TIMER_STOP(VERIFY_start);
PERF_TIMER_START_BP(VERIFY_line_60);
// Reconstruct the challenges
- hashed.clear();
- hashed.push_back(x);
- hashed.push_back(proof.taux);
- hashed.push_back(proof.mu);
- hashed.push_back(proof.t);
- rct::key x_ip = hash_to_scalar(hashed);
+ rct::key x_ip = hash_cache_mash(hash_cache, x, proof.taux, proof.mu, proof.t);
PERF_TIMER_STOP(VERIFY_line_60);
PERF_TIMER_START_BP(VERIFY_line_61);
@@ -647,17 +646,9 @@ bool bulletproof_VERIFY(const Bulletproof &proof)
// PAPER LINES 21-22
// The inner product challenges are computed per round
rct::keyV w(rounds);
- hashed.clear();
- hashed.push_back(proof.L[0]);
- hashed.push_back(proof.R[0]);
- w[0] = rct::hash_to_scalar(hashed);
- for (size_t i = 1; i < rounds; ++i)
+ for (size_t i = 0; i < rounds; ++i)
{
- hashed.clear();
- hashed.push_back(w[i-1]);
- hashed.push_back(proof.L[i]);
- hashed.push_back(proof.R[i]);
- w[i] = rct::hash_to_scalar(hashed);
+ w[i] = hash_cache_mash(hash_cache, proof.L[i], proof.R[i]);
}
PERF_TIMER_STOP(VERIFY_line_21_22);
diff --git a/src/ringct/rctSigs.cpp b/src/ringct/rctSigs.cpp
index 3c34a5637..0c2be5add 100644
--- a/src/ringct/rctSigs.cpp
+++ b/src/ringct/rctSigs.cpp
@@ -43,6 +43,30 @@ using namespace std;
#define MONERO_DEFAULT_LOG_CATEGORY "ringct"
namespace rct {
+ bool is_simple(int type)
+ {
+ switch (type)
+ {
+ case RCTTypeSimple:
+ case RCTTypeSimpleBulletproof:
+ return true;
+ default:
+ return false;
+ }
+ }
+
+ bool is_bulletproof(int type)
+ {
+ switch (type)
+ {
+ case RCTTypeSimpleBulletproof:
+ case RCTTypeFullBulletproof:
+ return true;
+ default:
+ return false;
+ }
+ }
+
Bulletproof proveRangeBulletproof(key &C, key &mask, uint64_t amount)
{
mask = rct::skGen();
@@ -357,7 +381,8 @@ namespace rct {
std::stringstream ss;
binary_archive<true> ba(ss);
- const size_t inputs = rv.pseudoOuts.size();
+ CHECK_AND_ASSERT_THROW_MES(!rv.mixRing.empty(), "Empty mixRing");
+ const size_t inputs = is_simple(rv.type) ? rv.mixRing.size() : rv.mixRing[0].size();
const size_t outputs = rv.ecdhInfo.size();
CHECK_AND_ASSERT_THROW_MES(const_cast<rctSig&>(rv).serialize_rctsig_base(ba, inputs, outputs),
"Failed to serialize rctSigBase");
@@ -750,25 +775,26 @@ namespace rct {
// TODO: unused ??
// key txnFeeKey = scalarmultH(d2h(rv.txnFee));
rv.mixRing = mixRing;
- rv.pseudoOuts.resize(inamounts.size());
+ keyV &pseudoOuts = bulletproof ? rv.p.pseudoOuts : rv.pseudoOuts;
+ pseudoOuts.resize(inamounts.size());
rv.p.MGs.resize(inamounts.size());
key sumpouts = zero(); //sum pseudoOut masks
keyV a(inamounts.size());
for (i = 0 ; i < inamounts.size() - 1; i++) {
skGen(a[i]);
sc_add(sumpouts.bytes, a[i].bytes, sumpouts.bytes);
- genC(rv.pseudoOuts[i], a[i], inamounts[i]);
+ genC(pseudoOuts[i], a[i], inamounts[i]);
}
rv.mixRing = mixRing;
sc_sub(a[i].bytes, sumout.bytes, sumpouts.bytes);
- genC(rv.pseudoOuts[i], a[i], inamounts[i]);
- DP(rv.pseudoOuts[i]);
+ genC(pseudoOuts[i], a[i], inamounts[i]);
+ DP(pseudoOuts[i]);
key full_message = get_pre_mlsag_hash(rv);
if (msout)
msout->c.resize(inamounts.size());
for (i = 0 ; i < inamounts.size(); i++) {
- rv.p.MGs[i] = proveRctMGSimple(full_message, rv.mixRing[i], inSk[i], a[i], rv.pseudoOuts[i], kLRki ? &(*kLRki)[i]: NULL, msout ? &msout->c[i] : NULL, index[i]);
+ rv.p.MGs[i] = proveRctMGSimple(full_message, rv.mixRing[i], inSk[i], a[i], pseudoOuts[i], kLRki ? &(*kLRki)[i]: NULL, msout ? &msout->c[i] : NULL, index[i]);
}
return rv;
}
@@ -876,16 +902,26 @@ namespace rct {
if (semantics)
{
if (rv.type == RCTTypeSimpleBulletproof)
+ {
CHECK_AND_ASSERT_MES(rv.outPk.size() == rv.p.bulletproofs.size(), false, "Mismatched sizes of outPk and rv.p.bulletproofs");
+ CHECK_AND_ASSERT_MES(rv.p.pseudoOuts.size() == rv.p.MGs.size(), false, "Mismatched sizes of rv.p.pseudoOuts and rv.p.MGs");
+ CHECK_AND_ASSERT_MES(rv.pseudoOuts.empty(), false, "rv.pseudoOuts is not empty");
+ }
else
+ {
CHECK_AND_ASSERT_MES(rv.outPk.size() == rv.p.rangeSigs.size(), false, "Mismatched sizes of outPk and rv.p.rangeSigs");
+ CHECK_AND_ASSERT_MES(rv.pseudoOuts.size() == rv.p.MGs.size(), false, "Mismatched sizes of rv.pseudoOuts and rv.p.MGs");
+ CHECK_AND_ASSERT_MES(rv.p.pseudoOuts.empty(), false, "rv.p.pseudoOuts is not empty");
+ }
CHECK_AND_ASSERT_MES(rv.outPk.size() == rv.ecdhInfo.size(), false, "Mismatched sizes of outPk and rv.ecdhInfo");
- CHECK_AND_ASSERT_MES(rv.pseudoOuts.size() == rv.p.MGs.size(), false, "Mismatched sizes of rv.pseudoOuts and rv.p.MGs");
}
else
{
// semantics check is early, and mixRing/MGs aren't resolved yet
- CHECK_AND_ASSERT_MES(rv.pseudoOuts.size() == rv.mixRing.size(), false, "Mismatched sizes of rv.pseudoOuts and mixRing");
+ if (rv.type == RCTTypeSimpleBulletproof)
+ CHECK_AND_ASSERT_MES(rv.p.pseudoOuts.size() == rv.mixRing.size(), false, "Mismatched sizes of rv.p.pseudoOuts and mixRing");
+ else
+ CHECK_AND_ASSERT_MES(rv.pseudoOuts.size() == rv.mixRing.size(), false, "Mismatched sizes of rv.pseudoOuts and mixRing");
}
const size_t threads = std::max(rv.outPk.size(), rv.mixRing.size());
@@ -894,6 +930,8 @@ namespace rct {
tools::threadpool& tpool = tools::threadpool::getInstance();
tools::threadpool::waiter waiter;
+ const keyV &pseudoOuts = is_bulletproof(rv.type) ? rv.p.pseudoOuts : rv.pseudoOuts;
+
if (semantics) {
key sumOutpks = identity();
for (size_t i = 0; i < rv.outPk.size(); i++) {
@@ -904,8 +942,8 @@ namespace rct {
addKeys(sumOutpks, txnFeeKey, sumOutpks);
key sumPseudoOuts = identity();
- for (size_t i = 0 ; i < rv.pseudoOuts.size() ; i++) {
- addKeys(sumPseudoOuts, sumPseudoOuts, rv.pseudoOuts[i]);
+ for (size_t i = 0 ; i < pseudoOuts.size() ; i++) {
+ addKeys(sumPseudoOuts, sumPseudoOuts, pseudoOuts[i]);
}
DP(sumPseudoOuts);
@@ -941,7 +979,7 @@ namespace rct {
results.resize(rv.mixRing.size());
for (size_t i = 0 ; i < rv.mixRing.size() ; i++) {
tpool.submit(&waiter, [&, i] {
- results[i] = verRctMGSimple(message, rv.p.MGs[i], rv.mixRing[i], rv.pseudoOuts[i]);
+ results[i] = verRctMGSimple(message, rv.p.MGs[i], rv.mixRing[i], pseudoOuts[i]);
});
}
waiter.wait();
diff --git a/src/ringct/rctTypes.h b/src/ringct/rctTypes.h
index 2df797360..eba1e3d93 100644
--- a/src/ringct/rctTypes.h
+++ b/src/ringct/rctTypes.h
@@ -246,7 +246,7 @@ namespace rct {
// inputs/outputs not saved, only here for serialization help
// FIELD(message) - not serialized, it can be reconstructed
// FIELD(mixRing) - not serialized, it can be reconstructed
- if (type == RCTTypeSimple || type == RCTTypeSimpleBulletproof)
+ if (type == RCTTypeSimple) // moved to prunable with bulletproofs
{
ar.tag("pseudoOuts");
ar.begin_array();
@@ -294,6 +294,7 @@ namespace rct {
std::vector<rangeSig> rangeSigs;
std::vector<Bulletproof> bulletproofs;
std::vector<mgSig> MGs; // simple rct has N, full has 1
+ keyV pseudoOuts; //C - for simple rct
template<bool W, template <bool> class Archive>
bool serialize_rctsig_prunable(Archive<W> &ar, uint8_t type, size_t inputs, size_t outputs, size_t mixin)
@@ -381,6 +382,21 @@ namespace rct {
ar.delimit_array();
}
ar.end_array();
+ if (type == RCTTypeSimpleBulletproof)
+ {
+ ar.tag("pseudoOuts");
+ ar.begin_array();
+ PREPARE_CUSTOM_VECTOR_SERIALIZATION(inputs, pseudoOuts);
+ if (pseudoOuts.size() != inputs)
+ return false;
+ for (size_t i = 0; i < inputs; ++i)
+ {
+ FIELDS(pseudoOuts[i])
+ if (inputs - i > 1)
+ ar.delimit_array();
+ }
+ ar.end_array();
+ }
return true;
}
diff --git a/src/rpc/rpc_args.cpp b/src/rpc/rpc_args.cpp
index 6559db9b2..d4a6138ba 100644
--- a/src/rpc/rpc_args.cpp
+++ b/src/rpc/rpc_args.cpp
@@ -37,7 +37,7 @@
namespace cryptonote
{
rpc_args::descriptors::descriptors()
- : rpc_bind_ip({"rpc-bind-ip", rpc_args::tr("Specify ip to bind rpc server"), "127.0.0.1"})
+ : rpc_bind_ip({"rpc-bind-ip", rpc_args::tr("Specify IP to bind RPC server"), "127.0.0.1"})
, rpc_login({"rpc-login", rpc_args::tr("Specify username[:password] required for RPC server"), "", true})
, confirm_external_bind({"confirm-external-bind", rpc_args::tr("Confirm rpc-bind-ip value is NOT a loopback (local) IP")})
, rpc_access_control_origins({"rpc-access-control-origins", rpc_args::tr("Specify a comma separated list of origins to allow cross origin resource sharing"), ""})
diff --git a/src/simplewallet/simplewallet.cpp b/src/simplewallet/simplewallet.cpp
index a6cef1bb9..c5a4f15a4 100644
--- a/src/simplewallet/simplewallet.cpp
+++ b/src/simplewallet/simplewallet.cpp
@@ -158,7 +158,7 @@ namespace
boost::optional<tools::password_container> default_password_prompter(bool verify)
{
- return password_prompter(verify ? tr("Enter new wallet password") : tr("Wallet password"), verify);
+ return password_prompter(verify ? tr("Enter a new password for the wallet") : tr("Wallet password"), verify);
}
inline std::string interpret_rpc_response(bool ok, const std::string& status)
@@ -1293,7 +1293,7 @@ bool simple_wallet::set_default_priority(const std::vector<std::string> &args/*
priority = boost::lexical_cast<int>(args[1]);
if (priority < 1 || priority > 4)
{
- fail_msg_writer() << tr("priority must be 0, 1, 2, 3,or 4");
+ fail_msg_writer() << tr("priority must be 0, 1, 2, 3, or 4");
return true;
}
}
@@ -1308,7 +1308,7 @@ bool simple_wallet::set_default_priority(const std::vector<std::string> &args/*
}
catch(const boost::bad_lexical_cast &)
{
- fail_msg_writer() << tr("priority must be 0, 1, 2 3,or 4");
+ fail_msg_writer() << tr("priority must be 0, 1, 2, 3, or 4");
return true;
}
catch(...)
@@ -1589,14 +1589,14 @@ simple_wallet::simple_wallet()
m_cmd_binder.set_handler("transfer_original",
boost::bind(&simple_wallet::transfer, this, _1),
tr("transfer_original [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> <amount> [<payment_id>]"),
- tr("Transfer <amount> to <address> using an older transaction building algorithm. If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
+ tr("Transfer <amount> to <address> using an older transaction building algorithm. If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
m_cmd_binder.set_handler("transfer", boost::bind(&simple_wallet::transfer_new, this, _1),
tr("transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <address> <amount> [<payment_id>]"),
- tr("Transfer <amount> to <address>. If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
+ tr("Transfer <amount> to <address>. If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
m_cmd_binder.set_handler("locked_transfer",
boost::bind(&simple_wallet::locked_transfer, this, _1),
tr("locked_transfer [index=<N1>[,<N2>,...]] [<priority>] [<ring_size>] <addr> <amount> <lockblocks> [<payment_id>]"),
- tr("Transfer <amount> to <address> and lock it for <lockblocks> (max. 1000000). If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
+ tr("Transfer <amount> to <address> and lock it for <lockblocks> (max. 1000000). If the parameter \"index=<N1>[,<N2>,...]\" is specified, the wallet uses outputs received by addresses of those indices. If omitted, the wallet randomly chooses address indices to be used. In any case, it tries its best not to combine outputs across multiple addresses. <priority> is the priority of the transaction. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command \"set priority\") is used. <ring_size> is the number of inputs to include for untraceability. Multiple payments can be made at once by adding <address_2> <amount_2> etcetera (before the payment ID, if it's included)"));
m_cmd_binder.set_handler("sweep_unmixable",
boost::bind(&simple_wallet::sweep_unmixable, this, _1),
tr("Send all unmixable outputs to yourself with ring_size 1"));
@@ -2672,12 +2672,12 @@ std::string simple_wallet::get_mnemonic_language()
if (!((language_number >= 0) && (static_cast<unsigned int>(language_number) < language_list.size())))
{
language_number = -1;
- fail_msg_writer() << tr("invalid language choice passed. Please try again.\n");
+ fail_msg_writer() << tr("invalid language choice entered. Please try again.\n");
}
}
catch (const std::exception &e)
{
- fail_msg_writer() << tr("invalid language choice passed. Please try again.\n");
+ fail_msg_writer() << tr("invalid language choice entered. Please try again.\n");
}
}
return language_list[language_number];
@@ -3434,7 +3434,7 @@ bool simple_wallet::show_payments(const std::vector<std::string> &args)
{
if(args.empty())
{
- fail_msg_writer() << tr("expected at least one payment_id");
+ fail_msg_writer() << tr("expected at least one payment ID");
return true;
}
@@ -4578,7 +4578,7 @@ bool simple_wallet::sweep_below(const std::vector<std::string> &args_)
uint64_t below = 0;
if (args_.size() < 1)
{
- fail_msg_writer() << tr("missing amount threshold");
+ fail_msg_writer() << tr("missing threshold amount");
return true;
}
if (!cryptonote::parse_amount(below, args_[0]))
diff --git a/src/wallet/api/address_book.cpp b/src/wallet/api/address_book.cpp
index 8089a6a05..38c34a912 100644
--- a/src/wallet/api/address_book.cpp
+++ b/src/wallet/api/address_book.cpp
@@ -74,7 +74,7 @@ bool AddressBookImpl::addRow(const std::string &dst_addr , const std::string &pa
// integrated + long payment id provided
if(has_long_pid && info.has_payment_id) {
- m_errorString = tr("Integrated address and long payment id can't be used at the same time");
+ m_errorString = tr("Integrated address and long payment ID can't be used at the same time");
m_errorCode = Invalid_Payment_Id;
return false;
}
diff --git a/src/wallet/api/wallet.cpp b/src/wallet/api/wallet.cpp
index 82948081e..f648160c9 100644
--- a/src/wallet/api/wallet.cpp
+++ b/src/wallet/api/wallet.cpp
@@ -626,7 +626,7 @@ bool WalletImpl::close(bool store)
if (status() != Status_Critical)
m_wallet->store();
else
- LOG_ERROR("Status_Critical - not storing wallet");
+ LOG_ERROR("Status_Critical - not saving wallet");
LOG_PRINT_L1("wallet::store done");
}
LOG_PRINT_L1("Calling wallet::stop...");
@@ -732,7 +732,7 @@ bool WalletImpl::store(const std::string &path)
m_wallet->store_to(path, m_password);
}
} catch (const std::exception &e) {
- LOG_ERROR("Error storing wallet: " << e.what());
+ LOG_ERROR("Error saving wallet: " << e.what());
m_status = Status_Error;
m_errorString = e.what();
}
diff --git a/src/wallet/wallet2.cpp b/src/wallet/wallet2.cpp
index 7dc8a1e47..f83aad63d 100644
--- a/src/wallet/wallet2.cpp
+++ b/src/wallet/wallet2.cpp
@@ -223,7 +223,7 @@ boost::optional<tools::password_container> get_password(const boost::program_opt
THROW_WALLET_EXCEPTION_IF(!password_prompter, tools::error::wallet_internal_error, tools::wallet2::tr("no password specified; use --prompt-for-password to prompt for a password"));
- return password_prompter(verify ? tr("Enter new wallet password") : tr("Wallet password"), verify);
+ return password_prompter(verify ? tr("Enter a new password for the wallet") : tr("Wallet password"), verify);
}
std::unique_ptr<tools::wallet2> generate_from_json(const std::string& json_file, const boost::program_options::variables_map& vm, const options& opts, const std::function<boost::optional<tools::password_container>(const char *, bool)> &password_prompter)
@@ -532,12 +532,9 @@ size_t estimate_tx_size(bool use_rct, int n_inputs, int mixin, int n_outputs, si
return n_inputs * (mixin+1) * APPROXIMATE_INPUT_BYTES + extra_size;
}
-uint8_t get_bulletproof_fork(bool testnet)
+uint8_t get_bulletproof_fork()
{
- if (testnet)
- return 7;
- else
- return 255; // TODO
+ return 8;
}
crypto::hash8 get_short_payment_id(const tools::wallet2::pending_tx &ptx)
@@ -6642,7 +6639,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions_2(std::vector<cryp
uint64_t needed_fee, available_for_fee = 0;
uint64_t upper_transaction_size_limit = get_upper_transaction_size_limit();
const bool use_rct = use_fork_rules(4, 0);
- const bool bulletproof = use_fork_rules(get_bulletproof_fork(m_testnet), 0);
+ const bool bulletproof = use_fork_rules(get_bulletproof_fork(), 0);
const uint64_t fee_per_kb = get_per_kb_fee();
const uint64_t fee_multiplier = get_fee_multiplier(priority, get_fee_algorithm());
@@ -7151,7 +7148,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions_from(const crypton
std::vector<std::vector<get_outs_entry>> outs;
const bool use_rct = fake_outs_count > 0 && use_fork_rules(4, 0);
- const bool bulletproof = use_fork_rules(get_bulletproof_fork(m_testnet), 0);
+ const bool bulletproof = use_fork_rules(get_bulletproof_fork(), 0);
const uint64_t fee_per_kb = get_per_kb_fee();
const uint64_t fee_multiplier = get_fee_multiplier(priority, get_fee_algorithm());
@@ -8354,8 +8351,9 @@ uint64_t wallet2::get_approximate_blockchain_height() const
// Calculated blockchain height
uint64_t approx_blockchain_height = fork_block + (time(NULL) - fork_time)/seconds_per_block;
// testnet got some huge rollbacks, so the estimation is way off
- if (m_testnet && approx_blockchain_height > 105000)
- approx_blockchain_height -= 105000;
+ static const uint64_t approximate_testnet_rolled_back_blocks = 148540;
+ if (m_testnet && approx_blockchain_height > approximate_testnet_rolled_back_blocks)
+ approx_blockchain_height -= approximate_testnet_rolled_back_blocks;
LOG_PRINT_L2("Calculated blockchain height: " << approx_blockchain_height);
return approx_blockchain_height;
}
diff --git a/src/wallet/wallet_rpc_server.cpp b/src/wallet/wallet_rpc_server.cpp
index 97faf0b56..7d17591db 100644
--- a/src/wallet/wallet_rpc_server.cpp
+++ b/src/wallet/wallet_rpc_server.cpp
@@ -2922,12 +2922,12 @@ int main(int argc, char** argv) {
// if we ^C during potentially length load/refresh, there's no server loop yet
if (quit)
{
- MINFO(tools::wallet_rpc_server::tr("Storing wallet..."));
+ MINFO(tools::wallet_rpc_server::tr("Saving wallet..."));
wal->store();
- MINFO(tools::wallet_rpc_server::tr("Stored ok"));
+ MINFO(tools::wallet_rpc_server::tr("Successfully saved"));
return 1;
}
- MINFO(tools::wallet_rpc_server::tr("Loaded ok"));
+ MINFO(tools::wallet_rpc_server::tr("Successfully loaded"));
}
catch (const std::exception& e)
{
@@ -2938,11 +2938,11 @@ just_dir:
tools::wallet_rpc_server wrpc;
if (wal) wrpc.set_wallet(wal.release());
bool r = wrpc.init(&(vm.get()));
- CHECK_AND_ASSERT_MES(r, 1, tools::wallet_rpc_server::tr("Failed to initialize wallet rpc server"));
+ CHECK_AND_ASSERT_MES(r, 1, tools::wallet_rpc_server::tr("Failed to initialize wallet RPC server"));
tools::signal_handler::install([&wrpc](int) {
wrpc.send_stop_signal();
});
- LOG_PRINT_L0(tools::wallet_rpc_server::tr("Starting wallet rpc server"));
+ LOG_PRINT_L0(tools::wallet_rpc_server::tr("Starting wallet RPC server"));
try
{
wrpc.run();
@@ -2952,16 +2952,16 @@ just_dir:
LOG_ERROR(tools::wallet_rpc_server::tr("Failed to run wallet: ") << e.what());
return 1;
}
- LOG_PRINT_L0(tools::wallet_rpc_server::tr("Stopped wallet rpc server"));
+ LOG_PRINT_L0(tools::wallet_rpc_server::tr("Stopped wallet RPC server"));
try
{
- LOG_PRINT_L0(tools::wallet_rpc_server::tr("Storing wallet..."));
+ LOG_PRINT_L0(tools::wallet_rpc_server::tr("Saving wallet..."));
wrpc.stop();
- LOG_PRINT_L0(tools::wallet_rpc_server::tr("Stored ok"));
+ LOG_PRINT_L0(tools::wallet_rpc_server::tr("Successfully saved"));
}
catch (const std::exception& e)
{
- LOG_ERROR(tools::wallet_rpc_server::tr("Failed to store wallet: ") << e.what());
+ LOG_ERROR(tools::wallet_rpc_server::tr("Failed to save wallet: ") << e.what());
return 1;
}
return 0;
diff --git a/translations/monero.ts b/translations/monero.ts
index 27f5e1c52..5ca882bb3 100644
--- a/translations/monero.ts
+++ b/translations/monero.ts
@@ -414,7 +414,7 @@
<name>cryptonote::rpc_args</name>
<message>
<location filename="../src/rpc/rpc_args.cpp" line="38"/>
- <source>Specify ip to bind rpc server</source>
+ <source>Specify IP to bind RPC server</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -527,7 +527,7 @@
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="710"/>
- <source>sweep_below &lt;amount_threshold&gt; [mixin] address [payment_id] - Send all unlocked outputs below the threshold to an address</source>
+ <source>sweep_below &lt;amount_threshold&gt; [mixin] address [<payment_id>] - Send all unlocked outputs below the threshold to an address</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -851,7 +851,7 @@ This transaction will unlock on block %llu, in approximately %s days (assuming 2
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="2921"/>
- <source>missing amount threshold</source>
+ <source>missing threshold amount</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -896,7 +896,7 @@ This transaction will unlock on block %llu, in approximately %s days (assuming 2
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="3137"/>
- <source>daemon is busy. Please try later</source>
+ <source>daemon is busy. Please try again later</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -931,12 +931,12 @@ This transaction will unlock on block %llu, in approximately %s days (assuming 2
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="525"/>
- <source>priority must be 0, 1, 2, 3,or 4</source>
+ <source>priority must be 0, 1, 2, 3, or 4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="540"/>
- <source>priority must be 0, 1, 2 3,or 4</source>
+ <source>priority must be 0, 1, 2, 3, or 4</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -961,7 +961,7 @@ This transaction will unlock on block %llu, in approximately %s days (assuming 2
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="709"/>
- <source>sweep_all [mixin] address [payment_id] - Send all unlocked balance to an address</source>
+ <source>sweep_all [mixin] address [<payment_id>] - Send all unlocked balance to an address</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1124,7 +1124,7 @@ This transaction will unlock on block %llu, in approximately %s days (assuming 2
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1887"/>
- <source>expected at least one payment_id</source>
+ <source>expected at least one payment ID</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1340,7 +1340,7 @@ Warning: Some input keys being spent are from </source>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="706"/>
- <source>transfer [&lt;priority&gt;] [&lt;mixin_count&gt;] &lt;address&gt; &lt;amount&gt; [&lt;payment_id&gt;] - Transfer &lt;amount&gt; to &lt;address&gt;. &lt;priority&gt; is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command &quot;set priority&quot;) is used. &lt;mixin_count&gt; is the number of extra inputs to include for untraceability. Multiple payments can be made at once by adding &lt;address_2&gt; &lt;amount_2&gt; etcetera (before the payment ID, if it&apos;s included)</source>
+ <source>transfer [&lt;priority&gt;] [&lt;mixin_count&gt;] &lt;address&gt; &lt;amount&gt; [&lt;payment_id&gt;] - Transfer &lt;amount&gt; to &lt;address&gt;. &lt;priority&gt; is the priority of the transaction. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command &quot;set priority&quot;) is used. &lt;mixin_count&gt; is the number of extra inputs to include for untraceability. Multiple payments can be made at once by adding &lt;address_2&gt; &lt;amount_2&gt; etcetera (before the payment ID, if it&apos;s included)</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -1612,7 +1612,7 @@ Warning: Some input keys being spent are from </source>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1306"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1311"/>
- <source>invalid language choice passed. Please try again.
+ <source>invalid language choice entered. Please try again.
</source>
<translation type="unfinished"></translation>
</message>
@@ -2493,7 +2493,7 @@ Outputs per *: </source>
</message>
<message>
<location filename="../src/wallet/wallet2.cpp" line="460"/>
- <source>Enter new wallet password</source>
+ <source>Enter new password for the wallet</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2651,13 +2651,13 @@ Outputs per *: </source>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1789"/>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1814"/>
- <source>Storing wallet...</source>
+ <source>Saving wallet...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1791"/>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1816"/>
- <source>Stored ok</source>
+ <source>Saved ok</source>
<translation type="unfinished"></translation>
</message>
<message>
@@ -2672,22 +2672,22 @@ Outputs per *: </source>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1805"/>
- <source>Failed to initialize wallet rpc server</source>
+ <source>Failed to initialize wallet RPC server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1809"/>
- <source>Starting wallet rpc server</source>
+ <source>Starting wallet RPC server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1811"/>
- <source>Stopped wallet rpc server</source>
+ <source>Stopped wallet RPC server</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1820"/>
- <source>Failed to store wallet: </source>
+ <source>Failed to save wallet: </source>
<translation type="unfinished"></translation>
</message>
</context>
diff --git a/translations/monero_fr.ts b/translations/monero_fr.ts
index 5cef15a92..c4e9a0f36 100644
--- a/translations/monero_fr.ts
+++ b/translations/monero_fr.ts
@@ -414,7 +414,7 @@
<name>cryptonote::rpc_args</name>
<message>
<location filename="../src/rpc/rpc_args.cpp" line="38"/>
- <source>Specify ip to bind rpc server</source>
+ <source>Specify IP to bind RPC server</source>
<translation>Spécifier l&apos;IP à laquelle lier le serveur RPC</translation>
</message>
<message>
@@ -527,8 +527,8 @@
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="710"/>
- <source>sweep_below &lt;amount_threshold&gt; [mixin] address [payment_id] - Send all unlocked outputs below the threshold to an address</source>
- <translation>sweep_below &lt;montant_seuil&gt; [mixin] adresse [ID_paiement] - Envoyer toutes les sorties débloquées sous le seuil vers une adresse</translation>
+ <source>sweep_below &lt;amount_threshold&gt; [mixin] address [<payment_id>] - Send all unlocked outputs below the threshold to an address</source>
+ <translation>sweep_below &lt;montant_seuil&gt; [mixin] adresse [<ID_paiement>] - Envoyer toutes les sorties débloquées sous le seuil vers une adresse</translation>
</message>
<message>
<source>Available options: seed language - set wallet seed language; always-confirm-transfers &lt;1|0&gt; - whether to confirm unsplit txes; print-ring-members &lt;1|0&gt; - whether to print detailed information about ring members during confirmation; store-tx-info &lt;1|0&gt; - whether to store outgoing tx info (destination address, payment ID, tx secret key) for future reference; default-mixin &lt;n&gt; - set default mixin (default is 4); auto-refresh &lt;1|0&gt; - whether to automatically sync new blocks from the daemon; refresh-type &lt;full|optimize-coinbase|no-coinbase|default&gt; - set wallet refresh behaviour; priority [0|1|2|3|4] - default/unimportant/normal/elevated/priority fee; confirm-missing-payment-id &lt;1|0&gt;; ask-password &lt;1|0&gt;; unit &lt;monero|millinero|micronero|nanonero|piconero&gt; - set default monero (sub-)unit; min-outputs-count [n] - try to keep at least that many outputs of value at least min-outputs-value; min-outputs-value [n] - try to keep at least min-outputs-count outputs of at least that value - merge-destinations &lt;1|0&gt; - whether to merge multiple payments to the same destination address</source>
@@ -872,7 +872,7 @@ Cette transaction sera déverrouillée au bloc %llu, dans approximativement %s j
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="2921"/>
- <source>missing amount threshold</source>
+ <source>missing threshold amount</source>
<translation>montant seuil manquant</translation>
</message>
<message>
@@ -917,7 +917,7 @@ Cette transaction sera déverrouillée au bloc %llu, dans approximativement %s j
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="3137"/>
- <source>daemon is busy. Please try later</source>
+ <source>daemon is busy. Please try again later</source>
<translation>le démon est occupé. Veuillez réessayer plus tard</translation>
</message>
<message>
@@ -952,12 +952,12 @@ Cette transaction sera déverrouillée au bloc %llu, dans approximativement %s j
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="525"/>
- <source>priority must be 0, 1, 2, 3,or 4</source>
+ <source>priority must be 0, 1, 2, 3, or 4</source>
<translation>la priorité doit être 0, 1, 2, 3 ou 4</translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="540"/>
- <source>priority must be 0, 1, 2 3,or 4</source>
+ <source>priority must be 0, 1, 2, 3, or 4</source>
<translation>la priorité doit être 0, 1, 2, 3 ou 4</translation>
</message>
<message>
@@ -982,8 +982,8 @@ Cette transaction sera déverrouillée au bloc %llu, dans approximativement %s j
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="709"/>
- <source>sweep_all [mixin] address [payment_id] - Send all unlocked balance to an address</source>
- <translation>sweep_all [mixin] adresse [ID_paiement] - Envoyer tout le solde débloqué à une adresse</translation>
+ <source>sweep_all [mixin] address [<payment_id>] - Send all unlocked balance to an address</source>
+ <translation>sweep_all [mixin] adresse [<ID_paiement>] - Envoyer tout le solde débloqué à une adresse</translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="711"/>
@@ -1149,7 +1149,7 @@ Cette transaction sera déverrouillée au bloc %llu, dans approximativement %s j
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1887"/>
- <source>expected at least one payment_id</source>
+ <source>expected at least one payment ID</source>
<translation>au moins un ID de paiement attendu</translation>
</message>
<message>
@@ -1371,7 +1371,7 @@ Attention : Certaines clés d&apos;entrées étant dépensées sont issues de <
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="706"/>
- <source>transfer [&lt;priority&gt;] [&lt;mixin_count&gt;] &lt;address&gt; &lt;amount&gt; [&lt;payment_id&gt;] - Transfer &lt;amount&gt; to &lt;address&gt;. &lt;priority&gt; is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command &quot;set priority&quot;) is used. &lt;mixin_count&gt; is the number of extra inputs to include for untraceability. Multiple payments can be made at once by adding &lt;address_2&gt; &lt;amount_2&gt; etcetera (before the payment ID, if it&apos;s included)</source>
+ <source>transfer [&lt;priority&gt;] [&lt;mixin_count&gt;] &lt;address&gt; &lt;amount&gt; [&lt;payment_id&gt;] - Transfer &lt;amount&gt; to &lt;address&gt;. &lt;priority&gt; is the priority of the transaction. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command &quot;set priority&quot;) is used. &lt;mixin_count&gt; is the number of extra inputs to include for untraceability. Multiple payments can be made at once by adding &lt;address_2&gt; &lt;amount_2&gt; etcetera (before the payment ID, if it&apos;s included)</source>
<translation>transfer [&lt;priorité&gt;] [&lt;mixin&gt;] &lt;adresse&gt; &lt;montant&gt; [&lt;ID_paiement&gt;] - Transférer &lt;montant&gt; à &lt;adresse&gt;. &lt;priorité&gt; est la priorité de la transaction. Plus la priorité est élevée, plues les frais de transaction seront élévés. Les valeurs de priorité valies sont dans l&apos;ordre (de la plus basse à la plus élevée) : unimportant, normal, elevated, priority. Si ce paramètre est omis, la valeur par défaut (voir la commande &quot;set priority&quot;) est utilisée. &lt;mixin&gt; est le nombre d&apos;entrées supplémentaires à inclure pour l&apos;intraçabilité. De multiples paiements peuvent être effectués d&apos;un coup en ajoutant &lt;adresse_2&gt; &lt;montant_2&gt; et cetera (avant l&apos;ID de paiement, s&apos;il est inclus)</translation>
</message>
<message>
@@ -1643,7 +1643,7 @@ Attention : Certaines clés d&apos;entrées étant dépensées sont issues de <
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1306"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1311"/>
- <source>invalid language choice passed. Please try again.
+ <source>invalid language choice entered. Please try again.
</source>
<translation>choix de langue passé invalide. Veuillez réessayer.
</translation>
@@ -2543,7 +2543,7 @@ Sorties par * : </translation>
</message>
<message>
<location filename="../src/wallet/wallet2.cpp" line="460"/>
- <source>Enter new wallet password</source>
+ <source>Enter new password for the wallet</source>
<translation>Entrez le mot de passe du portefeuille</translation>
</message>
<message>
@@ -2701,14 +2701,14 @@ Sorties par * : </translation>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1789"/>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1814"/>
- <source>Storing wallet...</source>
+ <source>Saving wallet...</source>
<translation>Sauvegarde du portefeuille...</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1791"/>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1816"/>
- <source>Stored ok</source>
- <translation>Sauvegarde OK</translation>
+ <source>Saved ok</source>
+ <translation>Sauvegarde réussie</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1794"/>
@@ -2722,22 +2722,22 @@ Sorties par * : </translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1805"/>
- <source>Failed to initialize wallet rpc server</source>
+ <source>Failed to initialize wallet RPC server</source>
<translation>Échec de l&apos;initialisation du serveur RPC du portefeuille</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1809"/>
- <source>Starting wallet rpc server</source>
+ <source>Starting wallet RPC server</source>
<translation>Démarrage du serveur RPC du portefeuille</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1811"/>
- <source>Stopped wallet rpc server</source>
+ <source>Stopped wallet RPC server</source>
<translation>Arrêt du serveur RPC du portefeuille</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1820"/>
- <source>Failed to store wallet: </source>
+ <source>Failed to save wallet: </source>
<translation>Échec de la sauvegarde du portefeuille : </translation>
</message>
</context>
diff --git a/translations/monero_it.ts b/translations/monero_it.ts
index 3674b2a32..d0cc40304 100644
--- a/translations/monero_it.ts
+++ b/translations/monero_it.ts
@@ -414,8 +414,8 @@
<name>cryptonote::rpc_args</name>
<message>
<location filename="../src/rpc/rpc_args.cpp" line="38"/>
- <source>Specify ip to bind rpc server</source>
- <translation>Specificare ip da associare al server rpc</translation>
+ <source>Specify IP to bind RPC server</source>
+ <translation>Specificare IP da associare al server RPC</translation>
</message>
<message>
<location filename="../src/rpc/rpc_args.cpp" line="39"/>
@@ -527,8 +527,8 @@
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="710"/>
- <source>sweep_below &lt;amount_threshold&gt; [mixin] address [payment_id] - Send all unlocked outputs below the threshold to an address</source>
- <translation>sweep_below &lt;amount_threshold&gt; [mixin] address [payment_id] - Invia tutti gli outputs sbloccati sotto la soglia specificata a un indirizzo</translation>
+ <source>sweep_below &lt;amount_threshold&gt; [mixin] address [<payment_id>] - Send all unlocked outputs below the threshold to an address</source>
+ <translation>sweep_below &lt;amount_threshold&gt; [mixin] address [<payment_id>] - Invia tutti gli outputs sbloccati sotto la soglia specificata a un indirizzo</translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="727"/>
@@ -887,7 +887,7 @@ Questa transazione verrà sbloccata al blocco %llu, in approssimativamente %s gi
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="3137"/>
- <source>daemon is busy. Please try later</source>
+ <source>daemon is busy. Please try again later</source>
<translation>il daemon è occupato. Prova più tardi</translation>
</message>
<message>
@@ -922,13 +922,13 @@ Questa transazione verrà sbloccata al blocco %llu, in approssimativamente %s gi
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="525"/>
- <source>priority must be 0, 1, 2, 3,or 4</source>
- <translation>la priorità deve essere 0, 1, 2, 3,or 4</translation>
+ <source>priority must be 0, 1, 2, 3, or 4</source>
+ <translation>la priorità deve essere 0, 1, 2, 3, or 4</translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="540"/>
- <source>priority must be 0, 1, 2 3,or 4</source>
- <translation>la priorità deve essere 0, 1, 2 3, or 4</translation>
+ <source>priority must be 0, 1, 2, 3, or 4</source>
+ <translation>la priorità deve essere 0, 1, 2, 3, or 4</translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="623"/>
@@ -952,8 +952,8 @@ Questa transazione verrà sbloccata al blocco %llu, in approssimativamente %s gi
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="709"/>
- <source>sweep_all [mixin] address [payment_id] - Send all unlocked balance to an address</source>
- <translation>sweep_all [mixin] address [payment_id] - Manda tutto il bilancio sbloccato ad un indirizzo</translation>
+ <source>sweep_all [mixin] address [<payment_id>] - Send all unlocked balance to an address</source>
+ <translation>sweep_all [mixin] address [<payment_id>] - Manda tutto il bilancio sbloccato ad un indirizzo</translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="711"/>
@@ -1115,8 +1115,8 @@ Questa transazione verrà sbloccata al blocco %llu, in approssimativamente %s gi
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1887"/>
- <source>expected at least one payment_id</source>
- <translation>deve esserci almeno un payment_id</translation>
+ <source>expected at least one payment ID</source>
+ <translation>deve esserci almeno un payment ID</translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1896"/>
@@ -1336,7 +1336,7 @@ Avviso: alcune chiavi di input spese vengono da </translation>
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="706"/>
- <source>transfer [&lt;priority&gt;] [&lt;mixin_count&gt;] &lt;address&gt; &lt;amount&gt; [&lt;payment_id&gt;] - Transfer &lt;amount&gt; to &lt;address&gt;. &lt;priority&gt; is the priority of the transaction. The higher the priority, the higher the fee of the transaction. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command &quot;set priority&quot;) is used. &lt;mixin_count&gt; is the number of extra inputs to include for untraceability. Multiple payments can be made at once by adding &lt;address_2&gt; &lt;amount_2&gt; etcetera (before the payment ID, if it&apos;s included)</source>
+ <source>transfer [&lt;priority&gt;] [&lt;mixin_count&gt;] &lt;address&gt; &lt;amount&gt; [&lt;payment_id&gt;] - Transfer &lt;amount&gt; to &lt;address&gt;. &lt;priority&gt; is the priority of the transaction. The higher the priority, the higher the transaction fee. Valid values in priority order (from lowest to highest) are: unimportant, normal, elevated, priority. If omitted, the default value (see the command &quot;set priority&quot;) is used. &lt;mixin_count&gt; is the number of extra inputs to include for untraceability. Multiple payments can be made at once by adding &lt;address_2&gt; &lt;amount_2&gt; etcetera (before the payment ID, if it&apos;s included)</source>
<translation>transfer [&lt;priority&gt;] [&lt;mixin_count&gt;] &lt;address&gt; &lt;amount&gt; [&lt;payment_id&gt;] - Transfer &lt;amount&gt; to &lt;address&gt;. &lt;priority&gt; è la priorità della transazione. Maggiore è la priorità, maggiori saranno le tasse per la transazione. Valori validi in ordini di priorità (dal più basso al più alto) sono:unimportant, normal, elevated, priority. se omesso, verrà usato il valore standard (vedi il comando &quot;set priority&quot;). &lt;mixin_count&gt; è il numero di inputs extra da inludere per intracciabilità. Puoi eseguire pagamenti multipli in una volta aggiungendo &lt;address_2&gt; &lt;amount_2&gt; etcetera (prima dell&apos; ID pagamento, se incluso)</translation>
</message>
<message>
@@ -1608,7 +1608,7 @@ Avviso: alcune chiavi di input spese vengono da </translation>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="1306"/>
<location filename="../src/simplewallet/simplewallet.cpp" line="1311"/>
- <source>invalid language choice passed. Please try again.
+ <source>invalid language choice entered. Please try again.
</source>
<translation>linguaggio selezionato scorretto. Prova di nuovo.</translation>
</message>
@@ -1755,7 +1755,7 @@ di nuovo il tuo portafoglio (le chiavi del tuo portafoglio NON sono a rischio in
</message>
<message>
<location filename="../src/simplewallet/simplewallet.cpp" line="2921"/>
- <source>missing amount threshold</source>
+ <source>missing threshold amount</source>
<translation>manca la soglia massima dell&apos;ammontare</translation>
</message>
<message>
@@ -2512,7 +2512,7 @@ Outputs per *: </source>
</message>
<message>
<location filename="../src/wallet/wallet2.cpp" line="460"/>
- <source>Enter new wallet password</source>
+ <source>Enter new password for the wallet</source>
<translation>Inserisci una nuova password per il portafoglio</translation>
</message>
<message>
@@ -2670,13 +2670,13 @@ Outputs per *: </source>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1789"/>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1814"/>
- <source>Storing wallet...</source>
+ <source>Saving wallet...</source>
<translation>Sto salvando il portafoglio...</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1791"/>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1816"/>
- <source>Stored ok</source>
+ <source>Saved ok</source>
<translation>Salvato con successo</translation>
</message>
<message>
@@ -2691,22 +2691,22 @@ Outputs per *: </source>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1805"/>
- <source>Failed to initialize wallet rpc server</source>
- <translation>Inizializzazione server rpc portafoglio fallita</translation>
+ <source>Failed to initialize wallet RPC server</source>
+ <translation>Inizializzazione server RPC portafoglio fallita</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1809"/>
- <source>Starting wallet rpc server</source>
+ <source>Starting wallet RPC server</source>
<translation>Server RPC portafoglio in avvio</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1811"/>
- <source>Stopped wallet rpc server</source>
+ <source>Stopped wallet RPC server</source>
<translation>Server RPC portafoglio arrestato</translation>
</message>
<message>
<location filename="../src/wallet/wallet_rpc_server.cpp" line="1820"/>
- <source>Failed to store wallet: </source>
+ <source>Failed to save wallet: </source>
<translation>Impossibile salvare portafoglio: </translation>
</message>
</context>