Un regard détaillé sur la blockchain non blockchain
Au fil du temps, le monde de la blockchain s'est séparé en deux parties distinctes. D'une part, les blockchains publiques avec leurs crypto-monnaies associées ont connu un retour récent remarquable, frappant de nombreux multimillionnaires. D'un autre côté, l'utilisation de chaînes de blocs autorisées ou d'entreprise a augmenté de manière silencieuse mais constante, voyant leur première déploiements en direct dans plusieurs secteurs en 2017.
Une question intéressante à considérer est le niveau approprié de similitude entre ces deux types de chaînes. Les deux implémentent une base de données partagée utilisant un réseau peer-to-peer, une cryptographie à clé publique-privée, des règles de transaction et des mécanismes de consensus qui peuvent survivre à des acteurs malveillants. C'est beaucoup de terrain d'entente. Néanmoins, les blockchains publiques et privées ont des exigences différentes en termes de confidentialité, d'évolutivité et de gouvernance. Ces différences indiquent peut-être la nécessité de conceptions radicalement divergentes.
Les Corde plateforme, développée par le R3 consortium bancaire, adopte une position claire sur cette question. Alors que certains aspects ont été inspirés par les blockchains publiques, Corda a été conçu à partir de zéro en fonction des besoins des membres de R3. En effet, bien que R3 utilise toujours le mot «blockchain» précieux pour aider à commercialiser leur produit, Corda n'a aucune chaîne de blocs. Plus que toute autre plateforme de «grand livre distribué» que je connaisse, Corda s'écarte radicalement de l'architecture des blockchains conventionnelles.
Mon objectif dans cet article est d'expliquer ces différences et de discuter de leurs implications, en bien et en mal. En fait, le bien et le mal ne sont pas la bonne façon de le dire, car la question la plus intéressante est "Bon et mauvais pour quoi?" Cet article est loin d'être court. Mais à la fin, j'espère que les lecteurs comprendront mieux les différences de Corda et leurs compromis qui en découlent. Corda est important car ses décisions de conception mettent en évidence de nombreux dilemmes des blockchains d'entreprise.
Une dernière chose avant de plonger. En tant que PDG de la société derrière MultiChain, une plate-forme de blockchain d'entreprise populaire, pourquoi est-ce que j'écris en profondeur sur un produit prétendument concurrent? La raison standard serait de faire valoir la supériorité de MultiChain, mais ce n'est pas ma motivation ici. En fait, je ne vois pas Corda et MultiChain comme des concurrents, car ils sont fondamentalement différents en termes de design, d'architecture et d'audience. Corda et MultiChain rivalisent de la même manière que les paquebots de croisière et les jet-skis - alors que les deux transportent des personnes par mer, il n'y a presque pas de situations réelles dans lesquelles les deux pourraient être utilisés.
Sur une note plus personnelle, j'ai beaucoup appris du leadership technique de Corda au cours des dernières années, que ce soit à travers des réunions, des correspondances ou leurs écrits publics, dont une grande partie a eu lieu avant qu'ils ne rejoignent R3. Une partie de mon intérêt pour Corda découle du respect que j'ai pour cette équipe, et pour cette seule raison, Corda vaut la peine d'être étudiée pour quiconque cherche à comprendre le domaine du grand livre distribué.
Présentation des blockchains
Pour comprendre Corda, il est utile de commencer avec des blockchains conventionnelles. Le but d'une blockchain est de permettre à une base de données ou un registre d'être partagé directement et en toute sécurité par des parties non confiantes. Cela contraste avec les bases de données centralisées, qui sont stockées et contrôlées par une seule organisation. Une blockchain a plusieurs «nœuds», dont chacun stocke une copie de la base de données et peut appartenir à une organisation différente. Les nœuds se connectent les uns aux autres de manière dense peer-to-peer, en utilisant un «protocole de potins» dans lequel chaque nœud dit constamment à ses pairs tout ce qu'il apprend. En conséquence, n'importe quel nœud peut diffuser rapidement un message à l'ensemble du réseau via de nombreux chemins alternatifs.
Une base de données, qu'elle soit centralisée ou alimentée par la blockchain, commence dans un état vide et est mise à jour via des «transactions». Une transaction est définie comme un ensemble de modifications de base de données qui sont «atomiques», ce qui signifie qu'elles réussissent ou échouent dans leur ensemble. Imaginez une base de données représentant un grand livre financier, avec une ligne par compte. Une transaction dans laquelle Alice paie 10 $ à Bob comporte trois étapes: (1) vérifier que le compte d'Alice contient au moins 10 $, (2) soustraire 10 $ du compte d'Alice et (3) ajouter 10 $ au compte de Bob. En tant qu'exigence de base, toute plate-forme de base de données doit garantir qu'aucune transaction n'interfère avec une autre. Cet «isolement» est obtenu en verrouillant les lignes pour Alice et Bob pendant que le paiement est en cours. Toute autre transaction impliquant ces lignes doit attendre que celle-ci soit terminée.
Dans une blockchain, chaque nœud traite indépendamment chaque transaction sur sa propre copie de la base de données. Les transactions sont créées n'importe où sur le réseau et propagées automatiquement à tous les autres nœuds. Étant donné que les organisations exécutant des nœuds peuvent avoir des intérêts différents (voire contradictoires), elles ne peuvent pas se faire confiance pour effectuer des transactions équitablement. Les blockchains ont donc besoin de règles qui définissent si une transaction particulière est valide ou non. Dans un grand livre financier partagé, ces règles empêchent les utilisateurs de dépenser de l'argent les uns des autres ou de conjurer des fonds de rien.
Outre les règles qui déterminent la validité des transactions, les blockchains doivent également définir comment les transactions seront ordonnées, car dans de nombreux cas, cet ordre est essentiel. Si Alice a 15 $ et essaie d'envoyer 10 $ à la fois à Bob et à Charlie dans deux transactions distinctes, un seul de ces paiements peut réussir. Alors que nous pourrions aimer dire que la première transaction a la priorité, un réseau peer-to-peer n'a pas de définition objective de «premier», car les messages peuvent arriver à différents nœuds dans des ordres différents.
Règles de transaction
Dans un sens général, les informations de toute base de données sont séparées en enregistrements ou «lignes», et une transaction peut faire trois choses différentes: supprimer des lignes, créer des lignes et / ou modifier des lignes. Celles-ci peuvent être réduites à deux, car modifier une ligne équivaut à supprimer cette ligne et à en créer une nouvelle à sa place. Pour revenir au paiement d'Alice à Bob, sa ligne contenant 15 $ est supprimée, et deux nouvelles lignes sont créées - une contenant 10 $ pour Bob et l'autre avec 5 $ en «change» pour Alice.
En suivant la terminologie de bitcoin et de Corda, nous désignons les lignes supprimées par une transaction comme ses «entrées» et celles créées comme ses «sorties». Toute ligne supprimée par une transaction doit avoir été créée par une transaction précédente. Par conséquent, chaque entrée de transaction consomme (ou «dépense») la sortie d'une transaction précédente. Le contenu à jour de la base de données est défini par l'ensemble des «sorties de transaction non dépensées» ou «UTXO».
Dans une blockchain, une transaction est valide si elle remplit les trois conditions suivantes:
- Correction. La transaction doit représenter une transformation légitime des entrées aux sorties. Par exemple, dans un grand livre financier, la quantité totale de fonds dans les intrants doit correspondre au total dans les extrants, pour éviter que l'argent n'apparaisse ou disparaisse comme par magie. Les seules exceptions sont les opérations spéciales d '«émission» ou de «retrait», dans lesquelles des fonds sont explicitement ajoutés ou supprimés.
- Autorisation. La transaction doit être autorisée par le propriétaire de chaque sortie consommée par ses entrées. Dans un grand livre financier, cela empêche les participants de se dépenser mutuellement sans autorisation. L'autorisation de transaction est gérée à l'aide de la cryptographie asymétrique (ou à clé publique-privée). Chaque ligne a un propriétaire, identifié par une clé publique, dont la clé privée correspondante est gardée secrète. Pour être autorisée, une transaction doit être signée numériquement par le propriétaire de chacune de ses entrées. (Notez que les lignes peuvent également avoir des propriétaires «multisignatures» plus complexes, par exemple lorsque deux parties sur trois peuvent autoriser leur utilisation.)
- Unicité. Si une transaction consomme une sortie particulière, aucune autre transaction ne peut la consommer à nouveau. C'est ainsi que nous empêchons Alice d'effectuer des paiements contradictoires à la fois à Bob et à Charlie. Bien que les transactions pour ces deux paiements puissent être correctes et autorisées, la règle d'unicité garantit qu'un seul sera traité par la base de données.
Dans une blockchain conventionnelle, chaque nœud vérifie chaque transaction en fonction de ces trois règles. Plus tard, nous verrons comment Corda répartit différemment cette responsabilité.
Blocs de construction
Une blockchain est littéralement une chaîne de blocs, dans laquelle chaque bloc est lié au précédent via un «hachage» qui identifie de manière unique son contenu. Chaque bloc contient un ensemble ordonné de transactions qui ne doivent pas entrer en conflit les unes avec les autres ou avec celles des blocs précédents, ainsi qu'un horodatage et d'autres informations. Tout comme les transactions, les blocs se propagent rapidement sur le réseau et sont vérifiés indépendamment par chaque nœud. Une fois qu'une transaction apparaît dans un bloc, elle est «confirmée», ce qui conduit les nœuds à rejeter toute transaction conflictuelle.
Qui est responsable de la création de ces blocs et comment pouvons-nous être sûrs que tous les nœuds seront d'accord sur la chaîne faisant autorité? Cette question des «algorithmes de consensus» est un vaste sujet en soi, rempli d'acronymes merveilleux tels que PoW (Proof of Work), PBFT (Practical Byzantine Fault Tolerance) et DPoS (Delegated Proof of Stake). Nous n'entrerons pas dans tout cela ici. Autant dire que les blockchains autorisées pour les entreprises utilisent une sorte de système de vote, où les votes sont accordés à des «nœuds de validation» qui sont collectivement responsables. Le schéma garantit que, tant qu'une bonne majorité de nœuds de validation fonctionnent correctement et honnêtement, les transactions entreront dans la chaîne dans un ordre (proche de) équitable, les horodatages seront (approximativement) corrects et les transactions confirmées ne pourront pas être annulées ultérieurement.
Avant de discuter de certains des défis des blockchains, j'aimerais clarifier trois points supplémentaires. Premièrement, alors que j'utilise un grand livre financier par exemple tout au long de cet article, le modèle d'entrée-sortie des transactions prend en charge une variété beaucoup plus large de cas d'utilisation. Chaque ligne peut contenir un objet de données riches (pensez JSON) contenant de nombreux types d'informations différents - en effet, Corda utilise le mot «état» plutôt que «ligne» pour cette raison. Des états plus riches ne changent rien de fondamental aux règles de transaction: l'exactitude est toujours définie en termes d'entrées et de sorties, une autorisation est toujours requise pour chaque entrée et l'unicité garantit que chaque sortie ne peut être dépensée qu'une seule fois.
Deuxièmement, il existe de nombreux cas d'utilisation de la blockchain dans lesquels les lignes ne sont créées que dans la base de données et ne sont jamais supprimées. Ces applications concernent le stockage général des données, l'horodatage et la notarisation, plutôt que la gestion d'une sorte de grand livre en évolution. Dans ces applications de données uniquement, les transactions ajoutent des données dans leurs sorties mais n'en consomment aucune dans leurs entrées, ce qui permet de simplifier les règles d'exactitude, d'autorisation et d'unicité. Bien que les cas d'utilisation de données uniquement soient une priorité croissante de notre propre développement chez MultiChain, je les mentionne seulement en passant ici, car Corda n'a clairement pas été conçu avec eux à l'esprit.
Enfin, il convient de noter que certaines plates-formes blockchain n'utilisent pas de modèle d'entrée-sortie. Ethereum présente un paradigme alternatif, dans lequel la chaîne contrôle un ordinateur virtuel avec un état global géré par des «contrats», et les transactions ne se connectent pas explicitement les unes aux autres. Une discussion du modèle d'Ethereum dans les blockchains autorisées dépasse notre portée ici, mais voir cet article pour une explication détaillée et une critique. L'un des principaux avantages du paradigme des entrées-sorties est que la plupart des transactions peuvent être traitées en parallèle et indépendamment les unes des autres. Cette propriété est cruciale pour Corda, comme nous le verrons plus tard.
Défis blockchain
Imaginons que les banques du monde aient créé un registre partagé pour représenter la propriété, le transfert et l'échange d'une variété d'actifs financiers. En théorie, cela pourrait être implémenté sur une blockchain régulière, comme décrit ci-dessus. Chaque ligne contiendrait trois colonnes - un identifiant d'actif tel que GOOG ou USD, la quantité détenue et la clé publique du propriétaire. Chaque transaction transfère un ou plusieurs actifs de ses entrées à ses sorties, avec des cas particuliers d'émission et de retrait.
Chaque banque du réseau exécuterait un ou plusieurs nœuds qui se connectent aux autres, propageant et vérifiant les transactions. Les membres seniors agiraient en tant que validateurs, avec la responsabilité collective de confirmer, ordonner et horodater les transactions. Toute mauvaise conduite du validateur serait visible par tous les nœuds du réseau, entraînant la censure, le bannissement et / ou des poursuites judiciaires. Avec tout cela en place, tout actif financier pourrait être déplacé à travers le monde en quelques secondes, les règles d'exactitude, d'autorisation et d'unicité garantissant l'intégrité du grand livre.
Quel est le problème avec cette image? En fait, il y a trois problèmes: l'évolutivité, la confidentialité et l'interopérabilité. La question de l'évolutivité est assez simple. Notre proposition de blockchain interbancaire obligerait chaque membre à vérifier, traiter et stocker chaque transaction effectuée par chaque banque dans le monde. Même si cela était techniquement faisable pour les plus grandes institutions financières, le coût de calcul et de stockage créerait un obstacle important pour beaucoup. Nous préférerions certainement un système dans lequel les participants ne voient que les transactions dans lesquelles ils sont immédiatement impliqués.
Mais mettons l'évolutivité de côté, car elle peut finalement être résolue à l'aide d'ordinateurs coûteux et d'une ingénierie intelligente. Une question plus fondamentale est la confidentialité. S'il peut sembler utopique que chaque transaction soit visible partout, dans le monde réel, une telle transparence radicale est un échec en termes de concurrence et de réglementation. Si JP Morgan et HSBC échangent une paire d'actifs, ils ne voudront probablement pas que Citi et la Banque de Chine voient ce qu'ils ont fait. Si la transaction était effectuée pour le compte des clients de ces banques, il pourrait être illégal pour elles de l'exposer de cette manière.
Une solution proposée au problème de la confidentialité est les «canaux», tels qu'ils sont mis en œuvre dans Hyperledger Fabric. Chaque canal a certains membres, qui sont un sous-ensemble des nœuds du réseau dans son ensemble. Les transactions d'un canal ne sont visibles que par ses membres, de sorte que chaque canal agit efficacement comme une blockchain distincte. Bien que cela contribue à la confidentialité, cela sape également le point entier de l'exercice. Les actifs ne peuvent pas être déplacés d'un canal à un autre sans l'aide d'un intermédiaire de confiance qui est actif sur les deux. La difficulté de cette approche a été récemment mise en évidence par SWIFT réconciliation preuve de concept, qui estimait que plus de 100,000 100,000 chaînes seraient nécessaires pour la production. Cela représente XNUMX XNUMX îles entre lesquelles les actifs ne peuvent pas être déplacés directement.
Dans les cas d'utilisation de données uniquement, où les transactions ne consomment pas de données dans les entrées, le problème de confidentialité peut être contourné en chiffrant ou en hachant les données dans les sorties, et en fournissant la clé de déchiffrement ou les données non hachées en dehors de la chaîne. Mais pour une transaction dont les entrées consomment les sorties d'autres transactions, chaque nœud doit voir ces entrées et sorties afin de valider la transaction. Alors que les techniques cryptographiques avancées telles que actifs confidentiels ainsi que zéro preuve de connaissance ont été développés pour résoudre partiellement ou complètement ce problème pour les grands livres financiers, ceux-ci imposent une charge de performance significative et / ou ne peuvent être généralisés à aucune règle de correction.
Enfin, parlons d'interopérabilité. Dans un monde idéal, chaque banque rejoindrait immédiatement notre blockchain mondiale le jour de son lancement. En réalité cependant, plusieurs blockchains seraient adoptées par différents groupes de banques, en fonction de la géographie ou de relations préexistantes. Au fil du temps, un membre d'un groupe peut souhaiter commencer à traiter avec un membre d'un autre, en transférant un actif entre les chaînes. Tout comme avec les canaux, cela ne peut être réalisé qu'avec l'aide d'un intermédiaire de confiance, ce qui va à l'encontre de l'objectif de la blockchain.
Corda vise à résoudre ces problèmes interdépendants d'évolutivité, de confidentialité et d'interopérabilité en repensant radicalement le fonctionnement des registres distribués.
Vue partielle de Corda
La différence fondamentale dans Corda est facile à expliquer: chaque nœud ne voit qu'une partie, plutôt que la totalité, des transactions traitées sur le réseau. Alors qu'un seul grand livre logique et conceptuel est défini par toutes ces transactions, aucun nœud individuel ne voit ce grand livre dans son intégralité. Pour faire une comparaison, à tout moment, chaque billet d'un dollar dans le monde est dans un endroit particulier, mais personne ne sait où ils sont tous.
Alors, quelles transactions un nœud Corda voit-il? Tout d'abord, celles dans lesquelles elle est directement impliquée, car elle possède l'une des entrées ou sorties de cette transaction. Dans un grand livre financier, cela inclut toutes les transactions dans lesquelles un nœud envoie ou reçoit des fonds. Disons qu'Alice crée une transaction qui la consomme 15 $ en entrée et a deux sorties - une avec 10 $ pour moi, et l'autre avec 5 $ en «change» pour elle. Une fois qu'Alice m'a envoyé cette transaction, je peux la vérifier pour l'exactitude et l'autorisation, en vérifiant que les entrées et les sorties s'équilibrent et qu'Alice a signé.
Cependant, cette transaction à elle seule ne suffit pas. Je dois également vérifier que l'état d'entrée à 15 $ d'Alice existe vraiment, et qu'elle ne l'a pas simplement inventé. Cela signifie que j'ai besoin de voir la transaction qui a créé cet état et de la vérifier également pour son exactitude et son autorisation. Si cette transaction précédente, qui a envoyé à Alice 15 $, a une entrée de 10 $ appartenant à Denzel et une autre entrée de 5 $ d'Eric, alors je dois également vérifier les transactions qui les ont créées. Et ainsi de suite, tout le chemin du retour à la transaction originale «d'émission» dans laquelle l'actif a été créé. Le nombre de transactions que je dois vérifier dépendra du nombre de fois où les actifs ont changé de mains et de l'étendue de la ramification à l'envers.
Puisque les nœuds Corda ne voient pas automatiquement chaque transaction, comment obtiennent-ils celles dont ils ont besoin? La réponse vient de l'expéditeur de chaque nouvelle transaction. Avant qu'Alice ne crée une transaction consommant ses 15 $, elle doit déjà avoir vérifié la transaction dans laquelle elle l'a reçue. Et comme Alice doit avoir appliqué la technique récursive ci-dessus, elle aura une copie de chaque transaction nécessaire à cette vérification. Bob demande simplement ces transactions à Alice dans le cadre de leur interaction. Si Alice ne répond pas de manière appropriée, Bob conclut qu'Alice essaie de le tromper et rejette le paiement entrant. Dans le cas où Bob reçoit une nouvelle transaction dont les entrées ont plusieurs propriétaires, il peut obtenir les preuves nécessaires de chacun.
Présentation des notaires
Jusqu'à présent, nous avons expliqué comment Bob peut vérifier l'exactitude et l'autorisation d'une transaction entrante, y compris en retraçant de manière récursive les origines de ses entrées. Mais il y a une autre règle à laquelle nous devons réfléchir: l'unicité. Disons qu'Alice est malveillante. Elle peut générer une transaction dans laquelle elle paie 10 $ à Bob et une autre dans laquelle elle paie les mêmes 10 $ à Charlie. Elle peut envoyer ces transactions à Bob et Charlie respectivement, accompagnées d'une preuve complète d'exactitude et d'autorisation de chacune. Bien que les deux transactions soient en conflit l'une avec l'autre en consommant le même état, il n'y a aucun moyen pour Bob et Charlie de le savoir.
Les blockchains conventionnelles résolvent ce problème en voyant chaque transaction par chaque nœud, rendant les conflits faciles à détecter et à rejeter. Alors, comment Corda, avec sa visibilité partielle sur les transactions, résout le même problème? La réponse est avec l'aide d'un «notaire». Un notaire est une partie de confiance (ou des parties travaillant ensemble) qui garantit qu'un État particulier n'est consommé qu'une seule fois. Chaque état a un notaire spécifique, qui doit signer toute transaction dans laquelle cet état est consommé. Une fois que le notaire a fait cela, il ne doit pas signer une autre transaction pour le même état. Les notaires sont les gardiens du réseau de l'unicité des transactions.
Alors que chaque état peut avoir un notaire différent, tous les états consommés par une transaction particulière doivent être affectés au même. Cela évite les problèmes liés aux blocages et à la synchronisation, qui devraient être familiers aux personnes ayant une expérience des bases de données distribuées. Disons qu'Alice et Bob acceptent d'échanger les 10 $ d'Alice contre 7 £ de Bob. La transaction pour cet échange doit être signée par les notaires des deux états, mais lequel est le premier? Si le notaire d'Alice signe mais que celui de Bob échoue pour une raison quelconque, Alice se retrouvera alors avec une transaction incomplète et ne pourra plus jamais utiliser ses 10 $. Si Bob signe d'abord, il est également exposé. Si nous souhaitons peut-être que les notaires travaillent simplement ensemble, cela nécessite en pratique une confiance mutuelle et l'utilisation d'un protocole consensuel, complications que les concepteurs de Corda ont choisi d'éviter.
Si des états avec différents notaires sont requis comme entrées pour une seule transaction, leurs propriétaires exécutent d'abord des transactions spéciales de «changement de notaire», qui déplacent un état d'un notaire à un autre, sans rien changer d'autre. Ainsi, lorsque les parties construisent une transaction avec plusieurs entrées, elles doivent d'abord s'entendre sur le notaire à utiliser, puis effectuer les changements de notaire nécessaires. Bien que le développeur en moi ait ressenti un petit pincement au cœur en lisant cette solution de contournement, il n'y a aucune raison pour que cela ne fonctionne pas tant que les notaires jouent le jeu.
Il convient également de préciser que, si chaque notaire est un acteur logique unique en termes de signature des transactions, il n'est pas nécessaire qu'il soit sous le contrôle d'une seule partie. Un groupe d'organisations pourrait diriger un notaire collectivement, en utilisant un protocole de consensus approprié dans lequel une majorité des participants est nécessaire pour générer une signature valide. Cela empêcherait toute partie malveillante de saper l'unicité en signant des transactions en conflit. En théorie, nous pourrions même permettre à chaque nœud du réseau de participer à ce type de notarisation partagée, bien que dans ce cas, nous serions plus ou moins revenus à une blockchain conventionnelle.
Prendre le score
Récapitulons les principales différences entre Corda et les blockchains conventionnelles. Dans Corda, il n'y a pas de blockchain unifiée contenant toutes les transactions confirmées. Les nœuds ne voient que les transactions dans lesquelles ils sont directement impliqués ou dont ils dépendent historiquement. Les nœuds sont responsables de la vérification de l'exactitude et de l'autorisation des transactions, mais s'appuient sur des notaires de confiance pour vérifier l'unicité.
Bien sûr, il y a beaucoup plus à Corda que cela: l'utilisation de certificats numériques pour authentifier l'identité, des «cartes réseau» pour aider les nœuds à se trouver et se faire confiance, des «contrats» par état qui définissent l'exactitude du point de vue de chaque version déterministe de la machine virtuelle Java qui exécute ces contrats, des «flux» qui automatisent les négociations de transaction, des «fenêtres temporelles» qui restreignent les transactions dans le temps, des «oracles» qui attestent de faits externes et des «CorDapps» qui regroupent de nombreux éléments pour une distribution facile . Bien que chacune de ces fonctionnalités soit intéressante, des équivalents pour tous peuvent être trouvés dans d'autres plates-formes blockchain. Mon objectif dans cet article est de me concentrer sur ce qui rend Corda unique.
Alors Corda tient-elle sa promesse? Résout-il les problèmes d'évolutivité, de confidentialité et d'interopérabilité des blockchains? Et en faisant ses choix particuliers, quel prix Corda paie-t-elle?
Plus évolutif, parfois
Commençons par l'évolutivité. Ici, l'avantage de Corda apparaît clair, puisque les nœuds ne voient que certaines des transactions d'un réseau. Dans une blockchain classique, le débit maximal est limité par la vitesse du nœud le plus lent dans le traitement des transactions. En revanche, un réseau Corda pourrait traiter un million de transactions par seconde, alors que chaque nœud n'en voit qu'une infime partie. L'évolutivité s'étend également aux notaires, car la tâche de signature des transactions pour l'unicité peut être répartie entre de nombreux notaires différents, chacun étant responsable d'une petite proportion des états du réseau.
Cela dit, il existe une situation dans laquelle Corda fonctionne bien pire qu'une blockchain. Cela se produit lorsqu'un nœud reçoit une nouvelle transaction qui dépend de nombreuses autres transactions qu'il n'a pas vues auparavant. Imaginez un actif très liquide qui a été émis il y a 10 ans et qui change de mains toutes les cinq minutes environ. Le chemin entre toute nouvelle transaction et l'émission de cet actif durera plus d'un million de transactions. Lorsqu'un nœud reçoit cet actif pour la première fois, il doit récupérer ces millions de transactions auprès de l'expéditeur et les vérifier à son tour. À un taux (assez optimiste) de 1000 transactions par seconde, il y aurait un délai de 17 minutes avant que le destinataire puisse envoyer l'actif - clairement trop long pour quelque chose d'aussi liquide.
Pourquoi les blockchains ne souffrent-elles pas de ce problème? Étant donné que les nœuds voient et vérifient chaque transaction à mesure qu'elle se produit, ils mettent constamment à jour l'état du grand livre et savent exactement à qui appartient chaque actif à l'heure actuelle. Même si un nœud n'a jamais détenu un actif particulier auparavant, il peut vérifier instantanément la transaction dans laquelle il le reçoit, puis l'envoyer immédiatement. Pour le dire autrement, les nœuds de blockchain doivent vérifier les transactions qui peuvent ne pas être pertinentes pour eux, mais ce faisant, ils paient à l'avance le coût de la vérification de toute transaction future qui pourrait arriver. Bien que les nœuds Corda soient globalement moins occupés, ils exécutent le risque de devoir effectuer une énorme quantité de travail à tout moment. Il n'y a rien d'évolutif à ce sujet.
Un peu plus confidentiel
Passons à la confidentialité. Dans Corda, les nœuds ne voient que certaines des transactions d'un réseau, ce qui signifie indéniablement une meilleure confidentialité que les blockchains conventionnelles. Néanmoins, Corda est loin de résoudre le problème de confidentialité, car les nœuds voient encore certaines transactions qui ne sont pas leurs affaires. Pour prendre un exemple simple, si Alice paie 10 $ à Bob, alors Bob envoie ces 10 $ à Charlie, le nœud de Charlie doit voir la transaction entre Alice et Bob, même si cela ne l'implique pas. Au moment où Alice a payé Bob, elle n'avait aucun moyen de savoir qui pourrait voir cette transaction à l'avenir, et n'importe qui pourrait la recevoir à tout moment.
Pour être honnête, les développeurs de Corda sont conscients de ce problème et en discutent au chapitre 15 de leur Livre blanc technique. Le document suggère des stratégies simples telles que l'utilisation de plusieurs clés publiques par entité ou la réduction de la traçabilité en retournant les actifs aux émetteurs pour réémission (similaire aux «mixeurs de pièces» de crypto-monnaie). Il mentionne également des possibilités futures plus avancées telles que l'utilisation de réseaux d'anonymisation de type Tor pour masquer les adresses IP des participants et tirer parti des preuves de connaissance zéro ou d'Intel. enclaves sécurisées pour valider les transactions sans révéler leur contenu. Bien que toutes ces suggestions soient valides, elles peuvent également être appliquées à des blockchains classiques en utilisant le modèle d'entrée-sortie, et ont effectivement été dans des crypto-monnaies telles que Dash, Zcash et Verge. Le seul avantage unique de Corda en termes de confidentialité reste donc sa visibilité réduite des transactions - une solution au mieux incomplète.
Tout dans l'élevage
Pour mieux comprendre l'évolutivité et l'avantage de confidentialité de Corda, nous devons noter en quoi cela dépend de la densité et du chevauchement des relations entre les transactions. Imaginez un «arbre généalogique» des transactions effectuées dans un réseau, dans lequel les parents de chaque transaction sont les précédents dont elle dépend immédiatement. Plus précisément, lorsque la sortie d'une transaction est consommée par l'entrée d'une autre, nous dessinons une flèche représentant la relation parent-enfant. Les transactions peuvent avoir n'importe quel nombre de parents et d'enfants, bien que dans la plupart des cas, nous n'en attendions que quelques-uns.
Compte tenu de cet arbre généalogique, nous définissons les ancêtres d'une transaction comme ses parents, grands-parents, arrière-grands-parents, etc. Les «Adam et Eve» de notre arbre sont les opérations d'émission qui ont créé des actifs et n'ont pas de parents propres. Comme dans les arbres généalogiques ordinaires, deux transactions ne peuvent pas être des ancêtres l'une de l'autre. En termes informatiques formels, il s'agit d'un Graphe acyclique dirigé ou DAG, dans lequel l'ascendance est définie comme la fermeture transitive de la relation parentale.
Rappelez-vous que lorsqu'un nœud Corda traite une transaction, il doit télécharger et vérifier tous les ancêtres de cette transaction, à l'exception de ceux qu'il a déjà vus. Donc, si l'arbre généalogique est profond, les nouvelles transactions entrantes peuvent avoir un grand nombre d'ancêtres qui doivent être vérifiés, ce qui déclenche le problème d'évolutivité de Corda. De plus, si l'arbre généalogique contient un degré élevé de métissage, les ancêtres d'une nouvelle transaction peuvent inclure la plupart ou la plupart des transactions passées dans le réseau. Dans ce cas, Corda offrira peu d'avantages en termes de confidentialité.
En revanche, si l'arbre généalogique des transactions est peu profond et contient de nombreuses îles déconnectées qui n'interagissent pas les unes avec les autres, les avantages de Corda se manifestent. Les nœuds n'auront jamais besoin de vérifier un grand nombre de transactions à la fois et peuvent rester dans l'ignorance de la majorité des transactions qui ne sont pas liées aux leurs. S'il est utilisé comme grand livre financier, nous pourrions dire que Corda est idéal pour les marchés très fragmentés dont les actifs changent rarement de mains.
L'interopérabilité pour la victoire
Voici un domaine dans lequel Corda brille vraiment. Imaginez deux réseaux Corda séparés, avec différents ensembles d'actifs et de participants. À un moment donné, un participant d'un réseau souhaite envoyer un actif à quelqu'un de l'autre. Contrairement aux blockchains conventionnelles, il n'y a aucune attente qu'un nœud aura vérifié toutes les transactions passées, de sorte que le nœud recevant ce nouvel actif ne connaîtra rien d'inhabituel. Lorsque la transaction arrive, il demande et vérifie simplement l'historique pertinent, sans savoir qu'il s'agit d'un «réseau séparé». Pour étirer un cliché, nous pourrions dire qu'il n'y a pas d'étrangers à Corda - juste des amis qui ne se sont pas encore rencontrés.
En réalité, les choses ne sont pas aussi simples. Tout nœud Corda décide explicitement à quels notaires faire confiance, car un notaire qui se comporte mal peut provoquer un chaos financier. De plus, les nœuds ont besoin d'un «certificat» accordé par un «portier» pour se connecter à d'autres nœuds d'un réseau, car nous ne pouvons pas permettre à des membres aléatoires du public de commencer à se connecter aux nœuds et de gaspiller leurs ressources. Ainsi, avant qu'un nœud sur un réseau puisse commencer à demander et à vérifier les transactions d'un autre réseau, il devra ajouter à sa liste de notaires de confiance et obtenir le certificat approprié. Bien que cela implique une configuration et une administration manuelles, c'est le minimum auquel on peut s'attendre pour un système de cette nature. Dans l'ensemble, il est juste de conclure que l'interopérabilité est la grande victoire de Corda sur les blockchains conventionnelles.
Réintermédiation
Il est temps de parler de désintermédiation, de l'éléphant dans la chambre de Corda. Dans le contexte des blockchains, la désintermédiation signifie que chaque participant peut vérifier par lui-même chaque transaction, sans dépendre du bon comportement des tiers. Dans mon avis, la désintermédiation est le principal avantage des blockchains par rapport aux bases de données centralisées, dans lesquelles tous les participants dépendent entièrement du propriétaire de cette base de données. Si les participants à un réseau ont un intermédiaire sur lequel ils peuvent compter et qu'il n'y a pas de justification commerciale ou réglementaire pour la désintermédiation, alors il y a pas de point en utilisant une blockchain. Les bases de données centralisées sont plus rapides et plus efficaces, et évitent le problème de la confidentialité des transactions.
Alors, les participants à un réseau Corda parviennent-ils à la désintermédiation? Eh bien, oui, oui et oui mais non. Pour la livraison des transactions, Corda coche la case, car les nœuds impliqués dans une transaction se parlent directement. En termes d'exactitude et d'autorisation, il est également en bon état, puisque chaque nœud est capable de vérifier ces propriétés par lui-même. Cependant, lorsqu'il s'agit de vérifier l'unicité des transactions, Corda échoue au test de désintermédiation. Les nœuds ne peuvent pas confirmer l'unicité par eux-mêmes, car ils ne voient pas toutes les transactions du réseau et la tâche est sous-traitée à des notaires de confiance.
Les participants Corda sont à la merci des notaires de plusieurs manières. Premièrement, un notaire peut refuser de signer une transaction, même si ses entrées consomment des sorties qui n'ont jamais été utilisées auparavant. Dans un grand livre financier, cela empêche quelqu'un d'envoyer ou d'échanger ses actifs. Deuxièmement, un notaire pourrait signer deux transactions conflictuelles qui consomment la même production, amenant deux parties à croire qu'elles ont reçu la même chose. Comme les deux destinataires de l'actif en double l'envoient ou l'échangent dans d'autres transactions, la contagion se propage et l'intégrité de l'ensemble du grand livre pourrait bientôt être compromise. Enfin, un notaire peut refuser de signer une transaction de «changement de notaire» pour transférer un État à un concurrent, tenant effectivement en otage le propriétaire de l'actif. Pour une transaction impliquant des États avec différents notaires, il est loin de dire que Corda introduit plus d'intermédiation qu'une base de données centralisée, car plusieurs tiers ont le contrôle.
Pour mettre ce risque en perspective, il convient de rappeler que les notaires Corda ne doivent pas être contrôlés par une seule organisation. Ils peuvent également être constitués d'un groupe de nœuds exécutant un algorithme de consensus pouvant tolérer les mauvais acteurs. Dans ce cas, un notaire fonctionnera bien tant que la plupart de ses nœuds membres respectent les règles. En surface, cela ressemble plutôt à une blockchain, qui dépend du bon comportement d'une majorité de validateurs. Cependant, à Corda, les risques sont nettement plus élevés. Le pire qu'une cabale de validateurs de blockchain puisse faire est d'empêcher la confirmation de certaines transactions. Un notaire Corda malveillant peut également signer des transactions conflictuelles, envoyant le registre dans un abîme incohérent.
Un animal étrange
En associant évolutivité, confidentialité, interopérabilité et désintermédiation, il est difficile de parvenir à un simple verdict sur l'alternative Corda. Dans l'ensemble, du point de vue de ce développeur de plate-forme blockchain, cela semble, eh bien ... convaincant mais étrange. Conçues pour résoudre les principaux problèmes d'évolutivité et de confidentialité, les solutions de Corda sont incomplètes et dépendent fortement de la forme de «l'arbre généalogique» de la transaction. Pourtant, pour remporter ces victoires partielles, Corda perd une propriété fondamentale des blockchains - la suppression des intermédiaires de transaction. Bien que Corda excelle sans aucun doute dans l'interopérabilité, est-ce vraiment suffisant?
Si nous voulions être sceptiques, nous pourrions dire que l'équipe de Corda s'est vue confier une tâche impossible: concevoir une saveur de blockchain qui conviendrait aux banques finançant R3. Mais le principal avantage des blockchains par rapport aux bases de données centralisées est la désintermédiation, qui se fait au prix d'une confidentialité réduite. Comment ce compromis pourrait-il avoir un sens pour les institutions financières qui gagnent de l'argent en agissant en tant qu'intermédiaires et sont très sensibles à la vie privée? Vu sous cet angle, on pourrait faire l'éloge de Corda comme un compromis héroïque mais finalement insatisfaisant entre le désir des membres de R3 de faire quelque chose de blockchainy, et les contraintes commerciales et réglementaires sous lesquelles ils existent.
Dépositaire 2.0
Mais je préfère adopter une approche plus positive. Au lieu de nous concentrer sur la comparaison avec les blockchains, nous pouvons considérer Corda comme une mise à niveau technique majeure vers le statu quo financier. Remplacez simplement le mot «notaire» par «dépositaire», et tout se passe plutôt bien. (UNE gardien est une institution financière qui détient des actifs pour le compte d'autrui.) Oui, les notaires sont des intermédiaires, qui peuvent à la fois bloquer les transactions et permettre à des conflits de se produire, mais cela est également vrai pour les dépositaires d'aujourd'hui. Une «opération de changement de notaire» peut être considérée comme le transfert d'actifs d'un dépositaire à un autre. Et les transactions Corda sont signées par un seul notaire pour la même raison que nous aimons que les échanges d'actifs aient lieu en un seul endroit - pour éviter que l'une ou l'autre des parties ne soit déboutée.
En regardant Corda de cette manière, nous pouvons voir comment il s'améliore par rapport au modèle de garde traditionnel:
- Il définit un paradigme et un format de calcul standard pour exprimer les actifs financiers et autres engagements contractuels.
- Il fournit un logiciel open source pour interpréter et exécuter ces engagements, garantissant que les parties à la transaction et les dépositaires s'entendent sur le résultat de chaque transaction.
- Des dépositaires multipartites complexes qui protègent contre les abus peuvent être créés (à l'aide de logiciels uniquement!) En tirant parti d'algorithmes de consensus tolérants aux pannes.
- Un processus standard («changement de notaire») est défini pour le transfert d'actifs entre dépositaires, et aucun dépositaire n'est autorisé à refuser.
- Les dépositaires ne peuvent pas utiliser un actif sous leur garde sans le consentement du propriétaire, puisque les transactions doivent également être signées par les propriétaires de leurs intrants.
Je suis loin d'être banquier, mais pour moi, tout cela semble plutôt prometteur. Et peut-être que Corda pourrait également être appliqué à d'autres industries avec des structures de garde complexes, telles que l'assurance ou le transport maritime. Si la conception de Corda ne permet pas la désintermédiation complète d'une blockchain, elle propose une transformation puissante pour les industries dans lesquelles les intermédiaires jouent un rôle essentiel.
Une fois que nous suivons cette ligne de pensée, une question se pose inévitablement: si nous confions déjà aux notaires le travail de vie ou de mort de vérifier l'unicité, pourquoi ne pas compter sur eux pour l'exactitude et l'autorisation également? Corda a déjà la notion de «notaire validateur», qui vérifie entièrement les transactions avant d'ajouter sa signature. Au lieu de télécharger et de vérifier les ancêtres de leurs transactions par des nœuds Corda réguliers, pourquoi ne pas simplement demander à un notaire? Cela pourrait contribuer à l'évolutivité et à la confidentialité, car la plupart des nœuds ne verraient aucune transaction autre que la leur. Nous pourrions même suggérer que les notaires d'un réseau se font totalement confiance, il n'y a donc pas lieu de s'inquiéter des ancêtres. Le notaire de chaque État pouvait se porter garant de sa validité, en ne vérifiant que la transaction qui l'a créée avec l'aide d'autres notaires.
Que Corda soit Corda
Tout cela nous ramène à notre point de départ: Corda n'est pas vraiment un concurrent des blockchains conventionnelles, MultiChain incluse. Corda est Corda - un nouveau type intéressant de grand livre distribué, qui a été optimisé pour les besoins de ceux qui le financent. Je ne sais pas si Corda réussira ou échouera en fin de compte, car je ne connais pas ses coûts et avantages réels par rapport à la façon actuelle de faire les choses. Mais peu importe ce qui se passera dans le futur, cela vaut certainement la peine d'être étudié en termes de philosophie et de design.
Quant à MultiChain, nous adoptons une approche différente. Pour voler une ligne de L'Aile Ouest, nous sommes déterminés à «laisser la blockchain devenir blockchain». Les blockchains sont ce qu'elles sont, et nous n'avons pas l'intention de les transformer en quelque chose de différent. En tant qu'infrastructure de données pour une application partagée, une blockchain représente un compromis spécifique par rapport à une base de données centralisée - un gain de désintermédiation au prix d'une confidentialité réduite. Et nous travaillons dur pour faire de MultiChain 2.0 le meilleur possible blockchain plate-forme à utiliser par les développeurs d'applications.
Veuillez poster vos commentaires sur LinkedIn.
Source : https://www.multichain.com/blog/2018/05/r3-corda-deep-dive-and-technical-review/
- Compte
- Acronymes
- infection
- Supplémentaire
- Avantage
- algorithme
- algorithmes
- Application
- applications
- architecture
- Réservé
- article
- atout
- Outils
- public
- autorisation
- Banque
- banque de Chine
- Services bancaires
- Banks
- LES MEILLEURS
- Projet de loi
- blockchain
- Box
- Développement
- Pack de blanchiment
- la performance des entreprises
- cas
- Causes
- CEO
- certificat
- certificats
- Change
- Voies
- vérification
- Contrôles
- enfant
- Enfants
- Chine
- Citi
- fermeture
- commentaires
- commercial
- Commun
- Société
- concurrence
- concurrents
- Informatique
- ordinateurs
- conflit
- Consensus
- consentement
- consommer
- contenu
- contenu
- contrats
- Corde
- Costs
- La création
- croisière
- cryptocurrencies
- crypto-monnaie
- de la cryptographie
- Courant
- Garde
- Clients
- JOUR
- Tiret
- données
- stockage de données
- Base de données
- bases de données
- journée
- affaire
- retarder
- livrer
- page de livraison.
- Conception
- Développeur
- mobiles
- Développement
- DID
- numérique
- Ledger distribué
- Dollar
- éléphant
- ENGINEERING
- Entreprise
- Ethereum
- échange
- Échanges
- Exercises
- .
- juste
- famille
- Mode
- Fonctionnalités:
- finalement
- la traduction de documents financiers
- Institutions financières
- fin
- Prénom
- première fois
- Focus
- le format
- plein
- financement
- fonds
- avenir
- Général
- Global
- blockchain mondiale
- Bien
- gouvernance
- l'
- Réservation de groupe
- Croissance
- ici
- Cacher
- Haute
- Surbrillance
- Histoire
- Comment
- HTTPS
- majeur
- idée
- Active
- Illégal
- Y compris
- secteurs
- d'information
- Infrastructure
- Institution
- les établissements privés
- Assurance
- l'interaction
- intérêt
- Interopérabilité
- impliqué
- IP
- émission
- vous aider à faire face aux problèmes qui vous perturbent
- IT
- Java
- Emploi
- rejoindre
- ACTIVITES
- clés
- spécialisées
- gros
- conduire
- Leadership
- conduisant
- savant
- Ledger
- Légal
- Niveau
- lumière
- Gamme
- Liquide
- Liste
- Location
- majeur
- Majorité
- Fabrication
- Marché
- Marchés
- Match
- réunions
- Membres
- mentions
- million
- modèle
- de l'argent
- Bougez
- multichaîne
- réseau et
- de mise en réseau
- réseaux
- nœuds
- Notion
- ouvert
- open source
- de commander
- passer commande
- Autre
- Autres
- propriétaire
- propriétaires
- Pain
- Papier
- paradigme
- parents
- Payer
- Paiement
- Paiements
- Personnes
- performant
- objectifs
- philosophie
- image
- plateforme
- Plateformes
- Populaire
- représentent
- prix
- la confidentialité
- Privé
- Produit
- Vidéo
- preuve
- propriété
- protéger
- public
- R3
- lecteurs
- en cours
- Réalité
- résumer
- Articles
- Règlement
- Les relations
- soulagement
- Exigences
- Ressources
- retraite
- Avis
- Analyse
- Courir
- pour le running
- Évolutivité
- Sciences
- MER
- voit
- sens
- set
- commun
- Livraison
- Shorts
- Signes
- étapes
- petit
- So
- Logiciels
- Solutions
- RÉSOUDRE
- vitesse
- Dépenses
- propagation
- pieu
- Commencer
- j'ai commencé
- Région
- États
- Statut
- storage
- Boutique
- STORES
- Les soutiens
- Surface
- combustion propre
- Technique
- tester
- El futuro
- En pensant
- des tiers
- fiable
- tolérance
- Traçabilité
- transaction
- Transactions
- De La Carrosserie
- Transparence
- transport
- La confiance
- Non haché
- us
- USD
- utilisateurs
- bord
- Vérification
- Voir
- Salle de conférence virtuelle
- machine virtuelle
- définition
- Vote
- attendez
- Ouest
- WHO
- Wikipédia
- gagner
- Activités principales
- world
- vaut
- écriture
- années
- Zcash
- zéro