Konduit.channel

[A bunch of ideas in 15mins]

What is …

Konduit?

A Cardano to Bitcoin Lighting Pipe

Bitcoin Lightning?

… a payment protocol built on bitcoin intended to enable fast transactions among participating nodes and has been proposed as a solution to the bitcoin scalability problem.

The problem?

  • Scalability
  • Finality
  • Tx fees

The ask

Can we go from Cardano to BLN?

Lightning / BLN

Overview

  • A network of two party channels
  • L1: Each channel is “underwritten” by locked funds
  • L2: exchanging messages alters how and who can claim these funds

Hops

  • 2 channels: Alice <-> Bob; Bob <-> Charlie
  • Alice ~> Charlie ?
  • Alice ~> Bob ~> Charlie.
  • Problem: Naive hops require trust

HTLCs

  • Trustless hops
  • Hashed TimeLocked Contract
  • Parameterized by (timeout, lock, payer, payee)
  • Two spend pathways:
    • Ok: Signed by payee; Before timeout; Has secret
    • Ko: Signed by payer; After timeout
  • Note: hash(secret) == lock

Routes

  • C ~> A : Invoice including lock.
  • A ~> B : HTLC with timeout T and lock
  • B ~> C : HTLC with timeout T - delta and lock
  • C ~> B : Secret
  • B ~> C : Commitment to pay (no htlc)
  • B ~> A : Secret
  • A ~> B : Commitment to pay (no htlc)

Cardano Lightning

Pitch

  • Do Lightning but on Cardano
  • And better

Subbit.xyz

Trustless* subscriptions

  • Alice wants to subscribe to Bob’s service
  • Alice locks funds on the L1; Bob sees
  • Each request Alice includes an “IOU”; Bob verifies and responds
  • At Bob’s leisure, he claims (subs) funds owed

An embarrassingly simple L2

IOU

amount = int
signature = bytestring .size 64 
iou = #6.121( [ amount, signature ] )
tag = bytestring
message = #6.121( [ tag, amount ] ) 

Unidirectionality boons

  • Alice’s safety is not dependent on chain liveness
  • Bob’s sub is unilateral. No contestation.

Overhead?

  • Alice (client) must remember their keys
  • Must be able to produce a signature
  • Maybe some other state (< 100 bytes) or 2 trips.

Konduit

Subbit + HTLCs

Not IOUs, but cheques + squashes

cheque_body = [index, amount, timeout, lock]
cheque = [cheque_body, signature]

excludes = [* index]
squash_body = [amount, index, excludes] 
squash = [squash_body, signature]

Keep the boons

  • Alice still doesn’t need chain liveness
  • Bob unilateral subs now have the evidence:
unlocked = [cheque_body, signature, secret]
receipt = [squash, [*unlocked]] 

Other deets

  • Token free design
  • “Batch” txs are first class
  • “Mutual” txs are first class and invoke no futher verification steps (beyond required_signers)

Demo ?!

Soon™

Ideas