Presentazione fatta in occasione del primo meetup "blockchain e dintorni Bari"
Nella presentazione mostro come effettuare una transazione in codice sulla rete testnet di bitcoin. In javascript utilizzando la libreria bitcore di bitpay. E' un modo per entrare nel dettaglio di alcuni aspetti del protocollo Bitcoin. Il codice e' in questo repository https://github.com/gncvalente/bitcoin_playground
9. PRIVATE KEY E
BITCOIN ADDRESS
• il lucchetto e’ la public key
• la chiave e’ la private key
• www.bitcoinaddress.org
• bitcoinpaperwallet.com
10. INDIRIZZO BITCOIN
private key public key
non e’ possibile da un’indirizzo bitcoin ritrovare la private key
meglio: e’ altamente improbabile
bitcoin address
11. In bitcoin la chiave pubblica e’ usata per ricevere
la chiave privata per firmare le transazioni e spendere
15. random 256 bit number -> private key (HEX format)
WIF (Wallet import format) private key (base 58 check encode)
512 bit public key with a prefix (Elliptic Curve DSA)
160bit public key hash (SHA-256 | RIPEM 160)
base 58 check encode (BITCOIN ADDRESS)
17. CRITTOGRAFIA ASIMMETRICA
messaggio:
il tesoro si trova
nel punto x
chiave pubblica
messaggio cifrato:
svxhsvhgxvhgjvdjg
vsdcvgsjhcvhjdsv
chiave privata
messaggio:
il tesoro si trova
nel punto x
messaggio cifrato:
svxhsvhgxvhgjvdjg
vsdcvgsjhcvhjdsv
19. COSA MI IMPEDISCE DITROVARE LA
CHIAVE PRIVATA DI UN’ALTRO UTENTE
O DI GENERARE UNA CHIAVE ESISTENTE?
10^24 atomi
addresses
10^48 10^50 atomi
fermi lab
20. PRIVATE KEY
• random number between 0 and 2^256
• or between 0 and 10^77
• visibile universe contains 10^80 atoms
28. LIBRO MASTRO
• contiene i movimenti di
frazioni di bitcoin (satoshi)
da wallet a wallet
• bitcoin unspent outputs
• il reward del mining e’
l’unica transazione che
parte dal nulla
30. i bitcoin consistono in voci in un database distribuito
che tiene traccia della proprietà dei bitcoin. A
differenza di una banca, i bitcoin non sono legati a
utenti o account. Invece i bitcoin sono di proprietà di
un indirizzo Bitcoin,
41. MONETA PROGRAMMABILE
• alla transazione e’ associato
un linguaggio di
programmazione (non
touting complete)
• decision based spending
(link)
• esempio crowdfounding
43. IN
Transacti
OUT
OUT locking
unlock locking
72 bytes <signature>
33 bytes <public key>
OP_DUP
OP_HASH160
20 bytes <pubKey hash>
OP_EQUALVERIFY
OP_CHECKSIG
IN
Transacti
OUT
OUT locking
unlock locking
66. ERRORI DI CODING COSTOSI
OP_IFDUP
OP_IF
OP_2SWAP
OP_VERIFY
OP_2OVER
OP_DEPTH
That script turns out to be the ASCII text: script
http://www.righto.com/2014/03/the-programming-error-that-cost-mt-gox.html
70. COORDINAMENTO• book keepers (peers)
• block-chain
• ogni 10 minuti n transazioni
entrano in un blocco
• transaction order
• consenso - siamo tutti
d’accordo?
B B B
71. parte competizione per risolvere il blocco nei prossimi 10 minuti
e’ una competizione basata sulla risoluzione di un problema
crittografico
yes !!! va bene bravo … :( va bene bravo … :(
transazione
transazione
transazione
transazione
Blocco #234
72. IL BOOKKEEPER CHE HA RISOLTO PER PRIMO
IL PROBLEMAVINCE DUE PREMI
le commissioni associate alle transazioni nel blocco
e dei nuovi bitcoin generati dal nulla (mining)
73. MINATORI
• mining difficulty
• bitcoin consenso (1 voto per 1 CPU)
• generazione controllata di nuova moneta
• transaction order
• commissioni piu’ alte consentono transazioni piu’ veloci
74. –Ciccio Cappuccio
“non ho capito … come funziona questa
block chain ! problema crittografico ?!
:(”
clicca qui …
75. SEMPLICE FUNZIONE DI HASH
• somma le lettere, dividi per 5 ritorna il resto
• casa => 3 + 1 + 19 + 1 = 24 mod 5 => 4
• case => 3 + 1 + 19 + 5 = 28 mod 5 => 3
in modo consistente ad input ottengo sempre lo stesso output
dall’output non posso ricostruire l’input
obiettivo di una funzione di hash e’ non essere reversibile!
76. –Mario Rossi
“non ho capito … come funziona questa
block chain ! problema crittografico ?!
:(”
clicca qui …