This curbs runaway growth while still allowing substantial spikes in block weight Original specification from ArticMine: here is the scaling proposal Define: LongTermBlockWeight Before fork: LongTermBlockWeight = BlockWeight At or after fork: LongTermBlockWeight = min(BlockWeight, 1.4*LongTermEffectiveMedianBlockWeight) Note: To avoid possible consensus issues over rounding the LongTermBlockWeight for a given block should be calculated to the nearest byte, and stored as a integer in the block itself. The stored LongTermBlockWeight is then used for future calculations of the LongTermEffectiveMedianBlockWeight and not recalculated each time. Define: LongTermEffectiveMedianBlockWeight LongTermEffectiveMedianBlockWeight = max(300000, MedianOverPrevious100000Blocks(LongTermBlockWeight)) Change Definition of EffectiveMedianBlockWeight From (current definition) EffectiveMedianBlockWeight = max(300000, MedianOverPrevious100Blocks(BlockWeight)) To (proposed definition) EffectiveMedianBlockWeight = min(max(300000, MedianOverPrevious100Blocks(BlockWeight)), 50*LongTermEffectiveMedianBlockWeight) Notes: 1) There are no other changes to the existing penalty formula, median calculation, fees etc. 2) There is the requirement to store the LongTermBlockWeight of a block unencrypted in the block itself. This is to avoid possible consensus issues over rounding and also to prevent the calculations from becoming unwieldy as we move away from the fork. 3) When the EffectiveMedianBlockWeight cap is reached it is still possible to mine blocks up to 2x the EffectiveMedianBlockWeight by paying the corresponding penalty. Note: the long term block weight is stored in the database, but not in the actual block itself, since it requires recalculating anyway for verification.
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