Corda — blockchain open source per le imprese

Corda è un ledger distribuito per la memorizzazione, gestione e sincronizzazione degli obblighi finanziari tra diverse organizzazioni finanziarie.
Corda — blockchain open source per le imprese
Corda ha una documentazione piuttosto buona con video-lezioni che si possono trovare qui. Cercherò di descrivere brevemente come è strutturato Corda al suo interno.

Esaminiamo le principali caratteristiche di Corda e la sua unicità rispetto ad altre blockchain:

  • Corda non ha una criptovaluta propria.
  • Corda non utilizza il concetto di mining e il sistema di Proof-of-Work.
  • Il trasferimento dei dati avviene solo tra i partecipanti alla transazione/contratto. Non c'è broadcasting globale a tutti i nodi della rete.
  • Non esiste un controllore centrale che gestisce tutte le transazioni.
  • Corda supporta diversi meccanismi di consenso.
  • Il consenso è raggiunto tra i partecipanti a livello di singolo accordo/contratto, piuttosto che a livello di sistema intero.
  • La transazione è confermata solo dai partecipanti ad essa.
  • Corda offre un collegamento diretto tra il linguaggio giuridico umano formale e il codice dei contratti intelligenti.

Il ledger

Il concetto di ledger in Corda è soggettivo. Non esiste un'unica memoria centrale dei dati. Invece, ogni nodo mantiene un database separato dei fatti a lui noti.

Ad esempio, immaginate una rete di 5 nodi, dove il cerchio rappresenta un fatto noto al nodo.

Corda — blockchain open source per le imprese

Come possiamo vedere, Ed, Carl e Demi conoscono il fatto 3, mentre Alice e Bob ne sono completamente all'oscuro. Corda garantisce che i fatti comuni siano mantenuti nei database di ciascun nodo, e che i dati siano identici.

Stati

Lo stato è un oggetto immutabile che rappresenta un fatto noto a uno o più nodi della rete in un determinato momento.

Gli stati possono contenere dati arbitrari, come azioni, obbligazioni, prestiti, informazioni identificative.

Ad esempio, il seguente stato rappresenta un IOU — un accordo che afferma che Alice deve a Bob l'importo di X:

Corda — blockchain open source per le imprese
Il ciclo di vita di un fatto nel tempo è rappresentato da una successione di stati. Quando è necessario aggiornare lo stato attuale, creiamo un nuovo stato e segniamo il corrente come storico (historic).

Corda — blockchain open source per le imprese

Transazioni

Le transazioni sono proposte per l'aggiornamento del ledger. Non vengono trasmesse a tutti i partecipanti del ledger e sono accessibili solo a coloro che hanno il diritto legittimo di visualizzarle e gestirle.

La transazione sarà aggiunta al ledger se:

  • contrattualmente valido
  • firmato da tutti i partecipanti necessari
  • non contiene spese doppie (double-spends)

Corda utilizza un modello UTXO (unspent transaction output), in cui ogni stato del ledger è immutabile.

Durante la creazione, lo stato di output della transazione precedente viene passato come input (tramite hash e indice).

Corda — blockchain open source per le imprese
Ciclo di vita della transazione:

  • Creazione (Attualmente la transazione è solo una proposta per l'aggiornamento del ledger)
  • Raccolta delle firme (I partecipanti necessari alla transazione approvano la proposta di aggiornamento aggiungendo la loro firma alla transazione)
  • Commit della transazione nel ledger

Dopo che la transazione è stata aggiunta al ledger, gli stati di input vengono contrassegnati come storici e non possono essere utilizzati in future transazioni.

Corda — blockchain open source per le imprese
Oltre agli stati di input e output, una transazione può contenere:

  • Comandi (parametro della transazione che indica l'obiettivo della transazione)
  • Allegati (calendario delle festività, convertitore di valute)
  • Finestre temporali (scadenza)
  • Notaio (Notary, partecipanti speciali della rete che convalidano le transazioni)

Corda — blockchain open source per le imprese

Contratti

Quando parliamo della validità di una transazione, ci riferiamo non solo alla presenza delle firme necessarie, ma anche alla validità in base al contratto. Ogni transazione è legata a un contratto che la accetta e convalida gli stati di input e output. Una transazione è considerata valida solo se tutti i suoi stati sono validi.

I contratti in Corda sono scritti in qualsiasi linguaggio JVM (ad esempio, Java, Kotlin).

class CommercialPaper : Contract {
    override fun verify(tx: LedgerTransaction) {
        TODO()
    }
}

Deve estendere la classe Contract e sovrascrivere il metodo verify. In caso di invalidità della transazione, deve essere sollevata un'eccezione.

La convalida delle transazioni deve essere deterministica, ovvero il contratto deve sempre accettare o rifiutare la transazione. Pertanto, la validità della transazione non può dipendere dal tempo, dai numeri casuali, dai file dei nodi della rete, ecc.

In Corda, i contratti vengono eseguiti in quella che viene chiamata sandbox — una JVM leggermente modificata, che garantisce un'esecuzione deterministica dei contratti.

Flussi

Per automatizzare la comunicazione tra i nodi della rete, sono stati aggiunti flussi.

Un flusso è una sequenza di passaggi che informa un nodo su come eseguire un aggiornamento specifico del ledger, quando è necessario firmare e convalidare la transazione.

Corda — blockchain open source per le imprese

A volte ci vogliono ore, giorni affinché la transazione venga firmata da tutte le parti e finisca nel ledger. Cosa succede se disabiliti un nodo coinvolto nella transazione? I flussi hanno punti di controllo, in cui gli stati del flusso vengono registrati nel database del nodo. Quando il nodo viene ripristinato nella rete, continuerà da dove si era fermato.

Consensus

Per entrare nel ledger, la transazione deve raggiungere 2 consensi: sulla validità e sull'unicità.

La decisione sulla validità della transazione viene presa solo dalle parti coinvolte direttamente.

I nodi notarili controllano l'unicità della transazione, prevenendo spese doppie.

Immaginiamo che Bob abbia 100$ e voglia trasferire 80$ a Charlie e 70$ a Dan, utilizzando lo stesso stato di ingresso.

Corda — blockchain open source per le imprese

Questo trucco non è possibile con Corda. Anche se la transazione supera il controllo di validità, il controllo di unicità fallirà.

Conclusione

La piattaforma Corda, sviluppata dal consorzio blockchain R3, non è un esempio puro di utilizzo della tecnologia blockchain. Corda è uno strumento piuttosto specializzato per le organizzazioni finanziarie.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster