aboutsummaryrefslogtreecommitdiff
path: root/src/cryptonote_protocol/block_queue.cpp (follow)
AgeCommit message (Collapse)AuthorFilesLines
2019-09-27monerod can now sync from pruned blocksmoneromooo-monero1-16/+27
If the peer (whether pruned or not itself) supports sending pruned blocks to syncing nodes, the pruned version will be sent along with the hash of the pruned data and the block weight. The original tx hashes can be reconstructed from the pruned txes and theur prunable data hash. Those hashes and the block weights are hashes and checked against the set of precompiled hashes, ensuring the data we received is the original data. It is currently not possible to use this system when not using the set of precompiled hashes, since block weights can not otherwise be checked for validity. This is off by default for now, and is enabled by --sync-pruned-blocks
2019-03-05Update 2019 copyrightbinaryFate1-1/+1
2019-01-28block_queue: fix late sanity check off by onemoneromooo-monero1-1/+1
2019-01-22Pruningmoneromooo-monero1-47/+146
The blockchain prunes seven eighths of prunable tx data. This saves about two thirds of the blockchain size, while keeping the node useful as a sync source for an eighth of the blockchain. No other data is currently pruned. There are three ways to prune a blockchain: - run monerod with --prune-blockchain - run "prune_blockchain" in the monerod console - run the monero-blockchain-prune utility The first two will prune in place. Due to how LMDB works, this will not reduce the blockchain size on disk. Instead, it will mark parts of the file as free, so that future data will use that free space, causing the file to not grow until free space grows scarce. The third way will create a second database, a pruned copy of the original one. Since this is a new file, this one will be smaller than the original one. Once the database is pruned, it will stay pruned as it syncs. That is, there is no need to use --prune-blockchain again, etc.
2018-12-23Remove boost::lexical_cast for uuid and unused uuid functionLee Clagett1-0/+1
2018-07-20block_queue: faster check whether a block was requestedmoneromooo-monero1-13/+26
2018-06-26replace std::list with std::vector on some hot pathsmoneromooo-monero1-9/+9
also use reserve where appropriate
2018-01-26Readd copyright starting datexmr-eric1-1/+1
2018-01-26Update 2018 copyrightxmr-eric1-1/+1
2017-12-18use const refs in for loops for non tiny typesmoneromooo-monero1-1/+1
2017-12-18add empty container sanity checks when using front() and back()moneromooo-monero1-0/+1
2017-12-16move includes around to lessen overall loadmoneromooo-monero1-0/+1
2017-10-03block_queue: use boost::uuids::nil_uuid where appropriatemoneromooo-monero1-2/+1
2017-09-25move checkpoints in a separate librarymoneromooo-monero1-1/+1
2017-08-21cryptonote_protocol: misc fixes to the new sync algorithmmoneromooo-monero1-3/+25
Fix sync wedge corner case: It could happen if a connection went into standby mode, while it was the one which had requested the next span, and that span was still waiting for the data, and that peer is not on the main chain. Other peers can then start asking for that data again and again, but never get it as only that forked peer does. And various other fixes
2017-08-16cryptonote_protocol: kick idle synchronizing peersmoneromooo-monero1-0/+10
In case they dropped off downloading for any reason, they'll get sent to download again.
2017-08-15block_queue: do not add empty spansmoneromooo-monero1-0/+2
2017-08-12protocol: fix reorgs while syncingmoneromooo-monero1-80/+29
2017-08-07cryptonote_protocol: retry stale spans earlymoneromooo-monero1-0/+16
Connections can be dropped by the net_node layer, unbeknownst to cryptonote_protocol, which would then not flush any spans scheduled to that connection, which would cause it to be only downloaded again once it becomes the next span (possibly after a small delay if it had been requested less than 5 seconds ago).
2017-08-07cryptonote_protocol_handler: sync speedupmoneromooo-monero1-0/+418
A block queue is now placed between block download and block processing. Blocks are now requested only from one peer (unless starved). Includes a new sync_info coommand.