Awesome
Waves ![Build Status](https://travis-ci.org/wavesplatform/Waves.svg?branch=master)
Waves is an open source blockchain platform.
You can use it to build your own decentralised applications. Waves provides full blockchain ecosystem including smart contracts language called RIDE.
How does the blockchain network work?
There is a huge collection of nodes deployed by miners that store all of the network information in the chain of blocks (blockchain), process requests and can add new transactions to the network after checking their compliance with the rules. The miners are rewarded with the network coins called MRT.
The main advantage of this technology is that each node is a synchronized copy of the main blockchain: it means that the information is stored decentralized and won't be overwritten globally if one of the users changes it at one of the node storages. This can guarantee that the user's information will stay fair and unchangeable.
What is node?
A node is a host connected to the blockchain network using the Waves Node application.
Node functions are:
- blocks storage
- transaction validation
- sending transactions
Learn more about Waves Full Node in the documentation.
How to Build and Test a Node
The node can be built and installed wherever java can run. For Ubuntu,sbt packageAll produces only deb package but for other operating systems, ZIP archive or a fat JAR can be used as well. To build and test your Waves Node, you will need to follow these steps:
1. Setup the environment
-
Installing Java
sudo apt-get update
sudo apt-get install default-jre default-jdk
-
Installing SBT
Please follow the SBT installation instructions depending on your operating system (Mac, Windows, Linux).
2. Obtaining Source Codes
Cloning with HTTPS URLs (recommended)
git clone https://github.com/wavesplatform/Waves.git
cd Waves
or cloning with SSH URLs
git clone git@github.com:wavesplatform/Waves.git
cd Waves
3. Compilation and unit tests
sbt checkPR
4. Running NODE integration tests (optional)
Create a Docker image before you run any test: sbt node-it/docker
- Run all tests:
SBT_THREAD_NUMBER=4 sbt node-it/test
. You can increase or decrease number of parallel running tests by changingSBT_THREAD_NUMBER
- Run one test:
sbt node-it/testOnly *.TestClassName
ornode-it/testOnly full.package.TestClassName
5. Building packages
-
Mainnet
sbt packageAll
-
Testnet
sbt -Dnetwork=testnet packageAll
6. Installing DEB package
DEB package located in target folder. You can replace '*' with actual package name:
sudo dpkg -i node/target/*.deb
7. Running fat jar
You can replace waves-all*.jar with actual jar name (it should have "all"-word):
java -jar node/target/waves-all*.jar path/to/config/file
Note. For OSX - homebrew is preferable choice. You can install java with brew cask install java and sbt with brew install sbt@1. Build/Test steps are common for any OS (but you should use ‘' instead of '/' in windows). {% endprettyhint %}
8. Running an extension project locally during development
SBT
sbt "extension-module/run /path/to/configuration"
IntelliJ IDEA
- Click on
Add configuration
(orEdit configurations...
) - Click on
+
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 on
OK
- Run this configuration
There is another way to run a Waves Node: using Waves Docker container. Learn more about it in the docs.
Useful links
- Official Documentation
- Client Mainnet – Waves Platform client
- Explorer Mainnet – Waves Platform transactions explorer
- Testnet – the alternative Waves blockchain being used for testing
- Testnet Explorer – Test Net transactions explorer
- RIDE – Waves smart contract coding language
- Waves Ride IDE – software for RIDE coding
Support
Keep up with the latest news and articles, and find out all about events happening on the Waves Platform.
Acknowledgement
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.