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 that perform or dispute 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 signing perform and doing a dispute -> 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 for cardano-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 into book/ and adding it to SUMMARY.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 the nix 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)?