aboutsummaryrefslogtreecommitdiff
path: root/src/blockchain_utilities/blocksdat_file.cpp
diff options
context:
space:
mode:
authorRiccardo Spagni <ric@spagni.net>2017-10-15 17:23:50 +0200
committerRiccardo Spagni <ric@spagni.net>2017-10-15 17:23:50 +0200
commit5ea20d694430d6db9d4721137bd1165b1fa3f6ec (patch)
tree3cfc2a7adc6c562c39fe1f6e2a690b7dc7896b32 /src/blockchain_utilities/blocksdat_file.cpp
parentMerge pull request #2056 (diff)
parentprecomputed block hashes are now in blocks of N (currently 256) (diff)
downloadmonero-5ea20d694430d6db9d4721137bd1165b1fa3f6ec.tar.xz
Merge pull request #2469
7adceee6 precomputed block hashes are now in blocks of N (currently 256) (moneromooo-monero)
Diffstat (limited to 'src/blockchain_utilities/blocksdat_file.cpp')
-rw-r--r--src/blockchain_utilities/blocksdat_file.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/blockchain_utilities/blocksdat_file.cpp b/src/blockchain_utilities/blocksdat_file.cpp
index 63224225f..32e93345e 100644
--- a/src/blockchain_utilities/blocksdat_file.cpp
+++ b/src/blockchain_utilities/blocksdat_file.cpp
@@ -82,7 +82,7 @@ bool BlocksdatFile::open_writer(const boost::filesystem::path& file_path, uint64
bool BlocksdatFile::initialize_file(uint64_t block_stop)
{
- const uint32_t nblocks = block_stop + 1;
+ const uint32_t nblocks = (block_stop + 1) / HASH_OF_HASHES_STEP;
unsigned char nblocksc[4];
nblocksc[0] = nblocks & 0xff;
@@ -101,8 +101,16 @@ bool BlocksdatFile::initialize_file(uint64_t block_stop)
void BlocksdatFile::write_block(const crypto::hash& block_hash)
{
- const std::string data(block_hash.data, sizeof(block_hash));
- *m_raw_data_file << data;
+ m_hashes.push_back(block_hash);
+ while (m_hashes.size() >= HASH_OF_HASHES_STEP)
+ {
+ crypto::hash hash;
+ crypto::cn_fast_hash(m_hashes.data(), HASH_OF_HASHES_STEP * sizeof(crypto::hash), hash);
+ memmove(m_hashes.data(), m_hashes.data() + HASH_OF_HASHES_STEP * sizeof(crypto::hash), (m_hashes.size() - HASH_OF_HASHES_STEP) * sizeof(crypto::hash));
+ m_hashes.resize(m_hashes.size() - HASH_OF_HASHES_STEP);
+ const std::string data(hash.data, sizeof(hash));
+ *m_raw_data_file << data;
+ }
}
bool BlocksdatFile::close()