Replies: 3 comments 5 replies
-
Your code examples seem to refer to the off-chain snapshot signing, but then the consequent changes and possible implementations suggest that these would be used for signing on-chain protocol transactions. Are you suggesting to out-source both using the same mechanism? As you also mention in the intro, there are two kinds of signatures required in the system:
I basically concur and believe there are use cases for having options to outsource both:
Even if this is not new info to most readers, I wanted to add that context and maybe we can discuss these use cases / alternatives. Or at least clarify whether we want to distinguish them in the architecture design or not? |
Beta Was this translation helpful? Give feedback.
-
This discussion is somehow related to Client side snapshot signing for which we want to have an issue in our roadmap. The following picture shows the different kind of keys that are used currently in the system named, in the picture:
The picture is about hydraw but we can generalize. We have three configurations:
Today (1), the three keys are all on the same system running both hydra-node and cardano-node. Which means that the hydra-node operator can:
In External Commit (2), someone could commit funds to the head from an external wallet. That is, a wallet owned by none of the hydra-node operators of the head. After that, when the head is open, for this UTxO to be spent inside the head, an honest hydra-node would require this transaction to be signed by the corresponding payment key. If all the hydra-node operators are corrupted and collude, then they can build and sign a snapshot where this UTxO has be spent without having it being signed. So the external commiter have to trust that at least one hydra-node operator is honest. In Client Side Signing (3), the hydra-node operator still own a participant key. That means it can post transactions about the head on layer 1. However, a user, not operating the node, would own the snapshot key and would only accept to sign a snapshot proposed by the hydra-node if it considers it valid. |
Beta Was this translation helpful? Give feedback.
-
Has been promoted to a roadmap item via #635 |
Beta Was this translation helpful? Give feedback.
-
Which entity has access to signing keys defines the security and trust model of a system relying on asymmetric cryptographic primitives like Hydra. The current situation is that the hydra-node executable holds both off-chain (for signing snapshots in the Head) and on-chain (for signing transactions on L1 chain) signing keys, which implies that:
This has several consequences:
I therefore propose the introduction of another component along the lines of ADR-007 and ADR-002 that would be responsible for signing both on-chain and off-chain transactions.
Here is a sketch of the possible interface:
here is how it would be introduced in the
HeadLogic
:Then we would need to:
SignReq
/SignResponse
sequence of messages within theupdate
function for both snapshots andOnChain
transactions,Direct
chain component to not delegate signing to internalTinyWallet
but instead report toCallback
and only post a properly signed tx.This component could be implemented in various ways of which I can think of at least 2:
SignReq
are routed to a client through theServer
API which can then do the signing on its side, retaining full control over keys.Beta Was this translation helpful? Give feedback.
All reactions