Full Node v0.8.7 (Mainnet & Testnet)

Release highlights

Other changes

  • Reimplemented and improved syncing mechanism to fix nodes getting stuck/ending up on a fork
  • UTX Pool maximum size increased to 100k txs
  • Acceptable block time drift reduced from -15 seconds to -100ms
  • Added Block Headers API methods available at /blocks/headers/ allowing to request block headers (i.e. block metadata w/o transactions)
  • Payment transaction has been deprecated and will not be accepted once block version 3 is activated
  • Payment-related API methods (/waves/externalPayment/waves/signPayment/waves/broadcastSignedPayment/waves/createdSignedPayment) have been removed. /waves/payment now creates and broadcasts a Transfer transcation instead of Payment transaction
  • Lease transaction info via API now exposes the lease state (active/canceled)
  • peers.dat is now human-readable JSON file
  • wallet.dat is now encrypted JSON file

New settings

  • waves.logging-level is not used anymore. For details and configuring instructions, please refer to the next section
  • waves.blockchain.max-transactions-per-block-diff - Max transactions per block diff, affects size of atomic persistence, default value is 1000
  • waves.blockchain.min-blocks-in-memory - Amount of blocks in memory. Fast rollback is possible up to this value, default value is 100
  • waves.network.traffic-logger.ignore-tx-messages lists codes of incoming message types which should not be logged, defaults to 23 (Block) and 25 (Transaction)
  • waves.network.traffic-logger.ignore-rx-messages lists codes of incoming message types which should not be logged, defaults to 25 (Transaction)
  • waves.blockchain.store-transactions-in-state - allows to switch transactions storage in state, default value "on"
  • waves.blockchain.in-memory-chunk-size sets the size of in-memory blocks window, the smaller value reduces the memory footprint, default value is 5
  • waves.blockchain.in-mem-chunks-amount sets the number of in-memory windows, default value is 10, the fast rollback is possible up to in-memory-chunk-size * in-mem-chunks-amount blocks
  • waves.matcher.order-cleanup-interval sets the lean-up interval for expired orders on matcher, default value is 5m
  • waves.matcher.rest-order-limit limits amount of orders exposed via API, default value is 100
  • waves.mvstore-page-split-size allows changing the size of MVStore in-memory pages, default value 4096 bytes
  • waves.network.synchronization.invalid-block-storage section controls invalid block cache. If a block which has been loaded from a remote peer can not be appended to the blockchain, validation error is cached, so that no blocks with such signature are loaded from other peers. This helps improve sync process. max-size limits invalid block cache size and timeout limits invalid block cache residency time.
  • waves.utx.cleanup-interval defines an interval for utx to re-validate all transactions, default value is 5 min


We now separate what gets logged to files and what can be seen in STDOUT. By default, node logs with INFO level to STDOUT and DEBUG in log file, which can be found at /var/log/waves if starting through systemd or upstart. Log-files are rotated, compressed, those older that 30 days are deleted, max size of all log files is 1Gb.

If you run a node with a JAR, you can easily change levels/output dir.

  • To change STDOOUT level, start the node with -Dlogback.stdout.level=TRACE
  • To change file log output level, start the node with -Dlogback.file.level=TRACE
  • To change file log output directory, start the node with -Dlogback.file.directory=/another/directory

System requirements

We recommend to set -Xmx parameter to 4G in case of transaction storage turned on, and 2G if you switched off transactions storage. With NG protocol activation, expect your node to consume significantly more disk space. Disabling transaction storage will reduce disk usage. However, if you need to retrieve transaction data via API, you'll need to keep transaction storage enabled.