mirror of
https://codeberg.org/anoncontributorxmr/monero.git
synced 2024-11-23 19:33:28 +01:00
blockchain_db: add consts where appropriate
This commit is contained in:
parent
10fd6cab6c
commit
23f3cb4c0e
@ -79,26 +79,26 @@ auto compare_uint64 = [](const MDB_val *a, const MDB_val *b) {
|
|||||||
else return 1;
|
else return 1;
|
||||||
};
|
};
|
||||||
|
|
||||||
const char* LMDB_BLOCKS = "blocks";
|
const char* const LMDB_BLOCKS = "blocks";
|
||||||
const char* LMDB_BLOCK_TIMESTAMPS = "block_timestamps";
|
const char* const LMDB_BLOCK_TIMESTAMPS = "block_timestamps";
|
||||||
const char* LMDB_BLOCK_HEIGHTS = "block_heights";
|
const char* const LMDB_BLOCK_HEIGHTS = "block_heights";
|
||||||
const char* LMDB_BLOCK_HASHES = "block_hashes";
|
const char* const LMDB_BLOCK_HASHES = "block_hashes";
|
||||||
const char* LMDB_BLOCK_SIZES = "block_sizes";
|
const char* const LMDB_BLOCK_SIZES = "block_sizes";
|
||||||
const char* LMDB_BLOCK_DIFFS = "block_diffs";
|
const char* const LMDB_BLOCK_DIFFS = "block_diffs";
|
||||||
const char* LMDB_BLOCK_COINS = "block_coins";
|
const char* const LMDB_BLOCK_COINS = "block_coins";
|
||||||
|
|
||||||
const char* LMDB_TXS = "txs";
|
const char* const LMDB_TXS = "txs";
|
||||||
const char* LMDB_TX_UNLOCKS = "tx_unlocks";
|
const char* const LMDB_TX_UNLOCKS = "tx_unlocks";
|
||||||
const char* LMDB_TX_HEIGHTS = "tx_heights";
|
const char* const LMDB_TX_HEIGHTS = "tx_heights";
|
||||||
const char* LMDB_TX_OUTPUTS = "tx_outputs";
|
const char* const LMDB_TX_OUTPUTS = "tx_outputs";
|
||||||
|
|
||||||
const char* LMDB_OUTPUT_TXS = "output_txs";
|
const char* const LMDB_OUTPUT_TXS = "output_txs";
|
||||||
const char* LMDB_OUTPUT_INDICES = "output_indices";
|
const char* const LMDB_OUTPUT_INDICES = "output_indices";
|
||||||
const char* LMDB_OUTPUT_AMOUNTS = "output_amounts";
|
const char* const LMDB_OUTPUT_AMOUNTS = "output_amounts";
|
||||||
const char* LMDB_OUTPUT_KEYS = "output_keys";
|
const char* const LMDB_OUTPUT_KEYS = "output_keys";
|
||||||
const char* LMDB_OUTPUTS = "outputs";
|
const char* const LMDB_OUTPUTS = "outputs";
|
||||||
const char* LMDB_OUTPUT_GINDICES = "output_gindices";
|
const char* const LMDB_OUTPUT_GINDICES = "output_gindices";
|
||||||
const char* LMDB_SPENT_KEYS = "spent_keys";
|
const char* const LMDB_SPENT_KEYS = "spent_keys";
|
||||||
|
|
||||||
inline void lmdb_db_open(MDB_txn* txn, const char* name, int flags, MDB_dbi& dbi, const std::string& error_string)
|
inline void lmdb_db_open(MDB_txn* txn, const char* name, int flags, MDB_dbi& dbi, const std::string& error_string)
|
||||||
{
|
{
|
||||||
@ -628,7 +628,7 @@ blobdata BlockchainLMDB::output_to_blob(const tx_out& output)
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
tx_out BlockchainLMDB::output_from_blob(const blobdata& blob)
|
tx_out BlockchainLMDB::output_from_blob(const blobdata& blob) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
std::stringstream ss;
|
std::stringstream ss;
|
||||||
@ -645,13 +645,13 @@ tx_out BlockchainLMDB::output_from_blob(const blobdata& blob)
|
|||||||
return o;
|
return o;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_output_global_index(const uint64_t& amount, const uint64_t& index)
|
uint64_t BlockchainLMDB::get_output_global_index(const uint64_t& amount, const uint64_t& index) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BlockchainLMDB::check_open()
|
void BlockchainLMDB::check_open() const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
if (!m_open)
|
if (!m_open)
|
||||||
@ -821,7 +821,7 @@ void BlockchainLMDB::reset()
|
|||||||
// TODO: this
|
// TODO: this
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> BlockchainLMDB::get_filenames()
|
std::vector<std::string> BlockchainLMDB::get_filenames() const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
std::vector<std::string> filenames;
|
std::vector<std::string> filenames;
|
||||||
@ -853,7 +853,7 @@ void BlockchainLMDB::unlock()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool BlockchainLMDB::block_exists(const crypto::hash& h)
|
bool BlockchainLMDB::block_exists(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -888,7 +888,7 @@ bool BlockchainLMDB::block_exists(const crypto::hash& h)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
block BlockchainLMDB::get_block(const crypto::hash& h)
|
block BlockchainLMDB::get_block(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -896,7 +896,7 @@ block BlockchainLMDB::get_block(const crypto::hash& h)
|
|||||||
return get_block_from_height(get_block_height(h));
|
return get_block_from_height(get_block_height(h));
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_block_height(const crypto::hash& h)
|
uint64_t BlockchainLMDB::get_block_height(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -930,7 +930,7 @@ uint64_t BlockchainLMDB::get_block_height(const crypto::hash& h)
|
|||||||
return *(uint64_t*)result.mv_data;
|
return *(uint64_t*)result.mv_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
block_header BlockchainLMDB::get_block_header(const crypto::hash& h)
|
block_header BlockchainLMDB::get_block_header(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -939,7 +939,7 @@ block_header BlockchainLMDB::get_block_header(const crypto::hash& h)
|
|||||||
return get_block(h);
|
return get_block(h);
|
||||||
}
|
}
|
||||||
|
|
||||||
block BlockchainLMDB::get_block_from_height(const uint64_t& height)
|
block BlockchainLMDB::get_block_from_height(const uint64_t& height) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -983,7 +983,7 @@ block BlockchainLMDB::get_block_from_height(const uint64_t& height)
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_block_timestamp(const uint64_t& height)
|
uint64_t BlockchainLMDB::get_block_timestamp(const uint64_t& height) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1016,7 +1016,7 @@ uint64_t BlockchainLMDB::get_block_timestamp(const uint64_t& height)
|
|||||||
return *(uint64_t*)result.mv_data;
|
return *(uint64_t*)result.mv_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_top_block_timestamp()
|
uint64_t BlockchainLMDB::get_top_block_timestamp() const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1030,7 +1030,7 @@ uint64_t BlockchainLMDB::get_top_block_timestamp()
|
|||||||
return get_block_timestamp(m_height - 1);
|
return get_block_timestamp(m_height - 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t BlockchainLMDB::get_block_size(const uint64_t& height)
|
size_t BlockchainLMDB::get_block_size(const uint64_t& height) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1063,7 +1063,7 @@ size_t BlockchainLMDB::get_block_size(const uint64_t& height)
|
|||||||
return *(size_t*)result.mv_data;
|
return *(size_t*)result.mv_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
difficulty_type BlockchainLMDB::get_block_cumulative_difficulty(const uint64_t& height)
|
difficulty_type BlockchainLMDB::get_block_cumulative_difficulty(const uint64_t& height) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1096,7 +1096,7 @@ difficulty_type BlockchainLMDB::get_block_cumulative_difficulty(const uint64_t&
|
|||||||
return *(difficulty_type*)result.mv_data;
|
return *(difficulty_type*)result.mv_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
difficulty_type BlockchainLMDB::get_block_difficulty(const uint64_t& height)
|
difficulty_type BlockchainLMDB::get_block_difficulty(const uint64_t& height) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1113,7 +1113,7 @@ difficulty_type BlockchainLMDB::get_block_difficulty(const uint64_t& height)
|
|||||||
return diff1 - diff2;
|
return diff1 - diff2;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_block_already_generated_coins(const uint64_t& height)
|
uint64_t BlockchainLMDB::get_block_already_generated_coins(const uint64_t& height) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1146,7 +1146,7 @@ uint64_t BlockchainLMDB::get_block_already_generated_coins(const uint64_t& heigh
|
|||||||
return *(uint64_t*)result.mv_data;
|
return *(uint64_t*)result.mv_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
crypto::hash BlockchainLMDB::get_block_hash_from_height(const uint64_t& height)
|
crypto::hash BlockchainLMDB::get_block_hash_from_height(const uint64_t& height) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1179,7 +1179,7 @@ crypto::hash BlockchainLMDB::get_block_hash_from_height(const uint64_t& height)
|
|||||||
return *(crypto::hash*)result.mv_data;
|
return *(crypto::hash*)result.mv_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<block> BlockchainLMDB::get_blocks_range(const uint64_t& h1, const uint64_t& h2)
|
std::vector<block> BlockchainLMDB::get_blocks_range(const uint64_t& h1, const uint64_t& h2) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1193,7 +1193,7 @@ std::vector<block> BlockchainLMDB::get_blocks_range(const uint64_t& h1, const ui
|
|||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<crypto::hash> BlockchainLMDB::get_hashes_range(const uint64_t& h1, const uint64_t& h2)
|
std::vector<crypto::hash> BlockchainLMDB::get_hashes_range(const uint64_t& h1, const uint64_t& h2) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1207,7 +1207,7 @@ std::vector<crypto::hash> BlockchainLMDB::get_hashes_range(const uint64_t& h1, c
|
|||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
crypto::hash BlockchainLMDB::top_block_hash()
|
crypto::hash BlockchainLMDB::top_block_hash() const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1219,7 +1219,7 @@ crypto::hash BlockchainLMDB::top_block_hash()
|
|||||||
return null_hash;
|
return null_hash;
|
||||||
}
|
}
|
||||||
|
|
||||||
block BlockchainLMDB::get_top_block()
|
block BlockchainLMDB::get_top_block() const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1233,7 +1233,7 @@ block BlockchainLMDB::get_top_block()
|
|||||||
return b;
|
return b;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::height()
|
uint64_t BlockchainLMDB::height() const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1242,7 +1242,7 @@ uint64_t BlockchainLMDB::height()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool BlockchainLMDB::tx_exists(const crypto::hash& h)
|
bool BlockchainLMDB::tx_exists(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1276,7 +1276,7 @@ bool BlockchainLMDB::tx_exists(const crypto::hash& h)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_tx_unlock_time(const crypto::hash& h)
|
uint64_t BlockchainLMDB::get_tx_unlock_time(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1309,7 +1309,7 @@ uint64_t BlockchainLMDB::get_tx_unlock_time(const crypto::hash& h)
|
|||||||
return *(uint64_t*)result.mv_data;
|
return *(uint64_t*)result.mv_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
transaction BlockchainLMDB::get_tx(const crypto::hash& h)
|
transaction BlockchainLMDB::get_tx(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1352,7 +1352,7 @@ transaction BlockchainLMDB::get_tx(const crypto::hash& h)
|
|||||||
return tx;
|
return tx;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_tx_count()
|
uint64_t BlockchainLMDB::get_tx_count() const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1376,7 +1376,7 @@ uint64_t BlockchainLMDB::get_tx_count()
|
|||||||
return db_stats.ms_entries;
|
return db_stats.ms_entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<transaction> BlockchainLMDB::get_tx_list(const std::vector<crypto::hash>& hlist)
|
std::vector<transaction> BlockchainLMDB::get_tx_list(const std::vector<crypto::hash>& hlist) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1390,7 +1390,7 @@ std::vector<transaction> BlockchainLMDB::get_tx_list(const std::vector<crypto::h
|
|||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_tx_block_height(const crypto::hash& h)
|
uint64_t BlockchainLMDB::get_tx_block_height(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1424,7 +1424,7 @@ uint64_t BlockchainLMDB::get_tx_block_height(const crypto::hash& h)
|
|||||||
}
|
}
|
||||||
|
|
||||||
//FIXME: make sure the random method used here is appropriate
|
//FIXME: make sure the random method used here is appropriate
|
||||||
uint64_t BlockchainLMDB::get_random_output(const uint64_t& amount)
|
uint64_t BlockchainLMDB::get_random_output(const uint64_t& amount) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1439,7 +1439,7 @@ uint64_t BlockchainLMDB::get_random_output(const uint64_t& amount)
|
|||||||
return crypto::rand<uint64_t>() % num_outputs;
|
return crypto::rand<uint64_t>() % num_outputs;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t BlockchainLMDB::get_num_outputs(const uint64_t& amount)
|
uint64_t BlockchainLMDB::get_num_outputs(const uint64_t& amount) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1478,7 +1478,7 @@ uint64_t BlockchainLMDB::get_num_outputs(const uint64_t& amount)
|
|||||||
return num_elems;
|
return num_elems;
|
||||||
}
|
}
|
||||||
|
|
||||||
crypto::public_key BlockchainLMDB::get_output_key(const uint64_t& amount, const uint64_t& index)
|
crypto::public_key BlockchainLMDB::get_output_key(const uint64_t& amount, const uint64_t& index) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1512,7 +1512,7 @@ crypto::public_key BlockchainLMDB::get_output_key(const uint64_t& amount, const
|
|||||||
return *(crypto::public_key*)v.mv_data;
|
return *(crypto::public_key*)v.mv_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
tx_out BlockchainLMDB::get_output(const crypto::hash& h, const uint64_t& index)
|
tx_out BlockchainLMDB::get_output(const crypto::hash& h, const uint64_t& index) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1576,7 +1576,7 @@ tx_out BlockchainLMDB::get_output(const crypto::hash& h, const uint64_t& index)
|
|||||||
|
|
||||||
// As this is not used, its return is now a blank output.
|
// As this is not used, its return is now a blank output.
|
||||||
// This will save on space in the db.
|
// This will save on space in the db.
|
||||||
tx_out BlockchainLMDB::get_output(const uint64_t& index)
|
tx_out BlockchainLMDB::get_output(const uint64_t& index) const
|
||||||
{
|
{
|
||||||
return tx_out();
|
return tx_out();
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
@ -1612,7 +1612,7 @@ tx_out BlockchainLMDB::get_output(const uint64_t& index)
|
|||||||
return output_from_blob(b);
|
return output_from_blob(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
tx_out_index BlockchainLMDB::get_output_tx_and_index(const uint64_t& amount, const uint64_t& index)
|
tx_out_index BlockchainLMDB::get_output_tx_and_index(const uint64_t& amount, const uint64_t& index) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1702,7 +1702,7 @@ tx_out_index BlockchainLMDB::get_output_tx_and_index(const uint64_t& amount, con
|
|||||||
return tx_out_index(tx_hash, *(uint64_t *)v.mv_data);
|
return tx_out_index(tx_hash, *(uint64_t *)v.mv_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<uint64_t> BlockchainLMDB::get_tx_output_indices(const crypto::hash& h)
|
std::vector<uint64_t> BlockchainLMDB::get_tx_output_indices(const crypto::hash& h) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
@ -1754,7 +1754,7 @@ std::vector<uint64_t> BlockchainLMDB::get_tx_output_indices(const crypto::hash&
|
|||||||
return index_vec;
|
return index_vec;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BlockchainLMDB::has_key_image(const crypto::key_image& img)
|
bool BlockchainLMDB::has_key_image(const crypto::key_image& img) const
|
||||||
{
|
{
|
||||||
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
LOG_PRINT_L3("BlockchainLMDB::" << __func__);
|
||||||
check_open();
|
check_open();
|
||||||
|
@ -90,65 +90,65 @@ public:
|
|||||||
|
|
||||||
virtual void reset();
|
virtual void reset();
|
||||||
|
|
||||||
virtual std::vector<std::string> get_filenames();
|
virtual std::vector<std::string> get_filenames() const;
|
||||||
|
|
||||||
virtual bool lock();
|
virtual bool lock();
|
||||||
|
|
||||||
virtual void unlock();
|
virtual void unlock();
|
||||||
|
|
||||||
virtual bool block_exists(const crypto::hash& h);
|
virtual bool block_exists(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual block get_block(const crypto::hash& h);
|
virtual block get_block(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual uint64_t get_block_height(const crypto::hash& h);
|
virtual uint64_t get_block_height(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual block_header get_block_header(const crypto::hash& h);
|
virtual block_header get_block_header(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual block get_block_from_height(const uint64_t& height);
|
virtual block get_block_from_height(const uint64_t& height) const;
|
||||||
|
|
||||||
virtual uint64_t get_block_timestamp(const uint64_t& height) ;
|
virtual uint64_t get_block_timestamp(const uint64_t& height) const;
|
||||||
|
|
||||||
virtual uint64_t get_top_block_timestamp();
|
virtual uint64_t get_top_block_timestamp() const;
|
||||||
|
|
||||||
virtual size_t get_block_size(const uint64_t& height);
|
virtual size_t get_block_size(const uint64_t& height) const;
|
||||||
|
|
||||||
virtual difficulty_type get_block_cumulative_difficulty(const uint64_t& height);
|
virtual difficulty_type get_block_cumulative_difficulty(const uint64_t& height) const;
|
||||||
|
|
||||||
virtual difficulty_type get_block_difficulty(const uint64_t& height);
|
virtual difficulty_type get_block_difficulty(const uint64_t& height) const;
|
||||||
|
|
||||||
virtual uint64_t get_block_already_generated_coins(const uint64_t& height);
|
virtual uint64_t get_block_already_generated_coins(const uint64_t& height) const;
|
||||||
|
|
||||||
virtual crypto::hash get_block_hash_from_height(const uint64_t& height);
|
virtual crypto::hash get_block_hash_from_height(const uint64_t& height) const;
|
||||||
|
|
||||||
virtual std::vector<block> get_blocks_range(const uint64_t& h1, const uint64_t& h2);
|
virtual std::vector<block> get_blocks_range(const uint64_t& h1, const uint64_t& h2) const;
|
||||||
|
|
||||||
virtual std::vector<crypto::hash> get_hashes_range(const uint64_t& h1, const uint64_t& h2);
|
virtual std::vector<crypto::hash> get_hashes_range(const uint64_t& h1, const uint64_t& h2) const;
|
||||||
|
|
||||||
virtual crypto::hash top_block_hash();
|
virtual crypto::hash top_block_hash() const;
|
||||||
|
|
||||||
virtual block get_top_block();
|
virtual block get_top_block() const;
|
||||||
|
|
||||||
virtual uint64_t height();
|
virtual uint64_t height() const;
|
||||||
|
|
||||||
virtual bool tx_exists(const crypto::hash& h);
|
virtual bool tx_exists(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual uint64_t get_tx_unlock_time(const crypto::hash& h);
|
virtual uint64_t get_tx_unlock_time(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual transaction get_tx(const crypto::hash& h);
|
virtual transaction get_tx(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual uint64_t get_tx_count();
|
virtual uint64_t get_tx_count() const;
|
||||||
|
|
||||||
virtual std::vector<transaction> get_tx_list(const std::vector<crypto::hash>& hlist);
|
virtual std::vector<transaction> get_tx_list(const std::vector<crypto::hash>& hlist) const;
|
||||||
|
|
||||||
virtual uint64_t get_tx_block_height(const crypto::hash& h);
|
virtual uint64_t get_tx_block_height(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual uint64_t get_random_output(const uint64_t& amount);
|
virtual uint64_t get_random_output(const uint64_t& amount) const;
|
||||||
|
|
||||||
virtual uint64_t get_num_outputs(const uint64_t& amount);
|
virtual uint64_t get_num_outputs(const uint64_t& amount) const;
|
||||||
|
|
||||||
virtual crypto::public_key get_output_key(const uint64_t& amount, const uint64_t& index);
|
virtual crypto::public_key get_output_key(const uint64_t& amount, const uint64_t& index) const;
|
||||||
|
|
||||||
virtual tx_out get_output(const crypto::hash& h, const uint64_t& index);
|
virtual tx_out get_output(const crypto::hash& h, const uint64_t& index) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief get an output from its global index
|
* @brief get an output from its global index
|
||||||
@ -159,13 +159,13 @@ public:
|
|||||||
* Will throw OUTPUT_DNE if not output has that global index.
|
* Will throw OUTPUT_DNE if not output has that global index.
|
||||||
* Will throw DB_ERROR if there is a non-specific LMDB error in fetching
|
* Will throw DB_ERROR if there is a non-specific LMDB error in fetching
|
||||||
*/
|
*/
|
||||||
tx_out get_output(const uint64_t& index);
|
tx_out get_output(const uint64_t& index) const;
|
||||||
|
|
||||||
virtual tx_out_index get_output_tx_and_index(const uint64_t& amount, const uint64_t& index);
|
virtual tx_out_index get_output_tx_and_index(const uint64_t& amount, const uint64_t& index) const;
|
||||||
|
|
||||||
virtual std::vector<uint64_t> get_tx_output_indices(const crypto::hash& h);
|
virtual std::vector<uint64_t> get_tx_output_indices(const crypto::hash& h) const;
|
||||||
|
|
||||||
virtual bool has_key_image(const crypto::key_image& img);
|
virtual bool has_key_image(const crypto::key_image& img) const;
|
||||||
|
|
||||||
virtual uint64_t add_block( const block& blk
|
virtual uint64_t add_block( const block& blk
|
||||||
, const size_t& block_size
|
, const size_t& block_size
|
||||||
@ -217,7 +217,7 @@ private:
|
|||||||
*
|
*
|
||||||
* @return the resultant tx output
|
* @return the resultant tx output
|
||||||
*/
|
*/
|
||||||
tx_out output_from_blob(const blobdata& blob);
|
tx_out output_from_blob(const blobdata& blob) const;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief get the global index of the index-th output of the given amount
|
* @brief get the global index of the index-th output of the given amount
|
||||||
@ -227,9 +227,9 @@ private:
|
|||||||
*
|
*
|
||||||
* @return the global index of the desired output
|
* @return the global index of the desired output
|
||||||
*/
|
*/
|
||||||
uint64_t get_output_global_index(const uint64_t& amount, const uint64_t& index);
|
uint64_t get_output_global_index(const uint64_t& amount, const uint64_t& index) const;
|
||||||
|
|
||||||
void check_open();
|
void check_open() const;
|
||||||
|
|
||||||
MDB_env* m_env;
|
MDB_env* m_env;
|
||||||
|
|
||||||
|
@ -323,7 +323,7 @@ public:
|
|||||||
virtual void reset() = 0;
|
virtual void reset() = 0;
|
||||||
|
|
||||||
// get all files used by this db (if any)
|
// get all files used by this db (if any)
|
||||||
virtual std::vector<std::string> get_filenames() = 0;
|
virtual std::vector<std::string> get_filenames() const = 0;
|
||||||
|
|
||||||
|
|
||||||
// FIXME: these are just for functionality mocking, need to implement
|
// FIXME: these are just for functionality mocking, need to implement
|
||||||
@ -347,59 +347,59 @@ public:
|
|||||||
);
|
);
|
||||||
|
|
||||||
// return true if a block with hash <h> exists in the blockchain
|
// return true if a block with hash <h> exists in the blockchain
|
||||||
virtual bool block_exists(const crypto::hash& h) = 0;
|
virtual bool block_exists(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// return block with hash <h>
|
// return block with hash <h>
|
||||||
virtual block get_block(const crypto::hash& h) = 0;
|
virtual block get_block(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// return the height of the block with hash <h> on the blockchain,
|
// return the height of the block with hash <h> on the blockchain,
|
||||||
// throw if it doesn't exist
|
// throw if it doesn't exist
|
||||||
virtual uint64_t get_block_height(const crypto::hash& h) = 0;
|
virtual uint64_t get_block_height(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// return header for block with hash <h>
|
// return header for block with hash <h>
|
||||||
virtual block_header get_block_header(const crypto::hash& h) = 0;
|
virtual block_header get_block_header(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// return block at height <height>
|
// return block at height <height>
|
||||||
virtual block get_block_from_height(const uint64_t& height) = 0;
|
virtual block get_block_from_height(const uint64_t& height) const = 0;
|
||||||
|
|
||||||
// return timestamp of block at height <height>
|
// return timestamp of block at height <height>
|
||||||
virtual uint64_t get_block_timestamp(const uint64_t& height) = 0;
|
virtual uint64_t get_block_timestamp(const uint64_t& height) const = 0;
|
||||||
|
|
||||||
// return timestamp of most recent block
|
// return timestamp of most recent block
|
||||||
virtual uint64_t get_top_block_timestamp() = 0;
|
virtual uint64_t get_top_block_timestamp() const = 0;
|
||||||
|
|
||||||
// return block size of block at height <height>
|
// return block size of block at height <height>
|
||||||
virtual size_t get_block_size(const uint64_t& height) = 0;
|
virtual size_t get_block_size(const uint64_t& height) const = 0;
|
||||||
|
|
||||||
// return cumulative difficulty up to and including block at height <height>
|
// return cumulative difficulty up to and including block at height <height>
|
||||||
virtual difficulty_type get_block_cumulative_difficulty(const uint64_t& height) = 0;
|
virtual difficulty_type get_block_cumulative_difficulty(const uint64_t& height) const = 0;
|
||||||
|
|
||||||
// return difficulty of block at height <height>
|
// return difficulty of block at height <height>
|
||||||
virtual difficulty_type get_block_difficulty(const uint64_t& height) = 0;
|
virtual difficulty_type get_block_difficulty(const uint64_t& height) const = 0;
|
||||||
|
|
||||||
// return number of coins generated up to and including block at height <height>
|
// return number of coins generated up to and including block at height <height>
|
||||||
virtual uint64_t get_block_already_generated_coins(const uint64_t& height) = 0;
|
virtual uint64_t get_block_already_generated_coins(const uint64_t& height) const = 0;
|
||||||
|
|
||||||
// return hash of block at height <height>
|
// return hash of block at height <height>
|
||||||
virtual crypto::hash get_block_hash_from_height(const uint64_t& height) = 0;
|
virtual crypto::hash get_block_hash_from_height(const uint64_t& height) const = 0;
|
||||||
|
|
||||||
// return vector of blocks in range <h1,h2> of height (inclusively)
|
// return vector of blocks in range <h1,h2> of height (inclusively)
|
||||||
virtual std::vector<block> get_blocks_range(const uint64_t& h1, const uint64_t& h2) = 0;
|
virtual std::vector<block> get_blocks_range(const uint64_t& h1, const uint64_t& h2) const = 0;
|
||||||
|
|
||||||
// return vector of block hashes in range <h1, h2> of height (inclusively)
|
// return vector of block hashes in range <h1, h2> of height (inclusively)
|
||||||
virtual std::vector<crypto::hash> get_hashes_range(const uint64_t& h1, const uint64_t& h2) = 0;
|
virtual std::vector<crypto::hash> get_hashes_range(const uint64_t& h1, const uint64_t& h2) const = 0;
|
||||||
|
|
||||||
// return the hash of the top block on the chain
|
// return the hash of the top block on the chain
|
||||||
virtual crypto::hash top_block_hash() = 0;
|
virtual crypto::hash top_block_hash() const = 0;
|
||||||
|
|
||||||
// return the block at the top of the blockchain
|
// return the block at the top of the blockchain
|
||||||
virtual block get_top_block() = 0;
|
virtual block get_top_block() const = 0;
|
||||||
|
|
||||||
// return the index of the top block on the chain
|
// return the index of the top block on the chain
|
||||||
// NOTE: for convenience using heights as indices, this is not the total
|
// NOTE: for convenience using heights as indices, this is not the total
|
||||||
// size of the blockchain, but rather the index of the top block. As the
|
// size of the blockchain, but rather the index of the top block. As the
|
||||||
// chain is 0-indexed, the total size will be height() + 1.
|
// chain is 0-indexed, the total size will be height() + 1.
|
||||||
virtual uint64_t height() = 0;
|
virtual uint64_t height() const = 0;
|
||||||
|
|
||||||
// pops the top block off the blockchain.
|
// pops the top block off the blockchain.
|
||||||
// Returns by reference the popped block and its associated transactions
|
// Returns by reference the popped block and its associated transactions
|
||||||
@ -412,48 +412,48 @@ public:
|
|||||||
|
|
||||||
|
|
||||||
// return true if a transaction with hash <h> exists
|
// return true if a transaction with hash <h> exists
|
||||||
virtual bool tx_exists(const crypto::hash& h) = 0;
|
virtual bool tx_exists(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// return unlock time of tx with hash <h>
|
// return unlock time of tx with hash <h>
|
||||||
virtual uint64_t get_tx_unlock_time(const crypto::hash& h) = 0;
|
virtual uint64_t get_tx_unlock_time(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// return tx with hash <h>
|
// return tx with hash <h>
|
||||||
// throw if no such tx exists
|
// throw if no such tx exists
|
||||||
virtual transaction get_tx(const crypto::hash& h) = 0;
|
virtual transaction get_tx(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// returns the total number of transactions in all blocks
|
// returns the total number of transactions in all blocks
|
||||||
virtual uint64_t get_tx_count() = 0;
|
virtual uint64_t get_tx_count() const = 0;
|
||||||
|
|
||||||
// return list of tx with hashes <hlist>.
|
// return list of tx with hashes <hlist>.
|
||||||
// TODO: decide if a missing hash means return empty list
|
// TODO: decide if a missing hash means return empty list
|
||||||
// or just skip that hash
|
// or just skip that hash
|
||||||
virtual std::vector<transaction> get_tx_list(const std::vector<crypto::hash>& hlist) = 0;
|
virtual std::vector<transaction> get_tx_list(const std::vector<crypto::hash>& hlist) const = 0;
|
||||||
|
|
||||||
// returns height of block that contains transaction with hash <h>
|
// returns height of block that contains transaction with hash <h>
|
||||||
virtual uint64_t get_tx_block_height(const crypto::hash& h) = 0;
|
virtual uint64_t get_tx_block_height(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// return global output index of a random output of amount <amount>
|
// return global output index of a random output of amount <amount>
|
||||||
virtual uint64_t get_random_output(const uint64_t& amount) = 0;
|
virtual uint64_t get_random_output(const uint64_t& amount) const = 0;
|
||||||
|
|
||||||
// returns the total number of outputs of amount <amount>
|
// returns the total number of outputs of amount <amount>
|
||||||
virtual uint64_t get_num_outputs(const uint64_t& amount) = 0;
|
virtual uint64_t get_num_outputs(const uint64_t& amount) const = 0;
|
||||||
|
|
||||||
// return public key for output with global output amount <amount> and index <index>
|
// return public key for output with global output amount <amount> and index <index>
|
||||||
virtual crypto::public_key get_output_key(const uint64_t& amount, const uint64_t& index) = 0;
|
virtual crypto::public_key get_output_key(const uint64_t& amount, const uint64_t& index) const = 0;
|
||||||
|
|
||||||
// returns the output indexed by <index> in the transaction with hash <h>
|
// returns the output indexed by <index> in the transaction with hash <h>
|
||||||
virtual tx_out get_output(const crypto::hash& h, const uint64_t& index) = 0;
|
virtual tx_out get_output(const crypto::hash& h, const uint64_t& index) const = 0;
|
||||||
|
|
||||||
// returns the transaction-local reference for the output with <amount> at <index>
|
// returns the transaction-local reference for the output with <amount> at <index>
|
||||||
// return type is pair of tx hash and index
|
// return type is pair of tx hash and index
|
||||||
virtual tx_out_index get_output_tx_and_index(const uint64_t& amount, const uint64_t& index) = 0;
|
virtual tx_out_index get_output_tx_and_index(const uint64_t& amount, const uint64_t& index) const = 0;
|
||||||
|
|
||||||
// return a vector of indices corresponding to the global output index for
|
// return a vector of indices corresponding to the global output index for
|
||||||
// each output in the transaction with hash <h>
|
// each output in the transaction with hash <h>
|
||||||
virtual std::vector<uint64_t> get_tx_output_indices(const crypto::hash& h) = 0;
|
virtual std::vector<uint64_t> get_tx_output_indices(const crypto::hash& h) const = 0;
|
||||||
|
|
||||||
// returns true if key image <img> is present in spent key images storage
|
// returns true if key image <img> is present in spent key images storage
|
||||||
virtual bool has_key_image(const crypto::key_image& img) = 0;
|
virtual bool has_key_image(const crypto::key_image& img) const = 0;
|
||||||
|
|
||||||
}; // class BlockchainDB
|
}; // class BlockchainDB
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user