Logging for wallet class
This commit is contained in:
		
					parent
					
						
							
								6bf66e030c
							
						
					
				
			
			
				commit
				
					
						c8eb45808f
					
				
			
		
					 1 changed files with 67 additions and 4 deletions
				
			
		| 
						 | 
					@ -246,6 +246,10 @@ void nano::fan::value_set (nano::raw_key const & value_a)
 | 
				
			||||||
	*(values[0]) ^= value_a;
 | 
						*(values[0]) ^= value_a;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * wallet_store
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// Wallet version number
 | 
					// Wallet version number
 | 
				
			||||||
nano::account const nano::wallet_store::version_special{};
 | 
					nano::account const nano::wallet_store::version_special{};
 | 
				
			||||||
// Random number used to salt private key encryption
 | 
					// Random number used to salt private key encryption
 | 
				
			||||||
| 
						 | 
					@ -738,6 +742,9 @@ nano::public_key nano::wallet::deterministic_insert (store::transaction const &
 | 
				
			||||||
	if (store.valid_password (transaction_a))
 | 
						if (store.valid_password (transaction_a))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		key = store.deterministic_insert (transaction_a);
 | 
							key = store.deterministic_insert (transaction_a);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							logger.info (nano::log::type::wallet, "Deterministically inserted new account: {}", key.to_account ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (generate_work_a)
 | 
							if (generate_work_a)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			work_ensure (key, key);
 | 
								work_ensure (key, key);
 | 
				
			||||||
| 
						 | 
					@ -745,6 +752,8 @@ nano::public_key nano::wallet::deterministic_insert (store::transaction const &
 | 
				
			||||||
		auto half_principal_weight (wallets.node.minimum_principal_weight () / 2);
 | 
							auto half_principal_weight (wallets.node.minimum_principal_weight () / 2);
 | 
				
			||||||
		if (wallets.check_rep (key, half_principal_weight))
 | 
							if (wallets.check_rep (key, half_principal_weight))
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
 | 
								logger.info (nano::log::type::wallet, "New account qualified as a representative: {}", key.to_account ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			nano::lock_guard<nano::mutex> lock{ representatives_mutex };
 | 
								nano::lock_guard<nano::mutex> lock{ representatives_mutex };
 | 
				
			||||||
			representatives.insert (key);
 | 
								representatives.insert (key);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -759,6 +768,9 @@ nano::public_key nano::wallet::deterministic_insert (uint32_t const index, bool
 | 
				
			||||||
	if (store.valid_password (transaction))
 | 
						if (store.valid_password (transaction))
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		key = store.deterministic_insert (transaction, index);
 | 
							key = store.deterministic_insert (transaction, index);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							logger.info (nano::log::type::wallet, "Deterministically inserted new account: {}", key.to_account ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		if (generate_work_a)
 | 
							if (generate_work_a)
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			work_ensure (key, key);
 | 
								work_ensure (key, key);
 | 
				
			||||||
| 
						 | 
					@ -865,6 +877,11 @@ std::shared_ptr<nano::block> nano::wallet::receive_action (nano::block_hash cons
 | 
				
			||||||
				nano::raw_key prv;
 | 
									nano::raw_key prv;
 | 
				
			||||||
				if (!store.fetch (transaction, account_a, prv))
 | 
									if (!store.fetch (transaction, account_a, prv))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
 | 
										logger.info (nano::log::type::wallet, "Receiving block {} from account {}, amount: {}",
 | 
				
			||||||
 | 
										send_hash_a.to_string (),
 | 
				
			||||||
 | 
										account_a.to_account (),
 | 
				
			||||||
 | 
										pending_info->amount.number ().convert_to<std::string> ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					if (work_a == 0)
 | 
										if (work_a == 0)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
						store.work_get (transaction, account_a, work_a);
 | 
											store.work_get (transaction, account_a, work_a);
 | 
				
			||||||
| 
						 | 
					@ -883,17 +900,21 @@ std::shared_ptr<nano::block> nano::wallet::receive_action (nano::block_hash cons
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				else
 | 
									else
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					logger.warn (nano::log::type::wallet, "Unable to receive, wallet locked");
 | 
										logger.warn (nano::log::type::wallet, "Unable to receive, wallet locked, block {} to account: {}",
 | 
				
			||||||
 | 
										send_hash_a.to_string (),
 | 
				
			||||||
 | 
										account_a.to_account ());
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				// Ledger doesn't have this marked as available to receive anymore
 | 
									// Ledger doesn't have this marked as available to receive anymore
 | 
				
			||||||
 | 
									logger.warn (nano::log::type::wallet, "Not receiving block {}, block already received", send_hash_a.to_string ());
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			// Ledger doesn't have this block anymore.
 | 
								// Ledger doesn't have this block anymore.
 | 
				
			||||||
 | 
								logger.warn (nano::log::type::wallet, "Not receiving block {}, block no longer exists or pruned", send_hash_a.to_string ());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
| 
						 | 
					@ -924,6 +945,10 @@ std::shared_ptr<nano::block> nano::wallet::change_action (nano::account const &
 | 
				
			||||||
			auto existing (store.find (transaction, source_a));
 | 
								auto existing (store.find (transaction, source_a));
 | 
				
			||||||
			if (existing != store.end (transaction) && !wallets.node.ledger.any.account_head (block_transaction, source_a).is_zero ())
 | 
								if (existing != store.end (transaction) && !wallets.node.ledger.any.account_head (block_transaction, source_a).is_zero ())
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
 | 
									logger.info (nano::log::type::wallet, "Changing representative for account {} to {}",
 | 
				
			||||||
 | 
									source_a.to_account (),
 | 
				
			||||||
 | 
									representative_a.to_account ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				auto info = wallets.node.ledger.any.account_get (block_transaction, source_a);
 | 
									auto info = wallets.node.ledger.any.account_get (block_transaction, source_a);
 | 
				
			||||||
				debug_assert (info);
 | 
									debug_assert (info);
 | 
				
			||||||
				nano::raw_key prv;
 | 
									nano::raw_key prv;
 | 
				
			||||||
| 
						 | 
					@ -937,6 +962,16 @@ std::shared_ptr<nano::block> nano::wallet::change_action (nano::account const &
 | 
				
			||||||
				block = std::make_shared<nano::state_block> (source_a, info->head, representative_a, info->balance, 0, prv, source_a, work_a);
 | 
									block = std::make_shared<nano::state_block> (source_a, info->head, representative_a, info->balance, 0, prv, source_a, work_a);
 | 
				
			||||||
				details.epoch = info->epoch ();
 | 
									details.epoch = info->epoch ();
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
 | 
								else
 | 
				
			||||||
 | 
								{
 | 
				
			||||||
 | 
									logger.warn (nano::log::type::wallet, "Changing representative for account {} failed, wallet locked or account not found",
 | 
				
			||||||
 | 
									source_a.to_account ());
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
							{
 | 
				
			||||||
 | 
								logger.warn (nano::log::type::wallet, "Changing representative for account {} failed, wallet locked",
 | 
				
			||||||
 | 
								source_a.to_account ());
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (block != nullptr)
 | 
						if (block != nullptr)
 | 
				
			||||||
| 
						 | 
					@ -958,7 +993,7 @@ std::shared_ptr<nano::block> nano::wallet::send_action (nano::account const & so
 | 
				
			||||||
		id_mdb_val = nano::store::lmdb::db_val (id_a->size (), const_cast<char *> (id_a->data ()));
 | 
							id_mdb_val = nano::store::lmdb::db_val (id_a->size (), const_cast<char *> (id_a->data ()));
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	auto prepare_send = [&id_mdb_val, &wallets = this->wallets, &store = this->store, &source_a, &amount_a, &work_a, &account_a] (auto const & transaction) {
 | 
						auto prepare_send = [this, &id_mdb_val, &wallets = this->wallets, &store = this->store, &source_a, &amount_a, &work_a, &account_a, &id_a] (auto const & transaction) {
 | 
				
			||||||
		auto block_transaction = wallets.node.ledger.tx_begin_read ();
 | 
							auto block_transaction = wallets.node.ledger.tx_begin_read ();
 | 
				
			||||||
		auto error (false);
 | 
							auto error (false);
 | 
				
			||||||
		auto cached_block (false);
 | 
							auto cached_block (false);
 | 
				
			||||||
| 
						 | 
					@ -975,9 +1010,19 @@ std::shared_ptr<nano::block> nano::wallet::send_action (nano::account const & so
 | 
				
			||||||
				block = wallets.node.ledger.any.block_get (block_transaction, hash);
 | 
									block = wallets.node.ledger.any.block_get (block_transaction, hash);
 | 
				
			||||||
				if (block != nullptr)
 | 
									if (block != nullptr)
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
 | 
										logger.warn (nano::log::type::wallet, "Block already exists for send action with id: {}, existing hash: {}",
 | 
				
			||||||
 | 
										id_a.value (),
 | 
				
			||||||
 | 
										hash.to_string ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
					cached_block = true;
 | 
										cached_block = true;
 | 
				
			||||||
					wallets.node.network.flood_block (block, nano::transport::traffic_type::block_broadcast_initial);
 | 
										wallets.node.network.flood_block (block, nano::transport::traffic_type::block_broadcast_initial);
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
 | 
									else
 | 
				
			||||||
 | 
									{
 | 
				
			||||||
 | 
										logger.warn (nano::log::type::wallet, "Block was not found in ledger for send action with id: {}, hash: {}",
 | 
				
			||||||
 | 
										id_a.value (),
 | 
				
			||||||
 | 
										hash.to_string ());
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			else if (status != MDB_NOTFOUND)
 | 
								else if (status != MDB_NOTFOUND)
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
| 
						 | 
					@ -994,6 +1039,11 @@ std::shared_ptr<nano::block> nano::wallet::send_action (nano::account const & so
 | 
				
			||||||
					auto balance (wallets.node.ledger.any.account_balance (block_transaction, source_a));
 | 
										auto balance (wallets.node.ledger.any.account_balance (block_transaction, source_a));
 | 
				
			||||||
					if (balance && balance.value ().number () >= amount_a)
 | 
										if (balance && balance.value ().number () >= amount_a)
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
 | 
											logger.info (nano::log::type::wallet, "Sending from account: {} to: {}, amount: {}",
 | 
				
			||||||
 | 
											source_a.to_account (),
 | 
				
			||||||
 | 
											account_a.to_account (),
 | 
				
			||||||
 | 
											amount_a.convert_to<std::string> ());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
						auto info = wallets.node.ledger.any.account_get (block_transaction, source_a);
 | 
											auto info = wallets.node.ledger.any.account_get (block_transaction, source_a);
 | 
				
			||||||
						debug_assert (info);
 | 
											debug_assert (info);
 | 
				
			||||||
						nano::raw_key prv;
 | 
											nano::raw_key prv;
 | 
				
			||||||
| 
						 | 
					@ -1016,6 +1066,13 @@ std::shared_ptr<nano::block> nano::wallet::send_action (nano::account const & so
 | 
				
			||||||
							}
 | 
												}
 | 
				
			||||||
						}
 | 
											}
 | 
				
			||||||
					}
 | 
										}
 | 
				
			||||||
 | 
										else
 | 
				
			||||||
 | 
										{
 | 
				
			||||||
 | 
											logger.warn (nano::log::type::wallet, "Insufficient balance for send from: {}, required: {} but available: {}",
 | 
				
			||||||
 | 
											account_a.to_account (),
 | 
				
			||||||
 | 
											amount_a.convert_to<std::string> (),
 | 
				
			||||||
 | 
											balance ? balance.value ().number ().convert_to<std::string> () : "unknown");
 | 
				
			||||||
 | 
										}
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
| 
						 | 
					@ -1231,7 +1288,7 @@ bool nano::wallet::search_receivable (store::transaction const & wallet_transact
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	else
 | 
						else
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		logger.warn (nano::log::type::wallet, "Stopping search, wallet is locked");
 | 
							logger.warn (nano::log::type::wallet, "Unable to search receivable blocks, wallet is locked");
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	return result;
 | 
						return result;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					@ -1277,17 +1334,23 @@ uint32_t nano::wallet::deterministic_check (store::transaction const & transacti
 | 
				
			||||||
 | 
					
 | 
				
			||||||
nano::public_key nano::wallet::change_seed (store::transaction const & transaction_a, nano::raw_key const & prv_a, uint32_t count)
 | 
					nano::public_key nano::wallet::change_seed (store::transaction const & transaction_a, nano::raw_key const & prv_a, uint32_t count)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 | 
						logger.info (nano::log::type::wallet, "Changing wallet seed");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	store.seed_set (transaction_a, prv_a);
 | 
						store.seed_set (transaction_a, prv_a);
 | 
				
			||||||
	auto account = deterministic_insert (transaction_a);
 | 
						auto account = deterministic_insert (transaction_a);
 | 
				
			||||||
	if (count == 0)
 | 
						if (count == 0)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		count = deterministic_check (transaction_a, 0);
 | 
							count = deterministic_check (transaction_a, 0);
 | 
				
			||||||
 | 
							logger.info (nano::log::type::wallet, "Auto-detected {} accounts to generate", count);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for (uint32_t i (0); i < count; ++i)
 | 
						for (uint32_t i (0); i < count; ++i)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
		// Disable work generation to prevent weak CPU nodes stuck
 | 
							// Disable work generation to prevent weak CPU nodes stuck
 | 
				
			||||||
		account = deterministic_insert (transaction_a, false);
 | 
							account = deterministic_insert (transaction_a, false);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						logger.info (nano::log::type::wallet, "Completed changing wallet seed and generating accounts");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return account;
 | 
						return account;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1754,7 +1817,7 @@ void nano::wallets::receive_confirmed (nano::block_hash const & hash_a, nano::ac
 | 
				
			||||||
				if (!node.ledger.confirmed.block_exists_or_pruned (node.ledger.tx_begin_read (), hash_a))
 | 
									if (!node.ledger.confirmed.block_exists_or_pruned (node.ledger.tx_begin_read (), hash_a))
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
					logger.warn (nano::log::type::wallet, "Confirmed block is missing: {}", hash_a.to_string ());
 | 
										logger.warn (nano::log::type::wallet, "Confirmed block is missing: {}", hash_a.to_string ());
 | 
				
			||||||
					debug_assert (false, "Confirmed block is missing");
 | 
										debug_assert (false, "confirmed block is missing");
 | 
				
			||||||
				}
 | 
									}
 | 
				
			||||||
				else
 | 
									else
 | 
				
			||||||
				{
 | 
									{
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue