monero/src/blockchain_utilities
moneromooo-monero b750fb27b0
Pruning
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.
2019-01-22 20:30:51 +00:00
..
blockchain_ancestry.cpp blockchain_ancestry: allow getting ancestry of a single output 2019-01-16 20:13:12 +00:00
blockchain_blackball.cpp blockchain_blackball: make log file name consistent with executable 2018-12-22 14:46:35 +09:00
blockchain_depth.cpp blockchain_utilities: simplify getting block blob from height 2018-10-22 16:04:28 +00:00
blockchain_export.cpp Pruning 2019-01-22 20:30:51 +00:00
blockchain_import.cpp remove some unused code 2018-11-23 15:37:36 +00:00
blockchain_prune_known_spent_data.cpp blockchain_prune_known_spent_data: blackball file is now optional 2018-11-27 15:45:47 +00:00
blockchain_prune.cpp Pruning 2019-01-22 20:30:51 +00:00
blockchain_stats.cpp blockchain_stats: don't use gmtime_r on Windows 2018-11-21 00:50:53 +00:00
blockchain_usage.cpp Merge pull request #3543 2018-05-31 14:36:33 -05:00
blockchain_utilities.h Update 2018 copyright 2018-01-26 10:03:20 -05:00
blocksdat_file.cpp blockchain_export: fix buffer overflow in exporter 2018-02-02 16:11:15 +00:00
blocksdat_file.h Update 2018 copyright 2018-01-26 10:03:20 -05:00
bootstrap_file.cpp blockchain_utilities: fix logs and cout output colliding 2018-10-27 17:40:01 +00:00
bootstrap_file.h Update 2018 copyright 2018-01-26 10:03:20 -05:00
bootstrap_serialization.h v8: per byte fee, pad bulletproofs, fixed 11 ring size 2018-09-11 13:38:07 +00:00
CMakeLists.txt Pruning 2019-01-22 20:30:51 +00:00
README.md Update 2018 copyright 2018-01-26 10:03:20 -05:00

Monero Blockchain Utilities

Copyright (c) 2014-2018, The Monero Project

Introduction

The blockchain utilities allow one to import and export the blockchain.

Usage:

See also each utility's "--help" option.

Export an existing blockchain database

$ monero-blockchain-export

This loads the existing blockchain and exports it to $MONERO_DATA_DIR/export/blockchain.raw

Import the exported file

$ monero-blockchain-import

This imports blocks from $MONERO_DATA_DIR/export/blockchain.raw (exported using the monero-blockchain-export tool as described above) into the current database.

Defaults: --batch on, --batch size 20000, --verify on

Batch size refers to number of blocks and can be adjusted for performance based on available RAM.

Verification should only be turned off if importing from a trusted blockchain.

If you encounter an error like "resizing not supported in batch mode", you can just re-run the monero-blockchain-import command again, and it will restart from where it left off.

## use default settings to import blockchain.raw into database
$ monero-blockchain-import

## fast import with large batch size, database mode "fastest", verification off
$ monero-blockchain-import --batch-size 20000 --database lmdb#fastest --verify off

Import options

--input-file specifies input file path for importing

default: <data-dir>/export/blockchain.raw

--output-file specifies output file path to export to

default: <data-dir>/export/blockchain.raw

--block-stop stop at block number

--database <database type>

--database <database type>#<flag(s)>

database type: lmdb, memory

flags:

The flag after the # is interpreted as a composite mode/flag if there's only one (no comma separated arguments).

The composite mode represents multiple DB flags and support different database types:

safe, fast, fastest

Database-specific flags can be set instead.

LMDB flags (more than one may be specified):

nosync, nometasync, writemap, mapasync, nordahead

Examples:

$ monero-blockchain-import --database lmdb#fastest

$ monero-blockchain-import --database lmdb#nosync

$ monero-blockchain-import --database lmdb#nosync,nometasync