diff options
author | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-06-29 19:55:49 +0100 |
---|---|---|
committer | moneromooo-monero <moneromooo-monero@users.noreply.github.com> | 2016-08-28 21:29:02 +0100 |
commit | 59a66e209a844ac6d4221f7c04141b32fa2823c3 (patch) | |
tree | a7307663fea9cccad2a0c0bcd5c26469524c9e98 /src/blockchain_db/blockchain_db.cpp | |
parent | rct: add the tx prefix hash into the MLSAG (diff) | |
download | monero-59a66e209a844ac6d4221f7c04141b32fa2823c3.tar.xz |
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.
Diffstat (limited to 'src/blockchain_db/blockchain_db.cpp')
-rw-r--r-- | src/blockchain_db/blockchain_db.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/src/blockchain_db/blockchain_db.cpp b/src/blockchain_db/blockchain_db.cpp index 86a117405..3719d9eb0 100644 --- a/src/blockchain_db/blockchain_db.cpp +++ b/src/blockchain_db/blockchain_db.cpp @@ -90,9 +90,8 @@ void BlockchainDB::add_transaction(const crypto::hash& blk_hash, const transacti // we need the index for (uint64_t i = 0; i < tx.vout.size(); ++i) { - amount_output_indices.push_back(add_output(tx_hash, tx.vout[i], i, tx.unlock_time)); - if (tx.version > 1 && tx.vout[i].amount == 0) - add_rct_commitment(tx.rct_signatures.outPk[i].mask); + amount_output_indices.push_back(add_output(tx_hash, tx.vout[i], i, tx.unlock_time, + tx.version > 1 ? &tx.rct_signatures.outPk[i].mask : NULL)); } add_tx_amount_output_indices(tx_id, amount_output_indices); } |