Project Catalyst: Fund 10 Proposals
Blink Labs is participating in Cardano’s Project Catalyst Fund 10 with our own proposals to further build the Go language ecosystem.
Project Catalyst
At Blink Labs, we believe in the power of open source software to build the future of technology. We were brought to the Cardano blockchain by its open source roots and the community. One part of that community is Project Catalyst, a decentralized funding system where ADA holders (the Cardano blockchain’s native coin) can vote to fund proposals brought forth by the community. Bootstrapping funding for open source projects can be difficult. Creating proposals for Project Catalyst allows us to fund open source work, directly.
During Project Catalyst Fund 9, our team (previously named CloudStruct) entered two proposals which were accepted and funded by the community. This funding helped us to build a fundamental building block for writing Cardano client applications in the Go programming language, opening up a future of diverse applications in the ecosystem written in Go.
Why Go?
Go was created at Google in 2007 to solve a need, to build products and services at massive scale. Go was designed in the modern era of machines with multiple cores processing enormous workloads. It was written with network concurrency as a primary concern. Go developed applications power systems at Google from their core Google Search to Firebase Hosting and the Site Reliability Engineering critical services.
Go provides a highly concurrent, network optimized programming language which balances performance and readability. The language is well supported with a powerful standard library. It’s the language that the Kubernetes container orchestration system, also a Google sponsored open source project, is written. Applications written in Go are compiled into binaries, which are easy to distribute, and Go supports cross-compiling (building on one machine for another) to many platforms, from Windows and Linux to MacOS and FreeBSD, out of the box. This makes it highly portable when writing pure Go applications.
The Blinks Labs team has a background in open source, container orchestration, and large distributed systems, so we have extensive experience with Kubernetes at scale in production. This experience exposed us to programming in Go, which quickly grew to be our favorite language for developing applications.
Go is an extremely popular programming language. GitHub Language Statistics from GitHut 2.0 (code: https://github.com/madnight/githut) show that in Q1 2023, the number of pull requests on Go repositories grew 10.423% while the number of repository stars on Go repositories grew 12.107% year over year. During the same time period, the Haskell programming language, which is used for the reference implementations of several key pieces of Cardano software, measured only a 0.201% growth in the number of pull requests and 0.238% growth in the number of repository stars. The Go developer community is over 4x the size of the Haskell developer community, based on the number of Github repos with code for each. Since it’s hard to judge community size, we’re using these numbers as a proxy. We hope to bridge the gap between Go developers and the Cardano blockchain and attract more developers to Cardano.
Sources: Pull Requests and Repository Stars
Proposal 1: gOuroboros
Ouroboros is the name for the suite of various protocols which make up the Cardano blockchain. The Ouroboros network protocol consists of several mini-protocols, each specialized for specific communication tasks, broken down into messages. Communication to and from a Cardano Node speaks this protocol.
The gOuroboros library began life as go-ouroboros-network and support for the client side of the library, allowing someone to create client applications in Go which speak the Ouroboros protocol to communicate with a Cardano Node, was partially funded via a proposal in Project Catalyst Fund 9. The proposed work was completed and the gOuroboros library today is used within several other projects, both open source and commercial. Most Blink Labs projects include gOuroboros for communicating with a Cardano Node or simply processing Cardano data structures.
We’re ready to take the next step and implement support for the server side of the library, allowing for server applications to be written in Go which can directly serve clients data using the Ouroboros protocol. Our Project Catalyst Fund 10 proposal is to fund this important open source development and completing the circle of Ouroboros on Go. Developers will have access to the entire suite of Ouroboros mini-protocols from their Go applications.
Proposal 2: Cardano Node API
A Cardano Node provides the ability to query data from its local ledger and the blockchain. Normally, this information is only available to clients on the same computer as the Cardano Node while exposing a small (and slightly different) subset to remote computers. A secondary application is needed to act as a Cardano Node client to expose this additional information and make it accessible remotely via an API (application programming interface.)
UTxORPC is a collaborative project to define a specification, or standard, for interacting with UTxO blockchains using gRPC, a standard web protocol for describing and communicating defined procedures. This specification promotes collaboration among developers. A Rust SDK has been created by the project’s creator, but no Go SDK exists. Blink Labs will create and maintain the Go SDK and participate in the UTxORPC project’s Technical Steering Committee to do our part to further the ecosystem.
Our second proposal is for the creation of a Cardano Node API which works in conjunction with a local Cardano Node, or other data sources in the future, to provide a rich set of APIs for downstream application developers to consume. This API runs as a secondary application and connects to the Cardano Node to fetch data, providing access using HTTP protocols and additional data structure types. It can be thought of as an extension of the Cardano Node which will support multiple protocols. The Cardano Node API uses gOuroboros functionality which was completed in Project Catalyst Fund 9 and will serve as a reference implementation of the Ouroboros NtC mini-protocols using Go.
You may ask yourself, “isn’t this redundant with TxPipe’s Dolos data node?” Yes and no. By standardizing on the UTxORPC spec, clients can use gRPC to communicate with either a Dolos node or a Cardano Node API service connected to a Cardano Node. Cardano Node API would be used to enhance infrastructure which already contains a Cardano Node, rather than seeking to replace it. Each fills a different need, but provide the same interface to developers. This level of interoperability allows developers to choose the stack that best fits their needs without requiring them to create their own abstractions for each choice of services. This decreases their time to market and lowers their costs of entry.
Open Source and Open Standards
Blink Labs embraces a shared ecosystem where standards and source code are open for collaboration. Focusing on cooperating on standards allows for plug and play interoperability between various components within an application stack for Cardano. We believe that this allows application developers to focus their energy on delivering their core business competencies, leading to a higher probability of success.
All code produced which is funded by Project Catalyst is open source. We believe this is how the community grows. Support us and support open source development.
Proposal links:
- gOuroboros: Cardano Ouroboros protocol server support in Golang
- Cardano Node API: a multiple protocol query interface
Thank you.