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
- 526