mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-27 13:23:29 +01:00
Replace BOOST_FOREACH with C++11 ranged for
This commit is contained in:
parent
daf66621dc
commit
629e3101ab
@ -43,7 +43,7 @@ namespace boost
|
|||||||
{
|
{
|
||||||
size_t s = x.size();
|
size_t s = x.size();
|
||||||
a << s;
|
a << s;
|
||||||
BOOST_FOREACH(auto& v, x)
|
for(auto& v: x)
|
||||||
{
|
{
|
||||||
a << v.first;
|
a << v.first;
|
||||||
a << v.second;
|
a << v.second;
|
||||||
@ -72,7 +72,7 @@ namespace boost
|
|||||||
{
|
{
|
||||||
size_t s = x.size();
|
size_t s = x.size();
|
||||||
a << s;
|
a << s;
|
||||||
BOOST_FOREACH(auto& v, x)
|
for(auto& v: x)
|
||||||
{
|
{
|
||||||
a << v.first;
|
a << v.first;
|
||||||
a << v.second;
|
a << v.second;
|
||||||
@ -101,7 +101,7 @@ namespace boost
|
|||||||
{
|
{
|
||||||
size_t s = x.size();
|
size_t s = x.size();
|
||||||
a << s;
|
a << s;
|
||||||
BOOST_FOREACH(auto& v, x)
|
for(auto& v: x)
|
||||||
{
|
{
|
||||||
a << v;
|
a << v;
|
||||||
}
|
}
|
||||||
|
@ -668,7 +668,7 @@ namespace cryptonote
|
|||||||
bool core::are_key_images_spent(const std::vector<crypto::key_image>& key_im, std::vector<bool> &spent) const
|
bool core::are_key_images_spent(const std::vector<crypto::key_image>& key_im, std::vector<bool> &spent) const
|
||||||
{
|
{
|
||||||
spent.clear();
|
spent.clear();
|
||||||
BOOST_FOREACH(auto& ki, key_im)
|
for(auto& ki: key_im)
|
||||||
{
|
{
|
||||||
spent.push_back(m_blockchain_storage.have_tx_keyimg_as_spent(ki));
|
spent.push_back(m_blockchain_storage.have_tx_keyimg_as_spent(ki));
|
||||||
}
|
}
|
||||||
@ -681,14 +681,14 @@ namespace cryptonote
|
|||||||
uint64_t emission_amount = 0;
|
uint64_t emission_amount = 0;
|
||||||
uint64_t total_fee_amount = 0;
|
uint64_t total_fee_amount = 0;
|
||||||
this->get_blocks(start_offset, count, blocks);
|
this->get_blocks(start_offset, count, blocks);
|
||||||
BOOST_FOREACH(auto& b, blocks)
|
for(auto& b: blocks)
|
||||||
{
|
{
|
||||||
std::list<transaction> txs;
|
std::list<transaction> txs;
|
||||||
std::list<crypto::hash> missed_txs;
|
std::list<crypto::hash> missed_txs;
|
||||||
uint64_t coinbase_amount = get_outs_money_amount(b.miner_tx);
|
uint64_t coinbase_amount = get_outs_money_amount(b.miner_tx);
|
||||||
this->get_transactions(b.tx_hashes, txs, missed_txs);
|
this->get_transactions(b.tx_hashes, txs, missed_txs);
|
||||||
uint64_t tx_fee_amount = 0;
|
uint64_t tx_fee_amount = 0;
|
||||||
BOOST_FOREACH(const auto& tx, txs)
|
for(const auto& tx: txs)
|
||||||
{
|
{
|
||||||
tx_fee_amount += get_tx_fee(tx);
|
tx_fee_amount += get_tx_fee(tx);
|
||||||
}
|
}
|
||||||
@ -703,7 +703,7 @@ namespace cryptonote
|
|||||||
bool core::check_tx_inputs_keyimages_diff(const transaction& tx) const
|
bool core::check_tx_inputs_keyimages_diff(const transaction& tx) const
|
||||||
{
|
{
|
||||||
std::unordered_set<crypto::key_image> ki;
|
std::unordered_set<crypto::key_image> ki;
|
||||||
BOOST_FOREACH(const auto& in, tx.vin)
|
for(const auto& in: tx.vin)
|
||||||
{
|
{
|
||||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, false);
|
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, false);
|
||||||
if(!ki.insert(tokey_in.k_image).second)
|
if(!ki.insert(tokey_in.k_image).second)
|
||||||
@ -869,7 +869,7 @@ namespace cryptonote
|
|||||||
|
|
||||||
block_to_blob(b, arg.b.block);
|
block_to_blob(b, arg.b.block);
|
||||||
//pack transactions
|
//pack transactions
|
||||||
BOOST_FOREACH(auto& tx, txs)
|
for(auto& tx: txs)
|
||||||
arg.b.txs.push_back(t_serializable_object_to_blob(tx));
|
arg.b.txs.push_back(t_serializable_object_to_blob(tx));
|
||||||
|
|
||||||
m_pprotocol->relay_block(arg, exclude_context);
|
m_pprotocol->relay_block(arg, exclude_context);
|
||||||
|
@ -274,12 +274,12 @@ namespace cryptonote
|
|||||||
}
|
}
|
||||||
uint64_t amount_in = 0;
|
uint64_t amount_in = 0;
|
||||||
uint64_t amount_out = 0;
|
uint64_t amount_out = 0;
|
||||||
BOOST_FOREACH(auto& in, tx.vin)
|
for(auto& in: tx.vin)
|
||||||
{
|
{
|
||||||
CHECK_AND_ASSERT_MES(in.type() == typeid(txin_to_key), 0, "unexpected type id in transaction");
|
CHECK_AND_ASSERT_MES(in.type() == typeid(txin_to_key), 0, "unexpected type id in transaction");
|
||||||
amount_in += boost::get<txin_to_key>(in).amount;
|
amount_in += boost::get<txin_to_key>(in).amount;
|
||||||
}
|
}
|
||||||
BOOST_FOREACH(auto& o, tx.vout)
|
for(auto& o: tx.vout)
|
||||||
amount_out += o.amount;
|
amount_out += o.amount;
|
||||||
|
|
||||||
CHECK_AND_ASSERT_MES(amount_in >= amount_out, false, "transaction spend (" <<amount_in << ") more than it has (" << amount_out << ")");
|
CHECK_AND_ASSERT_MES(amount_in >= amount_out, false, "transaction spend (" <<amount_in << ") more than it has (" << amount_out << ")");
|
||||||
@ -540,7 +540,7 @@ namespace cryptonote
|
|||||||
uint64_t summary_inputs_money = 0;
|
uint64_t summary_inputs_money = 0;
|
||||||
//fill inputs
|
//fill inputs
|
||||||
int idx = -1;
|
int idx = -1;
|
||||||
BOOST_FOREACH(const tx_source_entry& src_entr, sources)
|
for(const tx_source_entry& src_entr: sources)
|
||||||
{
|
{
|
||||||
++idx;
|
++idx;
|
||||||
if(src_entr.real_output >= src_entr.outputs.size())
|
if(src_entr.real_output >= src_entr.outputs.size())
|
||||||
@ -574,7 +574,7 @@ namespace cryptonote
|
|||||||
input_to_key.k_image = img;
|
input_to_key.k_image = img;
|
||||||
|
|
||||||
//fill outputs array and use relative offsets
|
//fill outputs array and use relative offsets
|
||||||
BOOST_FOREACH(const tx_source_entry::output_entry& out_entry, src_entr.outputs)
|
for(const tx_source_entry::output_entry& out_entry: src_entr.outputs)
|
||||||
input_to_key.key_offsets.push_back(out_entry.first);
|
input_to_key.key_offsets.push_back(out_entry.first);
|
||||||
|
|
||||||
input_to_key.key_offsets = absolute_output_offsets_to_relative(input_to_key.key_offsets);
|
input_to_key.key_offsets = absolute_output_offsets_to_relative(input_to_key.key_offsets);
|
||||||
@ -588,7 +588,7 @@ namespace cryptonote
|
|||||||
uint64_t summary_outs_money = 0;
|
uint64_t summary_outs_money = 0;
|
||||||
//fill outputs
|
//fill outputs
|
||||||
size_t output_index = 0;
|
size_t output_index = 0;
|
||||||
BOOST_FOREACH(const tx_destination_entry& dst_entr, shuffled_dsts)
|
for(const tx_destination_entry& dst_entr: shuffled_dsts)
|
||||||
{
|
{
|
||||||
CHECK_AND_ASSERT_MES(dst_entr.amount > 0 || tx.version > 1, false, "Destination with wrong amount: " << dst_entr.amount);
|
CHECK_AND_ASSERT_MES(dst_entr.amount > 0 || tx.version > 1, false, "Destination with wrong amount: " << dst_entr.amount);
|
||||||
crypto::key_derivation derivation;
|
crypto::key_derivation derivation;
|
||||||
@ -639,13 +639,13 @@ namespace cryptonote
|
|||||||
|
|
||||||
std::stringstream ss_ring_s;
|
std::stringstream ss_ring_s;
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
BOOST_FOREACH(const tx_source_entry& src_entr, sources)
|
for(const tx_source_entry& src_entr: sources)
|
||||||
{
|
{
|
||||||
ss_ring_s << "pub_keys:" << ENDL;
|
ss_ring_s << "pub_keys:" << ENDL;
|
||||||
std::vector<const crypto::public_key*> keys_ptrs;
|
std::vector<const crypto::public_key*> keys_ptrs;
|
||||||
std::vector<crypto::public_key> keys(src_entr.outputs.size());
|
std::vector<crypto::public_key> keys(src_entr.outputs.size());
|
||||||
size_t ii = 0;
|
size_t ii = 0;
|
||||||
BOOST_FOREACH(const tx_source_entry::output_entry& o, src_entr.outputs)
|
for(const tx_source_entry::output_entry& o: src_entr.outputs)
|
||||||
{
|
{
|
||||||
keys[ii] = rct2pk(o.second.dest);
|
keys[ii] = rct2pk(o.second.dest);
|
||||||
keys_ptrs.push_back(&keys[ii]);
|
keys_ptrs.push_back(&keys[ii]);
|
||||||
@ -677,7 +677,7 @@ namespace cryptonote
|
|||||||
if (!use_simple_rct)
|
if (!use_simple_rct)
|
||||||
{
|
{
|
||||||
// non simple ringct requires all real inputs to be at the same index for all inputs
|
// non simple ringct requires all real inputs to be at the same index for all inputs
|
||||||
BOOST_FOREACH(const tx_source_entry& src_entr, sources)
|
for(const tx_source_entry& src_entr: sources)
|
||||||
{
|
{
|
||||||
if(src_entr.real_output != sources.begin()->real_output)
|
if(src_entr.real_output != sources.begin()->real_output)
|
||||||
{
|
{
|
||||||
@ -784,7 +784,7 @@ namespace cryptonote
|
|||||||
bool get_inputs_money_amount(const transaction& tx, uint64_t& money)
|
bool get_inputs_money_amount(const transaction& tx, uint64_t& money)
|
||||||
{
|
{
|
||||||
money = 0;
|
money = 0;
|
||||||
BOOST_FOREACH(const auto& in, tx.vin)
|
for(const auto& in: tx.vin)
|
||||||
{
|
{
|
||||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, false);
|
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, false);
|
||||||
money += tokey_in.amount;
|
money += tokey_in.amount;
|
||||||
@ -801,7 +801,7 @@ namespace cryptonote
|
|||||||
//---------------------------------------------------------------
|
//---------------------------------------------------------------
|
||||||
bool check_inputs_types_supported(const transaction& tx)
|
bool check_inputs_types_supported(const transaction& tx)
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(const auto& in, tx.vin)
|
for(const auto& in: tx.vin)
|
||||||
{
|
{
|
||||||
CHECK_AND_ASSERT_MES(in.type() == typeid(txin_to_key), false, "wrong variant type: "
|
CHECK_AND_ASSERT_MES(in.type() == typeid(txin_to_key), false, "wrong variant type: "
|
||||||
<< in.type().name() << ", expected " << typeid(txin_to_key).name()
|
<< in.type().name() << ", expected " << typeid(txin_to_key).name()
|
||||||
@ -813,7 +813,7 @@ namespace cryptonote
|
|||||||
//-----------------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------------
|
||||||
bool check_outs_valid(const transaction& tx)
|
bool check_outs_valid(const transaction& tx)
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(const tx_out& out, tx.vout)
|
for(const tx_out& out: tx.vout)
|
||||||
{
|
{
|
||||||
CHECK_AND_ASSERT_MES(out.target.type() == typeid(txout_to_key), false, "wrong variant type: "
|
CHECK_AND_ASSERT_MES(out.target.type() == typeid(txout_to_key), false, "wrong variant type: "
|
||||||
<< out.target.type().name() << ", expected " << typeid(txout_to_key).name()
|
<< out.target.type().name() << ", expected " << typeid(txout_to_key).name()
|
||||||
@ -838,7 +838,7 @@ namespace cryptonote
|
|||||||
bool check_inputs_overflow(const transaction& tx)
|
bool check_inputs_overflow(const transaction& tx)
|
||||||
{
|
{
|
||||||
uint64_t money = 0;
|
uint64_t money = 0;
|
||||||
BOOST_FOREACH(const auto& in, tx.vin)
|
for(const auto& in: tx.vin)
|
||||||
{
|
{
|
||||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, false);
|
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, false);
|
||||||
if(money > tokey_in.amount + money)
|
if(money > tokey_in.amount + money)
|
||||||
@ -851,7 +851,7 @@ namespace cryptonote
|
|||||||
bool check_outs_overflow(const transaction& tx)
|
bool check_outs_overflow(const transaction& tx)
|
||||||
{
|
{
|
||||||
uint64_t money = 0;
|
uint64_t money = 0;
|
||||||
BOOST_FOREACH(const auto& o, tx.vout)
|
for(const auto& o: tx.vout)
|
||||||
{
|
{
|
||||||
if(money > o.amount + money)
|
if(money > o.amount + money)
|
||||||
return false;
|
return false;
|
||||||
@ -863,7 +863,7 @@ namespace cryptonote
|
|||||||
uint64_t get_outs_money_amount(const transaction& tx)
|
uint64_t get_outs_money_amount(const transaction& tx)
|
||||||
{
|
{
|
||||||
uint64_t outputs_amount = 0;
|
uint64_t outputs_amount = 0;
|
||||||
BOOST_FOREACH(const auto& o, tx.vout)
|
for(const auto& o: tx.vout)
|
||||||
outputs_amount += o.amount;
|
outputs_amount += o.amount;
|
||||||
return outputs_amount;
|
return outputs_amount;
|
||||||
}
|
}
|
||||||
@ -905,7 +905,7 @@ namespace cryptonote
|
|||||||
{
|
{
|
||||||
money_transfered = 0;
|
money_transfered = 0;
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
BOOST_FOREACH(const tx_out& o, tx.vout)
|
for(const tx_out& o: tx.vout)
|
||||||
{
|
{
|
||||||
CHECK_AND_ASSERT_MES(o.target.type() == typeid(txout_to_key), false, "wrong type id in transaction out" );
|
CHECK_AND_ASSERT_MES(o.target.type() == typeid(txout_to_key), false, "wrong type id in transaction out" );
|
||||||
if(is_out_to_acc(acc, boost::get<txout_to_key>(o.target), tx_pub_key, i))
|
if(is_out_to_acc(acc, boost::get<txout_to_key>(o.target), tx_pub_key, i))
|
||||||
@ -1177,7 +1177,7 @@ namespace cryptonote
|
|||||||
size_t bl_sz = 0;
|
size_t bl_sz = 0;
|
||||||
get_transaction_hash(b.miner_tx, h, bl_sz);
|
get_transaction_hash(b.miner_tx, h, bl_sz);
|
||||||
txs_ids.push_back(h);
|
txs_ids.push_back(h);
|
||||||
BOOST_FOREACH(auto& th, b.tx_hashes)
|
for(auto& th: b.tx_hashes)
|
||||||
txs_ids.push_back(th);
|
txs_ids.push_back(th);
|
||||||
return get_tx_tree_hash(txs_ids);
|
return get_tx_tree_hash(txs_ids);
|
||||||
}
|
}
|
||||||
|
@ -292,7 +292,7 @@ namespace cryptonote
|
|||||||
send_stop_signal();
|
send_stop_signal();
|
||||||
CRITICAL_REGION_LOCAL(m_threads_lock);
|
CRITICAL_REGION_LOCAL(m_threads_lock);
|
||||||
|
|
||||||
BOOST_FOREACH(boost::thread& th, m_threads)
|
for(boost::thread& th: m_threads)
|
||||||
th.join();
|
th.join();
|
||||||
|
|
||||||
MINFO("Mining has been stopped, " << m_threads.size() << " finished" );
|
MINFO("Mining has been stopped, " << m_threads.size() << " finished" );
|
||||||
|
@ -240,7 +240,7 @@ namespace cryptonote
|
|||||||
// assume failure during verification steps until success is certain
|
// assume failure during verification steps until success is certain
|
||||||
tvc.m_verifivation_failed = true;
|
tvc.m_verifivation_failed = true;
|
||||||
|
|
||||||
BOOST_FOREACH(const auto& in, tx.vin)
|
for(const auto& in: tx.vin)
|
||||||
{
|
{
|
||||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, txin, false);
|
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, txin, false);
|
||||||
std::unordered_set<crypto::hash>& kei_image_set = m_spent_key_images[txin.k_image];
|
std::unordered_set<crypto::hash>& kei_image_set = m_spent_key_images[txin.k_image];
|
||||||
@ -275,7 +275,7 @@ namespace cryptonote
|
|||||||
// ND: Speedup
|
// ND: Speedup
|
||||||
// 1. Move transaction hash calcuation outside of loop. ._.
|
// 1. Move transaction hash calcuation outside of loop. ._.
|
||||||
crypto::hash actual_hash = get_transaction_hash(tx);
|
crypto::hash actual_hash = get_transaction_hash(tx);
|
||||||
BOOST_FOREACH(const txin_v& vi, tx.vin)
|
for(const txin_v& vi: tx.vin)
|
||||||
{
|
{
|
||||||
CHECKED_GET_SPECIFIC_VARIANT(vi, const txin_to_key, txin, false);
|
CHECKED_GET_SPECIFIC_VARIANT(vi, const txin_to_key, txin, false);
|
||||||
auto it = m_spent_key_images.find(txin.k_image);
|
auto it = m_spent_key_images.find(txin.k_image);
|
||||||
@ -415,7 +415,7 @@ namespace cryptonote
|
|||||||
void tx_memory_pool::get_transactions(std::list<transaction>& txs) const
|
void tx_memory_pool::get_transactions(std::list<transaction>& txs) const
|
||||||
{
|
{
|
||||||
CRITICAL_REGION_LOCAL(m_transactions_lock);
|
CRITICAL_REGION_LOCAL(m_transactions_lock);
|
||||||
BOOST_FOREACH(const auto& tx_vt, m_transactions)
|
for(const auto& tx_vt: m_transactions)
|
||||||
txs.push_back(tx_vt.second.tx);
|
txs.push_back(tx_vt.second.tx);
|
||||||
}
|
}
|
||||||
//------------------------------------------------------------------
|
//------------------------------------------------------------------
|
||||||
@ -488,7 +488,7 @@ namespace cryptonote
|
|||||||
bool tx_memory_pool::have_tx_keyimges_as_spent(const transaction& tx) const
|
bool tx_memory_pool::have_tx_keyimges_as_spent(const transaction& tx) const
|
||||||
{
|
{
|
||||||
CRITICAL_REGION_LOCAL(m_transactions_lock);
|
CRITICAL_REGION_LOCAL(m_transactions_lock);
|
||||||
BOOST_FOREACH(const auto& in, tx.vin)
|
for(const auto& in: tx.vin)
|
||||||
{
|
{
|
||||||
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, true);//should never fail
|
CHECKED_GET_SPECIFIC_VARIANT(in, const txin_to_key, tokey_in, true);//should never fail
|
||||||
if(have_tx_keyimg_as_spent(tokey_in.k_image))
|
if(have_tx_keyimg_as_spent(tokey_in.k_image))
|
||||||
|
@ -411,7 +411,7 @@ namespace cryptonote
|
|||||||
transaction tx;
|
transaction tx;
|
||||||
crypto::hash tx_hash;
|
crypto::hash tx_hash;
|
||||||
|
|
||||||
BOOST_FOREACH(auto& tx_blob, arg.b.txs)
|
for(auto& tx_blob: arg.b.txs)
|
||||||
{
|
{
|
||||||
if(parse_and_validate_tx_from_blob(tx_blob, tx))
|
if(parse_and_validate_tx_from_blob(tx_blob, tx))
|
||||||
{
|
{
|
||||||
@ -527,7 +527,7 @@ namespace cryptonote
|
|||||||
}
|
}
|
||||||
|
|
||||||
size_t tx_idx = 0;
|
size_t tx_idx = 0;
|
||||||
BOOST_FOREACH(auto& tx_hash, new_block.tx_hashes)
|
for(auto& tx_hash: new_block.tx_hashes)
|
||||||
{
|
{
|
||||||
if(m_core.get_pool_transaction(tx_hash, tx))
|
if(m_core.get_pool_transaction(tx_hash, tx))
|
||||||
{
|
{
|
||||||
@ -638,7 +638,7 @@ namespace cryptonote
|
|||||||
fluffy_response.current_blockchain_height = m_core.get_current_blockchain_height();
|
fluffy_response.current_blockchain_height = m_core.get_current_blockchain_height();
|
||||||
fluffy_response.hop = arg.hop;
|
fluffy_response.hop = arg.hop;
|
||||||
size_t local_txs_count = local_txs.size();
|
size_t local_txs_count = local_txs.size();
|
||||||
BOOST_FOREACH(auto& tx_idx, arg.missing_tx_indices)
|
for(auto& tx_idx: arg.missing_tx_indices)
|
||||||
{
|
{
|
||||||
if(tx_idx < local_txs_count)
|
if(tx_idx < local_txs_count)
|
||||||
{
|
{
|
||||||
@ -790,7 +790,7 @@ namespace cryptonote
|
|||||||
context.m_remote_blockchain_height = arg.current_blockchain_height;
|
context.m_remote_blockchain_height = arg.current_blockchain_height;
|
||||||
|
|
||||||
size_t count = 0;
|
size_t count = 0;
|
||||||
BOOST_FOREACH(const block_complete_entry& block_entry, arg.blocks)
|
for(const block_complete_entry& block_entry: arg.blocks)
|
||||||
{
|
{
|
||||||
if (m_stopping)
|
if (m_stopping)
|
||||||
{
|
{
|
||||||
@ -859,7 +859,7 @@ namespace cryptonote
|
|||||||
uint64_t previous_height = m_core.get_current_blockchain_height();
|
uint64_t previous_height = m_core.get_current_blockchain_height();
|
||||||
|
|
||||||
m_core.prepare_handle_incoming_blocks(arg.blocks);
|
m_core.prepare_handle_incoming_blocks(arg.blocks);
|
||||||
BOOST_FOREACH(const block_complete_entry& block_entry, arg.blocks)
|
for(const block_complete_entry& block_entry: arg.blocks)
|
||||||
{
|
{
|
||||||
if (m_stopping)
|
if (m_stopping)
|
||||||
{
|
{
|
||||||
@ -869,7 +869,7 @@ namespace cryptonote
|
|||||||
|
|
||||||
// process transactions
|
// process transactions
|
||||||
TIME_MEASURE_START(transactions_process_time);
|
TIME_MEASURE_START(transactions_process_time);
|
||||||
BOOST_FOREACH(auto& tx_blob, block_entry.txs)
|
for(auto& tx_blob: block_entry.txs)
|
||||||
{
|
{
|
||||||
tx_verification_context tvc = AUTO_VAL_INIT(tvc);
|
tx_verification_context tvc = AUTO_VAL_INIT(tvc);
|
||||||
m_core.handle_incoming_tx(tx_blob, tvc, true, true, false);
|
m_core.handle_incoming_tx(tx_blob, tvc, true, true, false);
|
||||||
@ -1080,7 +1080,7 @@ namespace cryptonote
|
|||||||
m_p2p->drop_connection(context);
|
m_p2p->drop_connection(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_FOREACH(auto& bl_id, arg.m_block_ids)
|
for(auto& bl_id: arg.m_block_ids)
|
||||||
{
|
{
|
||||||
if(!m_core.have_block(bl_id))
|
if(!m_core.have_block(bl_id))
|
||||||
context.m_needed_objects.push_back(bl_id);
|
context.m_needed_objects.push_back(bl_id);
|
||||||
|
@ -1182,7 +1182,7 @@ namespace nodetool
|
|||||||
time(&now);
|
time(&now);
|
||||||
delta = now - local_time;
|
delta = now - local_time;
|
||||||
|
|
||||||
BOOST_FOREACH(peerlist_entry& be, local_peerlist)
|
for(peerlist_entry& be: local_peerlist)
|
||||||
{
|
{
|
||||||
if(be.last_seen > local_time)
|
if(be.last_seen > local_time)
|
||||||
{
|
{
|
||||||
@ -1320,7 +1320,7 @@ namespace nodetool
|
|||||||
template<class t_payload_net_handler>
|
template<class t_payload_net_handler>
|
||||||
bool node_server<t_payload_net_handler>::relay_notify_to_list(int command, const std::string& data_buff, const std::list<boost::uuids::uuid> &connections)
|
bool node_server<t_payload_net_handler>::relay_notify_to_list(int command, const std::string& data_buff, const std::list<boost::uuids::uuid> &connections)
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(const auto& c_id, connections)
|
for(const auto& c_id: connections)
|
||||||
{
|
{
|
||||||
m_net_server.get_config_object().notify(command, data_buff, c_id);
|
m_net_server.get_config_object().notify(command, data_buff, c_id);
|
||||||
}
|
}
|
||||||
|
@ -230,7 +230,7 @@ namespace nodetool
|
|||||||
bool peerlist_manager::merge_peerlist(const std::list<peerlist_entry>& outer_bs)
|
bool peerlist_manager::merge_peerlist(const std::list<peerlist_entry>& outer_bs)
|
||||||
{
|
{
|
||||||
CRITICAL_REGION_LOCAL(m_peerlist_lock);
|
CRITICAL_REGION_LOCAL(m_peerlist_lock);
|
||||||
BOOST_FOREACH(const peerlist_entry& be, outer_bs)
|
for(const peerlist_entry& be: outer_bs)
|
||||||
{
|
{
|
||||||
append_with_peer_gray(be);
|
append_with_peer_gray(be);
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ namespace nodetool
|
|||||||
time(&now_time);
|
time(&now_time);
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
ss << std::setfill ('0') << std::setw (8) << std::hex << std::noshowbase;
|
ss << std::setfill ('0') << std::setw (8) << std::hex << std::noshowbase;
|
||||||
BOOST_FOREACH(const peerlist_entry& pe, pl)
|
for(const peerlist_entry& pe: pl)
|
||||||
{
|
{
|
||||||
ss << pe.id << "\t" << epee::string_tools::get_ip_string_from_int32(pe.adr.ip) << ":" << boost::lexical_cast<std::string>(pe.adr.port) << " \tlast_seen: " << epee::misc_utils::get_time_interval_string(now_time - pe.last_seen) << std::endl;
|
ss << pe.id << "\t" << epee::string_tools::get_ip_string_from_int32(pe.adr.ip) << ":" << boost::lexical_cast<std::string>(pe.adr.port) << " \tlast_seen: " << epee::misc_utils::get_time_interval_string(now_time - pe.last_seen) << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -160,7 +160,7 @@ namespace cryptonote
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_FOREACH(auto& b, bs)
|
for(auto& b: bs)
|
||||||
{
|
{
|
||||||
res.blocks.resize(res.blocks.size()+1);
|
res.blocks.resize(res.blocks.size()+1);
|
||||||
res.blocks.back().block = block_to_blob(b.first);
|
res.blocks.back().block = block_to_blob(b.first);
|
||||||
@ -173,7 +173,7 @@ namespace cryptonote
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
size_t txidx = 0;
|
size_t txidx = 0;
|
||||||
BOOST_FOREACH(auto& t, b.second)
|
for(auto& t: b.second)
|
||||||
{
|
{
|
||||||
res.blocks.back().txs.push_back(tx_to_blob(t));
|
res.blocks.back().txs.push_back(tx_to_blob(t));
|
||||||
res.output_indices.back().indices.push_back(COMMAND_RPC_GET_BLOCKS_FAST::tx_output_indices());
|
res.output_indices.back().indices.push_back(COMMAND_RPC_GET_BLOCKS_FAST::tx_output_indices());
|
||||||
@ -381,7 +381,7 @@ namespace cryptonote
|
|||||||
{
|
{
|
||||||
CHECK_CORE_BUSY();
|
CHECK_CORE_BUSY();
|
||||||
std::vector<crypto::hash> vh;
|
std::vector<crypto::hash> vh;
|
||||||
BOOST_FOREACH(const auto& tx_hex_str, req.txs_hashes)
|
for(const auto& tx_hex_str: req.txs_hashes)
|
||||||
{
|
{
|
||||||
blobdata b;
|
blobdata b;
|
||||||
if(!string_tools::parse_hexstr_to_binbuff(tx_hex_str, b))
|
if(!string_tools::parse_hexstr_to_binbuff(tx_hex_str, b))
|
||||||
@ -433,7 +433,7 @@ namespace cryptonote
|
|||||||
|
|
||||||
std::list<std::string>::const_iterator txhi = req.txs_hashes.begin();
|
std::list<std::string>::const_iterator txhi = req.txs_hashes.begin();
|
||||||
std::vector<crypto::hash>::const_iterator vhi = vh.begin();
|
std::vector<crypto::hash>::const_iterator vhi = vh.begin();
|
||||||
BOOST_FOREACH(auto& tx, txs)
|
for(auto& tx: txs)
|
||||||
{
|
{
|
||||||
res.txs.push_back(COMMAND_RPC_GET_TRANSACTIONS::entry());
|
res.txs.push_back(COMMAND_RPC_GET_TRANSACTIONS::entry());
|
||||||
COMMAND_RPC_GET_TRANSACTIONS::entry &e = res.txs.back();
|
COMMAND_RPC_GET_TRANSACTIONS::entry &e = res.txs.back();
|
||||||
@ -471,7 +471,7 @@ namespace cryptonote
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_FOREACH(const auto& miss_tx, missed_txs)
|
for(const auto& miss_tx: missed_txs)
|
||||||
{
|
{
|
||||||
res.missed_tx.push_back(string_tools::pod_to_hex(miss_tx));
|
res.missed_tx.push_back(string_tools::pod_to_hex(miss_tx));
|
||||||
}
|
}
|
||||||
@ -485,7 +485,7 @@ namespace cryptonote
|
|||||||
{
|
{
|
||||||
CHECK_CORE_BUSY();
|
CHECK_CORE_BUSY();
|
||||||
std::vector<crypto::key_image> key_images;
|
std::vector<crypto::key_image> key_images;
|
||||||
BOOST_FOREACH(const auto& ki_hex_str, req.key_images)
|
for(const auto& ki_hex_str: req.key_images)
|
||||||
{
|
{
|
||||||
blobdata b;
|
blobdata b;
|
||||||
if(!string_tools::parse_hexstr_to_binbuff(ki_hex_str, b))
|
if(!string_tools::parse_hexstr_to_binbuff(ki_hex_str, b))
|
||||||
@ -908,7 +908,7 @@ namespace cryptonote
|
|||||||
uint64_t core_rpc_server::get_block_reward(const block& blk)
|
uint64_t core_rpc_server::get_block_reward(const block& blk)
|
||||||
{
|
{
|
||||||
uint64_t reward = 0;
|
uint64_t reward = 0;
|
||||||
BOOST_FOREACH(const tx_out& out, blk.miner_tx.vout)
|
for(const tx_out& out: blk.miner_tx.vout)
|
||||||
{
|
{
|
||||||
reward += out.amount;
|
reward += out.amount;
|
||||||
}
|
}
|
||||||
|
@ -841,7 +841,7 @@ void wallet2::process_new_transaction(const cryptonote::transaction& tx, const s
|
|||||||
" not match with daemon response size=" + std::to_string(o_indices.size()));
|
" not match with daemon response size=" + std::to_string(o_indices.size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
BOOST_FOREACH(size_t o, outs)
|
for(size_t o: outs)
|
||||||
{
|
{
|
||||||
THROW_WALLET_EXCEPTION_IF(tx.vout.size() <= o, error::wallet_internal_error, "wrong out in transaction: internal index=" +
|
THROW_WALLET_EXCEPTION_IF(tx.vout.size() <= o, error::wallet_internal_error, "wrong out in transaction: internal index=" +
|
||||||
std::to_string(o) + ", total_outs=" + std::to_string(tx.vout.size()));
|
std::to_string(o) + ", total_outs=" + std::to_string(tx.vout.size()));
|
||||||
@ -945,7 +945,7 @@ void wallet2::process_new_transaction(const cryptonote::transaction& tx, const s
|
|||||||
|
|
||||||
uint64_t tx_money_spent_in_ins = 0;
|
uint64_t tx_money_spent_in_ins = 0;
|
||||||
// check all outputs for spending (compare key images)
|
// check all outputs for spending (compare key images)
|
||||||
BOOST_FOREACH(auto& in, tx.vin)
|
for(auto& in: tx.vin)
|
||||||
{
|
{
|
||||||
if(in.type() != typeid(cryptonote::txin_to_key))
|
if(in.type() != typeid(cryptonote::txin_to_key))
|
||||||
continue;
|
continue;
|
||||||
@ -1106,7 +1106,7 @@ void wallet2::process_new_blockchain_entry(const cryptonote::block& b, const cry
|
|||||||
TIME_MEASURE_FINISH(miner_tx_handle_time);
|
TIME_MEASURE_FINISH(miner_tx_handle_time);
|
||||||
|
|
||||||
TIME_MEASURE_START(txs_handle_time);
|
TIME_MEASURE_START(txs_handle_time);
|
||||||
BOOST_FOREACH(auto& txblob, bche.txs)
|
for(auto& txblob: bche.txs)
|
||||||
{
|
{
|
||||||
cryptonote::transaction tx;
|
cryptonote::transaction tx;
|
||||||
bool r = parse_and_validate_tx_from_blob(txblob, tx);
|
bool r = parse_and_validate_tx_from_blob(txblob, tx);
|
||||||
@ -1275,7 +1275,7 @@ void wallet2::process_blocks(uint64_t start_height, const std::list<cryptonote::
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
BOOST_FOREACH(auto& bl_entry, blocks)
|
for(auto& bl_entry: blocks)
|
||||||
{
|
{
|
||||||
cryptonote::block bl;
|
cryptonote::block bl;
|
||||||
bool r = cryptonote::parse_and_validate_block_from_blob(bl_entry.block, bl);
|
bool r = cryptonote::parse_and_validate_block_from_blob(bl_entry.block, bl);
|
||||||
@ -1556,7 +1556,7 @@ void wallet2::fast_refresh(uint64_t stop_height, uint64_t &blocks_start_height,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
current_index = blocks_start_height;
|
current_index = blocks_start_height;
|
||||||
BOOST_FOREACH(auto& bl_id, hashes)
|
for(auto& bl_id: hashes)
|
||||||
{
|
{
|
||||||
if(current_index >= m_blockchain.size())
|
if(current_index >= m_blockchain.size())
|
||||||
{
|
{
|
||||||
@ -2514,7 +2514,7 @@ void wallet2::store_to(const std::string &path, const std::string &password)
|
|||||||
uint64_t wallet2::unlocked_balance() const
|
uint64_t wallet2::unlocked_balance() const
|
||||||
{
|
{
|
||||||
uint64_t amount = 0;
|
uint64_t amount = 0;
|
||||||
BOOST_FOREACH(const transfer_details& td, m_transfers)
|
for(const transfer_details& td: m_transfers)
|
||||||
if(!td.m_spent && is_transfer_unlocked(td))
|
if(!td.m_spent && is_transfer_unlocked(td))
|
||||||
amount += td.amount();
|
amount += td.amount();
|
||||||
|
|
||||||
@ -2524,12 +2524,12 @@ uint64_t wallet2::unlocked_balance() const
|
|||||||
uint64_t wallet2::balance() const
|
uint64_t wallet2::balance() const
|
||||||
{
|
{
|
||||||
uint64_t amount = 0;
|
uint64_t amount = 0;
|
||||||
BOOST_FOREACH(auto& td, m_transfers)
|
for(auto& td: m_transfers)
|
||||||
if(!td.m_spent)
|
if(!td.m_spent)
|
||||||
amount += td.amount();
|
amount += td.amount();
|
||||||
|
|
||||||
|
|
||||||
BOOST_FOREACH(auto& utx, m_unconfirmed_txs)
|
for(auto& utx: m_unconfirmed_txs)
|
||||||
if (utx.second.m_state != wallet2::unconfirmed_transfer_details::failed)
|
if (utx.second.m_state != wallet2::unconfirmed_transfer_details::failed)
|
||||||
amount+= utx.second.m_change;
|
amount+= utx.second.m_change;
|
||||||
|
|
||||||
@ -2997,7 +2997,7 @@ void wallet2::commit_tx(pending_tx& ptx)
|
|||||||
{
|
{
|
||||||
payment_id = get_payment_id(ptx);
|
payment_id = get_payment_id(ptx);
|
||||||
dests = ptx.dests;
|
dests = ptx.dests;
|
||||||
BOOST_FOREACH(size_t idx, ptx.selected_transfers)
|
for(size_t idx: ptx.selected_transfers)
|
||||||
amount_in += m_transfers[idx].amount();
|
amount_in += m_transfers[idx].amount();
|
||||||
}
|
}
|
||||||
add_unconfirmed_tx(ptx.tx, amount_in, dests, payment_id, ptx.change_dts.amount);
|
add_unconfirmed_tx(ptx.tx, amount_in, dests, payment_id, ptx.change_dts.amount);
|
||||||
@ -3008,7 +3008,7 @@ void wallet2::commit_tx(pending_tx& ptx)
|
|||||||
|
|
||||||
LOG_PRINT_L2("transaction " << txid << " generated ok and sent to daemon, key_images: [" << ptx.key_images << "]");
|
LOG_PRINT_L2("transaction " << txid << " generated ok and sent to daemon, key_images: [" << ptx.key_images << "]");
|
||||||
|
|
||||||
BOOST_FOREACH(size_t idx, ptx.selected_transfers)
|
for(size_t idx: ptx.selected_transfers)
|
||||||
{
|
{
|
||||||
set_spent(idx, 0);
|
set_spent(idx, 0);
|
||||||
}
|
}
|
||||||
@ -3356,7 +3356,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions(std::vector<crypto
|
|||||||
ptx_vector.push_back(ptx);
|
ptx_vector.push_back(ptx);
|
||||||
|
|
||||||
// mark transfers to be used as "spent"
|
// mark transfers to be used as "spent"
|
||||||
BOOST_FOREACH(size_t idx, ptx.selected_transfers)
|
for(size_t idx: ptx.selected_transfers)
|
||||||
{
|
{
|
||||||
set_spent(idx, 0);
|
set_spent(idx, 0);
|
||||||
}
|
}
|
||||||
@ -3368,7 +3368,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions(std::vector<crypto
|
|||||||
for (auto & ptx : ptx_vector)
|
for (auto & ptx : ptx_vector)
|
||||||
{
|
{
|
||||||
// mark transfers to be used as not spent
|
// mark transfers to be used as not spent
|
||||||
BOOST_FOREACH(size_t idx2, ptx.selected_transfers)
|
for(size_t idx2: ptx.selected_transfers)
|
||||||
{
|
{
|
||||||
set_unspent(idx2);
|
set_unspent(idx2);
|
||||||
}
|
}
|
||||||
@ -3387,7 +3387,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions(std::vector<crypto
|
|||||||
for (auto & ptx : ptx_vector)
|
for (auto & ptx : ptx_vector)
|
||||||
{
|
{
|
||||||
// mark transfers to be used as not spent
|
// mark transfers to be used as not spent
|
||||||
BOOST_FOREACH(size_t idx2, ptx.selected_transfers)
|
for(size_t idx2: ptx.selected_transfers)
|
||||||
{
|
{
|
||||||
set_unspent(idx2);
|
set_unspent(idx2);
|
||||||
}
|
}
|
||||||
@ -3406,7 +3406,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions(std::vector<crypto
|
|||||||
for (auto & ptx : ptx_vector)
|
for (auto & ptx : ptx_vector)
|
||||||
{
|
{
|
||||||
// mark transfers to be used as not spent
|
// mark transfers to be used as not spent
|
||||||
BOOST_FOREACH(size_t idx2, ptx.selected_transfers)
|
for(size_t idx2: ptx.selected_transfers)
|
||||||
{
|
{
|
||||||
set_unspent(idx2);
|
set_unspent(idx2);
|
||||||
}
|
}
|
||||||
@ -3667,7 +3667,7 @@ void wallet2::transfer_selected(const std::vector<cryptonote::tx_destination_ent
|
|||||||
|
|
||||||
// calculate total amount being sent to all destinations
|
// calculate total amount being sent to all destinations
|
||||||
// throw if total amount overflows uint64_t
|
// throw if total amount overflows uint64_t
|
||||||
BOOST_FOREACH(auto& dt, dsts)
|
for(auto& dt: dsts)
|
||||||
{
|
{
|
||||||
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
||||||
needed_money += dt.amount;
|
needed_money += dt.amount;
|
||||||
@ -3676,7 +3676,7 @@ void wallet2::transfer_selected(const std::vector<cryptonote::tx_destination_ent
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint64_t found_money = 0;
|
uint64_t found_money = 0;
|
||||||
BOOST_FOREACH(size_t idx, selected_transfers)
|
for(size_t idx: selected_transfers)
|
||||||
{
|
{
|
||||||
found_money += m_transfers[idx].amount();
|
found_money += m_transfers[idx].amount();
|
||||||
}
|
}
|
||||||
@ -3692,7 +3692,7 @@ void wallet2::transfer_selected(const std::vector<cryptonote::tx_destination_ent
|
|||||||
typedef cryptonote::tx_source_entry::output_entry tx_output_entry;
|
typedef cryptonote::tx_source_entry::output_entry tx_output_entry;
|
||||||
size_t i = 0, out_index = 0;
|
size_t i = 0, out_index = 0;
|
||||||
std::vector<cryptonote::tx_source_entry> sources;
|
std::vector<cryptonote::tx_source_entry> sources;
|
||||||
BOOST_FOREACH(size_t idx, selected_transfers)
|
for(size_t idx: selected_transfers)
|
||||||
{
|
{
|
||||||
sources.resize(sources.size()+1);
|
sources.resize(sources.size()+1);
|
||||||
cryptonote::tx_source_entry& src = sources.back();
|
cryptonote::tx_source_entry& src = sources.back();
|
||||||
@ -3743,11 +3743,11 @@ void wallet2::transfer_selected(const std::vector<cryptonote::tx_destination_ent
|
|||||||
std::vector<cryptonote::tx_destination_entry> splitted_dsts, dust_dsts;
|
std::vector<cryptonote::tx_destination_entry> splitted_dsts, dust_dsts;
|
||||||
uint64_t dust = 0;
|
uint64_t dust = 0;
|
||||||
destination_split_strategy(dsts, change_dts, dust_policy.dust_threshold, splitted_dsts, dust_dsts);
|
destination_split_strategy(dsts, change_dts, dust_policy.dust_threshold, splitted_dsts, dust_dsts);
|
||||||
BOOST_FOREACH(auto& d, dust_dsts) {
|
for(auto& d: dust_dsts) {
|
||||||
THROW_WALLET_EXCEPTION_IF(dust_policy.dust_threshold < d.amount, error::wallet_internal_error, "invalid dust value: dust = " +
|
THROW_WALLET_EXCEPTION_IF(dust_policy.dust_threshold < d.amount, error::wallet_internal_error, "invalid dust value: dust = " +
|
||||||
std::to_string(d.amount) + ", dust_threshold = " + std::to_string(dust_policy.dust_threshold));
|
std::to_string(d.amount) + ", dust_threshold = " + std::to_string(dust_policy.dust_threshold));
|
||||||
}
|
}
|
||||||
BOOST_FOREACH(auto& d, dust_dsts) {
|
for(auto& d: dust_dsts) {
|
||||||
if (!dust_policy.add_to_fee)
|
if (!dust_policy.add_to_fee)
|
||||||
splitted_dsts.push_back(cryptonote::tx_destination_entry(d.amount, dust_policy.addr_for_dust));
|
splitted_dsts.push_back(cryptonote::tx_destination_entry(d.amount, dust_policy.addr_for_dust));
|
||||||
dust += d.amount;
|
dust += d.amount;
|
||||||
@ -3812,7 +3812,7 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry
|
|||||||
|
|
||||||
// calculate total amount being sent to all destinations
|
// calculate total amount being sent to all destinations
|
||||||
// throw if total amount overflows uint64_t
|
// throw if total amount overflows uint64_t
|
||||||
BOOST_FOREACH(auto& dt, dsts)
|
for(auto& dt: dsts)
|
||||||
{
|
{
|
||||||
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
||||||
needed_money += dt.amount;
|
needed_money += dt.amount;
|
||||||
@ -3821,7 +3821,7 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint64_t found_money = 0;
|
uint64_t found_money = 0;
|
||||||
BOOST_FOREACH(size_t idx, selected_transfers)
|
for(size_t idx: selected_transfers)
|
||||||
{
|
{
|
||||||
found_money += m_transfers[idx].amount();
|
found_money += m_transfers[idx].amount();
|
||||||
}
|
}
|
||||||
@ -3836,7 +3836,7 @@ void wallet2::transfer_selected_rct(std::vector<cryptonote::tx_destination_entry
|
|||||||
LOG_PRINT_L2("preparing outputs");
|
LOG_PRINT_L2("preparing outputs");
|
||||||
size_t i = 0, out_index = 0;
|
size_t i = 0, out_index = 0;
|
||||||
std::vector<cryptonote::tx_source_entry> sources;
|
std::vector<cryptonote::tx_source_entry> sources;
|
||||||
BOOST_FOREACH(size_t idx, selected_transfers)
|
for(size_t idx: selected_transfers)
|
||||||
{
|
{
|
||||||
sources.resize(sources.size()+1);
|
sources.resize(sources.size()+1);
|
||||||
cryptonote::tx_source_entry& src = sources.back();
|
cryptonote::tx_source_entry& src = sources.back();
|
||||||
@ -4107,7 +4107,7 @@ std::vector<wallet2::pending_tx> wallet2::create_transactions_2(std::vector<cryp
|
|||||||
// calculate total amount being sent to all destinations
|
// calculate total amount being sent to all destinations
|
||||||
// throw if total amount overflows uint64_t
|
// throw if total amount overflows uint64_t
|
||||||
needed_money = 0;
|
needed_money = 0;
|
||||||
BOOST_FOREACH(auto& dt, dsts)
|
for(auto& dt: dsts)
|
||||||
{
|
{
|
||||||
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
||||||
needed_money += dt.amount;
|
needed_money += dt.amount;
|
||||||
|
@ -924,7 +924,7 @@ namespace tools
|
|||||||
splitted_dsts.clear();
|
splitted_dsts.clear();
|
||||||
dust_dsts.clear();
|
dust_dsts.clear();
|
||||||
|
|
||||||
BOOST_FOREACH(auto& de, dsts)
|
for(auto& de: dsts)
|
||||||
{
|
{
|
||||||
cryptonote::decompose_amount_into_digits(de.amount, 0,
|
cryptonote::decompose_amount_into_digits(de.amount, 0,
|
||||||
[&](uint64_t chunk) { splitted_dsts.push_back(cryptonote::tx_destination_entry(chunk, de.addr)); },
|
[&](uint64_t chunk) { splitted_dsts.push_back(cryptonote::tx_destination_entry(chunk, de.addr)); },
|
||||||
@ -987,7 +987,7 @@ namespace tools
|
|||||||
|
|
||||||
// calculate total amount being sent to all destinations
|
// calculate total amount being sent to all destinations
|
||||||
// throw if total amount overflows uint64_t
|
// throw if total amount overflows uint64_t
|
||||||
BOOST_FOREACH(auto& dt, dsts)
|
for(auto& dt: dsts)
|
||||||
{
|
{
|
||||||
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
THROW_WALLET_EXCEPTION_IF(0 == dt.amount, error::zero_destination);
|
||||||
needed_money += dt.amount;
|
needed_money += dt.amount;
|
||||||
@ -1008,7 +1008,7 @@ namespace tools
|
|||||||
{
|
{
|
||||||
COMMAND_RPC_GET_RANDOM_OUTPUTS_FOR_AMOUNTS::request req = AUTO_VAL_INIT(req);
|
COMMAND_RPC_GET_RANDOM_OUTPUTS_FOR_AMOUNTS::request req = AUTO_VAL_INIT(req);
|
||||||
req.outs_count = fake_outputs_count + 1;// add one to make possible (if need) to skip real output key
|
req.outs_count = fake_outputs_count + 1;// add one to make possible (if need) to skip real output key
|
||||||
BOOST_FOREACH(size_t idx, selected_transfers)
|
for(size_t idx: selected_transfers)
|
||||||
{
|
{
|
||||||
const transfer_container::const_iterator it = m_transfers.begin() + idx;
|
const transfer_container::const_iterator it = m_transfers.begin() + idx;
|
||||||
THROW_WALLET_EXCEPTION_IF(it->m_tx.vout.size() <= it->m_internal_output_index, error::wallet_internal_error,
|
THROW_WALLET_EXCEPTION_IF(it->m_tx.vout.size() <= it->m_internal_output_index, error::wallet_internal_error,
|
||||||
@ -1028,7 +1028,7 @@ namespace tools
|
|||||||
std::to_string(daemon_resp.outs.size()) + ", expected " + std::to_string(selected_transfers.size()));
|
std::to_string(daemon_resp.outs.size()) + ", expected " + std::to_string(selected_transfers.size()));
|
||||||
|
|
||||||
std::unordered_map<uint64_t, uint64_t> scanty_outs;
|
std::unordered_map<uint64_t, uint64_t> scanty_outs;
|
||||||
BOOST_FOREACH(COMMAND_RPC_GET_RANDOM_OUTPUTS_FOR_AMOUNTS::outs_for_amount& amount_outs, daemon_resp.outs)
|
for(COMMAND_RPC_GET_RANDOM_OUTPUTS_FOR_AMOUNTS::outs_for_amount& amount_outs: daemon_resp.outs)
|
||||||
{
|
{
|
||||||
if (amount_outs.outs.size() < fake_outputs_count)
|
if (amount_outs.outs.size() < fake_outputs_count)
|
||||||
{
|
{
|
||||||
@ -1041,7 +1041,7 @@ namespace tools
|
|||||||
//prepare inputs
|
//prepare inputs
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
std::vector<cryptonote::tx_source_entry> sources;
|
std::vector<cryptonote::tx_source_entry> sources;
|
||||||
BOOST_FOREACH(size_t idx, selected_transfers)
|
for(size_t idx: selected_transfers)
|
||||||
{
|
{
|
||||||
sources.resize(sources.size()+1);
|
sources.resize(sources.size()+1);
|
||||||
cryptonote::tx_source_entry& src = sources.back();
|
cryptonote::tx_source_entry& src = sources.back();
|
||||||
@ -1052,7 +1052,7 @@ namespace tools
|
|||||||
if(daemon_resp.outs.size())
|
if(daemon_resp.outs.size())
|
||||||
{
|
{
|
||||||
daemon_resp.outs[i].outs.sort([](const out_entry& a, const out_entry& b){return a.global_amount_index < b.global_amount_index;});
|
daemon_resp.outs[i].outs.sort([](const out_entry& a, const out_entry& b){return a.global_amount_index < b.global_amount_index;});
|
||||||
BOOST_FOREACH(out_entry& daemon_oe, daemon_resp.outs[i].outs)
|
for(out_entry& daemon_oe: daemon_resp.outs[i].outs)
|
||||||
{
|
{
|
||||||
if(td.m_global_output_index == daemon_oe.global_amount_index)
|
if(td.m_global_output_index == daemon_oe.global_amount_index)
|
||||||
continue;
|
continue;
|
||||||
@ -1094,11 +1094,11 @@ namespace tools
|
|||||||
std::vector<cryptonote::tx_destination_entry> splitted_dsts, dust_dsts;
|
std::vector<cryptonote::tx_destination_entry> splitted_dsts, dust_dsts;
|
||||||
uint64_t dust = 0;
|
uint64_t dust = 0;
|
||||||
destination_split_strategy(dsts, change_dts, dust_policy.dust_threshold, splitted_dsts, dust_dsts);
|
destination_split_strategy(dsts, change_dts, dust_policy.dust_threshold, splitted_dsts, dust_dsts);
|
||||||
BOOST_FOREACH(auto& d, dust_dsts) {
|
for(auto& d: dust_dsts) {
|
||||||
THROW_WALLET_EXCEPTION_IF(dust_policy.dust_threshold < d.amount, error::wallet_internal_error, "invalid dust value: dust = " +
|
THROW_WALLET_EXCEPTION_IF(dust_policy.dust_threshold < d.amount, error::wallet_internal_error, "invalid dust value: dust = " +
|
||||||
std::to_string(d.amount) + ", dust_threshold = " + std::to_string(dust_policy.dust_threshold));
|
std::to_string(d.amount) + ", dust_threshold = " + std::to_string(dust_policy.dust_threshold));
|
||||||
}
|
}
|
||||||
BOOST_FOREACH(auto& d, dust_dsts) {
|
for(auto& d: dust_dsts) {
|
||||||
if (!dust_policy.add_to_fee)
|
if (!dust_policy.add_to_fee)
|
||||||
splitted_dsts.push_back(cryptonote::tx_destination_entry(d.amount, dust_policy.addr_for_dust));
|
splitted_dsts.push_back(cryptonote::tx_destination_entry(d.amount, dust_policy.addr_for_dust));
|
||||||
dust += d.amount;
|
dust += d.amount;
|
||||||
|
Loading…
Reference in New Issue
Block a user