All LMDB BlockchainDB implemented, not tested
All of the functionality for the LMDB implementation of BlockchainDB is implemented, but only what is in tests/unit_tests/BlockchainDB.cpp has been tested. This is basically add a block, see if you can get the block and a tx from the block. More tests should be added at some point.
This commit is contained in:
parent
e47e343a1c
commit
d8c570b588
File diff suppressed because it is too large
Load Diff
@ -26,6 +26,7 @@
|
|||||||
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include "cryptonote_core/blockchain_db.h"
|
#include "cryptonote_core/blockchain_db.h"
|
||||||
|
#include "cryptonote_protocol/blobdatatype.h" // for type blobdata
|
||||||
|
|
||||||
#include <lmdb.h>
|
#include <lmdb.h>
|
||||||
|
|
||||||
@ -149,6 +150,17 @@ public:
|
|||||||
|
|
||||||
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);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief get an output from its global index
|
||||||
|
*
|
||||||
|
* @param index global index of the output desired
|
||||||
|
*
|
||||||
|
* @return the output associated with the 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
|
||||||
|
*/
|
||||||
|
tx_out get_output(const uint64_t& index);
|
||||||
|
|
||||||
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);
|
||||||
|
|
||||||
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);
|
||||||
@ -183,17 +195,48 @@ private:
|
|||||||
|
|
||||||
virtual void remove_spent_key(const crypto::key_image& k_image);
|
virtual void remove_spent_key(const crypto::key_image& k_image);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief convert a tx output to a blob for storage
|
||||||
|
*
|
||||||
|
* @param output the output to convert
|
||||||
|
*
|
||||||
|
* @return the resultant blob
|
||||||
|
*/
|
||||||
|
blobdata output_to_blob(const tx_out& output);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief convert a tx output blob to a tx output
|
||||||
|
*
|
||||||
|
* @param blob the blob to convert
|
||||||
|
*
|
||||||
|
* @return the resultant tx output
|
||||||
|
*/
|
||||||
|
tx_out output_from_blob(const blobdata& blob);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief get the global index of the index-th output of the given amount
|
||||||
|
*
|
||||||
|
* @param amount the output amount
|
||||||
|
* @param index the index into the set of outputs of that amount
|
||||||
|
*
|
||||||
|
* @return the global index of the desired output
|
||||||
|
*/
|
||||||
|
uint64_t get_output_global_index(const uint64_t& amount, const uint64_t& index);
|
||||||
|
|
||||||
void check_open();
|
void check_open();
|
||||||
|
|
||||||
MDB_env* m_env;
|
MDB_env* m_env;
|
||||||
|
|
||||||
MDB_dbi m_blocks;
|
MDB_dbi m_blocks;
|
||||||
|
MDB_dbi m_block_heights;
|
||||||
MDB_dbi m_block_hashes;
|
MDB_dbi m_block_hashes;
|
||||||
|
MDB_dbi m_block_timestamps;
|
||||||
MDB_dbi m_block_sizes;
|
MDB_dbi m_block_sizes;
|
||||||
MDB_dbi m_block_diffs;
|
MDB_dbi m_block_diffs;
|
||||||
MDB_dbi m_block_coins;
|
MDB_dbi m_block_coins;
|
||||||
|
|
||||||
MDB_dbi m_txs;
|
MDB_dbi m_txs;
|
||||||
|
MDB_dbi m_tx_unlocks;
|
||||||
MDB_dbi m_tx_heights;
|
MDB_dbi m_tx_heights;
|
||||||
MDB_dbi m_tx_outputs;
|
MDB_dbi m_tx_outputs;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user