Skip to content

From-scratch blockchain in Rust: core data structures, consensus scaffolding, and storage experiments.

Notifications You must be signed in to change notification settings

smeneguz/Rust-Chain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rust-Chain

Componenti principali che arriveremo a Implementare

  • Componente Crittografica
  • transazioni
  • blocchi
  • Blockchain stessa
  • Nodi
  • Protocolli di Consenso
  • Rete P2P
  • Server RPC

Hashing:

  • SHA256 -> Bitcoin
  • Keccak-256 (variante SHA3) -> Ethereum

Algoritmo Hash per Quantum : K12 (KangarooTwelve) (non standardizzato)

partire da qui: ed25519 start from here ed25519_dalek

poi aggiungere anche secp256k1

1 algoritmo hashing e uno di firma digitale, e implementare test (#[cfg(test)])

quindi chaincore -> src -> crypto : ed25519.rs e sha3.rs (cerca Crate sha3 etc.)

firmare un messaggio e hashare un messaggio

LEZIONE 2: cryptobackend guardare features (riguardare trait)

Le transazioni servono per cambio di stato nel sistema (deterministico) tre elementi : mittente, destinatario, firma digitale (autenticità)

  • mittente in ethereum non esiste perchè ha 3 paramtri r,s,v e questi possono derivare il mittente quindi non serve specificarlo

chiave privata e chave pubblica, indirizzo (versione più corta della chiave pubblica)

modelli di gestione dello stato UTXO e account model

  • modello UTXO prevede un certo numero di input e un certo numero di output
  • modello account based, ..

scegliamo modello UTXO definiamo struttura transazione come mittente, destinatario,importo, firma scegliere crittografia imnplementare logica che valida transazioni assicurandosi che rispettino le regole del protocoolo (utilizzare UTXO non già utilizzato, decisiamo input, output ) , scegliere come fatta una transazione

  • implementare meccanismi per doppia spesa e garantire integrità

definito transazione come struct con id array di byte e una copia di proprietà input e output vec e vec poi implementazione trait has duplicate inputs (non ci sia du volte stesso input)

se è valida is_valid se non ha steso input due volte semplicemente

create_id della transazione che è un hash di tutti quanti input e output insieme

e funzione create transazion

structu input con funziopni per firmare un input (garantire che si io che posso usarlo), crearlo , e verificato (previous_tx_id transaction hash, output_index, signature, public_key) output non speso che voglio utilizzare lo individuo con i primi due campi

struct TransactionOutput chi riceve i soldi e quanti

e idea di blocco , pub struct Block con campi corretti

iniziare a pensare a questo modello UTXO , c abozzare modulo transaction dove abozziamo prototipale transaction transaction.rs #derive (debug, Clone, ...)

Gian:

Transaction input : struttura con previous_tx_hash, output_index, signature, public_key

hashmap metterò più avanti nel modulo blockchain

BLOCCO MODULO DA FARE adesso e prossimo modulo blockchain

blocco e blockchain by Gian: blocco: index, hash, previous_block_hash, timestamp, transaction, author, signature, metadata

hash di tutto

blockcahin:

About

From-scratch blockchain in Rust: core data structures, consensus scaffolding, and storage experiments.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages