Waves is an open source blockchain protocol.
You can use it to build your own decentralized applications. Waves provides full blockchain ecosystem including smart contracts language called RIDE.
Waves node is a host connected to the blockchain network with the following functions:
- Processing and validation of transactions
- Generation and storage of blocks
- Network communication with other nodes
- REST API
- Extensions management
Learn more about Waves Node in the documentation.
This node is modified for special purposes.
Make sure you get the IP/Port config right in node/src/main/scala/com/wavesplatform/utx/UtxPoolImpl.scala Other configuration has to be done in waves-official.conf
Compile as follows
sbt packageAll
You can run it by
java -jar node/target/waves-all*.jar ~/_blockchaindata/Waves_own/waves-official.conf
Ctrl + C sends a shutdown signal so the node will shut down gracefully during the next couple of seconds. Force-closing or crashing the node will result in a broken bloom-filter which the node has to rebuild on the next start (time-intensive!)
Install sbt (see below) Install libtool-bin (?)
Make sure you have ZeroMQ installed
sudo wget http://download.zeromq.org/zeromq-2.2.0.tar.gz && tar -xvf zeromq-2.2.0.tar.gz && cd zeromq-2.2.0 && ./autogen.sh && ./configure && make -j 4 && make check && make install
and Java JDK of version 8.
sudo apt install default-jdk
Executing the .jar files sometimes results in a strange error about forbidden characters.
"[...] Reserved character '!' is not allowed outside quote [...]"
Just recompile the whole project as follows:
sbt clean
sbt packageAll
A quick introduction of the minimal setup you need to get a running node.
Prerequisites:
Linux systems:
sudo apt-get update
sudo apt-get install openjdk-8-jre
java -jar node/target/waves-all*.jar path/to/config/waves-{network}.conf
Mac systems (assuming already installed homebrew):
brew cask install adoptopenjdk/openjdk/adoptopenjdk8
java -jar node/target/waves-all*.jar path/to/config/waves-{network}.conf
Windows systems (assuming already installed OpenJDK 8):
java -jar node/target/waves-all*.jar path/to/config/waves-{network}.conf
Using docker, follow the official image documentation.
More details on how to install a node for different platforms you can find in the documentation.
The best starting point to understand available configuration parameters is this article.
The easiest way to start playing around with configurations is to use default configuration files for different networks; they're available in network-defaults.conf.
Logging configuration with all available levels and parameters is described here.
The node can be built and installed wherever Java can run. To build and test this project, you will have to follow these steps:
Show instructions
1. Setup the environment.
- Install Java for your platform:
sudo apt-get update
sudo apt install default-jdk # Pütti: use the new jdk instead of version 8!
# old: sudo apt-get install openjdk-8-jre # Ubuntu
# or
# brew cask install adoptopenjdk/openjdk/adoptopenjdk8 # Mac
- Install SBT (Scala Build Tool)
Please follow the SBT installation instructions depending on your platform (Linux, Mac, Windows)
2. Clone this repo
git clone https://github.com/wavesplatform/Waves.git
cd Waves
3. Compile and run tests
sbt -mem 2048 checkPR # Pütti: required to extend memory to 2 GB
4. Run integration tests (optional)
Create a Docker image before you run any test:
sbt node-it/docker
- Run all tests. You can increase or decrease number of parallel running tests by changing
waves.it.max-parallel-suites
system property:
sbt -Dwaves.it.max-parallel-suites=1 node-it/test
- Run one test:
sbt node-it/testOnly *.TestClassName
# or
# bash node-it/testOnly full.package.TestClassName
5. Build packages
sbt packageAll # Mainnet
sbt -Dnetwork=testnet packageAll # Testnet
sbt packageAll
produces only deb
package along with a fat jar
.
6. Install DEB package
deb
package is located in target folder. You can replace '*' with actual package name:
sudo dpkg -i node/target/*.deb
7. Run an extension project locally during development (optional)
sbt "extension-module/run /path/to/configuration"
8. Configure IntelliJ IDEA (optional)
The majority of contributors to this project use IntelliJ IDEA for development, if you want to use it as well please follow these steps:
- Click
Add configuration
(orEdit configurations...
). - Click
+
to add a new configuration, chooseApplication
. - Specify:
- Main class:
com.wavesplatform.Application
- Program arguments:
/path/to/configuration
- Use classpath of module:
extension-module
- Main class:
- Click
OK
. - Run this configuration.
If you'd like to contribute, please fork the repository and use a feature branch. Pull requests are warmly welcome.
For major changes, please open an issue first to discuss what you would like to change. Please make sure to update tests as appropriate.
Please follow the code of conduct during communication with the each other.
Keep up with the latest news and articles, and find out all about events happening on the Waves Protocol.
- Documentation
- Blockchain clients for Mainnet: Waves Exchange, Waves FX, SIGN app
- Blockchain clients for Testnet: Waves Exchange
- Blockchain Explorer: Mainnet, Testnet, Stagenet
- Ride Online IDE
The code in this project is licensed under MIT license
We use YourKit full-featured Java Profiler to make Waves node faster. YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications.
Take a look at YourKit's leading software products: YourKit Java Profiler and YourKit .NET Profiler.