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
n1,n+1,2n1,2n+1,...,2kn1,2kn+1n-1, n+1, 2n-1, 2n+1, ..., 2^kn-1, 2^kn+1
1531, 3061, 6121, 12241, 24481
1531,3061,6121,12241,244811531, 3061, 6121, 12241, 24481
p_1, 2p_1-1, 2p_2-1, ..., 2p_k-1
p1,2p11,2p21,...,2pk1p_1, 2p_1-1, 2p_2-1, ..., 2p_k-1
p_1, 2p_1+1, 2p_2+1, ..., 2p_k+1
p1,2p1+1,2p2+1,...,2pk+1p_1, 2p_1+1, 2p_2+1, ..., 2p_k+1

Proof-Of-Stake

Coin Age

coinAge = valutaPosseduta*tempo
coinAge=valutaPossedutatempocoinAge = 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=k1(z+rdA)S = k^{-1} (z+rd_A)
S - S' = k^{-1}(z+rd_A) - k^{-1}(z'+rd_A)
SS=k1(z+rdA)k1(z+rdA)S - S' = k^{-1}(z+rd_A) - k^{-1}(z'+rd_A)
= k^{-1} (z+rd_A - z'+rd_A) = k^-1(z-z')
=k1(z+rdAz+rdA)=k1(zz) = k^{-1} (z+rd_A - z'+rd_A) = k^-1(z-z')
k = \frac{z-z'}{S-S'}
k=zzSSk = \frac{z-z'}{S-S'}

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+7y^2 = x^3 + 7

Algoritmo ECDSA (2)

  1. Viene calcolato l'hash e = hash(m)
  2. Sia z i primi Ln bit più significativi di e
  3. Si scelga un intero casuale k tra [1, n-1]
  4. Si calcoli il punto della curva
                    (x1, y1) = k*G
  5. Si calcoli r = x1 mod n. Se r=0 si torna a 3.
  6. Si calcoli s = k^-1 (z + rdA) mod n. Se s=0, 3.
  7. La firma è la coppia (r, s)

Algoritmo ECDSA: verifica

  1. Si verifichi che r e s siano compresi tra [1, n-1]
  2. Si calcoli e = hash(m)
  3. Sia z i primi Ln bit più significativi di e
  4. Si calcoli w = 1/s mod n
  5. Si calcoli u1 = zw mod n e u2 = rw mod n
  6. Si calcoli (x1, y1) = u1*G + u2*QA
  7. La firma è valida se (r = x1)mod n 

La Blockchain

By Alessandro Pagiaro