Corda - blockchain open source pour les entreprises

Corde est un grand livre distribué permettant de stocker, gérer et synchroniser les obligations financières entre différentes organisations financières.
Corda - blockchain open source pour les entreprises
Corda a une assez bonne documentation avec des conférences vidéo qui peuvent être trouvées ici. Je vais essayer de décrire brièvement comment Corda fonctionne à l'intérieur.

Examinons les principales caractéristiques de Corda et son caractère unique parmi les autres blockchains :

  • Corda ne possède pas sa propre crypto-monnaie.
  • Corda n'utilise pas le concept de minage et le système de preuve de travail.
  • Le transfert de données a lieu uniquement entre les parties à la transaction/au contrat. Il n'y a pas de diffusion globale vers tous les nœuds du réseau.
  • Il n’existe pas de contrôleur central gérant toutes les transactions.
  • Corda prend en charge divers mécanismes de consensus.
  • Le consensus est atteint entre les participants au niveau d'un accord/contrat individuel, et non au niveau de l'ensemble du système.
  • Une transaction n'est confirmée que par les participants qui y sont liés.
  • Corda offre une connexion directe entre le langage juridique humain formel et le code des contrats intelligents.

Le grand livre

Le concept de grand livre dans Corda est subjectif. Il n’existe pas de référentiel de données central unique. Au lieu de cela, chaque nœud gère une base de données distincte des faits dont il a connaissance.

Par exemple, imaginez un réseau de 5 nœuds, où un cercle est un fait connu du nœud.

Corda - blockchain open source pour les entreprises

Comme nous pouvons le voir, Ed, Carl et Demi connaissent le fait 3, mais Alice et Bob n'en sont même pas conscients. Corda garantit que les faits communs sont stockés dans la base de données de chaque nœud et que les données seront identiques.

États

L'État est immuable un objet qui représente un fait connu d'un ou plusieurs nœuds du réseau à un moment donné.

Les États peuvent stocker des données arbitraires, par exemple des actions, des obligations, des prêts, des informations d'identification.

Par exemple, l'état suivant représente une reconnaissance de dette, un accord selon lequel Alice doit à Bob un montant de X :

Corda - blockchain open source pour les entreprises
Le cycle de vie d’un fait dans le temps est représenté par une séquence d’états. Lorsqu'il est nécessaire de mettre à jour l'état actuel, nous en créons un nouveau et marquons l'état actuel comme historique.

Corda - blockchain open source pour les entreprises

Transactions

Les transactions sont des propositions de mise à jour du grand livre. Ils ne sont pas diffusés à tous les participants au grand livre et ne sont disponibles qu'aux participants du réseau qui ont le droit légal de les consulter et de les gérer.

Une transaction sera ajoutée au grand livre si elle :

  • contractuellement valable
  • signé par tous les participants requis
  • ne contient pas de doubles dépenses

Corda utilise le modèle UTXO (sortie de transaction non dépensée), dans lequel chaque état du grand livre est immuable.

Lorsqu'une transaction est créée, l'état de sortie de la transaction précédente (par hachage et index) est transféré à l'entrée.

Corda - blockchain open source pour les entreprises
Cycle de vie des transactions :

  • Création (Pour le moment, la transaction n'est qu'une proposition de mise à jour du grand livre)
  • Recueillir des signatures (les parties requises à la transaction approuvent la proposition de mise à jour en ajoutant une signature à la transaction)
  • Valider la transaction dans le grand livre

Une fois qu'une transaction est ajoutée au grand livre, les états d'entrée sont marqués comme historiques et ne peuvent pas être utilisés dans des transactions futures.

Corda - blockchain open source pour les entreprises
En plus des états d'entrée et de sortie, une transaction peut contenir :

  • Commandes (paramètre de transaction indiquant le but de la transaction)
  • Pièces jointes (calendrier des fêtes, convertisseur de devises)
  • Fenêtres horaires (durée de validité)
  • Notaire (Notaire, participants au réseau spécial validant les transactions)

Corda - blockchain open source pour les entreprises

Les contrats

Lorsque nous parlons de validité des transactions, nous entendons non seulement la présence des signatures nécessaires, mais aussi la validité contractuelle. Chaque transaction est associée à un contrat qui l'accepte et valide les états d'entrée et de sortie. Une transaction n'est considérée comme valide que si tous ses états sont valides.

Les contrats dans Corda sont écrits dans n'importe quel langage JVM (par exemple, Java, Kotlin).

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

Il faut hériter d'une classe Contract et remplacez la méthode vérifier. Si la transaction n'est pas valide, une exception sera levée.

La validation des transactions doit être déterministe, c'est-à-dire le contrat doit toujours accepter ou refuser la transaction. À cet égard, la validité de la transaction ne peut pas dépendre du temps, de nombres aléatoires, de fichiers hôtes, etc.

Dans Corda, les contrats sont exécutés dans ce qu'on appelle un bac à sable - une JVM légèrement modifiée qui garantit une exécution déterministe des contrats.

Cours d'eau

Pour automatiser la communication entre les nœuds du réseau, des threads ont été ajoutés.

Un flux est une séquence d'étapes qui indique à un nœud comment effectuer une mise à jour spécifique du grand livre et à quel moment la transaction doit être signée et validée.

Corda - blockchain open source pour les entreprises

Parfois, il faut des heures, voire des jours, pour que la transaction soit signée par toutes les parties et inscrite dans le grand livre. Que se passe-t-il si vous déconnectez un nœud participant à une transaction ? Les threads ont des points de contrôle, auxquels l'état du thread est écrit dans la base de données du nœud. Lorsqu'un nœud est restauré sur le réseau, il reprendra là où il s'était arrêté.

Consensus

Pour entrer dans le grand livre, une transaction doit atteindre 2 consensus : la validité et l'unicité.

La décision sur la validité d'une transaction est prise uniquement par les parties directement impliquées.

Les nœuds notariaux vérifient le caractère unique de la transaction et évitent les doubles dépenses.

Imaginons que Bob dispose de 100 $ et souhaite transférer 80 $ à Charlie et 70 $ à Dan en utilisant le même état d'entrée.

Corda - blockchain open source pour les entreprises

Corda ne vous permettra pas de réaliser une telle astuce. Bien que la transaction réussisse le contrôle de validité, le contrôle d'unicité échouera.

Conclusion

La plateforme Corda, développée par le consortium blockchain R3, n’est pas un pur cas d’utilisation de la technologie blockchain. Corda est un outil hautement spécialisé pour les institutions financières.

Source: habr.com

Ajouter un commentaire