Corda — blockchain open source per le imprese

Corda è un registro distribuito per la memorizzazione, la gestione e la sincronizzazione degli obblighi finanziari tra diverse organizzazioni finanziarie.
Corda — blockchain open source per le imprese
Corda ha una documentazione piuttosto completa con video-lezioni, che si possono trovare qui. Proverò a descrivere brevemente come è strutturato Corda internamente.

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

  • Corda non ha una criptovaluta propria.
  • Corda non utilizza il concetto di mining e il sistema Proof-of-Work.
  • La trasmissione dei dati avviene solo tra i partecipanti alla transazione/ contratto. Non c'è broadcasting globale a tutti i nodi della rete.
  • Non esiste un controllo centralizzato che gestisca tutte le transazioni.
  • Corda supporta diversi meccanismi di consenso.
  • Il consenso si raggiunge tra i partecipanti a livello di singolo accordo/contratto, non a livello di intero sistema.
  • La transazione viene confermata solo dai partecipanti coinvolti.
  • Corda offre un collegamento diretto tra il linguaggio giuridico umano formale e il codice dei contratti smart.

Il registro

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

Ad esempio, immagina 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 nemmeno lo sospettano. Corda garantisce che i fatti comuni siano conservati nel database di ogni nodo, e i dati saranno identici.

Stati

Uno stato è immutabile un oggetto 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 secondo cui Alice deve a Bob una somma X:

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

Corda — blockchain open source per le imprese

Transazioni

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

La transazione verrà aggiunta al ledger se:

  • è contrattualmente valida
  • è firmata 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, la transazione riceve come input lo stato output della transazione precedente (attraverso hash e indice).

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

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

Dopo l'aggiunta della transazione 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, la transazione può contenere:

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

Corda — blockchain open source per le imprese

Contratti

Quando parliamo di validità di una transazione, ci riferiamo non solo alla presenza delle firme necessarie, ma anche alla validità secondo il contratto. Ogni transazione è associata a un contratto che la accetta e convalida gli stati di entrata e uscita. Una transazione è considerata valida solo se tutti i suoi stati sono validi.

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

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

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

La validazione delle transazioni deve essere deterministica, ossia il contratto deve sempre accettare o rifiutare la transazione. Di conseguenza, la validità della transazione non può dipendere dal tempo, dai numeri casuali, dai file del nodo della rete, ecc.

In Corda, i contratti vengono eseguiti nella cosiddetta sandbox, una JVM leggermente modificata che garantisce l'esecuzione deterministica dei contratti.

Flussi

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

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

Corda — blockchain open source per le imprese

A volte sono necessarie ore o persino giorni affinché la transazione venga firmata da tutte le parti e registrata nel ledger. Cosa accade se un nodo coinvolto nella transazione si disconnette? I flussi hanno punti di controllo, nei quali gli stati del flusso vengono registrati nel database del nodo. Quando il nodo viene ripristinato nella rete, riprenderà da dove si era fermato.

Consenso

Per essere registrata nel ledger, una transazione deve raggiungere 2 consensi: sulla validità e sull'unicità.

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

I nodi notarili verificano l'unicità della transazione, evitando doppie spese.

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

Corda — blockchain open source per le imprese

Corda non permetterebbe un tale trucco. Sebbene la transazione superi il controllo di validità, il controllo di unicità fallirebbe.

Conclusione

La piattaforma Corda, sviluppata dal consorzio blockchain R3, non è un esempio puro di utilizzo della tecnologia blockchain. Corda è uno strumento piuttosto specializzato per 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