La Blockchain
Tra Altcoin e nuove applicazioni
Alessandro Pagiaro
Università di Pisa
22 Luglio 2016
La Blockchain
- Previous Block Header Hash
- Timestamp
- Difficulty
- Nonce
- Merkle Root
Proof-of-Work
Un esempio
Text
Problemi
- Centralizzazione delle verifiche
- Spreco di risorse reali
- Impatto energetico
Il PoW dei Prime Coin
Trovare una serie di numeri primi abbastanza lunga legati da varie proprietà
n-1, n+1, 2n-1, 2n+1, ..., 2^kn-1, 2^kn+1
n−1,n+1,2n−1,2n+1,...,2kn−1,2kn+1
1531, 3061, 6121, 12241, 24481
1531,3061,6121,12241,24481
p_1, 2p_1-1, 2p_2-1, ..., 2p_k-1
p1,2p1−1,2p2−1,...,2pk−1
p_1, 2p_1+1, 2p_2+1, ..., 2p_k+1
p1,2p1+1,2p2+1,...,2pk+1
Proof-Of-Stake
Coin Age
coinAge = valutaPosseduta*tempo
coinAge=valutaPosseduta∗tempo
Scelta del nodo successivo
- Selezione Casuale (Blackcoin)
- Selezione sulla Velocità (Reddcoin)
- Selezione sul voto (BitShares)
- Selezione sull'anzianità (PPCoin)
Bitcoin: le Transazioni
Alice
Bob
Alice comunica a Bob l'indirizzo del suo wallet
Bob crea una transazione IDB-X-IDA
Alice è contenta e prepara il caffè a Bob
Il network convalida la transazione verificando la legittimità del denaro e la inserisce in un blocco che viene aggiunto alla Blockchain (PoW)
Altri utilizzi
Altri utilizzi
Timestamping
Metodi con la Blockchain
- Pagamento a finto hash
- Pagamento a chiave privata
- Pagamento con OP_RETURN
Altri utilizzi
Timestamping
Pagamento a "chiave privata"
Altri utilizzi
Timestamping
S = k^{-1} (z+rd_A)
S=k−1(z+rdA)
S - S' = k^{-1}(z+rd_A) - k^{-1}(z'+rd_A)
S−S′=k−1(z+rdA)−k−1(z′+rdA)
= k^{-1} (z+rd_A - z'+rd_A) = k^-1(z-z')
=k−1(z+rdA−z′+rdA)=k−1(z−z′)
k = \frac{z-z'}{S-S'}
k=S−S′z−z′
Altri utilizzi
- DNS (NameCoin)
- Social Network (Alaska)
- Network p2p (ZeroNet)
- Sistemi di votazione
- ...
Appendice
Algoritmo ECDSA
Supponiamo che Alice voglia mandare un messaggio firmato a Bob. Per prima cosa occorrerà accordarsi su una curva (Curva, G, n)
Parametri | |
---|---|
Curva | La curva ellittica usata con un ordine molto elevato |
G | Il generatore della curva ellittica |
n | l'ordine di G, cioè n*G = O |
Alice crea una coppia di chiavi, dA (chiave privata) e QA=dA*G (chiave pubblica)
y^2 = x^3 + 7
y2=x3+7
Algoritmo ECDSA (2)
- Viene calcolato l'hash e = hash(m)
- Sia z i primi Ln bit più significativi di e
- Si scelga un intero casuale k tra [1, n-1]
- Si calcoli il punto della curva
(x1, y1) = k*G - Si calcoli r = x1 mod n. Se r=0 si torna a 3.
- Si calcoli s = k^-1 (z + rdA) mod n. Se s=0, 3.
- La firma è la coppia (r, s)
Algoritmo ECDSA: verifica
- Si verifichi che r e s siano compresi tra [1, n-1]
- Si calcoli e = hash(m)
- Sia z i primi Ln bit più significativi di e
- Si calcoli w = 1/s mod n
- Si calcoli u1 = zw mod n e u2 = rw mod n
- Si calcoli (x1, y1) = u1*G + u2*QA
- La firma è valida se (r = x1)mod n
La Blockchain
By Alessandro Pagiaro
La Blockchain
- 106