Récemment, il y a eu une petite dispute entre les factions Core et Unlimited de la communauté Bitcoin, une dispute qui représente peut-être la cinquantième fois que le même thème est débattu, mais qui est néanmoins intéressante car elle met en évidence un point philosophique très subtil sur la façon dont les blockchains travail.
ViaBTC, un pool de minage privilégiant l'Illimité, tweeté « hashpower is law », un argument de discussion habituel du côté d’Unlimited, qui estime que les mineurs ont, et devraient avoir, un rôle très important dans la gouvernance du Bitcoin, l’argument habituel en faveur de cela étant que les mineurs sont la seule catégorie d’utilisateurs qui a un incitatif financier important et illiquide dans le succès de Bitcoin. Greg Maxwell (du côté Core) répondu que « la sécurité de Bitcoin fonctionne précisément parce que le pouvoir de hachage n'est PAS une loi ».
L’argument principal est que les mineurs n’ont qu’un rôle limité dans le système Bitcoin, pour sécuriser l’ordre des transactions, et qu’ils ne devraient PAS avoir le pouvoir de déterminer quoi que ce soit d’autre, y compris les limites de taille de bloc et d’autres règles de validité de bloc. Ces contraintes sont appliquées par des nœuds complets gérés par les utilisateurs – si les mineurs commencent à produire des blocs selon un ensemble de règles différentes de celles appliquées par les nœuds des utilisateurs, alors les nœuds des utilisateurs rejetteront simplement les blocs, que ce soit 10 % ou 60 %. % ou 99 % de la puissance de hachage est derrière eux. À cela, Unlimited répond souvent par quelque chose comme « si 90 % de la puissance de hachage est derrière une nouvelle chaîne qui augmente la limite de bloc, et que l'ancienne chaîne avec 10 % de puissance de hachage est maintenant dix fois plus lente pendant cinq mois jusqu'à ce que la difficulté se réajuste, voudriez-vous vraiment Vous n'avez pas mis à jour votre client pour qu'il accepte la nouvelle chaîne ? »
Beaucoup de gens souvent argumenter à opposer à l'utilisation de blockchains publiques pour des applications impliquant des actifs du monde réel ou tout ce qui présente un risque de contrepartie. Les critiques sont soit totales, affirmant qu'il ne sert à rien de mettre en œuvre de tels cas d'usage sur des blockchains publiques, soit partielles, affirmant que même s'il peut y avoir des avantages à stocker les données sur une chaîne publique, le logique métier doit être exécuté hors chaîne.
L'argument généralement utilisé est que dans de telles applications, des points de confiance existent déjà – il y a quelqu'un qui possède les actifs physiques qui soutiennent les actifs autorisés en chaîne, et que quelqu'un peut toujours choisir de s'enfuir avec les actifs ou d'être obligé de les geler. par un gouvernement ou une banque, et ainsi gérer les représentations numériques de ces actifs sur une blockchain revient à payer pour une porte en acier renforcée pour sa maison lorsque la fenêtre est ouverte. Au lieu de cela, ces systèmes devraient utiliser des chaînes privées, ou même des solutions traditionnelles basées sur serveur, en ajoutant peut-être des éléments de cryptographie pour améliorer l'auditabilité, et ainsi économiser sur les inefficacités et les coûts liés au fait de tout mettre sur une blockchain.
Les arguments ci-dessus sont tous deux erronés dans leur forme pure, et ils le sont de la même manière. Alors que c'est théoriquement possible pour les mineurs de transférer 99 % de leur puissance de hachage vers une chaîne avec de nouvelles règles (pour donner un exemple où cela est incontestablement mauvais, supposons qu'ils augmentent la récompense de bloc), et même camp de réapparition l'ancienne chaîne pour la rendre définitivement inutile, et il est également théoriquement possible pour un gestionnaire centralisé d'une monnaie adossée à des actifs de cesser d'honorer un jeton numérique, de créer un nouveau jeton numérique avec les mêmes soldes que l'ancien jeton, sauf avec celui d'un compte particulier. solde réduit à zéro, et commencer à honorer le nouveau jeton, en pratique ces choses sont toutes les deux assez difficiles à faire.
Dans le premier cas, les utilisateurs devront se rendre compte que quelque chose ne va pas avec la chaîne existante, accepter d'accéder à la nouvelle chaîne sur laquelle les mineurs exploitent actuellement et télécharger le logiciel qui accepte les nouvelles règles. Dans le second cas, tous les clients et applications qui dépendent du jeton numérique d'origine seront interrompus, les utilisateurs devront mettre à jour leurs clients pour passer au nouveau jeton numérique, et les contrats intelligents sans capacité de regarder vers le monde extérieur et de voir qu'ils la nécessité de mettre à jour se brisera complètement. Au milieu de tout cela, les opposants au changement peuvent créer une campagne de peur, d'incertitude et de doute pour tenter de convaincre les gens qu'ils ne devraient peut-être pas mettre à jour leurs clients après tout, ou mettre à jour leurs clients vers certains. troisième un ensemble de règles (par exemple, modifier la preuve de travail), ce qui rend la mise en œuvre du changement encore plus difficile.
Ainsi, on peut dire que dans les deux cas, même s'il existe théoriquement des partis centralisés ou quasi-centralisés qui pourraient forcer le passage de l'État A à l'État B, où l'État B est désagréable aux utilisateurs mais préférable aux partis centralisés, cela nécessite surmonter un difficile problème de coordination. Les problèmes de coordination sont omniprésents dans la société et sont souvent une mauvaise chose – alors qu’il serait préférable pour la plupart des gens que la langue anglaise se débarrasse de son système orthographique très complexe et irrégulier et en fasse un système phonétique, ou que les États-Unis passent au système métrique. ou si nous pouvions immédiatement baisser tous les prix et salaires de dix pour cent en cas de récession, en pratique, cela nécessite que tout le monde soit d'accord sur le changement en même temps, ce qui est souvent très très difficile.
Cependant, avec les applications blockchain, nous faisons quelque chose de différent : nous utilisons les problèmes de coordination à notre avantage, utilisant les frictions créées par les problèmes de coordination comme rempart contre les malversations des acteurs centralisés. Nous pouvons construire des systèmes qui ont la propriété X, et nous pouvons garantir qu'ils préserveront la propriété X dans une large mesure, car changer les règles de X à non-X nécessiterait que tout un groupe de personnes acceptent de mettre à jour leur logiciel en même temps. . Même s’il existe un acteur capable d’imposer le changement, cela serait difficile. C’est le genre de sécurité que vous obtenez grâce à la validation côté client des règles de consensus de la blockchain.
Notez que ce type de sécurité repose spécifiquement sur la décentralisation des utilisateurs. Même s’il n’y a qu’un seul mineur dans le monde, il existe toujours une différence entre une cryptomonnaie extraite par ce mineur et un système centralisé de type PayPal. Dans ce dernier cas, l'opérateur peut choisir de modifier arbitrairement les règles, de geler l'argent des gens, d'offrir un mauvais service, d'augmenter ses tarifs ou de faire toute une série d'autres choses, et les problèmes de coordination sont en sa faveur, comme de tels systèmes l'ont fait. des effets de réseau substantiels et de nombreux utilisateurs devraient donc accepter en même temps de passer à un meilleur système. Dans le premier cas, la validation côté client signifie que de nombreuses tentatives malveillantes auxquelles le mineur pourrait vouloir se livrer sont rejetées par défaut, et le problème de coordination joue désormais en faveur des utilisateurs.
Notez que les arguments ci-dessus ne le font PAS, par eux-mêmes, impliquent que c'est une mauvaise idée que les mineurs soient les principaux acteurs coordonnant et décidant de la taille des blocs (ou dans le cas d'Ethereum, de la limite de gaz). Il se pourrait bien que, dans le cas particulier de la taille de bloc/limite de gaz, « un gouvernement par des mineurs coordonnés avec des incitations alignées » est l’approche optimale pour décider de ce paramètre politique particulier, peut-être parce que le risque que les mineurs abusent de leur pouvoir est inférieur au risque qu’une limite stricte spécifique choisie se révèle totalement inappropriée aux conditions du marché. décennie après que la limite ait été fixée. Cependant, il n’y a rien de déraisonnable à dire que le gouvernement par les mineurs est le meilleur moyen de décider d’un paramètre politique, et en même temps à dire que pour d'autres paramètres (par exemple, récompense de bloc), nous voulons nous appuyer sur la validation côté client pour garantir que les mineurs sont contraints. C’est l’essence même de l’ingénierie d’institutions décentralisées : il s’agit d’utiliser stratégiquement les problèmes de coordination pour garantir que les systèmes continuent de satisfaire certaines propriétés souhaitées.
Les arguments ci-dessus n’impliquent pas non plus qu’il est toujours optimal d’essayer de tout mettre sur une blockchain, même pour les services qui nécessitent de la confiance. Il y a généralement au moins certains gains à réaliser en exécutant davantage de logique métier sur une blockchain, mais ils sont souvent bien moindres que les pertes en termes d’efficacité ou de confidentialité. Et ça va ; la blockchain n'est pas le meilleur outil pour chaque tâche. Quels sont les arguments ci-dessus do Cela implique cependant que si vous créez une application basée sur la blockchain qui contient par nécessité de nombreux composants centralisés, vous pouvez alors réaliser des gains supplémentaires substantiels en termes de minimisation de la confiance en donnant aux utilisateurs un moyen d'accéder à votre application via un client blockchain classique ( (par exemple, dans le cas d'Ethereum, cela peut être Mist, Parity, Metamask ou Status), au lieu de les amener à utiliser une interface Web que vous contrôlez personnellement.
Théoriquement, les avantages de la validation côté utilisateur sont optimisés si littéralement chaque utilisateur exécute un « nœud complet idéal » indépendant – un nœud qui accepte tous les blocs qui suivent les règles de protocole que tout le monde a acceptées lors de la création du système, et rejette tous les blocs qui le font. pas. En pratique, cependant, cela implique de demander à chaque utilisateur de traiter chaque transaction effectuée par tous les utilisateurs du réseau, ce qui est clairement intenable, surtout si l'on considère la croissance rapide du nombre d'utilisateurs de smartphones dans les pays en développement.
Il y a deux façons de s'en sortir. La première est que nous pouvons réaliser que même si c'est le cas optimaux du point de vue des arguments ci-dessus, que tout le monde exécute un nœud complet, ce n'est certainement pas conditions. On peut soutenir que toute blockchain majeure fonctionnant à pleine capacité aura déjà atteint le point où il ne sera plus logique pour « les gens ordinaires » de dépenser un cinquième de leur espace disque dur pour exécuter un nœud complet, et les utilisateurs restants sont donc des amateurs et entreprises. Tant qu’ils seront assez nombreux et qu’ils viendront d’horizons divers, le problème de coordination pour amener ces utilisateurs à s’entendre restera très difficile.
Deuxièmement, nous pouvons compter sur technologie client à lumière forte.
Il existe deux niveaux de « clients légers » généralement possibles dans les systèmes blockchain. Le premier type de client léger, le plus faible, convainc simplement l'utilisateur, avec un certain degré d'assurance économique, qu'il fait partie de la chaîne supportée par la majorité du réseau. Cela peut être fait beaucoup moins cher que de vérifier l'ensemble de la chaîne, car tout ce que les clients doivent faire est de vérifier les noms occasionnels dans les programmes de preuve de travail ou dans les systèmes de preuve de mise de vérifier les certificats signés qui indiquent « soit le hachage racine de l'état est ce que je dis. est, ou vous pouvez publier ce certificat dans la chaîne principale pour supprimer une grande partie de mon argent ». Une fois que le client léger a vérifié un hachage racine, il peut utiliser les arborescences Merkle pour vérifier toute donnée spécifique qu'il souhaite vérifier.
Regardez, c'est un arbre Merkle !
Le deuxième niveau est un client léger « à vérification presque complète ». Ce type de client n'essaie pas seulement de suivre la chaîne que suit la majorité ; au contraire, il essaie également de suivre uniquement les chaînes qui respectent toutes les règles. Cela se fait par une combinaison de stratégies ; le plus simple à expliquer est qu'un client léger peut travailler avec des nœuds spécialisés (merci à Gavin Wood pour avoir inventé le nom « pêcheurs ») dont le but est de rechercher des blocs invalides et de générer des « preuves de fraude », des messages courts qui dites essentiellement « Regardez ! Ce bloc a un défaut ici ! Les clients légers peuvent alors vérifier cette partie spécifique d'un bloc et vérifier si elle est réellement invalide.
Si un bloc s’avère invalide, il est rejeté ; si un client léger n'entend aucune preuve de fraude pour un bloc donné pendant quelques minutes, alors il suppose que le blocage est probablement légitime. Il y a un un peu plus de complexité impliqué dans le traitement du cas où le problème ne vient pas des données qui sont mauvais, mais plutôt des données qui sont manquant, mais en général, il est possible de se rapprocher de toutes les manières possibles par lesquelles les mineurs ou les validateurs peuvent violer les règles du protocole.
Notez que pour qu'un client léger puisse valider efficacement un ensemble de règles d'application, ces règles doivent être exécutées dans le cadre d'un consensus, c'est-à-dire qu'elles doivent faire partie du protocole ou d'un mécanisme s'exécutant à l'intérieur du protocole ( comme un contrat intelligent). Il s’agit d’un argument clé en faveur de l’utilisation de la blockchain à la fois pour le stockage de données et l’exécution de la logique métier, par opposition au simple stockage de données.
Ces techniques de clients légers sont imparfaites, dans la mesure où elles reposent sur des hypothèses concernant la connectivité du réseau et le nombre d'autres clients légers et pêcheurs présents dans le réseau. Mais il n’est en réalité pas crucial qu’ils travaillent 100 % du temps pour 100 % des validateurs. Au contraire, tout ce que nous voulons, c'est créer une situation dans laquelle toute tentative d'un cartel hostile de mineurs/validateurs de pousser des blocs invalides sans le consentement de l'utilisateur causera de nombreux maux de tête à de nombreuses personnes et obligera finalement chacun à mettre à jour son logiciel s'il le souhaite. souhaitez continuer la synchronisation avec la chaîne invalide. Tant que cet objectif est satisfait, nous avons atteint l’objectif de sécurité grâce aux frictions de coordination.
La source: https://vitalik.eth.limo/general/2017/05/08/coordination_problems.html
- Contenu propulsé par le référencement et distribution de relations publiques. Soyez amplifié aujourd'hui.
- PlatoData.Network Ai générative verticale. Autonomisez-vous. Accéder ici.
- PlatoAiStream. Intelligence Web3. Connaissance Amplifiée. Accéder ici.
- PlatonESG. Carbone, Technologie propre, Énergie, Environnement, Solaire, La gestion des déchets. Accéder ici.
- PlatoHealth. Veille biotechnologique et essais cliniques. Accéder ici.
- Décalages de bloc. Modernisation de la propriété des compensations environnementales. Accéder ici.
- La source: Intelligence de données Platon.