mirror of
https://github.com/monero-project/monero.git
synced 2024-11-18 10:01:02 +00:00
Rename to lockblocks and add max value
This commit is contained in:
parent
68ac0607da
commit
71538f3240
1 changed files with 32 additions and 47 deletions
|
@ -652,7 +652,7 @@ simple_wallet::simple_wallet()
|
||||||
m_cmd_binder.set_handler("bc_height", boost::bind(&simple_wallet::show_blockchain_height, this, _1), tr("Show blockchain height"));
|
m_cmd_binder.set_handler("bc_height", boost::bind(&simple_wallet::show_blockchain_height, this, _1), tr("Show blockchain height"));
|
||||||
m_cmd_binder.set_handler("transfer_original", boost::bind(&simple_wallet::transfer, this, _1), tr("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 0 to maximum available)"));
|
m_cmd_binder.set_handler("transfer_original", boost::bind(&simple_wallet::transfer, this, _1), tr("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 0 to maximum available)"));
|
||||||
m_cmd_binder.set_handler("transfer", boost::bind(&simple_wallet::transfer_new, this, _1), tr("Same as transfer_original, but using a new transaction building algorithm"));
|
m_cmd_binder.set_handler("transfer", boost::bind(&simple_wallet::transfer_new, this, _1), tr("Same as transfer_original, but using a new transaction building algorithm"));
|
||||||
m_cmd_binder.set_handler("locked_transfer", boost::bind(&simple_wallet::locked_transfer, this, _1), tr("transfer [<mixin_count>] <addr> <amount> <locktime>(Number of blocks to lock the transaction for) [payment_id]"));
|
m_cmd_binder.set_handler("locked_transfer", boost::bind(&simple_wallet::locked_transfer, this, _1), tr("transfer [<mixin_count>] <addr> <amount> <lockblocks>(Number of blocks to lock the transaction for, max 1000000) [<payment_id>]"));
|
||||||
m_cmd_binder.set_handler("sweep_unmixable", boost::bind(&simple_wallet::sweep_unmixable, this, _1), tr("Send all unmixable outputs to yourself with mixin 0"));
|
m_cmd_binder.set_handler("sweep_unmixable", boost::bind(&simple_wallet::sweep_unmixable, this, _1), tr("Send all unmixable outputs to yourself with mixin 0"));
|
||||||
m_cmd_binder.set_handler("sweep_all", boost::bind(&simple_wallet::sweep_all, this, _1), tr("Send all unlocked balance an address"));
|
m_cmd_binder.set_handler("sweep_all", boost::bind(&simple_wallet::sweep_all, this, _1), tr("Send all unlocked balance an address"));
|
||||||
m_cmd_binder.set_handler("set_log", boost::bind(&simple_wallet::set_log, this, _1), tr("set_log <level> - Change current log detail level, <0-4>"));
|
m_cmd_binder.set_handler("set_log", boost::bind(&simple_wallet::set_log, this, _1), tr("set_log <level> - Change current log detail level, <0-4>"));
|
||||||
|
@ -2586,10 +2586,11 @@ bool simple_wallet::locked_transfer(const std::vector<std::string> &args_)
|
||||||
|
|
||||||
if(m_wallet->watch_only())
|
if(m_wallet->watch_only())
|
||||||
{
|
{
|
||||||
fail_msg_writer() << tr("this is a watch only wallet");
|
fail_msg_writer() << tr("this is a watch only wallet");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
int given_unlock_time = 0;
|
|
||||||
|
int locked_blocks = 0;
|
||||||
std::vector<uint8_t> extra;
|
std::vector<uint8_t> extra;
|
||||||
bool payment_id_seen = false;
|
bool payment_id_seen = false;
|
||||||
|
|
||||||
|
@ -2627,55 +2628,40 @@ bool simple_wallet::locked_transfer(const std::vector<std::string> &args_)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
//std::string unlock_time_string = local_args.back();
|
|
||||||
given_unlock_time = std::stoi( local_args.back() );
|
locked_blocks = std::stoi( local_args.back() );
|
||||||
|
if (locked_blocks > 1000000) {
|
||||||
|
fail_msg_writer() << tr("Locked blocks too high, max 1000000 (˜4 yrs)");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
local_args.pop_back();
|
local_args.pop_back();
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
fail_msg_writer() << tr("wrong number of arguments");
|
fail_msg_writer() << tr("Wrong number of arguments, use: locked_transfer [<mixin_count>] <addr> <amount> <lockblocks> [<payment_id>]");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
vector<cryptonote::tx_destination_entry> dsts;
|
vector<cryptonote::tx_destination_entry> dsts;
|
||||||
for (size_t i = 0; i < 1; i += 2)
|
|
||||||
|
cryptonote::tx_destination_entry de;
|
||||||
|
bool has_payment_id;
|
||||||
|
crypto::hash8 new_payment_id;
|
||||||
|
if (!get_address_from_str(local_args[0], de.addr, has_payment_id, new_payment_id))
|
||||||
|
return true;
|
||||||
|
|
||||||
|
bool ok = cryptonote::parse_amount(de.amount, local_args[1]);
|
||||||
|
if(!ok || 0 == de.amount)
|
||||||
{
|
{
|
||||||
cryptonote::tx_destination_entry de;
|
fail_msg_writer() << tr("amount is wrong: ") << local_args[0] << ' ' << local_args[1] <<
|
||||||
bool has_payment_id;
|
", " << tr("expected number from 0 to ") << print_money(std::numeric_limits<uint64_t>::max());
|
||||||
crypto::hash8 new_payment_id;
|
return true;
|
||||||
if (!get_address_from_str(local_args[i], de.addr, has_payment_id, new_payment_id))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
if (has_payment_id)
|
|
||||||
{
|
|
||||||
if (payment_id_seen)
|
|
||||||
{
|
|
||||||
fail_msg_writer() << tr("a single transaction cannot use more than one payment id: ") << local_args[i];
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string extra_nonce;
|
|
||||||
set_encrypted_payment_id_to_tx_extra_nonce(extra_nonce, new_payment_id);
|
|
||||||
bool r = add_extra_nonce_to_tx_extra(extra, extra_nonce);
|
|
||||||
if(!r)
|
|
||||||
{
|
|
||||||
fail_msg_writer() << tr("failed to set up payment id, though it was decoded correctly");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool ok = cryptonote::parse_amount(de.amount, local_args[i + 1]);
|
|
||||||
if(!ok || 0 == de.amount)
|
|
||||||
{
|
|
||||||
fail_msg_writer() << tr("amount is wrong: ") << local_args[i] << ' ' << local_args[i + 1] <<
|
|
||||||
", " << tr("expected number from 0 to ") << print_money(std::numeric_limits<uint64_t>::max());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
dsts.push_back(de);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dsts.push_back(de);
|
||||||
|
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// figure out what tx will be necessary
|
// figure out what tx will be necessary
|
||||||
|
@ -2683,8 +2669,8 @@ bool simple_wallet::locked_transfer(const std::vector<std::string> &args_)
|
||||||
|
|
||||||
std::string err;
|
std::string err;
|
||||||
int bc_height = get_daemon_blockchain_height(err);
|
int bc_height = get_daemon_blockchain_height(err);
|
||||||
int unlock_time = given_unlock_time + bc_height;
|
int unlock_block = locked_blocks + bc_height;
|
||||||
ptx_vector = m_wallet->create_transactions_2(dsts, fake_outs_count, unlock_time , 0 /* unused fee arg*/, extra, m_trusted_daemon);
|
ptx_vector = m_wallet->create_transactions_2(dsts, fake_outs_count, unlock_block , 0 /* unused fee arg*/, extra, m_trusted_daemon);
|
||||||
|
|
||||||
uint64_t total_fee = 0;
|
uint64_t total_fee = 0;
|
||||||
uint64_t dust_not_in_fee = 0;
|
uint64_t dust_not_in_fee = 0;
|
||||||
|
@ -2716,9 +2702,8 @@ bool simple_wallet::locked_transfer(const std::vector<std::string> &args_)
|
||||||
if (dust_not_in_fee != 0) prompt << tr(".") << ENDL << boost::format(tr("A total of %s from dust change will be sent to dust address"))
|
if (dust_not_in_fee != 0) prompt << tr(".") << ENDL << boost::format(tr("A total of %s from dust change will be sent to dust address"))
|
||||||
% print_money(dust_not_in_fee);
|
% print_money(dust_not_in_fee);
|
||||||
|
|
||||||
float days = (float)(given_unlock_time) / 720.0;
|
float days = (float)(locked_blocks) / 720.0;
|
||||||
prompt << boost::format(tr(".\nThe unlock time is approximately %s days")) %
|
prompt << boost::format(tr(".\nThe unlock time is approximately %s days")) % days;
|
||||||
days;
|
|
||||||
|
|
||||||
prompt << tr(".") << ENDL << tr("Is this okay? (Y/Yes/N/No)");
|
prompt << tr(".") << ENDL << tr("Is this okay? (Y/Yes/N/No)");
|
||||||
|
|
||||||
|
@ -2766,7 +2751,7 @@ bool simple_wallet::locked_transfer(const std::vector<std::string> &args_)
|
||||||
print_money(e.tx_amount() + e.fee()) %
|
print_money(e.tx_amount() + e.fee()) %
|
||||||
print_money(e.tx_amount()) %
|
print_money(e.tx_amount()) %
|
||||||
print_money(e.fee()));
|
print_money(e.fee()));
|
||||||
fail_msg_writer() << tr("Failed to find a way to create transactions, too bad. This is usually due to dust which is so small it cannot pay for itself in fees");
|
fail_msg_writer() << tr("Not enough money to transfer.");
|
||||||
}
|
}
|
||||||
catch (const tools::error::not_enough_outs_to_mix& e)
|
catch (const tools::error::not_enough_outs_to_mix& e)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue