Corda: blockchain open source per le imprese

Corda è un registro distribuito per archiviare, gestire e sincronizzare gli obblighi finanziari tra diverse organizzazioni finanziarie.
Corda: blockchain open source per le imprese
Corda ha una documentazione abbastanza buona con lezioni video che possono essere trovate qui. Cercherò di descrivere brevemente come funziona Corda all'interno.

Diamo un'occhiata alle caratteristiche principali di Corda e alla sua unicità rispetto alle altre blockchain:

  • Corda non ha una propria criptovaluta.
  • Corda non utilizza il concetto di mining e il sistema Proof-of-Work.
  • Il trasferimento dei dati avviene solo tra le parti della transazione/contratto. Non esiste una trasmissione globale a tutti i nodi della rete.
  • Non esiste un controller centrale che gestisce tutte le transazioni.
  • Corda supporta vari meccanismi di consenso.
  • Il consenso viene raggiunto tra i partecipanti a livello di un accordo/contratto individuale e non a livello dell’intero sistema.
  • Una transazione viene confermata solo dai partecipanti ad essa correlati.
  • Corda offre una connessione diretta tra il linguaggio giuridico umano formale e il codice del contratto intelligente.

Il libro mastro

Il concetto di registro in Corda è soggettivo. Non esiste un unico archivio centrale di dati. Invece, ciascun nodo mantiene un database separato di fatti a lui noti.

Ad esempio, immagina una rete di 5 nodi, dove un cerchio è un fatto noto al nodo.

Corda: blockchain open source per le imprese

Come possiamo vedere, Ed, Carl e Demi sanno del fatto 3, ma Alice e Bob non ne sono nemmeno consapevoli. Corda garantisce che i fatti comuni siano archiviati nel database di ciascun nodo e che i dati saranno identici.

stati

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

Gli Stati possono archiviare dati arbitrari, ad esempio azioni, obbligazioni, prestiti, informazioni di identificazione.

Ad esempio, il seguente stato rappresenta un pagherò, un accordo secondo cui Alice deve a Bob un importo pari a 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, ne creiamo uno nuovo e contrassegniamo quello attuale come storico.

Corda: blockchain open source per le imprese

Operazioni

Le transazioni sono proposte per aggiornare il libro mastro. Non vengono trasmessi a tutti i partecipanti al registro e sono disponibili solo per i partecipanti alla rete che dispongono del diritto legale di visualizzarli e gestirli.

Una transazione verrà aggiunta al registro se:

  • contrattualmente valido
  • firmato da tutti i partecipanti richiesti
  • non contiene spese doppie

Corda utilizza il modello UTXO (output delle transazioni non spesi), in cui ogni stato del registro è immutabile.

Quando viene creata una transazione, lo stato di output della transazione precedente (tramite hash e indice) viene trasferito all'input.

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

  • Creazione (Al momento la transazione è solo una proposta di aggiornamento del registro)
  • Raccolta firme (le parti coinvolte nella transazione approvano la proposta di aggiornamento aggiungendo una firma alla transazione)
  • Impegna la transazione nel registro

Una volta aggiunta una transazione al registro, gli stati di input vengono contrassegnati come storici e non possono essere utilizzati in transazioni future.

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

  • Comandi (parametro di transazione che indica lo scopo della transazione)
  • Allegati (calendario delle festività, convertitore di valuta)
  • Finestre temporali (periodo di validità)
  • Notaio (Notaio, partecipanti alla rete speciale che convalidano le transazioni)

Corda: blockchain open source per le imprese

contratti

Quando parliamo di validità della transazione intendiamo non solo la presenza delle firme necessarie, ma anche la validità contrattuale. Ad ogni transazione è associato un contratto che la accetta e ne valida 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()
    }
}

È necessario ereditare da una classe Contratto e sovrascrivere il metodo verificare. Se la transazione non è valida, verrà generata un'eccezione.

La convalida della transazione deve essere deterministica, vale a dire il contratto deve sempre accettare o rifiutare la transazione. In relazione a ciò, la validità della transazione non può dipendere dal tempo, da numeri casuali, da file host, ecc.

In Corda i contratti vengono eseguiti in una 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 i thread.

Un flusso è una sequenza di passaggi che indica a un nodo come eseguire uno specifico aggiornamento del registro e a che punto la transazione deve essere firmata e convalidata.

Corda: blockchain open source per le imprese

A volte ci vogliono ore, giorni prima che la transazione venga firmata da tutte le parti e venga registrata nel registro. Cosa succede se disconnetti un nodo che partecipa a una transazione? I thread hanno checkpoint in cui lo stato del thread viene scritto nel database del nodo. Quando un nodo viene ripristinato sulla rete, continuerà da dove era stato interrotto.

Consenso

Per entrare nel registro, una transazione deve raggiungere 2 consensi: validità e unicità.

La decisione sulla validità di una transazione spetta solo alle parti direttamente coinvolte nella stessa.

I nodi notarili controllano l'unicità della transazione e impediscono la doppia spesa.

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 ti permetterà di realizzare un simile trucco. Anche se la transazione supererà il controllo di validità, il controllo di unicità fallirà.

conclusione

La piattaforma Corda, sviluppata dal consorzio blockchain R3, non è un puro caso d’uso per la tecnologia blockchain. Corda è uno strumento altamente specializzato per le istituzioni finanziarie.

Fonte: habr.com

Aggiungi un commento