monero/src/blockchain_utilities
moneromooo-monero 7175dcb107
replace most boost serialization with existing monero serialization
This reduces the attack surface for data that can come from
malicious sources (exported output and key images, multisig
transactions...) since the monero serialization is already
exposed to the outside, and the boost lib we were using had
a few known crashers.

For interoperability, a new load-deprecated-formats wallet
setting is added (off by default). This allows loading boost
format data if there is no alternative. It will likely go
at some point, along with the ability to load those.

Notably, the peer lists file still uses the boost serialization
code, as the data it stores is define in epee, while the new
serialization code is in monero, and migrating it was fairly
hairy. Since this file is local and not obtained from anyone
else, the marginal risk is minimal, but it could be migrated
later if needed.

Some tests and tools also do, this will stay as is for now.
2020-08-17 16:23:58 +00:00
..
blockchain_ancestry.cpp Update copyright year to 2020 2020-05-06 22:36:54 -04:00
blockchain_blackball.cpp replace most boost serialization with existing monero serialization 2020-08-17 16:23:58 +00:00
blockchain_depth.cpp Update copyright year to 2020 2020-05-06 22:36:54 -04:00
blockchain_export.cpp Update copyright year to 2020 2020-05-06 22:36:54 -04:00
blockchain_import.cpp Update copyright year to 2020 2020-05-06 22:36:54 -04:00
blockchain_prune_known_spent_data.cpp Update copyright year to 2020 2020-05-06 22:36:54 -04:00
blockchain_prune.cpp Removed Berkeley DB and db switching logic 2019-09-16 16:18:05 +02:00
blockchain_stats.cpp Tweak format, add option for difficulty 2020-08-03 13:13:14 +01:00
blockchain_usage.cpp Update copyright year to 2020 2020-05-06 22:36:54 -04:00
blockchain_utilities.h Update copyright year to 2020 2020-05-06 22:36:54 -04:00
blocksdat_file.cpp Update copyright year to 2020 2020-05-06 22:36:54 -04:00
blocksdat_file.h Merge pull request #6512 2020-07-19 03:32:59 -07:00
bootstrap_file.cpp Update copyright year to 2020 2020-05-06 22:36:54 -04:00
bootstrap_file.h Merge pull request #6512 2020-07-19 03:32:59 -07:00
bootstrap_serialization.h Update copyright year to 2020 2020-05-06 22:36:54 -04:00
CMakeLists.txt Update copyright year to 2020 2020-05-06 22:36:54 -04:00
README.md Update copyright year to 2020 2020-05-06 22:36:54 -04:00

Monero Blockchain Utilities

Copyright (c) 2014-2020, 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