Modifications du protocole et de la réserve de jalonnement susceptibles d'améliorer la décentralisation et de réduire la charge de travail liée au consensus

AvancéJan 11, 2024
Vitalik a proposé quelques optimisations pour le mécanisme actuel de staking d'Ethereum, fournissant une voie de référence pour réduire davantage la centralisation et la charge de consensus sur Ethereum.
Modifications du protocole et de la réserve de jalonnement susceptibles d'améliorer la décentralisation et de réduire la charge de travail liée au consensus

Nous remercions tout particulièrement Mike Neuder, Justin Drake et d'autres personnes pour leurs commentaires et leur révision. Voir aussi : des articles antérieurs sur des thèmes similaires par <a href="https://notes.ethereum.org/@mikeneuder/goldilocks"> Mike Neuder, Dankrad Feist et arixon.eth.

Le statu quo de l'Ethereum peut être décrit comme comprenant une grande part d'enjeux émergents à deux niveaux. Par staking à deux niveaux, j'entends ici un modèle de staking dans lequel il y a deux catégories de participants :

  1. Les opérateurs de nœuds, qui gèrent les nœuds et mettent en garantie soit leur réputation, soit un montant fixe de capital propre.
  2. Les délégués, qui investissent une certaine quantité d'ETH, sans engagement minimum et sans obligation stricte de participer autrement qu'en apportant leur garantie.

Cette nouvelle forme de mise en jeu à deux niveaux résulte des actions d'une grande partie des joueurs qui participent à des pools de mise en jeu offrant des jetons de mise en jeu liquides (LST), par exemple. Rocket Pool et Lido.

Le statu quo présente deux défauts principaux :

  • Risque de centralisation des opérateurs de nœuds. Les mécanismes de sélection des opérateurs de nœuds dans les pools de jalonnement existants ne sont pas très décentralisés ou présentent d'autres défauts.
  • Charge inutile de la couche de consensus. L'Ethereum L1 vérifie ~800 000 signatures par époque, et avec <a href="https://notes.ethereum.org/@vbuterin/single_slot_finality"> single_slot_finality, il est possible de vérifier les signatures de tous les membres de l'équipe. slot finality qui pourrait passer à 800 000 par slot. Il s'agit d'une charge importante. De plus, en raison de la part importante de liquid staking, le réseau ne tire pas tous les bénéfices de la prise en charge de cette charge. Si le réseau peut être décentralisé et sécurisé de manière acceptable sans que chaque intervenant doive signer à chaque emplacement, nous pourrions alors nous appuyer davantage sur cette solution et réduire le nombre de signatures par emplacement à, par exemple, 10 000.

Ce billet décrit les solutions possibles à ces deux problèmes. Elle prendra notamment l'angle suivant : supposons que nous tenions pour acquis que la majeure partie du capital est détenue par des personnes qui ne sont pas disposées à gérer personnellement des nœuds de mise sous leur forme actuelle, en signant des messages à chaque créneau, en bloquant leurs dépôts et en les soumettant à des coupes sombres. Quel autre rôle peuvent-ils jouer pour contribuer de manière significative à la décentralisation et à la sécurité du réseau ?

Comment fonctionne aujourd'hui le jalonnement à deux niveaux ?

Les deux pools de staking décentralisés les plus populaires aujourd'hui, Lido et RocketPool, créent tous deux des écosystèmes de staking émergents à deux niveaux. Dans le cas du Lido, les niveaux sont les suivants :

  • Opérateurs de nœuds : ils sont choisis par un vote au sein de la DAO du Lido, donc par les détenteurs de LDO.
  • Délégués : personnes titulaires d'un STETH. Le stETH est créé lorsque quelqu'un dépose de l'ETH dans le système de contrat intelligent du Lido, qui permet aux opérateurs de nœuds de le mettre en jeu (mais, parce que le <a href="https://notes.ethereum.org/@launchpad/withdrawals-faq"> retrait...). credentials sont liés à l'adresse ETH d'un contrat intelligent, ils ne peuvent pas se l'approprier).

Dans le cas de Rocket Pool, les niveaux sont les suivants :

  • Opérateurs de nœuds : tout le monde peut devenir opérateur de nœuds en déposant 8 ETH, plus un montant de jetons RPL.
  • Délégués : personnes titulaires d'une rETH. Le rETH est créé lorsque quelqu'un dépose de l'ETH dans le système de contrat intelligent de Rocket Pool, qui permet aux opérateurs de nœuds de le mettre en jeu (mais pas de se l'approprier).

Le rôle des délégataires

Dans ces systèmes (ou dans les nouveaux systèmes rendus possibles par d'éventuelles modifications futures du protocole), une question clé à poser est la suivante : du point de vue du protocole, quel est l'intérêt d'avoir des délégués ?

Pour comprendre l'intérêt de cette question, considérons le monde suivant. Le changement de protocole proposé dans ce récent post, qui consiste à limiter les pénalités de slashing à 2 ETH, est mis en œuvre. En réponse, Rocket Pool réduit le dépôt de l'opérateur de nœud à 2 ETH. La part de marché de Rocket Pool atteint 100 % (non seulement parmi les stakers, mais aussi parmi les détenteurs d'ETH : le rETH devenant sans risque, presque tous les détenteurs d'ETH deviennent des détenteurs de rETH ou des opérateurs de nœuds).

Supposons que les détenteurs de rETH obtiennent un rendement de 3 % (y compris les récompenses in-protocole et les frais de priorité + MEV) et que les opérateurs de nœuds obtiennent un rendement de 4 %. Supposons également que l'offre totale d'ETH soit de 100 millions.

Voici le résultat des calculs. Pour éviter d'avoir à tenir compte de la capitalisation, nous examinerons les rendements quotidiens plutôt qu'annuels, de sorte que les termes de second ordre deviennent suffisamment faibles pour ne pas être pris en compte :

Considérons maintenant un monde différent. Rocket Pool n'existe pas. Le dépôt minimum de chaque staker est réduit à 2 ETH, et la quantité totale d'ETH mis en jeu est plafonnée à 6,25 millions. De plus, le rendement de l'opérateur de nœud est réduit à 1 %. Faisons le calcul :

Examinons maintenant les deux situations du point de vue du coût de l'attaque. Dans le premier cas, les attaquants ne s'inscriraient pas en tant que délégués : les délégués n'ont pas de pouvoir, cela ne sert donc à rien. Par conséquent, ils utiliseraient tous leurs ETH pour s'inscrire en tant qu'opérateurs de nœuds. Pour atteindre 1/3 de tous les enjeux, ils devraient investir 2,08 millions d'ETH (ce qui, pour être juste, est encore beaucoup !). voir <a href="https://notes.ethereum.org/@vbuterin/single_slot_finality#Idea-1-super-committees"> this discussion sur les super-comités, une proposition d'échelonnement de la mise qui aurait également réduit le coût de l'attaque à une valeur similaire). Dans le second cas, les attaquants se contenteraient de miser, et pour atteindre 1/3 de toutes les mises, ils devraient investir... 2,08 millions d'ETH.

Du point de vue de l'économie des enjeux et du coût de l'attaque, le résultat final est exactement le même dans les deux cas. La part de l'offre totale d'ETH détenue par un opérateur de nœud augmente de 0,00256 % par jour, et la part de l'offre totale d'ETH détenue par un opérateur autre qu'un nœud diminue de 0,00017 % par jour. Le coût de l'attaque est de 2,08 millions d'ETH. Il semble donc que dans ce modèle, la délégation devienne une machine de Rube Goldberg sans intérêt : nous pourrions tout aussi bien supprimer l'intermédiaire, réduire considérablement les récompenses de mise et plafonner le total des ETH misés à 6,25 millions.

Le but de cet argument n'est pas de préconiser la réduction des récompenses de 4x et le plafonnement du montant total d'ETH mis en jeu à 6,25 millions. Il s'agit plutôt de mettre en évidence une propriété essentielle qu'un système de mise en jeu qui fonctionne bien devrait avoir : à savoir que les délégataires devraient faire quelque chose qui compte vraiment. En outre, il n'y a pas de problème si les délégataires sont motivés pour agir correctement dans une large mesure par la pression de la communauté et l'altruisme ; après tout, c'est la principale force qui motive aujourd'hui les gens à participer de manière décentralisée à l'amélioration de la sécurité (mais avec plus d'efforts) plutôt que de manière centralisée à la menace de la sécurité (mais avec moins d'efforts).

Si les délégués peuvent jouer un rôle significatif, quel pourrait être ce rôle ?

Je vois deux types de réponses :

  • Sélection des délégués : les délégués peuvent choisir les opérateurs de nœuds auxquels ils délèguent leur participation. Les opérateurs de nœuds auraient un "poids" dans le consensus qui est proportionnel à la participation totale qui leur est déléguée. La sélection des délégués existe déjà sous une forme limitée aujourd'hui, dans le sens où les détenteurs de rETH ou de stETH peuvent retirer leur ETH et passer à un autre pool, mais la disponibilité pratique de la sélection des délégués pourrait être grandement améliorée.
  • Participation au consensus : les délégués pourraient avoir la possibilité de jouer un rôle dans le consensus, ce qui serait plus "léger" qu'une mise complète et ne serait pas soumis à de longues périodes de retrait ni à un risque élevé, mais permettrait toujours de contrôler les opérateurs de nœuds. De nombreux délégués ne voudraient pas faire cela et préféreraient l'interface la plus simple qui soit, à savoir détenir un ERC20 et ne rien faire d'autre, mais certains d'entre eux accepteraient cette option.

Élargissement des pouvoirs de sélection des délégués

Il existe trois façons d'étendre les pouvoirs de sélection des délégués :

  • De meilleurs outils de vote au sein des pools
  • Plus de concurrence entre les pools
  • Délégation permanente

Le vote au sein des pools n'existe pas vraiment aujourd'hui : dans le Rocket Pool, n'importe qui peut devenir opérateur de nœud, et dans le Lido, ce sont les détenteurs de LDO qui votent, et non les détenteurs d'ETH. Lido a proposé une double gouvernance LDO + stETH, qui donnerait aux détenteurs de stETH un droit de regard en ce sens qu'ils pourraient activer un gadget qui bloquerait les nouveaux votes et, par conséquent, les opérateurs de nœuds qui seraient ajoutés ou supprimés. Cela dit, il s'agit d'un projet limité, qui pourrait être beaucoup plus ambitieux.

La concurrence croisée existe aujourd'hui, mais elle est faible. La principale difficulté réside dans le fait que les jetons de jalonnement des pools de jalonnement plus petits sont (i) moins liquides, (ii) plus difficiles à croire et (iii) moins pris en charge par les applications.

Nous pouvons améliorer les deux premiers points en plafonnant les pénalités pour abattage à un montant plus faible, par exemple 2 ou 4 ETH. Le reste de l'ETH (non convertible) pourrait alors être déposé et retiré instantanément en toute sécurité, ce qui rendrait un LST basé sur cet ETH convertible dans les deux sens avec l'ETH, même pour les plus petits pools. Nous pourrions améliorer le troisième point en créant un contrat d'émission central pour les LST, un peu comme l'ERC-4337 et l'ERC-6900 pour les portefeuilles, de sorte que nous puissions garantir que tout jeton de jalonnement émis par l'intermédiaire de ce contrat est sûr. Les applications (par exemple, une version de RAI qui prend en charge l'ETH avec mise en jeu) pourraient être fortement encouragées à prendre en charge tous les jetons avec mise en jeu émis par l'intermédiaire de ce registre.

La délégation enchâssée n'existe pas actuellement dans le protocole, mais elle pourrait être introduite. Il s'agirait d'une logique similaire aux idées ci-dessus, mais mise en œuvre au niveau du protocole. Consultez ce billet pour connaître les avantages et les inconvénients de l'enchâssement des objets.

Toutes ces idées constituent une amélioration par rapport au statu quo, mais il y a une limite aux avantages qu'elles peuvent apporter. La gouvernance du vote par jeton est nulle et, en fin de compte, toute forme de sélection non incitative des délégués n'est qu'un type de vote par jeton ; c'est la principale source de malaise que j'éprouve depuis le début à l'égard de la preuve d'enjeu déléguée. Il semble donc utile de réfléchir également à la possibilité de renforcer les formes de participation consensuelle.

Participation au consensus

L'approche actuelle du solo staking a des limites, même si l'on ne tient pas compte des problèmes actuels liés au liquid staking. Dans l'hypothèse de la finalité d'un seul slot, nos meilleures estimations suggèrent une limite d'environ 100 000 à 1 million de signatures BLS pouvant être traitées par slot, et ce en supposant une augmentation significative de la durée des slots. Même si nous utilisons des SNARK récursifs pour regrouper les signatures, la responsabilité de la signature (à des fins d'élagage) exige qu'un champ binaire indiquant qui a participé soit disponible pour chaque signature. Si Ethereum devient un réseau à l'échelle mondiale, même l'utilisation d'un système de stockage complet pour stocker les champs de bits ne sera pas suffisante : 16 Mo par emplacement ne permettraient de stocker qu'environ 64 millions de stakers.

De ce point de vue également, il est intéressant de diviser le jalonnement en un niveau de complexité plus élevé, qui agit à chaque créneau mais ne compte peut-être que 10 000 participants, et un niveau de complexité plus faible qui n'est appelé à participer qu'occasionnellement. Le niveau de complexité le plus bas pourrait être exempté de toute réduction, ou il pourrait donner à ses participants, de manière aléatoire, des possibilités de réduction temporaire (c'est-à-dire, une réduction de la durée de vie de l'entreprise). pour quelques créneaux) se déposent et font l'objet d'une réduction.

En pratique, cela pourrait être mis en œuvre par <a href="https://notes.ethereum.org/@mikeneuder/eip-7251-faq"> raising le plafond du solde du validateur, puis la mise en œuvre d'un seuil de solde (par ex. 2048 ETH) pour déterminer quels validateurs existants entrent dans le niveau de complexité supérieur ou inférieur.

Voici quelques idées sur la manière dont ces rôles à petite échelle pourraient fonctionner :

  • Chaque créneau est choisi au hasard par 10000 petits faiseurs, qui peuvent signer ce qu'ils pensent être la tête de ce créneau. Une règle de choix de fourche LMD GHOST est exécutée en utilisant les petits stakers comme données d'entrée. Si le choix de la fourche par le petit statuaire et le choix de la fourche par l'opérateur de nœud divergent, le client de l'utilisateur n'accepte aucun bloc comme étant finalisé et affiche une erreur. Cela oblige la communauté à jouer le rôle de médiateur.
  • Un délégué peut envoyer une transaction déclarant au réseau qu'il est en ligne et qu'il est prêt à jouer le rôle de petit décideur pendant l'heure suivante. Pour qu'un message (bloc ou attestation) provenant d'un nœud soit pris en compte, le nœud et un délégué choisi au hasard doivent tous deux apposer leur signature.
  • Un délégué peut envoyer une transaction déclarant au réseau qu'il est en ligne et qu'il est prêt à jouer le rôle de petit décideur pendant l'heure suivante. À chaque époque, 10 délégués aléatoires sont choisis comme fournisseurs de listes d'inclusion et 10000 autres sont choisis comme électeurs. Ces derniers sont choisis k créneaux à l'avance et disposent d'une fenêtre de k créneaux pour publier un message sur la chaîne confirmant qu'ils sont en ligne. Chaque fournisseur de liste d'inclusion choisi et confirmé peut publier une liste d'inclusion, et un bloc est invalide à moins que, pour chaque liste d'inclusion, il ne contienne (i) les transactions de cette liste d'inclusion, ou (ii) les votes de la moitié des votants choisis montrant que la liste d'inclusion n'est pas disponible.

Ces rôles à faible enjeu ont tous en commun de ne pas impliquer une participation active à chaque créneau, de ne pas pouvoir être supprimés (et donc d'avoir un risque de gestion des clés très faible) et d'être très "légers" dans le sens où ils ne requièrent même pas un nœud complet pour fonctionner. La vérification de la seule couche de consensus serait suffisante. Ils pourraient donc être mis en œuvre par le biais d'applications ou de plugins de navigateur qui sont pour la plupart passifs et dont les frais généraux de calcul, les exigences matérielles ou le savoir-faire technique sont très faibles, sans même supposer l'existence de progrès techniques tels que les ZK-EVM.

Ces petits rôles ont également un objectif commun : ils empêchent une majorité de 51 % des opérateurs de nœuds de s'engager dans la censure des transactions. La première et la deuxième empêchent également la majorité de s'engager dans le retour au statu quo. La troisième se concentre plus directement sur la censure, bien qu'elle soit plus vulnérable à la possibilité qu'une majorité d'opérateurs de nœuds choisissent également de censurer les messages de confirmation des fournisseurs de listes d'inclusion.

Ces idées ont été rédigées dans la perspective d'une solution de staking à deux niveaux intégrée au protocole, mais elles pourraient également être mises en œuvre dans le cadre d'un pool de staking. Voici quelques idées concrètes de mise en œuvre :

Conclusions

Si elles sont bien faites, les modifications apportées à la conception du jalonnement pourraient permettre de faire d'une pierre deux coups :

  1. Donner aux personnes qui n'ont pas les ressources ou la capacité de jalonner seules aujourd'hui une opportunité de participer à un jalonnement qui maintient plus de pouvoir entre leurs mains : à la fois (i) le pouvoir de choisir les nœuds qu'ils soutiennent et (ii) le pouvoir de participer activement au consensus d'une manière qui est plus légère que le fonctionnement complet du nœud de jalonnement, mais qui reste significative. Tous les participants ne choisiraient pas l'une ou l'autre des options ou les deux, mais ceux qui le feraient amélioreraient considérablement la situation par rapport au statu quo.
  2. Réduire le nombre de signatures que la couche de consensus Ethereum doit traiter dans chaque créneau, même dans un régime de finalité à créneau unique, à un nombre plus petit comme ~10 000. Cela favoriserait également la décentralisation, en permettant à chacun de gérer plus facilement un nœud de validation.

Pour bon nombre de ces solutions, il existe différentes couches d'abstraction dans lesquelles la solution au problème pourrait s'inscrire : les pouvoirs accordés aux utilisateurs dans le cadre d'un protocole de pool de staking, le choix de l'utilisateur entre les protocoles de pool de staking et l'enchâssement dans le protocole. Ce choix doit être mûrement réfléchi, et il est généralement préférable d'opter pour une intégration viable minimale, qui minimise à la fois la complexité du protocole et le niveau de changement de l'économie du protocole, tout en atteignant l'objectif souhaité.

Clause de non-responsabilité:

  1. Cet article est repris de [<a href="https://notes.ethereum.org/@vbuterin/staking_2023_10"> notes.ethereum.org]. Tous les droits d'auteur appartiennent à l'auteur original[notes.ethereum.org]. Si vous avez des objections à cette réimpression, veuillez contacter l'équipe de Gate Learn, qui s'en chargera rapidement.
  2. Clause de non-responsabilité : Les points de vue et les opinions exprimés dans cet article sont uniquement ceux de l'auteur et ne constituent pas un conseil en investissement.
  3. Les traductions de l'article dans d'autres langues sont effectuées par l'équipe de Gate Learn. Sauf mention contraire, il est interdit de copier, distribuer ou plagier les articles traduits.
Bắt đầu giao dịch
Đăng ký và giao dịch để nhận phần thưởng USDTEST trị giá
$100
$5500
Tạo tài khoản