La sicurezza attraverso il segreto è il livello più semplice da applicare alle informazioni, ma anche il più debole. Avere l'esclusività di una cosa spesso la rende più preziosa.
In particolare la blockchain rende il database uno strumento aperto al pubblico e condiviso, obbliga il software ad essere almeno open source invece che chiuso. La blockchain riesce a dare valore, anche economico, a pratiche considerate spesso controproducenti per il business fuori da questo contesto.
Come funzionano le blockchain, i ledger, i meccanismi di consenso? Cosa è cambiato nella finanza? Cosa si può costruire con questi strumenti?
https://www.youtube.com/watch?v=MGVknyHXzUg&t=14s&ab_channel=TheCommunitiesBay
Moving from Monolithic to Microservice Architecture: an OSS based stack deplo...
Blockchain dove il free software incontra la finanza - novembre 2021
1. Dev WorkSpace
Blockchain
Dove il Free software incontra la finanza
Dev Workspace - 24 novembre 2021
Alfredo Di Maria
CEO - In TIme Link S.r.l.
2. Alfredo Di Maria - www.intimelink.com
La blockchain nasce
La prima blockchain fu introdotta, nel 2008, ad opera di Satoshi Nakamoto
(pseudonimo di un autore la cui identità è tuttora sconosciuta), e implementata
l'anno seguente, con l'obiettivo di fungere da "libro mastro" (registro di tutte
le transazioni) della nascente valuta digitale Bitcoin.
https://it.wikipedia.org/wiki/Blockchain
3. Alfredo Di Maria - www.intimelink.com
Blockchain
“La blockchain (letteralmente "catena di blocchi") è una
struttura dati condivisa e "immutabile".
https://it.wikipedia.org/wiki/Blockchain
4. Alfredo Di Maria - www.intimelink.com
Blockchain
“La blockchain (letteralmente "catena di blocchi") è una
struttura dati condivisa e "immutabile".
È definita come un registro digitale le cui voci sono
raggruppate in "blocchi", concatenati in ordine cronologico, e
la cui integrità è garantita dall'uso della crittografia.
https://it.wikipedia.org/wiki/Blockchain
5. Alfredo Di Maria - www.intimelink.com
Blockchain
“La blockchain (letteralmente "catena di blocchi") è una
struttura dati condivisa e "immutabile".
È definita come un registro digitale le cui voci sono
raggruppate in "blocchi", concatenati in ordine cronologico, e
la cui integrità è garantita dall'uso della crittografia.
Sebbene la sua dimensione sia destinata a crescere nel tempo,
è immutabile in quanto, di norma, il suo contenuto una volta
scritto non è più né modificabile né eliminabile, a meno di
non invalidare l'intera struttura.” https://it.wikipedia.org/wiki/Blockchain
6. Alfredo Di Maria - www.intimelink.com
Blockchain e affini
DIGITALE
ANALOGICO
CENTRALIZZATO P2P
7. Alfredo Di Maria - www.intimelink.com
Gli attori che compongono la blockchain
MINER VALIDATORI WALLET DAPP
8. Alfredo Di Maria - www.intimelink.com
Gli attori che compongono la blockchain
MINER
● producono i blocchi nei sistemi Proof of Work;
● specializzazione: alta;
● utente: aziende che guadagnano dall’attività di mining.
https://en.bitcoin.it/wiki/Mining
https://en.bitcoin.it/wiki/Proof_of_work
https://ethereum.org/en/developers/docs/consensus-mechanisms/pow/
9. Alfredo Di Maria - www.intimelink.com
Merkle tree
Un albero hash è un albero in cui ogni nodo
foglia è etichettato con l'hash crittografico
di un blocco di dati e ogni nodo non foglia
è etichettato con l'hash crittografico delle
etichette dei suoi nodi figli.
https://en.wikipedia.org/wiki/Merkle_tree
https://en.bitcoin.it/wiki/Hashcash
10. Alfredo Di Maria - www.intimelink.com
Gli attori che compongono la blockchain
VALIDATORI
● approvano i blocchi e li aggiungono alla chain;
● specializzazione: media;
● utente: utenti e aziende che usano la blockchain.
https://en.bitcoin.it/wiki/Full_node
11. Alfredo Di Maria - www.intimelink.com
Consensus protocol
https://en.wikipedia.org/wiki/Consensus_(computer_science) https://en.wikipedia.org/wiki/Sybil_attack,
https://spec.filecoin.io/algorithms/expected_consensus/#section-algorithms.expected_consensus.secret-leader-election
In un sistema distribuito, i protocolli di consenso permettono di ottenere un
sistema affidabile anche in presenza di un certo numero di componenti non
funzionanti.
12. Alfredo Di Maria - www.intimelink.com
Consensus protocol
https://en.wikipedia.org/wiki/Consensus_(computer_science) https://en.wikipedia.org/wiki/Sybil_attack,
https://spec.filecoin.io/algorithms/expected_consensus/#section-algorithms.expected_consensus.secret-leader-election
In un sistema distribuito, i protocolli di consenso permettono di ottenere un
sistema affidabile anche in presenza di un certo numero di componenti non
funzionanti.
Permissioned
viene definito un gruppo chiuso di attori
che può votare la validità dei blocchi e
l’identità di altri validatori.
13. Alfredo Di Maria - www.intimelink.com
Consensus protocol
https://en.wikipedia.org/wiki/Consensus_(computer_science)
https://en.wikipedia.org/wiki/Sybil_attack,
In un sistema distribuito, i protocolli di consenso permettono di ottenere un
sistema affidabile anche in presenza di un certo numero di componenti non
funzionanti.
Permissioned
viene definito un gruppo chiuso di attori
che può votare la validità dei blocchi e
l’identità di altri validatori.
Permissionless
i validatori vengono scelti in base a
delle regole condivise come: Proof of
Work, Proof of Stake, Proof of Storage
14. Alfredo Di Maria - www.intimelink.com
Consensus protocol and work rewards:
Proof of {function (input:block): boolean;}
Proof of Work,
permissionless
Chiunque può inviare i blocchi. I blocchi
risultano validi solo se contengono i
risultati corretti di un algoritmo di hash
molto dispendioso da eseguire.
Proof of Stake,
permissionless
Partecipano al voto dei blocchi solo i nodi
che possiedono un certo valore del token
nativo della chain. Oppure quelli con il
maggior quantitativo di token nativo.
Spesso viene eletto un leader che fa una
proposta di blocco ai validatori.
15. Alfredo Di Maria - www.intimelink.com
Consensus protocol and work rewards:
Proof of {function (input:block): boolean;}
Proof of Storage,
permissionless
I validatori sono selezionati tra i nodi
che hanno portato maggiore potenza di
calcolo, maggiore banda, o maggiore
storage nel tempo.
Permissioned Un sistema chiuso dove un
amministratore deve permettere
l’accesso al gruppo dei validatori.
https://spec.filecoin.io/algorithms/expected_consensus/#section-algorithms.expected_consensus.secret-leader-election
16. Alfredo Di Maria - www.intimelink.com
Gli attori che compongono la blockchain
WALLET
● effettuano transazioni, spesso conservano le chiavi
private degli utenti;
● specializzazione: bassa;
● utente: utenti che usano la blockchain.
https://en.bitcoin.it/wiki/Deterministic_wallet
17. Alfredo Di Maria - www.intimelink.com
Crittografia con chiavi asimmetriche
Crittografia con RSA
Le chiavi pubbliche e private hanno una particolare fattorizzazione in
numeri primi. Vengono usate le operazioni di prodotto e calcolo
modulo.
Crittografia con curve ellittiche (es. Secp256k1, Curve25519)
Le chiavi pubbliche e private sono dei punti dai quali si può partire per
generare tutti gli altri punti della curva. Le chiavi sono più brevi di
quelle usate da RSA e permettono operazioni di audit sicure.
https://en.bitcoin.it/wiki/Secp256k1
18. Alfredo Di Maria - www.intimelink.com
Attenzione a DSA e ECDSA
“Like other discrete-log-based signature schemes, EdDSA
uses a secret value called a nonce unique to each
signature. In the signature schemes DSA and ECDSA, this
nonce is traditionally generated randomly for each
signature—and if the random number generator is ever
broken and predictable when making a signature, the
signature can leak the private key, as happened with the
Sony PlayStation 3 firmware update signing key.”
https://en.wikipedia.org/wiki/EdDSA
https://en.bitcoin.it/wiki/Elliptic_Curve_Digital_Signature_Algorithm
https://bitcoin.org/en/alert/2013-08-11-android
19. Alfredo Di Maria - www.intimelink.com
Attenzione a Dual_EC_DRBG
“Dual Elliptic Curve Deterministic Random Bit Generator is
an algorithm that was presented as a cryptographically
secure pseudorandom number generator (CSPRNG) using
methods in elliptic curve cryptography. Despite wide public
criticism, including a backdoor, for seven years it was one of
the four (now three) CSPRNGs standardized in NIST SP
800-90A as originally published circa June 2006, until it was
withdrawn in 2014.”
https://en.wikipedia.org/wiki/Dual_EC_DRBG
20. Alfredo Di Maria - www.intimelink.com
Hierarchical Deterministic Wallet
https://iancoleman.io/bip39/
21. Alfredo Di Maria - www.intimelink.com
Numeri random e BIP39 + extension word
BIP39 è un algoritmo per associare in modo biunivoco un seed per la generazione di chiavi
crittografiche a una lista di parole, detta mnemonic.
BIP39 utilizza dei dizionari di parole predefiniti, include un checksum e la possibilità di
inserire una parola aggiuntiva scelta dall’utente.
Sono disponibili dizionari BIP39 in varie lingue, ma è comunemente usato il dizionario
inglese.
https://en.bitcoin.it/wiki/Seed_phrase
https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki
22. Alfredo Di Maria - www.intimelink.com
Numeri random e BIP39 + extension word
Esempio di mnemonic BIP39:
scene mirror cash current machine strike hazard improve pond layer shoe cake buyer
miracle arrange zoo legal youth render enhance wrong swing state airport
Esempio di seed BIP39:
af947671468944793bdbe0995b57bcec7c237258ebfaad44f4bf99843b76f7c6ee75f
8a35ee4ca66d05ee8008fd00fa472f2ebacb7a2522e8d1e50ea75b6dc6b
https://iancoleman.io/bip39/
23. Alfredo Di Maria - www.intimelink.com
Derivation Path: BIP32, BIP44, BIP49
Partendo da un seed e una derivation path (es. m/44'/0'/0'/0), si possono generare chiavi crittografiche in sequenza.
Si parla di chiave non-hardened quando da una chiave pubblica è possibile determinare le chiavi pubbliche precedenti.
Un wallet Bitcoin BIP44
● Derivation path: m/44'/0'/0'/0
● Private Key:
xprvA1R59J91cRUsW8ukWtargTrAEz7weZL5t7Zi3Z5TXNR47ezonTZkTuTDsB8f7bvDrRVFA6rBKXxn78uAxRWF4sDsNc7CKnpHbtkv1a5FESc
● Public Key:
xpub6EQRYofuSo3AiczDcv7s3bnto1xS423wFLVJqwV55hx2zTKxKzt11hmhiUt7Y5v83TYvrJ4H2ksTfhKHuW4fD7YLdeysXifeVFzwpA7YdJs
Derivation path di un wallet Solana
m/44'/501'/0'/0’
https://iancoleman.io/bip39/
https://wiki.trezor.io/Hardened_and_non-hardened_derivation
24. Alfredo Di Maria - www.intimelink.com
Non tutti i wallet sono uguali
Wallet custodial
l’utente delega la custodia delle sue chiavi a un provider
Wallet non custodial
l’utente detiene le sue chiavi e i segreti non sono mai condivisi con cloud di terze
parti
25. Alfredo Di Maria - www.intimelink.com
Gli attori che compongono la blockchain
DAPP
● applicazioni eseguire dalla blockchain;
● specializzazione: alta;
● utente: utenti che usano la blockchain o altre dapp.
https://en.wikipedia.org/wiki/Decentralized_application
26. Alfredo Di Maria - www.intimelink.com
Ethereum
“Lanciata nel 2015, Ethereum è la blockchain programmabile numero uno al
mondo.”
Ethereum si differenzia da Bitcoin perché si concentra sul creare una “Virtual
Machine” decentralizzata (ridondata) con un linguaggio, Solidity, Turing
Completo.
Mentre su Bitcoin, per scelta della community, si possono scrivere pochi e
semplici modelli di transazione, su Ethereum si ha un’estrema libertà.
I software che vengono eseguiti su Ethereum si chiamano Smart Contracts, sono
quasi tutti Open Source e molti sono Free Software.
https://ethereum.stackexchange.com/a/34185
https://ethereum.org/it/what-is-ethereum/
27. Alfredo Di Maria - www.intimelink.com
Nuovi attori che compongono la blockchain
AMM
Market ORACOLI Bridge
28. Alfredo Di Maria - www.intimelink.com
Exchange DeFi, CeFi
https://uniswap.org/ https://www.coinbase.com
29. Alfredo Di Maria - www.intimelink.com
Market and DEX
Project Serum is a protocol for decentralised exchanges that
brings the best of CeFi and DeFi through its on-chain orderbook
design. Serum's vision is to become important infrastructure for the
Solana ecosystem.
https://docs.projectserum.com/
30. Alfredo Di Maria - www.intimelink.com
Automated Market Maker
Sono software che hanno un algoritmo che gli permette di quotare
il valore tra due o più asset ed eseguire scambi H24.
Tra quelli più famosi ci sono Uniswap, Curve e Balancer.
Gli investitori che prestano la liquidità agli AMM, guadagnano
uno yeld dagli scambi.
Gli AMM risolvono il problema di avere un orderbook senza
offerte, ma la scarsa liquidità o l’elevata volatilità degli asset
possono causare impermanent loss su alcuni protocolli.
https://academy.binance.com/it/articles/what-is-an-automated-market-maker-amm
https://academy.binance.com/it/articles/impermanent-loss-explained
31. Alfredo Di Maria - www.intimelink.com
Swap pool: Solana Token Swap Program
https://spl.solana.com/token-swap
Una pool di swap è un software DeFi che permette agli utenti di scambiare un asset A con
un asset B. Permette inoltre agli investitori di guadagnare uno yeld dagli scambi effettuati.
Prodotto costante
Il creatore della pool deposita gli asset A e B. Ad ogni scambio il contratto calcola il prezzo
reciproco di A e B mantenendo costante il prodotto della quantità totale di asset nella pool:
A_total * B_total = invariant
Se un utente vuole scambiare l’asset A con l’asset B, il risultato è dato da:
(A_total + A_in) * (B_total - B_out) = invariant
32. Alfredo Di Maria - www.intimelink.com
Swap pool: Solana Token Swap Program
https://uniswap.org/whitepaper.pdf
https://balancer.fi/whitepaper.pdf
Esempio di swap con prodotto costante
Supponendo di avere una pool di swap con 100 token A e 5000 token B.
Se un utente vuole scambiare 10 token A, abbiamo:
● A_total * B_total = 100 * 5,000 = 500,000 = invariant
● (100 + 10) * (5,000 - B_out) = 500,000 <=> B_out = 454.5454
33. Alfredo Di Maria - www.intimelink.com
Trading on Serum
https://docs.projectserum.com/serum-ecosystem/trading-on-serum
34. Alfredo Di Maria - www.intimelink.com
Oracoli
I software decentralizzati hanno come dati di input le transazioni firmate dai
wallet e i dati già presenti on-chain.
Uno smart contract quindi non può sapere se 1 Dollaro vale più di 1 Euro a
Piazza Affari; non può sapere chi ha vinto gli Europei di Pallavolo femminile,
gli Europei di calcio, l’Eurovision, chi è l’uomo più veloce del mondo o quello
che salta più in alto. Chi è il miglior pasticcere del mondo?
https://www.corriere.it/cook/news/21_settembre_26/italia-vince-coppa-mondo-pasticceria-e8c4be7e-1e95-11ec-a3d9-1b0f9
767a5ab.shtml
35. Alfredo Di Maria - www.intimelink.com
Oracoli
Gli oracoli sono gruppi di agenti che salvano on-chain dati disponibili
off-chain.
Uno specifico smart contract pesa le informazioni in arrivo, le
normalizza e salva i valori in un blocco on-chain.
Gli smart contract interessati alle informazioni possono quindi
leggerle on-chain, talvolta pagando una fee agli oracoli.
https://bandprotocol.com/
https://pyth.network/
https://chain.link/
36. Alfredo Di Maria - www.intimelink.com
Bridge
I bridge permettono di spostare gli asset da una blockchain a un’altra.
Il bridge tra Solana e Ethereum si chiama Wormhole ed è composto da 19 agenti, detti guardiani,
che gestiscono i software decentralizzate su una e sull’altra chain.
Gli asset vengono bloccati sulla blockchain di provenienza e vengono creati su quella di arrivo. I
guardiani sono garanti che non ci sia perdita di asset o generazione di nuovi asset in eccedenza.
https://wormholebridge.com/