-
Notifications
You must be signed in to change notification settings - Fork 87
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Specify deposit workflow in ticket and technical specification #1571
Specify deposit workflow in ticket and technical specification #1571
Comments
Also explored how we could use PlutusV3 (CIP-69) multi-purpose scripts: An analogous design to the initialization phase (PlutusV2) would be that the deposit is controlled by two validators:
Besides other things, μ_deposit needs to ensure that the minted token is paid to the ν_deposit script. Hence, it's parameterized by the script hash H(ν_deposit). With PlutusV3, we could re-use the same script without losing anything here. All transactions that involve spending from the deposit output would need to burn the DT anyways and need the script included. However, if we want to re-use the script, the output address of the deposit (purple in the image), would be parameterized too. So it's not a fixed address to "discover" and observe deposits: But, do we need uniqueness of deposit tokens? Maybe it's enough to have it as evidence that the minting policy ran. Which would lead to this design: |
Updated the #199 feature How section with this protocol design: Idea: Deposit anything to commit into a Outline of one deposit being claimed in an increment and one deposit being cancelled: flowchart LR
seed([seed])--> initTx
initTx --> open0([open v0 η0])
u1([u1]) --> depositTx1 --> deposit1(["deposit DL [u1]"])
u2([u2]) --> depositTx2 --> deposit2(["deposit DL [u2]"])
open0 -- Increment ξ3 --> incrementTx
deposit1 -- Claim --> incrementTx
incrementTx --> open1([open v1 η3])
open1 -- Close ξ1 --> closeTx
deposit2 -- Cancel --> cancelTx --> u3([u2])
Protocol transitions:
|
Also updated #199 What with these requirements to represent better the new workflow (no L2 protocol interaction on deposit/cancel and the node just picking up pending commits): WhatImplement the protocol extension for more committing additional UTXOs into a Head as already briefly described in the original Hydra Head paper. "As user, I want to add more funds to the head, such that I can spend them later in the head"
|
Changed the naming of a Also, we realized that we do not need unique deposit tokens (if we need them at all), so we can simplify the minting policy to be non-parameterized. Updated transaction trace with both changes: |
Further simplification of the protocol by asking more from the scripts which are committed into a head: #199 (comment) Resulting in the transaction trace: Why?
|
Drafted a quick example diagram of a script (a lottery) that is spent into a deposit: It would need to check that its own
|
Why
While working on #199 we realized that if we want to properly secure Hydra Heads against rollbacks of incrementally committed funds, having full sequencing requirements + potentially long lockup times is going to be really bad. In presence of rollbacks/pessimistic settings, this is creating a Head that is not "very live" as it would need to be forced to close in case a requested to commit UTxO is spent otherwise before the incrementTx hits the chain.
More details here: #199 (comment)
What
We want to revisit the deposit workflow again which should not have these issues.
This issue will be about collecting the necessary design pieces before we head into implementation.
The text was updated successfully, but these errors were encountered: