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
Trovare una soluzione ad un problema crittografico computazionalmente complesso per provare di aver investito energie nella soluzione
- Asimmetrico: complesso da risolvere, facile da verificare
- Con difficoltà variabile
- Dipendente da parametri
Un algoritmo di Proof-of-Work deve essere
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à
Proof-Of-Stake
Coin Age
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 accetta il pagamento 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 finto hash
Altri utilizzi
Timestamping
Dato da salvare
Hash
Effettuo pagamento
Pagamento a "chiave privata"
Altri utilizzi
Timestamping
OP_RETURN
Altri utilizzi
Timestamping
NameCoin
Altri utilizzi
DNS
Permettono di aggiungere informazioni aggiuntive alle transazioni
d/example
Altri utilizzi
- Social Network (Alaska)
- Network p2p (ZeroNet)
- Sistemi di votazione
- Smart Contracts
- ...
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)
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