monero/src/blockchain_utilities
moneromooo-monero f3724aef88
Fix startup crash when using a locale boost does not like
There are various locale related bugs in various versions of boost,
where exceptions are thrown in boost::filesystem APIs when the
current locale is not to boost's liking. It's not clear what "not
to boost's liking" means in detail, though "en" and "en_US.UTF-8"
are not to its liking.

Fix it by running a test function that's known to throw in such
a case, and resetting LANG and LC_ALL to C if an exception is
thrown. In simplewallet, the locale is queried before that so the
correct translations will still be used.
2015-11-21 10:13:10 +00:00
..
blockchain_converter.cpp blockchain_utilities: Pass expected number of blocks when starting batch 2015-07-11 23:54:14 -07:00
blockchain_dump.cpp Fix startup crash when using a locale boost does not like 2015-11-21 10:13:10 +00:00
blockchain_export.cpp Fix startup crash when using a locale boost does not like 2015-11-21 10:13:10 +00:00
blockchain_import.cpp Fix startup crash when using a locale boost does not like 2015-11-21 10:13:10 +00:00
blockchain_utilities.h blockchain_export can now export to a blocks.dat format 2015-10-17 00:11:26 +01:00
blocksdat_file.cpp blockchain_export can now export to a blocks.dat format 2015-10-17 00:11:26 +01:00
blocksdat_file.h blockchain_export can now export to a blocks.dat format 2015-10-17 00:11:26 +01:00
bootstrap_file.cpp bootstrap_file: do not try to create a directory with an empty name 2015-10-17 00:11:20 +01:00
bootstrap_file.h blockchain_export can now export to a blocks.dat format 2015-10-17 00:11:26 +01:00
bootstrap_serialization.h Rename src/blockchain_converter/ to src/blockchain_utilities/ 2015-05-08 14:24:51 -07:00
CMakeLists.txt blockchain_utilities: new blockchain_dump diagnostic tool 2015-10-25 12:36:16 +00:00
fake_core.h Optionally allow DB to know expected number of blocks at batch transaction start 2015-07-11 23:54:12 -07:00
README.md doc: hammer the fact that the raw file isn't blockchain.bin 2015-08-14 09:53:57 +01:00

Monero Blockchain Utilities

Copyright (c) 2014-2015, The Monero Project

Introduction

The blockchain utilities allow one to convert an old style blockchain.bin file to a new style database. There are two ways to upgrade an old style blockchain: The recommended way is to run a blockchain_export, then blockchain_import. The other way is to run blockchain_converter. In both cases, you will be left with a new style blockchain.

For importing into the LMDB database, compile with DATABASE=lmdb

e.g.

DATABASE=lmdb make release

This is also the default compile setting on the master branch.

By default, the exporter will use the original in-memory database (blockchain.bin) as its source. This default is to make migrating to an LMDB database easy, without having to recompile anything. To change the source, adjust SOURCE_DB in src/blockchain_utilities/bootstrap_file.h according to the comments.

Usage:

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

Export an existing in-memory database

$ blockchain_export

This loads the existing blockchain, for whichever database type it was compiled for, and exports it to $MONERO_DATA_DIR/export/blockchain.raw

Import the exported file

$ blockchain_import

This imports blocks from $MONERO_DATA_DIR/export/blockchain.raw (exported using the 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 blockchain_import command again, and it will restart from where it left off.

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

## fast import with large batch size, verification off
$ blockchain_import --batch-size 100000 --verify off

## LMDB flags can be set by appending them to the database type:
## flags: nosync, nometasync, writemap, mapasync
$ blockchain_import --database lmdb#nosync
$ blockchain_import --database lmdb#nosync,nometasync

Blockchain converter with batching

blockchain_converter has also been updated and includes batching for faster writes. However, on lower RAM systems, this will be slower than using the exporter and importer utilities. The converter needs to keep the blockchain in memory for the duration of the conversion, like the original bitmonerod, thus leaving less memory available to the destination database to operate.

$ blockchain_converter --batch on --batch-size 20000