Corda est un grand livre distribué pour le stockage, la gestion et la synchronisation des obligations financières entre diverses institutions financières.

Corda a une assez bonne documentation avec des conférences vidéo, que vous pouvez trouver
ici . Je vais essayer de décrire brièvement comment Corda est construite à l'intérieur.
Considérez les principales caractéristiques de Corda et son caractère unique parmi d'autres chaînes de blocs:
- Corda n'a pas sa propre crypto-monnaie.
- Corda n'utilise pas le concept d'exploitation minière et le système de preuve de travail.
- Le transfert de données a lieu uniquement entre les participants à la transaction / au contrat. Il n'y a pas de diffusion globale vers tous les nœuds du réseau.
- Il n'y a pas de contrôleur central qui gère toutes les transactions.
- Corda prend en charge divers mécanismes de consensus.
- Un consensus est atteint entre les participants au niveau d'un accord / contrat distinct, 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 un lien direct entre le langage juridique humain formel et le code de contrat intelligent.
Le grand livre
Le concept de registre dans Corda est subjectif. Il n'y a pas d'entrepôt de données central unique. Au lieu de cela, chaque nœud gère une base de données distincte des faits qui lui sont connus.
Par exemple, imaginez un réseau de 5 nœuds, où le cercle est un fait connu du nœud.

Comme nous pouvons le voir, Ed, Carl et Demi connaissent le fait 3, et Alice et Bob ne le soupçonnent même pas. Corda garantit la conservation des faits généraux dans la base de données de chaque nœud, et les données seront identiques.
États
Un état est un objet
immuable , qui est un fait connu d'un ou de plusieurs nœuds de 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 est un IOU - un accord qu'Alice doit à Bob le montant de X:
Le cycle de vie d'un fait au fil du 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'actuel comme historique.

Les transactions
Les transactions sont des suggestions pour mettre à jour le grand livre-a. Ils ne sont pas diffusés à tous les participants du grand livre et ne sont disponibles que pour les membres 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:
- contrat valide
- signé par tous les participants nécessaires
- ne contient pas de déchets doubles (dépenses doubles)
Corda utilise le modèle UTXO (sortie de transaction non dépensée), dans lequel chaque état du registre est immuable.
Lorsqu'une transaction est créée, l'état d'entrée de la transaction précédente (par hachage et index) est transmis à l'entrée.
Cycle de vie des transactions:
- Création (Pour le moment, la transaction n'est qu'une proposition de mise à niveau du grand livre-a)
- Collection de signatures (les participants obligatoires à la transaction approuvent la proposition de mise à jour en ajoutant une signature à la transaction)
- Transmettre la validation dans le grand livre
Après avoir ajouté une transaction au grand livre, les états d'entrée sont marqués comme historiques et ne peuvent pas être utilisés dans les transactions futures.
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 vacances, convertisseur de devises)
- Fenêtres temporaires (période de validité)
- Notaire (Notaire, membres du réseau spécial, validation des transactions)
Contrats
Lorsque nous parlons de validité de transaction, nous entendons non seulement la disponibilité des signatures nécessaires, mais également la validité du contrat. 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() } }
Vous devez hériter de la classe
Contract et remplacer la méthode de
vérification . En cas de validation non valide, une exception est levée.
La vadidation des transactions doit être déterministe, c'est-à-dire Le contrat doit toujours accepter ou refuser la transaction. À cet égard, la validité d'une transaction ne peut pas dépendre de l'heure, des nombres aléatoires, des fichiers hôtes, etc.
Chez Corda, les contrats sont exécutés dans ce que l'on appelle le bac à sable, une machine virtuelle Java légèrement modifiée qui garantit l'exécution déterministe des contrats.
Streams
Pour automatiser la communication des hôtes, des threads ont été ajoutés.
Un flux est une séquence d'étapes qui indique au nœud comment effectuer une mise à jour de grand livre spécifique, auquel cas il est nécessaire de signer et de valider la transaction.

Parfois, il faut des heures, des jours pour que la transaction soit signée par toutes les parties et se termine dans le grand livre. Que se passe-t-il si vous déconnectez le nœud impliqué dans la transaction? Les flux ont des points d'arrêt au niveau desquels l'état du flux est écrit dans la base de données de nœuds. Lors de la restauration d'un nœud dans le réseau, il continuera à partir de l'endroit où il s'est arrêté.
Consensus
Pour entrer dans le grand livre, une transaction doit atteindre 2 consensus: sur la validité et sur l'unicité.
La décision sur la validité d'une transaction n'est prise que par les parties directement impliquées.
Les nœuds notariés vérifient l'unicité de la transaction, empêchent les dépenses doubles.
Supposons que Bob ait 100 $ et qu'il veuille transférer 80 $ à Charlie et 70 $ à Dan en utilisant le même état d'entrée.

Une telle astuce que Corda ne permettra pas de lancer. Bien que la transaction réussisse le contrôle de validation, le contrôle d'unicité échouera.
Conclusion
La plateforme Corda, développée par le consortium R3 blockchain, n'est pas un pur exemple d'utilisation de la technologie blockchain. Corda est un outil hautement spécialisé pour les institutions financières.