funded
Do you want a Go Cardano node? Because this is how you get a Go Cardano node!
Current Project Status
In Progress
Amount
Received
₳46,688
Amount
Requested
₳291,800
Percentage
Received
16.00%
Solution

We will develop an open source Cardano node capable of serving blockchain data, building on our prior funded project Catalyst work and other work independently developed by Blink Labs.

Problem

Increase node diversity in Cardano by creating a data node written in Go.

Impact Alignment
Feasibility
Value for Money

Blink Labs

3 members

Do you want a Go Cardano node? Because this is how you get a Go Cardano node!

Please describe your proposed solution

This proposal intends to create a data serving capable (non-validating or block producing) Cardano node written in Go. It will utilize our past funded project Catalyst proposals from Fund 9 and Fund 11 to produce a node capable of serving as a foundation for a dApp off-chain software stack using both Ouroboros and UTxO RPC protocols.

Please define the positive impact your project will have on the wider Cardano community

Golang is an extremely popular programming language. GitHub Language Statistics from GitHut 2.0 (code: <https://github.com/madnight/githut> ) show that in Q1 2024, the number of pull requests on Golang repositories grew 10.262% and Haskell repositories grew only 0.132% (source: https://madnight.github.io/githut/#/pull_requests/2024/1/Go,Haskell ) while the number of repository stars on Golang repositories grew 12.275% and Haskell repositories grew only 0.236% (source: <https://madnight.github.io/githut/#/stars/2024/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 node for interacting with the Cardano blockchain and serving blockchain data will allow tapping into a much larger pool of developers than the existing Haskell node and libraries generally allow. This will also lower the barrier for entry into the Cardano ecosystem. Increasing node diversity in the ecosystem helps prevent a single security issue or bug from taking down the entire network at once.

What is your capability to deliver your project with high levels of trust and accountability? How do you intend to validate if your approach is feasible?

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. We have two open funded proposals from Fund 11 and have met every milestone; we are on target to complete them before Fund 12 onboards. 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.

Creating a Cardano node is a monumental task which requires dedicated resources. Funding allows us to dedicate engineering time to an open source project, rapidly accelerating its development.

Our goal is for the Go Cardano node 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 Go Cardano node to support a diverse capability set, allowing for creation of an entire ecosystem of downstream projects.

We have broken this into 4 technical deliverable milestones to reach this goal.

  • Blockchain storage
  • Ouroboros node-to-node support
  • Ouroboros node-to-client support
  • Transaction submission gateway

Blink Labs will create GitHub issues for the individual items of work and will track those items using a project board on GitHub. GitHub project milestones will correlate with proposal milestones.

What are the key milestones you need to achieve in order to complete your project successfully?

Milestone 1: Milestone 1 will deliver blockchain storage for our Go Node. This will include storage for:

  • blocks
  • UTxO's
  • pool &amp; stake registration/de-registration
  • parameter changes

Milestone 2: Milestone 2 will deliver Ouroboros node-to-node support.

  • ChainSync
  • TxSubmission
  • Peersharing
  • BlockFetch
  • Connection Manager integration

Milestone 3: Milestone 3 will deliver Ouroboros node-to-client support. This will include support for:

  • LocalTxSubmission
  • LocalTxMonitor
  • LocalStateQuery
  • ChainSync
  • UTxO RPC API

Milestone 4: Milestone 4 will provide support for transaction submission gateway.

  • LocalTxSubmission
  • Validation against stored data
  • TxSubmission
  • Demo constructing and sending a Tx using our node

Final Milestone: Our 5th and final milestone will wrap up the project, including the Project closeout report and video. The project closeout report will include a comprehensive summary of project objectives and evidence of goals achieved. The project closeout video will provide a visual overview of the projects journey, start to finish, highlight key achievements, and showcase the net products: a Go Node with developer documentation.

Who is in the project team and what are their roles?

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 Aurora Gaffney (<https://github.com/agaffney> ) for development completion, with Chris Gianelloni (<https://github.com/wolf31o2> ) and Ales Verbic (<https://github.com/verbotenj>) providing code review, documentation, and support.

Blink Labs has previously completed two Catalyst Fund 9 proposals:

  • Ouroboros network (NtC) in Golang
  • Cardano Submit API in Golang

Blink Labs has two Catalyst Fund 11 proposals underway, meeting each scheduled milestone and on target to complete both before Fund 12 on-boards.

Additional Blink Labs staff may be used for administrative functions, such as project management and community reporting.

Please provide a cost breakdown of the proposed work and resources

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 72,950 ADA per month to pay for Engineering (72000) and Project Management (950). Each milestone corresponds to a 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.

not applicable

How does the cost of the project represent value for money for the Cardano ecosystem?

Costs are estimated on a 215 ADA per hour rate for a senior golang blockchain software engineer and 170 ADA per hour rate for a golang blockchain software engineer working remotely within the United States (~ $196k USD annually and $156k USD annually, respectively) and 95 ADA per hour rate for a project manager working remotely ( $86k USD annually)

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

    3m 24s
    Darlington Kofa
  • EP1: 'd' parameter

    Authored by: Darlington Kofa

    4m 3s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3m 48s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2m 16s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3m 14s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3m 19s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

    4m 59s
    Darlington Kofa
0:00
/
~0:00