Logbook that contains thinking, discussions, pains, joys, events, and experiences that happen while working on this project. It is supposed to be a kind of Stream of consciousness that can later be searched, linked to or reviewed. It may also be used as a very informal decision log.
2025-04-04
By @ch1bo and @SwiftlyUnmoving
- Discussing our take-aways from the paper
- Glances over the fact that script spending does not generalize easily
- Collateralization and fee structure is handwavy and could be problematic
- How to make NFTs minting policy compatible with L2s
- Case on script context and have values for Hydra, Hydrozoa, Midgard, …?
- Equivalent of a spending validator agreeing to be committed into L2
- But we would need to delegate trust to Hydra, Midgard etc. when minting happens later on L1
- On L1 we can identify that we are minting in e.g. a Hydra fanout and can green-light this if the validator set is enough
- Interfacing spending validators with L2s (on committing) is equivalent to using them for atomic transactions across L2
- Atomic transactions across L2s is kind of equal to establishing an L3 (and that same interfacing problem when going L2 -> L3)
- Spending and minting needs to be compatible with the cross ledger protocol (i.e. the wrap-perform transaction)
- Collaterizing NFTs is an issue for any cross-ledger protocol!
- While in the L2 case, there may be a chance to avoid duplication as we share the same L1 and a dispute protocol can exist
- However that would still mean that one party will only be refundend the collateral instead of the NFT
- Also: What’s sufficient collateral for one NFT, who decides?
- Too high collateral limits liquidity / reach of such an NFT (each intermediary set would need to be liquid enough)
- Even harder to estimate for state thread tokens (which ensure contract continuity)
- Consolidation of smart contract state is going to be hard.
- How does the ad-hoc ledger concept scale?
- For example in doing multiple hops and routing
- In principle, collateral should be sharable across inermediaries (per hop)
- We should model this to see wheather the whole feasible the concept is
- Timing within payment channel networks is adding up, is this the case here too?
- Difficulty levels of “asset under interop”
- Easiest: one currency value (UTxO = Bitcoin)
- Easy: multiple, fungible assets (UTxO-ma, only FT)
- Medium: non-fungible tokens (UTxO-ma, also NFTs)
- Hardest: fully scriptable spending and minting (EUTxO)
- Liquidity across the path
- Lightning already has the complexity of direction in liquidity
- In a full UTxO ledger, it is even more difficult as the assets might not be owned by the validator
- Need to know how much collateral is available for route finding
- Do we even benefit from UTxO ledger model over an account model?
- Maybe not?
- Would simplify collateral allocation
- Indidividual state channel interactions might benefit from it, but for bridging / routing funds across ledgers not so much?
- One account for each interop protocol intermediary (= collateral available = liquidity available)
- What if liveness of L2 breaks down?
- Wrapped UTxOs must be recoverable or performable on L1
- We should “front load” as much work as possible in the wrapping (aka
verify
) transaction so thatperform
ordispute
can always fit on L1 even
- We also mentioned in passing that the only way we could do full script verification (with simulated script context) for
verify
would be by side-stepping the L2 ledger and build support into Hydra/Midgard - Also: is there a timeout before a
dispute
can be made? Otherwise we would race between signingperform
and doing adispute
-> or is this not an issue?
2025-04-01
By @ch1bo
- Want to establish a logbook to put notes for this project
- Rendering into the
mdbook
like I started doing forcardano-blueprint
seems useful too - Hower, using the Github wiki as a logbook is producing less noisy commits on the main repository
- The github wiki is also a repository we can add as a submodule, i.e.
git submodule add wiki git@github.com:cardano-scaling/eutxo-l2-interop.wiki.git
- Then, symlinking the the
logbook.md
intobook/
and adding it toSUMMARY.md
does the trick - Now, only
nix
is choking on submodules (as always) - Found the idea of tracking the submodule as a flake input online in this thread https://discourse.nixos.org/t/get-nix-flake-to-include-git-submodule/30324/16
- Now, we track the submodule commit also in the
flake.lock
, but at least thenix build
works as-is.
2025-03-25
By @ch1bo
- Re-read the research paper and started a summary in the technical report
- Approach is quite “ad-hoc” indeed and borrows on generalization of HTLCs being similar “two-step commit schemes”
- Relevant other paper SoK: Communication Across Distributed Ledgers which focuses on cross chain communication, but establishes as generic model: “A generic CCC protocol consists of three main phases: commit (on X), verify (and commit on Y ), and an optional abort”
- Could improve some terminology around “utxo addresses” which seem to be rather “output references”
- Wrap + perform is basically a two stage commit similar to the above
- Script continuity of verify-perform? What if L2 closes? Need intermediaries ensure continuity somehow “on top” of running the L2 ledger?
- UTxO and UTxOma should be “embeddable” into EUTxO protocol for ad-hoc ledgers - as they do not require general scriptability
- Verifying the transaction on “wrap” sounds like side-stepping the EUTxO ledger? i.e. simulate a script context with outputs as they would on perform
- Mint tokens on wrapping -> why not on perform? to avoid burning in case of dispute
- Setting a dispute flag on the wrapped UTxO would rather be another state of the protocol!?
- What if liveness of L2s break?
- The biggest open questions remain:
- How to collateralize NFTs?
- How to generically wrap script UTxOs without side-stepping EUTxO ledger?
- How to ensure script continuity of wrap + perform steps (without minting tokens ourselves; what if L2 closes)?