Skip to content

Support larger # of UTXO via split-fanout #190

Description

@ch1bo

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    💭 ideaAn idea or feature requestL1Affects the on-chain protocol of HydrasupersededAn item that may get superseded by related feature.

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions