Skip to content
wavesplatformPublic

About

Reference Waves Blockchain Node (client) implementation on Scala

Topics

Resources

Code of conduct

Stars

1.2k stars

Watchers

170 watching

Forks

Repository files navigation

Waves Node

Reference implementation of the Waves blockchain node: transaction validation, block generation, peer-to-peer networking, the REST API, gRPC and the RIDE smart contract language. See the node documentation.

Running a node

The recommended way is the container image published to Docker Hub with every release:

docker run -d --name waves-node \
  -v waves-data:/var/lib/waves \
  -e WAVES_NETWORK=mainnet \
  -e WAVES_WALLET_PASSWORD=<password> \
  -p 6868:6868 -p 127.0.0.1:6869:6869 \
  wavesplatform/wavesnode:latest
  • Tags: latest (latest stable release) and X.Y.Z (specific version).
  • WAVES_NETWORK: mainnet, testnet or stagenet. The peer-to-peer port is 6868 on Mainnet, 6863 on Testnet, 6862 on Stagenet.
  • 6869 is the REST API; keep it bound to localhost or behind a proxy.
  • A custom config can be mounted at /etc/waves/waves.conf; individual settings can be overridden with JAVA_OPTS="-Dwaves.<path>=<value>".

All image options (environment variables, volumes, extensions, private network image) are described in docker/README.md.

Alternatively, run the waves-all-*.jar from releases on JDK 17 or newer: java -jar waves-all-X.Y.Z.jar waves.conf (start from node/waves-sample.conf). See how to install a node.

A fresh node downloads and verifies the whole chain. To speed this up, see synchronizing the blockchain.

Configuration

Building

Requires JDK 17 and sbt.

sbt node/assembly        # fat jar: target/out/jvm/u/node/waves-all-*.jar
sbt packageAll           # jars, deb packages and the docker build context
sbt stageForDocker && docker build -t waves-node docker   # local image

Testing

sbt node-tests/testFull                  # node unit tests
sbt "node-tests/testOnly *SuiteName"     # single suite
sbt checkPR                              # what CI runs: format check, -Werror compile, all unit tests, packaging

Integration tests run nodes in Docker and need the node-it image built first:

sbt node-it/docker
sbt --server -Dwaves.it.max-parallel-suites=2 --batch "node-it/testOnly *SuiteName"

See docs/notes/testing.md for details.

Contributing

Open an issue to discuss major changes first. Pull requests target version-1.6.x and must pass sbt checkPR. Follow the code of conduct.

Links

License

MIT

Acknowledgements

JProfiler

Performance work on the node uses JProfiler, the Java profiler by ej-technologies, provided under their open source license.

About

Reference Waves Blockchain Node (client) implementation on Scala

Topics

Resources

Code of conduct

Stars

1.2k stars

Watchers

170 watching

Forks

Releases

Packages

Used by

Contributors

Languages