funded
HLabs: typescript cardano-node / network layer - *runtime independent* server and client implementations of the ouroboros miniprotocols
Current Project Status
in_progress
Amount
Received
₳16,000
Amount
Requested
₳200,000
Percentage
Received
8.00%
Solution

The goal is to have a module reusable on any js runtime for node-to-node and node-to-client direct comunications, ultimately allowing for Cardano light clients in future.

Problem

The network layer is one of the component necessary to an alternative client; with the goal of light, in-browser, nodes in mind, Cardano is missing any library capable of covering this necessity.

Impact Alignment
Feasibility
Value for money

Équipe

1 member

  • Project Information
  • Community Reviews
  • Team Information
HLabs: typescript cardano-node / network layer - *runtime independent* server and client implementations of the ouroboros miniprotocols
Start date
-
Milestones
-
Next Milestone
-

Please describe your proposed solution.

The final goal of this proposal is to have the necessary networking module that can be re-used for different, purpose-specific, nodes; and (alongside the ledger and consensus proposals) eventually a fully functional alternative implementation of the haskell cardano-node.

The (already exsisting) library DOES NOT depend on any runtime-specific functionality; this will allow the module to be reused in any environment for node-to-node and node-to-client comunications; especially once the ecosystem starts adopting more and more browser friendly functionalities (WebSockets, etc..)

Primary target of the project are both developers and stake pool operator, and through them any possible user that interacts, directly or indirectly with the Cardano protocol.

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

Client diversity is crucial for the long term security of the protcol.

Every user of Cardano is relying, directly or indirectly, on a cardano-node in order to interact with the blockchain (submitting transactions, querying data, etc…)

So far the only aviable implementation is the Haskell one, making the node a potential single point of failure, and often accessed via centralized servers (because there is not really an alternative).

This module, alongside the ledger and consensus ones, will play an important role in the creation of alternative clients and light clients, with the goal of improving the network and end user securtiy.

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?

Michele Nuzzi has been part of the Cardano ecosystem at the beginnign as a single stake pool operator and later as developer. In this time he wrote and still maintains numerous dependecy free typescript libraries that require a low level understanding of the Cardano protocol.

A non-exhaustive list list of some of the projects would be:

  • plu-ts: a typescript framework for the creation of Cardano Smart contracts
  • plutus-machine: typescript library for the evaluation of contracts off-chain
  • cardano-ledger-ts: collection of classes and functions for Cardano specific data types and respective serialization and deserialization in CBOR format.
  • ouroboros-miniprotocols-ts: library for low level interactions with the cardano-node based on the ouroboros mini protocols specificaiton.

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

Uniform the interface of the present clients implementations to match both the EventTarget interface expected by browsers and the EventEmitter NodeJS class.

>Complete all clients for all the mini protocols

>Implement server sides of the node-to-node protocols

>Implement server sides of the node-to-client protocols

>Connection manager implementation

>A complete library for all mini protocols (both client and server)

A connection manager component (to be used by the node who wishes to manage peers)

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

1) Michele Nuzzi

In the event multiple proposals will be approved qualified personale will be hired to guarantee the successful delivery of all of the approved proposals.

The profile required for such postion will be of a Senior Typescript developer with solid understanding of the different Javascript runtimes and relative main APIs (Web Workers, WebSockets, etc. for Browsers and worker_threads, os, fs, etc. for Node as well as other possible runtimes such as Bun.js or Deno)

Please provide a cost breakdown of the proposed work and resources.

At a price of 0.3828 USD per ADA the estimated cost corresponds to roughly 225705,33 ADA, so we round down to 200'000 ADA to meet the challenge requirement.

The expected time to completion of the project is of 6 months considering 1 engineer for 8 hours per day for 30 days per month

60 $/h x 8h/d x 30d/mo x 6mo = 86400 $

that converted to ADA is roughly 225705,33 ADA (rounded down to meet the challenge requirements)

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

The software generated by this proposal will likely run as part of the critical infrastructure that powers Cardano as a protocol.

The skills and knowledge required for the realization of this project are highly specialized hence the value for money should be fair.

Avis des conseillers communautaires (1)

Comments

Monthly Reports

close

Playlist

  • EP2: epoch_length

    Authored by: Darlington Kofa

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

    Authored by: Darlington Kofa

    4 min 3 s
    Darlington Kofa
  • EP3: key_deposit

    Authored by: Darlington Kofa

    3 min 48 s
    Darlington Kofa
  • EP4: epoch_no

    Authored by: Darlington Kofa

    2 min 16 s
    Darlington Kofa
  • EP5: max_block_size

    Authored by: Darlington Kofa

    3 min 14 s
    Darlington Kofa
  • EP6: pool_deposit

    Authored by: Darlington Kofa

    3 min 19 s
    Darlington Kofa
  • EP7: max_tx_size

    Authored by: Darlington Kofa

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