off-chain · layer-2: payment channels • bitcoin - constrained smart contracts payment channels...

39
ETH Zurich – Distributed Computing – www.disco.ethz.ch Off-chain Tejaswi Nadahalli ETH Zurich – Distributed Computing Group – www.disco.ethz.ch

Upload: others

Post on 06-Jun-2020

2 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

ETH Zurich – Distributed Computing – www.disco.ethz.ch

Off-chain

Tejaswi NadahalliETH Zurich – Distributed Computing Group – www.disco.ethz.ch

Page 2: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Layer-1 Blockchains have low throughput

Bitcoin ~ 7 tps Ethereum ~ 15 tps

Page 3: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Off-chain

Hubs Channels

Layer 2Layer 1.5 Layer 2

ZK Rollups

Optimistic Rollups

Nocust Plasma

Lightning Network

State Channels

Page 4: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Layer-2: Payment channels

• Bitcoin - constrained smart contracts

Payment Channels (and Networks)

• Duplex Micropayment Channels (ETH contribution)

• Lightning Channels

• Eltoo Channels (ETH alumni)

Page 5: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lighting Network

~3000 nodes, ~30000 channels, ~843 BTC

Page 6: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lighting Network in Production

• BOLT - a specification for the Lightning Network

(https://github.com/lightningnetwork/lightning-rfc)

• Implementations

– LND (golang)

– C-Lightning (C)

– Eclair (Scala)

Page 7: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Bitcoin Primitives

• UTXO - Unspent Transaction Output

• Cryptographic Hash Function

• Timelocks Hashed Timelocked Contracts

Page 8: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Alice ⇒ Carol

• Alice open a channel to any other node, say Bob.

• Carol gives Alice an invoice

• Alice pays Carol through Bob and the Network

stick figures: XKCD

Page 9: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Chained Payments

H(s) (hash of a secret)

H(s)

HTLC

HTLC

H(s)

H(s)

s

s

stick figures: XKCD

Page 10: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channels

Page 11: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channels

Bitcoin Transactions - 010000000111744…..b0488ac00000000

• Opening/Funding Transaction

• Commitment Transaction(s)

• Bilateral Closure

• Delivery

• Revocable Delivery

• Breach Remedy

Page 12: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channels (the good)

• (Once) Opening/Funding Transaction ($$$$)

• (Many) Commitment Transaction(s) ($)

• (Once) Bilateral Closure ($$$$)

• Delivery

• Revocable Delivery

• Breach Remedy

Page 13: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channels (the bad)

• (Once) Opening/Funding Transaction ($$$$)

• (Many) Commitment Transaction(s) + Unilateral Closure

($) ($$$$)

• Bilateral Closure

• (Once) Delivery ($$$$)

• (Once) Revocable Delivery ($$$$)

• Breach Remedy

Page 14: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channels (the ugly)

• (Once) Opening/Funding Transaction

• (Many) Commitment Transaction(s) + Cheating transaction

($) ($$$$)

• Bilateral Closure

• (Once) Delivery ($$$$)

• Revocable Delivery

• (Once) Breach Remedy ($$$$)

Page 15: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channel

UTXO_a UTXO_b

UTXO_a

(a+t)OR

(b+sb)

UTXO_b

(b+t)OR

(a+sa)

UTXO_ab

topen

ctx_a ctx_b

UTXO_a

topen

UTXO_ab

ctx_a

(a+t)OR

(b+sb)

UTXO controlled by Alice

Opening Transaction

UTXO controlled by Alice and Bob

Commitment Transaction broadcastable by Alice

UTXO controlled by Alice and a timelock OR Bob with a secretA

lice

Bob

Page 16: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channel

UTXO_a UTXO_b

UTXO_a

(a+t)OR

(b+sb)

UTXO_b

(b+t)OR

(a+sa)

UTXO_ab

topen

ctx_a ctx_b

Bilateral Closure

UTXO_ab

closure

UTXO_a UTXO_b

Page 17: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channel

UTXO_a UTXO_b

UTXO_a

(a+t)OR

(b+sb)

UTXO_b

(b+t)OR

(a+sa)

UTXO_ab

topen

ctx_a ctx_b

Unilateral Closure

UTXO_ab

ctx_acurrent

(a+t)OR

(b+sb)

UTXO_b

UTXO_a

sweep_a

after time “t”

Page 18: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channel

UTXO_a UTXO_b

UTXO_a

(a+t)OR

(b+sb)

UTXO_b

(b+t)OR

(a+sa)

UTXO_ab

topen

ctx_a ctx_b

Cheating Closure

UTXO_ab

ctx_aprevious

(a+t)OR

(b+sb)

UTXO_b

UTXO_a

sweep_a

after time “t”

Page 19: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Lightning Channel

UTXO_a UTXO_b

UTXO_a

(a+t)OR

(b+sb)

UTXO_b

(b+t)OR

(a+sa)

UTXO_ab

topen

ctx_a ctx_b

Justice Transaction

UTXO_ab

ctx_aprevious

(a+t)OR

(b+sb)

UTXO_b

UTXO_b

sb + sweep_b

Page 20: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Code# To remote node with revocation key

OP_DUP OP_HASH160 <RIPEMD160(SHA256(revocationpubkey))> OP_EQUAL

OP_IF

OP_CHECKSIG

OP_ELSE

<remote_htlcpubkey> OP_SWAP OP_SIZE 32 OP_EQUAL

OP_NOTIF

# To local node via HTLC-timeout transaction (timelocked).

OP_DROP 2 OP_SWAP <local_htlcpubkey> 2 OP_CHECKMULTISIG

OP_ELSE

# To remote node with secret.

OP_HASH160 <RIPEMD160(payment_hash)> OP_EQUALVERIFY

OP_CHECKSIG

OP_ENDIF

OP_ENDIF

Page 21: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Offline… Watchtower

Page 22: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Open

stick figures: XKCD

Close

Watchtower

Page 23: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Justice Kit

b’s mirror

(a+t)OR

(b+sb)

UTXO_b

sb+ sweep_b

eJTX (🔒🔒🔒🔒🔒🔒🔒🔒🔒)

AES-128ctx_a_TXID_suffix

ctx_a_TXID_prefix

ctx_aprevious

Page 24: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Watchtower

e3b0c44298... 🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒

6e340b9cff... 🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒

96a296d224... 🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒

709e80c884... 🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒

df3f619804... 🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒

8855508aad... 🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒🔒

... ...

... ...

... ...

Page 25: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

How much does it cost?

(Size of Encrypted Blob + Size of Key)(350 + 32)

XNumber of Updates

(1M)

XNumber of Channels

(30000)

=

11 TB(always online server, watching the blockchain)

Page 26: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Cheater has to store cheating CTX(s)

Every CTX has a corresponding JTX

CTX has to be published on the blockchain

Store the corresponding JTX inside this CTX?

Observations

Page 27: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Can we store JTX inside CTX?

UTXO_ab

ctx_aprevious

(a+t)OR

(b+sb)

UTXO_b

UTXO_b

sb + sweep_b b

(a+t)OR

(b+sb)

UTXO_b

sb+ sweep_b

OP_RETURN

Page 28: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

UTXO_ab

ctx_aprevious

(a+t)OR

(b+sb)

UTXO_b

b

(a+t)OR

(b+sb)

UTXO_b

sb+ sweep_b

OP_RETURN

double - SHA256

TXID

TXID

Page 29: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

TXID makes it self-referential

UTXO_ab

ctx_aprevious

(a+t)OR

(b+sb)

UTXO_b

b

(a+t)OR

(b+sb)

UTXO_b

sb+ sweep_b

OP_RETURN

double - SHA256

TXID

Page 30: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Outpost

Page 31: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Outpost

UTXO_a UTXO_b

UTXO_ab(balance)

UTXO_b

UTXO_ab

topen

ctx1_a

UTXO_ab (ε)

b’s mirror

Page 32: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Outpost

UTXO_a UTXO_b

UTXO_ab(balance_a)

UTXO_b

UTXO_ab

topen

ctx1_a

UTXO_ab (ε)

b’s mirror

Justice Transaction

UTXO_ab(balance_a)

UTXO_b

jtx_b

Page 33: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Outpost

UTXO_a UTXO_b

UTXO_ab(balance_a)

UTXO_b

UTXO_ab

topen

ctx1_a

UTXO_ab (ε)

b’s mirror

Encrypted Justice Transaction

b’s mirror

UTXO_ab(balance_a)

UTXO_b

jtx_b

eJTX

AES-128

Page 34: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Outpost

UTXO_a UTXO_b

UTXO_ab(balance_a)

UTXO_b

UTXO_ab

topen

ctx1_a

UTXO_ab (ε)

b’s mirror

Auxiliary Transaction

UTXO_ab(ε)

aux_ctx_a

UTXO_ab(ε)

OP_RETURNeJTX

eJTX

Page 35: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Outpost

UTXO_a UTXO_b

UTXO_ab(balance_a)

UTXO_b

UTXO_ab

topen

ctx1_a

UTXO_ab (ε)

b’s mirror

Commitment Transaction-2

UTXO_ab(balance_a)

ctx2_a

UTXO_a

UTXO_ab(ε)

aux_ctx_a

UTXO_ab(ε)

OP_RETURNeJTX

UTXO(ε) after time “t”

Page 36: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

The money slide

Per channel, with N updates 30k channels, 1M updates

Known Channel N·size(ejtx) + 1·size(txid) 10.00 TB

Unknown Channel N·size(ejtx) + N·size(txid)) 11.45 TB

Classic Lightning

Known Channel size(key) + size(txid) 1.44 MB (WTF)

Unknown Channel N·size(key) + N·size(txid) 1.44 TB

Outpost

Note: size(key) << size(ejtx) i.e. 16 << 350

Page 37: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Outpost keeps Lightning’s key features

● Unilateral closure: broadcaster has to wait

○ Not cheating

○ Cheating

● Exchange revocation keys vs. AES-128 decryption keys

Page 38: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Limitations

● OP_RETURN limited to 80 bytes.

○ IsStandard ಠ_ಠ○ Split aux_ctx into 2; P2SH Data-hash across them

● Bloat

○ Not on the blockchain (happy case)

○ On the blockchain, 3 txns vs 1 txn

● But

○ No changes to Bitcoin, whatsoever.

Page 39: Off-chain · Layer-2: Payment channels • Bitcoin - constrained smart contracts Payment Channels (and Networks) • Duplex Micropayment Channels (ETH contribution) • Lightning

Off-chain

Hubs Channels

Layer 2Layer 1.5 Layer 2

ZK Rollups (2000)

Optimistic Rollups (500)

Nocust(network limit)

Plasma (Network limit) Lightning

Network(network limit)

State Channels(network limit)