Please describe your proposed solution.
The gOuroboros library provides the building blocks for communicating with a Cardano Node as a client in Golang. Our previously funded proposal from Catalyst Fund 9 led to the development of the client side of the protocol.
This proposal intends to complete the loop and support the NtC and NtN server side. Server side support for the Ouroboros protocol will allow the library to be used to build active participants in the network. The capability to decode the messages into usable transaction types opens up the ability to build software which can perform actions based on certain events being observed on the network, such as blockchain indexers or trading bots.
How does your proposed solution address the challenge and what benefits will this bring to the Cardano ecosystem?
Golang 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 Golang repositories grew 10.423% and Haskell repositories grew only 0.201% (source: https://madnight.github.io/githut/#/pull_requests/2023/1/Go,Haskell) while the number of repository stars on Golang repositories grew 12.107% and Haskell repositories grew only 0.238% (source: <https://madnight.github.io/githut/#/stars/2023/1/Go,Haskell>). The Golang 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 Golang developers and the Cardano blockchain and attract more developers to Cardano.
Creating a Golang library for interacting with Cardano nodes and reading the ledger will allow tapping into a much larger pool of developers than the existing Haskell libraries generally allow. This will also lower the barrier for entry into the Cardano ecosystem.
The gOuroboros library provides low level primitives for Golang to communicate the Cardano on-the-wire language. This is the basic building block for creating both client and server applications in Go.
How do you intend to measure the success of your project?
As our goal is feature completion and open source code, our measure for success will be when the gOuroboros library supports all of the client and server side operations of all NtC (node-to-client) and NtN (node-to-node) mini-protocols and allows for reading basic ledger information and all transaction attributes.
Please describe your plans to share the outputs and results of your project?
The gOuroboros library is open source and developed in public. Each individual piece of work is submitted publicly to the gOuroboros repository and can be viewed by anyone.
Progress is tracked through GitHub Issues and a GitHub Projects Kanban board (https://github.com/orgs/blinklabs-io/projects/8). Our engineering team has weekly meetings on status updates. Discord is used for day to day communication and engaging contributors.
Several of Blink Labs projects use gOuroboros for communication and data processing of Cardano network and ledger primitives. This includes open source projects on GitHub by Blink Labs, such as nview and tx-submit-api, and closed source partner implementations such as Maestro's dApp Platform.