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 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):
- LocalTxSubmission
- LocalTxMonitor
- LocalStateQuery
API protocols:
- REST
- WebSockets
- gRPC
This includes the creation of a Go SDK implementation for the UTxO RPC project to provide the gRPC functionality.