From eb56d0f9941d4aed9d89a20007221cecd1dc6cbc Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Sat, 4 Jun 2016 14:18:37 +0100 Subject: blockchain_db: add functions for adding/removing/getting rct commitments --- tests/unit_tests/hardfork.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'tests/unit_tests/hardfork.cpp') diff --git a/tests/unit_tests/hardfork.cpp b/tests/unit_tests/hardfork.cpp index eab6b9cf8..1eb73e156 100644 --- a/tests/unit_tests/hardfork.cpp +++ b/tests/unit_tests/hardfork.cpp @@ -100,6 +100,10 @@ public: virtual void add_tx_amount_output_indices(const uint64_t tx_index, const std::vector& amount_output_indices) {} virtual void add_spent_key(const crypto::key_image& k_image) {} virtual void remove_spent_key(const crypto::key_image& k_image) {} + virtual uint64_t get_num_rct_outputs() const { return 0; } + virtual rct::key get_rct_commitment(uint64_t idx) const { return rct::key(); } + virtual uint64_t add_rct_commitment(const rct::key &commitment) { return 0; } + virtual void remove_rct_commitment(uint64_t idx) {} virtual bool for_all_key_images(std::function) const { return true; } virtual bool for_all_blocks(std::function) const { return true; } -- cgit v1.2.3 From 59a66e209a844ac6d4221f7c04141b32fa2823c3 Mon Sep 17 00:00:00 2001 From: moneromooo-monero Date: Wed, 29 Jun 2016 19:55:49 +0100 Subject: move the rct commitments to the output_amounts database Since these are needed at the same time as the output pubkeys, this is a whole lot faster, and takes less space. Only outputs of 0 amount store the commitment. When reading other outputs, a fake commitment is regenerated on the fly. This avoids having to rewrite the database to add space for fake commitments for existing outputs. This code relies on two things: - LMDB must support fixed size records per key, rather than per database (ie, all records on key 0 are the same size, all records for non 0 keys are same size, but records from key 0 and non 0 keys do have different sizes). - the commitment must be directly after the rest of the data in outkey and output_data_t. --- tests/unit_tests/hardfork.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'tests/unit_tests/hardfork.cpp') diff --git a/tests/unit_tests/hardfork.cpp b/tests/unit_tests/hardfork.cpp index 1eb73e156..a279b6c68 100644 --- a/tests/unit_tests/hardfork.cpp +++ b/tests/unit_tests/hardfork.cpp @@ -96,14 +96,10 @@ public: virtual void remove_block() { blocks.pop_back(); } virtual uint64_t add_transaction_data(const crypto::hash& blk_hash, const transaction& tx, const crypto::hash& tx_hash) {return 0;} virtual void remove_transaction_data(const crypto::hash& tx_hash, const transaction& tx) {} - virtual uint64_t add_output(const crypto::hash& tx_hash, const tx_out& tx_output, const uint64_t& local_index, const uint64_t unlock_time) {return 0;} + virtual uint64_t add_output(const crypto::hash& tx_hash, const tx_out& tx_output, const uint64_t& local_index, const uint64_t unlock_time, const rct::key *commitment) {return 0;} virtual void add_tx_amount_output_indices(const uint64_t tx_index, const std::vector& amount_output_indices) {} virtual void add_spent_key(const crypto::key_image& k_image) {} virtual void remove_spent_key(const crypto::key_image& k_image) {} - virtual uint64_t get_num_rct_outputs() const { return 0; } - virtual rct::key get_rct_commitment(uint64_t idx) const { return rct::key(); } - virtual uint64_t add_rct_commitment(const rct::key &commitment) { return 0; } - virtual void remove_rct_commitment(uint64_t idx) {} virtual bool for_all_key_images(std::function) const { return true; } virtual bool for_all_blocks(std::function) const { return true; } -- cgit v1.2.3