Les plates-formes de registres distribués font peut-être l’objet de tout le battage médiatique, mais l’architecture de Bitcoin est plus sophistiquée que beaucoup de gens ne le pensent.
J’étais l’invité du Financial Services Club Scotland la semaine dernière. J’ai présenté une mise à jour sur le monde des crypto-monnaies à un public engagé et bien informé dans la bibliothèque du Royal College of Physicians.
J’ai repris mon thème actuel selon lequel le monde des « blockchains » est en réalité deux mondes distincts – le monde des registres de type Ripple et le monde des systèmes de type Bitcoin – qui se trouvent être unis par une architecture commune, la Grand livre répliqué et partagé. Ce concept unificateur est basé sur l’idée que chaque participant possède sa propre copie de l’intégralité du grand livre – et qu’il fait confiance au « système » – quel qu’il soit – pour garantir que sa copie reste synchronisée avec celle de tous les autres. Les différences portent sur quoi les enregistrements du grand livre et comment il est sécurisé.
Systèmes de type Bitcoin et Ripple
D’une manière générale, les systèmes de type Ripple se concentrent sur la représentation d’actifs « hors système » et sont sécurisés par des entités identifiables. Des systèmes comme Ripple, Hyperledger et Eris sont largement répandus dans ce monde, je pense. Le modèle de sécurité de ces systèmes repose sur la connaissance des acteurs : si quelqu’un se comporte mal, nous pouvons le punir car nous savons qui il est !
Les systèmes de type Bitcoin sont davantage axés sur les actifs « sur le système » et sont sécurisés par un pool d’acteurs anonymes. Bitcoin et Ethereum se situent largement dans cet espace, je pense. Le modèle de sécurité repose ici davantage sur des analyses de la théorie des jeux des structures d’incitation : l’objectif est de faire en sorte qu’il soit dans l’immense majorité des intérêts financiers des acteurs de faire la « bonne » chose.
Il existe bien sûr une certaine ambiguïté puisque toutes les plateformes ont une certaine notion de « contrats intelligents » – ou enregistrent d’une autre manière les accords du monde réel, ainsi que la propriété des actifs. Mais cela a un sens intuitif. Si votre plateforme concerne des actifs et des accords du monde réel, vous avez nécessairement besoin d’une certaine notion d’identité (qui sont les émetteurs ?). Et si vous comptez sur les performances d’acteurs du monde réel, pourquoi ne pas également compter sur eux pour la sécurité globale du système ? De même, si le seul objectif de votre plateforme est de créer et de gérer un nouvel actif qui ne peut être contrôlé/subverti par personne, alors donner à des entités identifiables le pouvoir de contrôler votre sécurité semblerait aller à l’encontre du but !
Différents objectifs de conception, différentes implémentations. Et la valeur de tels systèmes pour les banques, les entreprises ou les particuliers est, en fin de compte, une question empirique. J’imagine que 2015 sera l’année où nous découvrirons de nombreuses réponses.
L’incrémentalisme contre la « perturbation »
Mais je suis allé plus loin dans mon discours. J’ai observé que ces deux mondes diffèrent également sur un autre point : les systèmes de type Bitcoin pourraient perturber les institutions existantes s’ils étaient largement adoptés, tandis que les systèmes de type Ripple me semblent être beaucoup plus étroitement liés à la façon dont les choses fonctionnent. aujourd’hui et sont peut-être une source de incrémentiel innovation.
Si cette observation est exacte, alors les entreprises qui examinent cet espace devront probablement évaluer les technologies sous différents angles. La question qui se pose aux banques concernant les systèmes de type Ripple est : « comment pourrions-nous utiliser cela pour réduire les coûts ou améliorer nos opérations ? » tandis que la question pour les systèmes de type Bitcoin est : « comment réagirions-nous si cette technologie était largement adoptée ? »
Et pour répondre à la dernière question, il faut être sûr de bien comprendre ce que signifie réellement le système analysé. est!
Le Bitcoin en tant que monnaie pourrait passer à côté de l’essentiel
Pour moi, c’est une erreur de considérer Bitcoin uniquement comme une monnaie. Parce que le système monétaire Bitcoin est un véritable mirage : sous le capot se cache une fascinante plateforme de contrats intelligents.
Ou, comme je l’ai dit au Financial Services Club, chaque fois que vous effectuez un paiement Bitcoin, vous demandez en réalité à plus de 6 000 ordinateurs dans le monde d’exécuter un petit programme informatique pour vous… et votre seule tâche est de vous assurer que l’ordinateur le programme renvoie « VRAI ». Au sein de la communauté Bitcoin, cela est bien sûr bien connu. En effet, le travail effectué par Mike Hearn et d’autres pour documenter les capacités de la plateforme existe depuis des années. Mais je trouve que la plupart des gens impliqués dans le débat plus large ignorent que la plateforme est essentiellement construit sur cette fonctionnalité – ce n’est pas un module complémentaire.
Bitcoin est une plateforme de contrats intelligents
J’ai écrit un article l’année dernière offrant une intuition sur le fonctionnement du Bitcoin, en termes de atterrir. Ce que je voulais dire, c’est que l’élément fondamental du système est le « résultat de transaction non dépensé », ou UTXO. L’UTXO est ce que vous obtenez lorsque quelqu’un vous « paie » du Bitcoin. La « sortie » de leur la transaction est l’argent qu’ils vous ont payé. Et même s’il reste dans votre « portefeuille », il n’est évidemment pas dépensé. D’où le « résultat des transactions non dépensées ».
Vous pouvez donc considérer l’état actuel du système Bitcoin comme étant un immense pool d’UTXO : tous les paiements reçus par les utilisateurs de Bitcoin et qu’ils n’ont pas encore dépensés :

Chaque paiement qui n’a pas lui-même été dépensé est modélisé dans le système Bitcoin comme un « résultat de transaction non dépensé ». En général, chaque UTXO ne peut être dépensé que par le propriétaire de « l’adresse » à laquelle il a été envoyé (pas toujours, et c’est là le point ; voir plus loin). Et chaque UTXO a un identifiant (la transaction dans laquelle il est apparu et sa position dans la liste des sorties de cette transaction) et une valeur : combien de Bitcoins sont représentés par cet UTXO.
Mais ce que les gens oublient souvent, c’est que ces UTXO sont en réalité de minuscules petits programmes informatiques qui vivent dans le grand livre, contrôlent l’accès aux bitcoins et s’exécutent en réponse à des événements entrants spécifiques. Contrats intelligentssi vous voulez. Et la seule façon de dépenser l’argent contrôlé par ce contrat est de pouvoir fournir des données d’entrée qui permettent à chaque nœud du système d’exécuter le programme et de vérifier qu’il renvoie « VRAI ».
Si vous pouvez faire en sorte que le programme renvoie « VRAI », vous pouvez dire ce qui arrive aux fonds. Si vous ne pouvez pas, alors ne le faites pas.
Alors, lorsque vous voulez dépenser votre argent, voici ce que vous faites :
Votre logiciel de portefeuille écrit un petit programme informatique pour vous, puis l’envoie au réseau Bitcoin. Il dit effectivement au réseau : « S’il vous plaît, lancez ce petit programme que je viens de vous donner. Alors s’il vous plaît, trouvez un programme (« contrat intelligent » ?) sur la plateforme avec cet identifiant pour moi. Lorsque vous avez fait cela, introduisez la sortie de mon programme dans le programme que vous venez de localiser ». Il s’agit donc d’un processus en deux étapes : vous fournissez votre propre petit programme… et le résultat de celui-ci est transmis au programme UTXO que vous souhaitez dépenser.
La façon dont vous dépensez de l’argent en Bitcoin est de demander à la plateforme d’exécuter un petit programme informatique qui toi fournissez et alimentez le résultat de ce programme au « contrat intelligent » qui stocke les fonds que vous souhaitez dépenser. Si vous parvenez à faire fonctionner ce deuxième programme avec succès, vous pourrez dépenser de l’argent. Dans la terminologie Bitcoin, le programme que vous fournissez est « scriptSig » et le programme UTXO est « scriptPubKey ». Votre objectif est de fournir un « scriptSig » dont la sortie peut être introduite dans « scriptPubKey » pour lui faire renvoyer « TRUE »
Et alors quoi sont ces petits programmes ? Dans le cas courant, ils sont très simples. Le « programme UTXO » dit simplement : « fournissez-moi une signature numérique prouvant que vous possédez la clé associée à l’adresse Bitcoin suivante (et veuillez également prouver que vous connaissez la clé publique qui correspond à l’adresse Bitcoin) ». C’est pourquoi on l’appelle « scriptPubKey ».
Et le programme toi provide est simplement un moyen de garantir que le système Bitcoin envoie cette preuve dans le programme scriptPubKey de la bonne manière. C’est une manière de fournir une signature numérique. D’où son nom de « scriptSig »
Si tu ne le fais pas savoir la clé privée, vous ne pouvez pas générer la bonne signature et vous ne pouvez donc pas créer l’entrée nécessaire pour que le contrat intelligent (scriptPubKey) s’exécute avec succès et vous ne pouvez pas dépenser les fonds. Ce modèle, apparemment complexe, n’est donc qu’un moyen de garantir que la seule personne qui peut dépenser de l’argent à l’adresse 1abcde… est celle qui connaît la clé privée… exactement comme nous le souhaiterions.
Pourquoi est-ce si complexe ?
Mais remarquez à quel point c’est puissant… parce que le autre la chose que vous faites est de dire au système de remplacer le programme scriptPubKey existant avec un ou plusieurs nouveau programmes. Et c’est ainsi que votre paiement est modélisé dans le système. Vous payez quelqu’un en créant un nouveau programme (un nouveau scriptPubKey) qui ils pourra s’exécuter avec succès. De cette façon, vous pouvez payer différentes personnes ou vous rendre la monnaie. Le programme qui seulement toi peut fonctionner est remplacé par ceux que seul le bénéficiaires peut courir. Et, de cette façon, la valeur a été transmise de vous à eux.
Le résultat est donc que le programme original vivant sur le grand livre est remplacé par un ou plusieurs nouveau programmes. Dans le cas habituel, un ou plusieurs de ces nouveaux seront associés à quelqu’un celui d’autre adresse Bitcoin afin qu’eux seuls puissent la contrôler. En fait, vous leur avez versé cet argent puisque les fonds sont désormais sous leur contrôle
Payer quelqu’un en Bitcoin revient à remplacer le programme que vous contrôlez par celui qu’il contrôle. Dans ce diagramme, les fonds que vous contrôliez ont désormais été répartis entre deux nouveaux destinataires. Eux seuls peuvent dépenser ces fonds.
Des contrats intelligents ?
Alors, qu’est-ce que cela a à voir avec les contrats intelligents ? La clé est que le modèle que j’ai décrit ci-dessus est assez générique. Le langage de programmation est (à peu près) assez puissant pour implémenter une logique métier intéressante qui va au-delà de « Richard paie de l’argent à Bob ». Par exemple, vous pouvez écrire un programme qui ne retournera « VRAI » que si vous fournissez la preuve que vous connaissez la clé privée de multiple adresses Bitcoin. Il s’agit peut-être d’une façon de modéliser « une majorité des administrateurs doivent signer conjointement avant que ces fonds puissent être dépensés ». La page wiki « contrats » Bitcoin va beaucoup plus en profondeur.
Cependant, la réalité est que les capacités de la plateforme sont en réalité assez limitées – et je pense que cela explique en grande partie l’intérêt porté à d’autres plateformes, comme Ethereum. Cependant, il convient de noter que Gavin Andresen a fait valoir que les limites du Bitcoin ne doivent pas nécessairement être une contrainte.
Et alors ?
Certains diront peut-être qu’il n’est pas nécessaire de penser le Bitcoin de cette façon. Mais je pense que ce serait une erreur. Parce que, même si de nombreuses personnes s’enthousiasment pour le potentiel des contrats intelligents pour les entreprises, nous disposons d’une plate-forme sophistiquée de contrats intelligents qui fonctionne avec succès depuis plus d’une demi-décennie, sous la forme du réseau Bitcoin.
Bien sûr, c’est très limité (c’est pourquoi des systèmes comme Ethereum sont en cours de construction). Mais ce serait peut-être une erreur de parier que cela n’évoluera pas.
En fin de compte, mon point est le suivant : même s’il existe une faible probabilité de succès pour un système potentiellement perturbateur, il est sûrement logique de comprendre tout ce qui est possible sur ce que ce système peut réellement faire…
[Disclosure – I provide advice to Hyperledger in a personal capacity.]
[Update – 2015-03-30 Typos and replaced first diagram… I accidentally included an older version that used random IDs for UTXOs that looked like bitcoin addresses, which was very confusing…]
Share this content:

