2015-05-31 14:40:18 +03:00
# Monero Blockchain Utilities
Copyright (c) 2014-2015, The Monero Project
## Introduction
2015-03-22 19:57:14 +02:00
2015-07-07 20:45:11 +03:00
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.
2015-03-22 19:57:14 +02:00
For importing into the LMDB database, compile with `DATABASE=lmdb`
e.g.
`DATABASE=lmdb make release`
2015-07-07 20:45:11 +03:00
This is also the default compile setting on the master branch.
2015-03-22 19:57:14 +02:00
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.
2015-05-09 00:20:32 +03:00
To change the source, adjust `SOURCE_DB` in `src/blockchain_utilities/bootstrap_file.h` according to the comments.
2015-03-22 19:57:14 +02:00
2015-05-31 14:40:18 +03:00
## Usage:
2015-03-22 19:57:14 +02:00
See also each utility's "--help" option.
2015-05-31 14:40:18 +03:00
### Export an existing in-memory database
2015-03-22 19:57:14 +02:00
`$ 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`
2015-05-31 14:40:18 +03:00
### Import the exported file
2015-03-22 19:57:14 +02:00
`$ blockchain_import`
This imports blocks from `$MONERO_DATA_DIR/export/blockchain.raw` 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.
```bash
2015-05-31 14:40:18 +03:00
## use default settings to import blockchain.raw into database
2015-03-22 19:57:14 +02:00
$ blockchain_import
2015-05-31 14:40:18 +03:00
## fast import with large batch size, verification off
2015-03-22 19:57:14 +02:00
$ blockchain_import --batch-size 100000 --verify off
2015-05-31 14:40:18 +03:00
## LMDB flags can be set by appending them to the database type:
## flags: nosync, nometasync, writemap, mapasync
2015-03-22 19:57:14 +02:00
$ blockchain_import --database lmdb#nosync
$ blockchain_import --database lmdb#nosync,nometasync
```
2015-05-31 14:40:18 +03:00
### Blockchain converter with batching
2015-03-22 19:57:14 +02:00
`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.
```bash
$ blockchain_converter --batch on --batch-size 20000
```