oxen-core/src/blockchain_utilities
Sean Darcy 866691d9d8 Batching of service node rewards
This updates the coinbase transactions to reward service nodes
periodically rather than every block. If you recieve a service node
reward this reward will be delayed x blocks, if you receive another
reward to the same wallet before those blocks have been completed it
will be added to your total and all will be paid out after those x
blocks has passed.

For example if our batching interval is 2 blocks:

Block 1 - Address A receives reward of 10 oxen - added to batch
Block 2 - Address A receives reward of 10 oxen - added to batch
Block 3 - Address A is paid out 20 oxen.

Batching accumulates a small reward for all nodes every block

The batching of service node rewards allows us to drip feed rewards
to service nodes. Rather than accruing each service node 16.5 oxen every
time they are pulse block leader we now reward every node the 16.5 /
num_service_nodes every block and pay each wallet the full amount that
has been accrued after a period of time (Likely 3.5 days).

To spread each payment evenly we now pay the rewards based on the
address of the recipient. This modulus of their address determines which
block the address should be paid and by setting the interval to our
service_node_batching interval we can guarantee they will be paid out
regularly and evenly distribute the payments for all wallets over this
2022-04-29 09:51:14 +10:00
..
CMakeLists.txt Batching of service node rewards 2022-04-29 09:51:14 +10:00
README.md executable names changed 2021-01-04 14:19:42 +11:00
blockchain_ancestry.cpp Batching of service node rewards 2022-04-29 09:51:14 +10:00
blockchain_blackball.cpp shorten wire names 2021-02-09 11:54:27 +11:00
blockchain_depth.cpp Batching of service node rewards 2022-04-29 09:51:14 +10:00
blockchain_export.cpp Batching of service node rewards 2022-04-29 09:51:14 +10:00
blockchain_import.cpp Add snode revision soft forks & drop hard fork voting code 2021-06-19 15:13:57 -03:00
blockchain_objects.h initial loki -> oxen pass 2021-01-04 11:09:45 +11:00
blockchain_prune.cpp rebrand lns -> ons 2021-04-12 10:27:57 +10:00
blockchain_prune_known_spent_data.cpp rebrand lns -> ons 2021-04-12 10:27:57 +10:00
blockchain_stats.cpp Batching of service node rewards 2022-04-29 09:51:14 +10:00
blockchain_usage.cpp Batching of service node rewards 2022-04-29 09:51:14 +10:00
blockchain_utilities.h utils: Increase max block size for import/export 2019-10-17 19:14:41 -06:00
blocksdat_file.cpp executable names changed 2021-01-04 14:19:42 +11:00
blocksdat_file.h std::filesystem 2020-10-24 12:45:37 -03:00
bootstrap_file.cpp executable names changed 2021-01-04 14:19:42 +11:00
bootstrap_file.h std::filesystem 2020-10-24 12:45:37 -03:00
bootstrap_serialization.h Update monero copyright to 2019 pre-emptively to make merge simpler 2019-04-12 14:36:43 +10:00
sn_key_tool.cpp Update oxenmq to latest oxen-mq+oxen-encoding 2022-04-14 14:32:01 -03:00

README.md

Oxen Blockchain Utilities

Copyright (c) 2014-2019, The Monero Project Copyright (c) 2018, The Loki 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

$ oxen-blockchain-export

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

Import the exported file

$ oxen-blockchain-import

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

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

## fast import with large batch size, database mode "fastest", verification off
$ oxen-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:

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

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

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