Last updated 4 months ago
Increase interoperability with other ecosystem infrastructure through adopting a community driven communications protocol with a rigid contract for compatibility, shared with TxPipe Dolos.
This is the total amount allocated to Cardano Node API: a Cardano Node companion written in Go. 3 out of 5 milestones are completed.
1/5
Milestone 1 will cover the basics of creating the application and supporting the client side query set.
Cost: ₳ 37,000
Delivery: Month 1 - Apr 2024
2/5
Milestone 2 will cover the creation of the REST API.
Cost: ₳ 37,000
Delivery: Month 2 - May 2024
3/5
Milestone 3 will cover the creation of the gRPC API.
Cost: ₳ 37,000
Delivery: Month 3 - Jun 2024
4/5
Our 4th milestone will cover ecosystem integration.
Cost: ₳ 37,000
Delivery: Month 4 - Jul 2024
5/5
Our final milestone will wrap up the project, including the Project closeout report and video.
Cost: ₳ 37,000
Delivery: Month 5 - Aug 2024
NB: Monthly reporting was deprecated from January 2024 and replaced fully by the Milestones Program framework. Learn more here
Develop a Cardano Node API application in Golang to provide data from a Cardano Node over multiple protocols to expose this data easily for consumption by dApp developers.
No dependencies.
The project is and will continue to be open sourced under the Apache 2.0 license
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 led to several Proof of Concept implementations within gOuroboros and the creation of Cardano Node API.
The Cardano Node only exposes its client (Node to Client) data over a local UNIX socket as a measure of security. However, this can make the data difficult to access and consume, especially from remote clients. This data is necessary for tasks such as building transactions or monitoring traffic in the node’s mempool.
This proposal intends to leverage this prior work and build upon it to create a query layer solution for interfacing with a Cardano node and expose these Ouroboros Node to Client (NtC) queries over multiple HTTP-based protocols. This will allow for consumption in client applications using methods of the developer’s choosing and provide capabilities for varying security scenarios.
Node protocols (Ouroboros NtC):
API protocols:
This includes the creation of a Go SDK implementation for the UTxO RPC project to provide the gRPC functionality.
Golang is an extremely popular programming language. GitHub Language Statistics from GitHut 2.0 (code: https://github.com/madnight/githut ) show that in Q3 2023, the number of pull requests on Golang repositories grew 10.817% and Haskell repositories grew only 0.162% (source: https://madnight.github.io/githut/#/pull_requests/2023/3/Go,Haskell ) while the number of repository stars on Golang repositories grew 12.215% and Haskell repositories grew only 0.203% (source: https://madnight.github.io/githut/#/stars/2023/3/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.
Implementing a multi-protocol HTTP-based API will leverage the breadth of existing web technologies for scaling, building, maintaining, and securing HTTP data flows. Creating an API service in Golang allows us to leverage not only our prior work but also the existing code and libraries in the Golang ecosystem. This reduces the time to completion for this project, allows for engaging a larger developer pool for the project, and lowers the barrier for entry into the Cardano ecosystem.
Utilizing UTxORPC for the gRPC interface will ensure interoperability with other Cardano ecosystem projects, such as TxPipe’s Dolos, increasing diversity in the ecosystem while preventing fragmentation due to various implementations.
Blink Labs has decades of experience delivering open source software. We have a proven track record of delivery and have successfully completed two previous Catalyst Fund 9 proposals. Our work is open source and public for all to view. Our team is highly cohesive and have worked together for years, allowing us to provide accurate time and cost estimates to our work. The cardano-node-api project is in its infancy and could benefit from dedicated resources. Funding allows us to dedicate engineering time to an open source project, rapidly accelerating its development towards a complete solution.
Our goal is for cardano-node-api to become an integral part of a Cardano development stack for Golang developers upon which a Golang ecosystem on Cardano can thrive. To accomplish this goal, we will build the cardano-node-api application functionality to support a diverse capability set, allowing for creation of an entire ecosystem of downstream projects.
We have broken this into 4 deliverable milestones to reach this goal.
Blink Labs will create GitHub issues for the individual items of work and will track those items using a project Kanban board on GitHub.
Milestone 1 will cover the basics of creating the application and supporting the client side query set. This will include:
Milestone 2 will cover the creation of the REST API. This will include:
Milestone 3 will cover the creation of the gRPC API. This will include:
Our 4th and final milestone will cover ecosystem integration. This will include:
The project development will be completed by the Blink Labs engineering team. Our team includes Principal / Staff Engineers, with more than 40 years combined experience. This project will be primarily assigned to Chris Gianelloni (https://github.com/wolf31o2 ) for development completion, with Aurora Gaffney (https://github.com/agaffney ) providing code review, documentation, and support.
Blink Labs has previously completed two Catalyst Fund 9 proposals:
Ouroboros network (NtC) in Golang (dependency to this proposal)
Cardano Submit API in Golang
Additional Blink Labs staff may be used for administrative functions, such as project management and community reporting.
Funding will primarily pay for engineering time. There is also a small piece set aside for paying administrative staff for project management.
The project budget is 46250 ADA per month to pay for Engineering (40000) and Project Management (6250). Each milestone corresponds to approximately one month, and time is allocated to take approximately 75 percent of a full time software engineer or 120 hours and approximately 10 hours of project management.
No additional funding is necessary for third party products or services.
Costs are estimated on a 333.33 ADA per hour rate for a senior golang blockchain software engineer working remotely within the United States (~ $192k USD annually) and 150 ADA per hour rate for a project manager working remotely (~ $86k USD annually)