To make node customization accessible to more developers, we present the new version of a fully open-source Waves Platform node, written in the Go programming language.
Scala node
Anyone is able to run a Waves Platform node on their computer. This means that you can participate in validating transactions and generating blocks on the Waves network, as well as configuring your node in different ways, depending on your specific needs (for example, to automate lessors’ payouts).
Up to this point, the only node software available for the Waves Platform has been written in the Scala programming language. We are very happy with Scala, and even gained inspiration from it when designing Ride. At the same time, we understand that Scala is not a very widely used language. To make it easier for more developers to understand how the node works, we have implemented an alternative version of the software.
Go node
Go offers both high performance and low hardware requirements. The new implementation also makes our network even more stable, due to the redundancy it provides in terms of diversity of implementations; if there is an error in one implementation, it would not impact the entire network.
As this is the first version it is not yet possible to generate blocks. The current version is the most suitable for experimenting. However, the Go implementation is already available for mainnet, testnet, and stagenet.
Installation
You can run a Waves Platform node on Linux, macOS or Windows. You can find a detailed installation guide for the Go implementation here.
Note that the Go implementation has its own state storage structure that is incompatible with the Scala version. The Go and Scala nodes are independent implementations, so you cannot copy data from one to the other. Use the import.
What’s next?
First of all, we want to make network synchronization more stable. Upcoming milestones include:
- Completing gRPC API and extensive integration testing
- Ride workflow optimization
- Support for new Ride v4 and Waves v1.2 features that are about to be released
- Built-in wallet for full block generation
We aim to accelerate the growth of the Waves ecosystem through community-based knowledge and traction. If you have any ideas for how to improve our nodes, then follow these simple steps:
- Find the relevant GitHub page
- Fork the repository
- Send a pull request
If the Waves community supports your proposal, then it will be implemented. The most innovative and useful solutions will also be made available in the Scala version. Feel free to modify your version of the node.
The ongoing development process will be displayed openly on GitHub, so don’t hesitate to send us bug reports, suggestions, and requests on Issues in the Repository.
Read Waves News channel
Follow Waves Twitter
Watch Waves Youtube
Subscribe to Waves Subreddit
Official Go Implementation of the Waves Protocol Released was originally published in Waves Platform on Medium, where people are continuing the conversation by highlighting and responding to this story.