cardano-scaling / hydra

Implementation of the Hydra Head protocol
https://hydra.family/head-protocol/
Apache License 2.0
274 stars 84 forks source link

Create network protocol specification #1080

Open abailly-iohk opened 12 months ago

abailly-iohk commented 12 months ago

Why

Hydra Head is first and foremost a protocol that's specified formally and is not particularly tied to a single language or paradigm, even though currently it's implemented in Haskell and the isomorphism property requires the use of the Cardano ledger which is available only in Haskell. Yet, it's not a far stretch to imagine people would be interested in building Head-compliant nodes in different technologies, either because they are more familiar with them, or to support different features not provided by the existing Haskell eco-system.

What

There already exist a public specification of the client API specified using AsyncAPI schema.

We want to publish a specification for the network protocol so that it should be possible to implement a hydra-node in any language supporting minimal networking capabilities.

How

The specification language is to be defined:

abailly-iohk commented 11 months ago

Idea: Write a small "test" program in a non-Haskell language to interact with hydra-nodes, perhaps just as a "watchdog" style node that does not provide any interface and does not commit anything but participates in the off-chain signing process.