Skip to content
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

Support larger # of UTXO via split-fanout #190

Closed
ch1bo opened this issue Jan 30, 2022 · 4 comments
Closed

Support larger # of UTXO via split-fanout #190

ch1bo opened this issue Jan 30, 2022 · 4 comments
Labels
L1 Affects the on-chain protocol of Hydra superseded An item that may get superseded by related feature. 💭 idea An idea or feature request

Comments

@ch1bo
Copy link
Collaborator

ch1bo commented Jan 30, 2022

What & Why

The first naiive, but correct implementation (see #145) of the Hydra Head plutus script validators is limiting to the number of UTXOs supported in a Hydra Head.

This is because we need to make sure all the UTXOs can be distributed back in the single, complete fanout transaction and we are bound by Plutus script execution budgets.

In order to close a head containing a large number of UTXO which do not fit in a single transaction, the fanout step needs to be done in two steps where the UTXO is first split into smaller subsets which will be independently fanned out.

Functional Requirements

  • It is possible to organize the UTXO in a hierarchical manner allowing for deterministic splits of known sizes.
  • It is possible to verify independently, on-chain, that each subset is indeed included in the original set.
  • The proof of inclusion must be small in front of the UTXO subset.

Technical details

The functional requirements can be met by organizing the UTXO into a modified merkle-tree where each leaf is a transaction output and each node also contains the total size (in bytes) of the children.

And recent experiments #161 showed that this is feasible to be used.

@ch1bo ch1bo added 💬 feature A feature on our roadmap green 💚 Low complexity or well understood feature L1 Affects the on-chain protocol of Hydra and removed L1 Affects the on-chain protocol of Hydra labels Jan 30, 2022
@ch1bo ch1bo added amber ⚠️ Medium complexity or partly unclear feature and removed green 💚 Low complexity or well understood feature labels May 3, 2022
@ch1bo
Copy link
Collaborator Author

ch1bo commented May 3, 2022

Changed to 🟡 because we this is quite complex in terms of plutus contracts. We are quite sure we have everything we need, but it's not clear whether it "fits" and the changes are likely also quite involved.

@ch1bo
Copy link
Collaborator Author

ch1bo commented May 31, 2022

Having #370 makes this not pressing as we will not have unclosable Heads. Also, we have ideas in how to improve fanout performance (not decoding TxOut in the script context). Let's revisit this if it is brought up by users.

@ch1bo
Copy link
Collaborator Author

ch1bo commented Feb 3, 2023

Unfortunately we have identified a theoretical case which could require this. #370 would only come into effect after opening the head. But it's possible that a collect transaction can open a head which would not fit into a fanout.

@ch1bo ch1bo added 💭 idea An idea or feature request and removed 💬 feature A feature on our roadmap amber ⚠️ Medium complexity or partly unclear feature labels Feb 3, 2023
@ch1bo ch1bo added the L1 Affects the on-chain protocol of Hydra label Jun 20, 2023
@ch1bo ch1bo mentioned this issue Nov 16, 2023
16 tasks
@ch1bo ch1bo mentioned this issue Jun 10, 2024
4 tasks
@ch1bo
Copy link
Collaborator Author

ch1bo commented Jul 23, 2024

Instead of "only" organizing UTxO in a "hierarchical manner allowing for deterministic splits of known sizes", we aim of full flexibility of what to realize on the L1 with #1468.

In case that approach is too expensive or otherwise unrealistic, we might want to revisit this item.

@ch1bo ch1bo closed this as not planned Won't fix, can't repro, duplicate, stale Jul 23, 2024
@ch1bo ch1bo added superseded An item that may get superseded by related feature. and removed feedback needed labels Jul 23, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
L1 Affects the on-chain protocol of Hydra superseded An item that may get superseded by related feature. 💭 idea An idea or feature request
Projects
Archived in project
Development

No branches or pull requests

1 participant