We had planned to create a Golang implementation of the Chia node for our pool and farmers but with the Hackathon happening we decided it would be best to make it public and work collaboratively with the Chia community. Core Chia developers decided to use Python with wrapped C++/Rust libraries, which is a good start that can be improved upon. What we have now is a complicated codebase that is using mixed programming languages. This introduces a lot of complexity in using the Chia software stack. With Python being an interpreted programming language, to run a Chia node you will need to have all the source code, which introduces additional difficulty with managing dependencies and Python virtual environments.
With Go, we will be able to use a single statically-linked binary that will be very easy to use and distribute across various machines without requiring source code dependencies and Python virtual environments. Go node implementations are the most popular implementations in one of the most diversified networks - Ethereum. This is because of the user experience a Go application can provide. Moreover, we think that using Go; it will be possible to increase the speed of the node by more than 10x. That being said, we believe that developing a lightning fast full node client in the Go Programming language will help the Chia network to scale even further, and grow the Chia community by providing a simple, easy-to-use Chia client. This will help to greatly speed up adoption of Chia and value creation.
To that end, we’d like to collect some suggestions/recommendations/feedback from you on what can be done to improve it. We’d love your opinion on the below:
- Is there a better name than GoChia? Ghia?
- What can be done to improve upon the current node? We’re definitely planning to improve connectivity, sync speed, scalability, transaction speed/submission, and reliability.
- What features do you feel are missing from the current node?
- What can we do to make this easy for other developers to build on for their own uses (such as wallets, exchanges, etc)?
If you are familiar with Golang and Chia we’d be happy to have you contribute to our Github or even join the team as a volunteer developer. In which case we may include you as a core/associate developer on this project. We will make another post once it is launched so that you may checkout the Github or join us on our discord to work on it with us.