Introduction
Blink Labs, one of the members of the recently announced member-based organization for open-source development, Pragma, is presenting a proposal on Project Catalyst Fund 12 to fund the development of a new Cardano node written in Golang. Although Pragma announced the Amaru project, which is the development of a Cardano node in Rust, it’s always better to have more diversity in programming languages. After all, Ethereum has six different nodes which means even with three we are still behind in node diversity.
Impact
Golang, or Go, is rapidly gaining popularity in the programming world. The Golang developer community is over four times larger than the Haskell community, underscoring its widespread use and vibrant ecosystem.
Creating a Golang node for the Cardano blockchain can attract this large pool of Golang developers, lowering the entry barrier and fostering greater participation in the Cardano ecosystem. This shift from Haskell to Golang will not only bring in more developers but also increase the diversity of nodes in the network, enhancing its resilience and security. By having nodes in different languages, the network can better withstand potential security issues or bugs. This diversity ensures that a single security issue or bug does not compromise the entire network. Different programming languages and implementations can handle various tasks and vulnerabilities in unique ways, making the network more robust and secure.
The introduction of a Golang node to the Cardano blockchain ecosystem is not just a technical upgrade. It represents a strategic move to harness a larger, more active developer community, fostering innovation and enhancing the network’s security and resilience. This initiative is a significant step towards a more inclusive and robust blockchain environment, welcoming a broader range of developers and ensuring the continued growth and stability of the Cardano network.
Feasibility
Blink Labs brings decades of experience in delivering open source software and has a proven track record of successful project completion. They have already accomplished two Project Catalyst Fund 9 proposals and they are currently managing two Fund 11 proposals, meeting every milestone and staying on track to complete them before Fund 12 onboards. Their work is transparent and accessible to the public, showcasing their commitment to open source principles. The team’s cohesion and extensive collaboration history enable them to provide precise time and cost estimates for their projects.
Creating a Cardano node is a substantial undertaking that requires dedicated resources. Securing funding is crucial for Blink Labs to allocate engineering time effectively, significantly speeding up the development process. Their goal is for the Go Cardano node to become a cornerstone of the Cardano development stack for Golang developers, fostering a thriving Golang ecosystem on Cardano. To achieve this, they aim to build a Go Cardano node with a comprehensive capability set, supporting the creation of various downstream projects.
Blink Labs has outlined four key technical deliverable milestones to reach this goal: blockchain storage, Ouroboros node-to-node support, Ouroboros node-to-client support, and a transaction submission gateway. They will manage these tasks through GitHub, creating issues for individual work items and tracking progress with a project board. Their GitHub project milestones will align with their proposal milestones, ensuring transparency and accountability. This structured approach will allow Blink Labs to deliver a robust Go Cardano node, integrating seamlessly into the Cardano ecosystem and empowering Golang developers to innovate and contribute.
Value for money
The project development will be carried out by the experienced engineering team at Blink Labs, which includes Principal and Staff Engineers with a combined experience of over 40 years. The primary development will be handled by Aurora Gaffney, while Chris Gianelloni and Ales Verbic will provide code review, documentation, and support. Blink Labs has a strong track record, having successfully completed two Catalyst Fund 9 proposals: the Ouroboros network (NtC) in Golang and the Cardano Submit API in Golang. They are also currently managing two Catalyst Fund 11 proposals, meeting all scheduled milestones and on track to complete both before Fund 12 onboards.
Additional Blink Labs staff may be utilized for administrative tasks such as project management and community reporting. Funding for this project will primarily cover engineering time, with a small portion allocated for administrative staff involved in project management. The total project budget is 72,950 ADA per month, with 72,000 ADA dedicated to engineering and 950 ADA for project management. Each milestone is expected to take approximately one month, involving about 120 hours from a full-time software engineer and 10 hours from a project manager.
The cost estimates are based on competitive rates: 215 ADA per hour for a senior Golang blockchain software engineer, 170 ADA per hour for a Golang blockchain software engineer, and 95 ADA per hour for a project manager. These rates reflect annual salaries of approximately $196,000 USD, $156,000 USD, and $86,000 USD respectively, for professionals working remotely within the United States.
No additional funding is necessary for third-party products or services, ensuring that the allocated budget is utilized effectively and efficiently. The expertise and experience of the Blink Labs team, combined with their proven track record and meticulous budget planning, demonstrate a high value for money. This project is well-positioned to deliver a robust and integral Go Cardano node, benefiting the entire Cardano ecosystem and fostering a thriving Golang developer community.
Q&A with the team
Q1: Is there an advantage for having a Go Cardano node other than client diversity?
A1: Aside from client diversity, which is enough in my opinion, our goal in the design is to create interoperable and reusable packages. This will allow the node to be used as a building block in the creation of infrastructure such as cross-chain bridges or oracles. It also allows for easy operational integration with various data storage and retrieval services which provide Go integrations. The goal is to open up Cardano data to Go developers outside Cardano while providing an alternative node to Cardano, optimized towards cloud usage. Our target audience is application and data providers, not block production.
Q2: Does Blink Labs, being part of the new Pragma organization, which is already working on a Rust Cardano node, provide an opportunity for cross-pollination in terms of lessons learned in the development of a new node?
A2: Absolutely. That’s one of the reasons for our joining. Our work has been somewhat parallel with TxPipe and their Pallas and Dolos projects. We already share information and expect this to continue. We participate in design meetings for the PRAGMA Rust node, Amaru. Their primary goal is a fully interoperable block producing node, while ours is focused on servicing an application layer.
Q3: Why choose Golang? What advantages does it have over other programming languages for this case in particular?
A3: Go is the lingua franca of modern cloud native infrastructure operations. It’s in use from everything from command line tools to manage and provision cloud resources to infrastructure as code software to the cloud services themselves. Our goal is to build an extensible node which leverages these available services to give an easier operating lifecycle and better user experience for the DevOps and SRE teams. Go has over 10% increase in pull requests and 12% increase in stars on GitHub Year over Year. Source: https://madnight.github.io/githut/#/ (feel free to include stats for… ahem… other infrastructure languages 😁)
Q4: In case this proposal is not funded, will Blink Labs continue working on the Go Cardano node?
A4: Yes. Blink Labs has been building towards our Go Node for some time and have no intention on stopping. We’re an open source company, at heart. Catalyst funding allows us to focus on delivering open source projects and accelerates our delivery, rather than seeking out other funds via paid engagements.
Q5: Do you foresee advantages for running a Go Cardano node over the traditional Haskell one, in terms of resources or performance?
A5: As with anything, there are trade-offs. Our Go Node is meant to be a part of a stack of services to build applications, rather than a single, standalone network element of the chain. A design goal for our node is to eventually be usable in both a monolithic “full node” manner and broken into smaller microservices to allow scaling specific functionality as needed independently. Use cases requiring full node security will need a Haskell Node somewhere to serve as a trusted data source. We want to eventually get to feature parity, but our near term roadmap is focused on data serving, which is much lighter weight than full consensus and block production, making a direct resource consumption comparison unfair.
Q6: Ethereum has six different client nodes (https://www.ethernodes.org/) but two of them are the most popular ones. Do you foresee that Cardano SPOs will adopt these new nodes in Rust and Golang? Or will Haskell continue to be the leading one?
A6: I hope to see Amaru get to block production and to see the network of SPOs start adopting it. The Blink Labs Go Node will not have block production for some time, but it is a goal we want to achieve. I think that many developers are somewhat tribalistic over their programming language of choice and just like the Haskell Node will always have a place on Cardano, we want to provide a home for Gophers. I think SPOs will adopt a variety of strategies, including hybrid pools using multiple clients of different languages to benefit from the diversity.
Support this proposal when Project Catalyst Fund 12 voting starts on June 27th.
https://cardano.ideascale.com/c/idea/122096