Scaling di Protocolli di Secondo Livello

Alekos Filini - @afilini

Why you don't need a Blockchain

  • Una Blockchain non è naturalmente immutabile
  • Una Blockchain non è naturalmente permissionless
  • Una Blockchain non è naturalmente open-source
  • Una Blockchain non è naturalmente stabile
  • Una Blockchain non è naturalmente sicura

Who can add blocks?

  • Una blockchain permissionless è difficile da mantenere immutabile
    • Si deve creare un sistema di incentivi che attiri e trattenga miners
  • D'altro canto una blockchain non permissionless non ha senso di esistere: è semplicemente un database pubblico!

Why you (might) need Bitcoin

  • Bitcoin è immutabile
  • Bitcoin è permissionless
  • Bitcoin è open source
  • Bitcoin è stabile
  • Bitcoin è sicuro

Storing data on the Blockchain

  • Bitcoin è progettato per registrare transazioni
    • Qualunque dato arbitrario deve essere contenuto in una transazione
    • Ci sono diversi campi utilizzabili
    • Alcuni più efficaci di altri

Anatomy of a Transaction

Alice → Bob    1 BTC

Inputs

Outputs

Output Ref Amount ScriptPubKey ScriptSig
3f0cd56e0:1
0.1432 Alice_1 dd9f10bcd8f3a
006cd7513:2 0.5600 Alice_2 3ccf93878edda
ccf93878e:1 0.4129 Alice_3 865d62619ce8
Amount ScriptPubKey - AKA "Indirizzo"
1.0000 Bob_1
0.1120 Alice_4

Fee implicita di 0.0041

Fake Public Keys

  • Utilizzo di dati arbitrari come public keys
    • Non saranno mai spendibili
  • Gli output non possono essere rimossi dall'UTXO set
  • Esattamente identici a qualunque output spendibile

Inputs

Outputs

Output Ref Amount ScriptPubKey ScriptSig
3f0cd56e0:1
0.1432 Alice_1 2672ce10a63a
Amount ScriptPubKey
0.1391 Alice_2
0.0010 033833c926e5accdcc5898

Fee implicita di 0.0031

OP_RETURN

  • Opcode che termina l'esecuzione dello script
    • Può essere seguito da 83 byte di dati arbitrari
    • Solitamente hash o merkle root di un set
  • "Provably Unspendable"
    • I full node Bitcoin possono rimuoverlo dall'UTXO set

Inputs

Outputs

Output Ref Amount ScriptPubKey ScriptSig
3f0cd56e0:1
0.1432 Alice_1 2672ce10a63a
Amount ScriptPubKey
0.1401 Alice_2
0.0000 OP_RETURN a82db4766c300a23849bf

Fee implicita di 0.0031

Sign-to-Contract

  • Nasconde i dati all'interno della firma ECDSA
    • Utilizzati come chiave effimera nell'algoritmo di firma
  • I dati non sono direttamente visibili: più privacy!
  • Piccolo risparmio in fee

Inputs

Outputs

Output Ref Amount ScriptPubKey ScriptSig
3f0cd56e0:1
0.1432 Alice_1 de3ef9fb6465f
Amount ScriptPubKey
0.1410 Alice_2

Fee implicita di 0.0022

Pay-to-Contract

  • Nasconde i dati all'interno della chiave pubblica ECDSA
    • Utilizzati come fattore sommato alla pubkey
  • Solitamente meno flessibile rispetto a s2c
  • Alcuni protocolli trustless possono essere costruiti solo su p2c

Inputs

Outputs

Output Ref Amount ScriptPubKey ScriptSig
3f0cd56e0:1
0.1432 Alice_1 875bf4f752a9
Amount ScriptPubKey
0.1410 Alice_2 + m * G

Fee implicita di 0.0022

Some Practical Examples

  • OpenTimestamps
    • Timestamping di documenti su Bitcoin
    • Merkle Tree di documenti inserito in output OP_RETURN
  • Colored coin
    • Asset generici su Bitcoin
    • Metadati relativi ai trasferimenti codificati in OP_RETURN

Layer 3 Protocols

  • Protocolli che non richiedono uno stato "globale" possono essere portati sopra Lightning Network
  • Il protocollo Lightning si occupa di risolvere eventuali "dispute" tra le parti
    • Con l'attivazione di "Eltoo" diventerebbe ancora più efficace

Theoretical Example

  • Due parti che hanno un canale tra loro aggiornano periodicamente un contratto
    • La versione definitiva verrà poi mandata on-chain
  • Ad ogni modifica il nuovo documento viene aggiunto a un nuovo stato del canale
  • Se una delle due parti provasse a mandare on-chain una vecchia versione, l'altra parte potrebbe inviare uno stato successivo, dimostrando pubblicamente il tentativo di "frode"

RGB

  • Protocollo per l'emissione di asset generici su Bitcoin
  • Evoluzione di colored coin
    • Metadati relativi ai trasferimenti tenuti off-chain, commitment con OP_RETURN o pay-to-contract
  • Compatibile con Lightning Network, anche con routing

Scaling di Protocolli di Secondo Livello

By Alekos Filini

Scaling di Protocolli di Secondo Livello

  • 461