The Heartbeat of Cardano.

CloudStruct Pushes for Support of Golang on Cardano

The timeline and nature of Cardano growth will be determined by the number of users and developers involved in the ecosystem. If you have been around any length of time, you are aware that Haskell is a different type of programming language than many others. This means that if, as a developer, your background is in object oriented programming languages, like Python, Java or Golang, you basically have a lot of starting over to do. It would be like only speaking English your entire life and taking a job where everything is in Spanish. Could you learn it? Of course. Do you want to take the time to start from scratch? Probably not.

The CSCS team has three proposals in Catalyst F9. Two of these are related to building a toolkit for programmers that are fluent in Golang (an open source programming language designed by Google). Simply put, these two proposals will create a foundation for Golang programmers that will introduce them to the Cardano ecosystem and provide tools that will ease their transition. Golang is an active developer community, as demonstrated by their Github activity. One thing that is unilaterally agreed upon is that there is a scarcity of tools for Cardano onboarding. The CSCS team intends to leverage their decades of combined experience to help make Cardano a more welcoming environment to newcomers.

If you prefer to listen rather than read, they also have provided a YouTube segment on these proposals:

The Proposals (Dapps, Products, Integrations Category)

Cardano Submit API in Golang

This project will create a Golang implementation of the Cardano Submit API. An API is short for application program interface. Basically it allows a program to submit a transaction to Cardano without wading through all of the Cardano specific protocols on the front end. Think of it like an information sandwich. The new code is filtered through the API which allows it to work with the platform efficiently. At the same time platform security and protocols remain intact. This proposal will create a version of the API that is compatible with Golang protocols and constructed in a way that is familiar to Golang developers. It will simultaneously provide a better understanding of Cardano protocols and create a design template. 

Ouroboros network (NtC) in Golang

This project will create a library of tools for Golang developers to help ease their assimilation to Cardano and the Ouroboros network protocol. As of today, everything must be built from scratch. The CSCS team’s goal here is to create a library of ready-made constructs that will simplify processes like: querying the tip, submitting a transaction, or syncing the blockchain from a local node. It creates a much easier and faster onboarding process – like using a cake mix instead of baking a cake from scratch. This proposal is limited to the NtC (node to client) protocol. Eventually they hope to expand and encompass the NtN (node to node) protocol as well. 

The Budgets / Implementation Timelines

Cardano Submit API in Golang

The team has created the first portion of this project independently. This means that they have already built phase one to include:

  • The creation of a minimally viable product, which works under test conditions
  • Creation of the framework and communication with cardano-node over NtC
  • Creation of container images (Docker image)
  • Creation of metrics endpoint
  • Creation of debug endpoint
  • Testnet testing

They are requesting funding for phase two which will include:

  • Improved metrics for increased observability and insight
  • Transaction validation before submission
  • Error handling
  • Use libada for Output and Address decoding
  • Documentation on service usage and development
  • Mainnet scalability and reliability testing

They estimate that this phase will require approximately 20 engineering hours to deliver. The budget requested will encompass the work completed in phase one and two. 

Total budget requested: 5000 USD

Ouroboros Network (NtC in Golang)

Milestone 1 was the initial implementation of this library and any work that has been done up to this point. This included:

  • Research into the way that the Ouroboros protocol works
  • Creation of a generic multi-protocol muxer framework
  • Implementation of basic CBOR message parsing for each mini-protocol
  • Support for a generic per-protocol state machine
  • Support for protocol version negotiation via handshake for NtC and NtN protocols

Milestone 2 is the focus of this proposal. This will include:

  • Splitting each mini-protocol into separate initiator (client) and responder (server) objects with their own copies of the state machine
  • Research queries and responses supported by different versions of the LocalStateQuery mini-protocol
  • Implementation of helper functions for initiating queries against the local node state and parsing the responses
  • Refactoring of mini-protocol callback functions to be for information gathering and response sharing rather than for specific messages supported by the mini-protocol. This will also include refactoring the mini-protocol entry points to start a process that will be driven by the mini-protocol itself rather than the library consumer
  • Implementation of unit tests for NtC mini-protocol message encoding/decoding to and from CBOR
  • Improve handling of TX submission refusal reasons to avoid CBOR parsing issues for maps with bytestring keys
  • Expand in-code documentation of various objects and functions for display on pkg.go.dev
  • Creation of standalone examples of each NtC mini-protocol

Total Budget Requested: 30000 USD

The Team

CSCS is a team of three IT professionals. They are experienced developers and are active in the Cardano community in a number of projects. Their Github accounts are linked below for your review.

wolf31o2 (Chris Gianelloni) · GitHub

agaffney (Andrew Gaffney) · GitHub

jwitko (Jason Witkowski) · GitHub

CloudStruct · GitHub

Final Thoughts

There are a number of high quality proposals in this round of Catalyst from established community members. It really makes the choice of what to write about, and vote for, rather difficult. I’m not a developer, but I do understand that high quality devs are required in order for Cardano to reach its full potential. As previously discussed, Haskell is not the most popular programming language and it’s hard to incentivize people who have spent a lifetime in object oriented programming languages to start all over with a limited tool set. These two projects from the CSCS team will help to bridge the gap and offer tools, and an easier transition, to programmers new to functional programming language and the Cardano ecosystem. This is an experienced and well rounded team with the tools and resources to get the job done. 

For more information about the team of the proposals:

CloudStruct Cardano Staking – [CSCS]

Ouroboros network (NtC) in Golang (ideascale.com)

Cardano Submit API in Golang (ideascale.com)

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Posts