Vous avez délégué votre pouvoir de vote une fois et vous voulez le reprendre. Il n’existe pas d’instruction de révocation distincte dans le contrat, et il n’en faut pas, car une délégation est un champ unique que vous écrasez. Ce que vous ne pouvez pas faire, c’est la reprendre rétroactivement.
Ce qu’une délégation a réellement déplacé
Détenir un jeton de gouvernance n’est pas la même chose que détenir du pouvoir de vote. La documentation de gouvernance d’OpenZeppelin est explicite : ce sont les délégués qui portent le pouvoir de vote, et un détenteur qui souhaite participer désigne un représentant de confiance comme délégué ou devient lui-même délégué en se déléguant à lui-même. La documentation de Compound décrit la même étape, les détenteurs de jetons déléguant leur droit de vote à eux-mêmes ou à une adresse de leur choix.
Rien n’a quitté votre portefeuille à ce moment-là. Compound énonce la taille de ce qui se déplace vraiment : le nombre de voix ajoutées au compte de voix du délégué équivaut au solde détenu sur le compte de l’utilisateur. Vos jetons sont restés où ils étaient, une destination a été inscrite à côté d’eux, et un compte de voix à une autre adresse a augmenté de votre solde.
La raison de cette conception est le coût. OpenZeppelin note que, par défaut, un solde de jetons ne compte pas comme pouvoir de vote, ce qui rend les transferts moins chers, et la contrepartie annoncée est qu’il oblige les utilisateurs à se déléguer à eux-mêmes pour activer le suivi. Le pouvoir de vote est une mécanique optionnelle accrochée sur le côté d’un solde, pas une propriété du solde.
Ce que vous défaites est donc un pointeur, pas un transfert. La question n’est pas comment récupérer des jetons, puisqu’ils ne sont allés nulle part. Elle est de savoir ce que ce pointeur doit dire ensuite.
Révoquer est une autre délégation, pas une suppression
La documentation de Compound indique que les voix sont déléguées à partir du bloc courant, jusqu’à ce que l’émetteur délègue de nouveau ou transfère ses jetons. Lisez cette clause à l’envers et vous obtenez la procédure de révocation : vous déléguez de nouveau.
Le champ contient une seule destination : il n’y a donc pas de case vide où revenir ni de seconde instruction à envoyer. Écrire une nouvelle destination écrase l’ancienne dans le même geste. Une interface qui vous propose un bouton de révocation et une interface qui ne propose qu’un bouton de délégation font donc la même chose en dessous, et l’invite que votre portefeuille vous demande de signer parlera de délégation dans les deux cas.
Deux conséquences en découlent. Révoquer coûte une transaction et des frais, exactement comme la délégation initiale. Et révoquer est public : la nouvelle destination est écrite sur la chaîne, où quiconque lit le registre des délégués peut la voir.
Où va le poids quand vous agissez
Défaire une délégation, c’est choisir une destination, et les destinations ne vous laissent pas dans la même position.
| Ce que vous faites | Compte de votre ancien délégué | Votre propre pouvoir de vote |
|---|---|---|
| Déléguer à vous-même | Baisse de votre solde | Égal à votre solde |
| Déléguer à une autre adresse | Baisse de votre solde | Toujours nul, porté désormais par un autre |
| Transférer les jetons ailleurs | Baisse du solde déplacé | Parti avec les jetons |
| Ne rien faire | Inchangé | Nul |
Seule la première ligne fait de vous un votant. La deuxième est un changement de représentant, pas un retrait du système. La troisième fonctionne, et c’est une mauvaise route vers l’objectif, car elle se défait de l’actif pour ajuster un champ. La quatrième mérite d’être nommée : un détenteur qui cesse de faire confiance à un délégué puis ne fait rien n’a pas exprimé de désaccord, puisque son poids continue d’être exprimé en son nom.
Pourquoi une proposition déjà ouverte ne bouge pas
C’est ici qu’une révocation semble cassée alors qu’elle ne l’est pas. L’extension de gouvernance d’OpenZeppelin conserve les soldes historiques pour que le pouvoir de vote soit lu depuis des instantanés passés plutôt que depuis un solde courant, ce que sa documentation appelle une protection importante qui empêche le double vote. Compound lit le poids de la même manière : les adresses qui détenaient du poids de vote au début de la proposition sont celles qui peuvent soumettre des votes.
Une révocation prend donc effet au bloc où elle est minée et s’applique à partir de là. Si le bloc d’instantané d’une proposition est déjà passé, le décompte de cette proposition lit le registre tel qu’il était alors, et votre ancien délégué peut encore y exprimer votre poids après que vous avez repris la délégation.
La règle pratique est une échéance, pas un bouton. Pour empêcher un délégué d’exprimer votre poids sur une proposition précise, la révocation doit être enregistrée avant l’instantané de cette proposition. Une révocation envoyée le lendemain de l’ouverture d’un vote contesté est correcte, à temps pour tout ce qui suit, et sans valeur sur le vote auquel vous réagissiez.
Ce que révoquer ne fait pas
Révoquer une délégation n’est pas la même opération que révoquer une approbation de jetons, et le verbe commun cache une vraie différence. Une approbation est une permission permanente donnée à un contrat de déplacer vos jetons. Une délégation n’accorde aucune permission de ce genre : un délégué peut exprimer votre poids et ne peut pas toucher à votre solde. Effacer toutes les approbations de votre portefeuille laisse votre délégation où elle était, et révoquer votre délégation laisse chaque approbation où elle était.
Elle ne défait pas ce que votre délégué a déjà fait. Les votes déjà exprimés restent exprimés, les propositions déjà tranchées restent tranchées, et le relevé de l’usage fait de votre poids n’est pas modifié par la révocation.
Elle ne libère pas des jetons qu’un contrat distinct détient. Si votre solde est verrouillé, mis en staking ou enveloppé dans une position vote-escrow, la délégation attachée à cette position suit les règles de ce contrat, et une révocation envoyée au contrat du jeton ne l’atteint pas.
La délégation hors chaîne se révoque ailleurs
Tous les votes ne se règlent pas sur la chaîne, et une DAO qui tient ses scrutins hors chaîne garde son registre de délégations en dehors du contrat du jeton. La documentation de Snapshot décrit trois voies pour déléguer : un registre de délégués, utilisé lorsqu’un espace a mis en place un contrat de délégation personnalisé ; la page de délégation de Snapshot elle-même, qu’elle présente comme la solution la plus rapide pour déléguer à une adresse connue ; et l’interaction directe avec le contrat.
Cette pluralité est ce qu’il faut vérifier avant de croire le travail terminé. La documentation de Snapshot note aussi qu’une délégation directe vers un espace choisi a priorité sur une délégation faite à tous les espaces, de sorte qu’un même détenteur peut être délégué à plus d’un endroit à la fois, avec un ordre défini entre eux.
L’audit est simple à énoncer. Listez chaque registre où votre adresse apparaît comme délégante, sur la chaîne et hors chaîne, et videz-les un par un. Une révocation dans le contrat du jeton ne dit rien d’une entrée de registre que lit un autre système.
Un exemple chiffré
Supposons que vous déteniez 10 000 jetons et que vous les ayez délégués à une adresse qui porte 250 000 de poids de vote au total, de sorte que votre solde représente 4 % de ce que ce délégué peut exprimer. La proposition A s’ouvre et son bloc d’instantané passe. Vous déléguez ensuite à vous-même.
À partir de ce bloc, deux affirmations sont vraies en même temps. Sur la proposition A, votre ancien délégué porte toujours 250 000, parce que ce décompte lit l’instantané et non le registre tel qu’il est aujourd’hui. Sur la proposition suivante, le même délégué porte 240 000, et vous portez 10 000 que vous pouvez exprimer vous-même.
La seconde ligne est aussi l’endroit où le reporting change. Votre poids est passé d’un délégué à un détenteur, ce qui tire vers le bas une lecture de concentration des votants et vers le haut le nombre de participants, tandis qu’un taux de participation mesuré sur le poids délégué ne s’améliore que si vous votez ensuite. Reprendre votre poids et ne jamais l’utiliser vous met au même endroit que le laisser à un délégué qui s’abstient.
En résumé
Une délégation est un champ qui contient une destination : la révoquer signifie donc écrire une nouvelle destination plutôt que supprimer l’ancienne. Déléguez à vous-même et vous devenez le votant ; déléguez ailleurs et vous avez changé de représentant ; ne faites rien et votre poids continue d’être exprimé sans vous.
Ce qui piège les gens, c’est le calendrier. Le pouvoir de vote est lu depuis un instantané passé, donc une révocation lie chaque proposition dont l’instantané vient après elle et aucune de celles déjà ouvertes. Vérifiez le registre des délégués avant un vote qui vous importe plutôt qu’après, et vérifiez chaque registre que votre organisation utilise réellement. Pour continuer à apprendre les fondamentaux, retrouvez d’autres articles de Bitbase Academy.
Articles associés
Autres articles Bitbase sur ce sujet :
- Pourquoi une migration de jeton demande une approbation
- Migration de tokens terminée mais nouveaux tokens absents
- Comment calculer l’autonomie de la trésorerie d’un token
- Ratio NVT : valeur du réseau rapportée aux transactions
- Arnaques aux airdrops et liste de contrôle de sécurité avant toute réclamation
Avertissement : Cet article est un contenu pédagogique de Bitbase Academy, fourni à titre d'information uniquement. Il ne constitue pas un conseil en investissement, en trading, en fiscalité ou en finance. Les cryptoactifs sont volatils ; évaluez votre propre risque. Rédigé en septembre 2026 ; référez-vous aux informations officielles les plus récentes.
Sources
[1] Documentation OpenZeppelin Contracts 5.x, Governance docs.openzeppelin.com
[2] Documentation OpenZeppelin Contracts 5.x, API, ERC20 (ERC20Votes) docs.openzeppelin.com
[3] Documentation Compound, Governance (Compound v2) docs.compound.finance
[4] Documentation Snapshot, guides utilisateur, Delegation docs.snapshot.box






