ALLER AU CONTENU
Protocole18 minStandards That Ship / Ep. 1

Faire accepter une proposition d’ERC, le standard Ethereum

PARTAGERXIN
Illustration en pixel art : une carte lumineuse figurant une proposition file sur un rail de lumière, à travers un cimetière de propositions abandonnées, vers une porte éclairée.

EN 30 SECONDES

Un ERC est une règle publique pour les applications Ethereum, par exemple le comportement d’un jeton, proposée et relue au grand jour. Même une bonne idée peut s’enliser si son périmètre reste flou ou si les objections restent sans réponse. L’article suit le chemin de l’idée au statut Final et montre ce que les relecteurs attendent à chaque étape.

À RETENIR

  • Rédiger la spécification n’est qu’une partie du travail. Les implémenteurs ont aussi besoin d’un périmètre clair, d’exemples utiles et de réponses à leurs objections.
  • Gardez un périmètre étroit. Mieux vaut plusieurs ERC ciblés qu’un seul qui veut tout faire.
  • Livrez une implémentation de référence avant la spécification, puis répondez à chaque commentaire de fond dans le fil. EIP-1 rend ce code facultatif ; je le recommande quand même.
  • Une interface adoptée permet à des équipes indépendantes de construire des logiciels compatibles. Le statut Final et l’adoption réelle sont deux étapes distinctes.
Sur cette page

Le problème : de bonnes idées qui s’enlisent

EN BREF Une proposition enlisée reçoit un statut, et ce statut ne dit pas pourquoi tout s’est arrêté.

6
MOIS D’INACTIVITÉ
Seuil EIP-1 du statut Stagnant

Source : EIP-1. Ce statut est réversible.

3
SPÉCIFICATIONS FUSIONNÉES
ERC-3643, ERC-6960, ERC-7410. Plus ERC-8203, encore un brouillon, dans la PR ouverte n° 1614, non fusionnée.

Source : le dépôt ethereum/ERCs sur GitHub.

Un ERC La catégorie d’EIP qui fixe des règles pour les applications, par exemple le comportement d’un jeton ou d’un wallet. ERC-20, le standard de jeton, en est un. Voir le glossaire peut porter une idée utile et ne jamais aboutir. Selon EIP-1, une proposition en Draft, Review ou Last Call, inactive depuis six mois ou plus, peut passer au statut Stagnant. Ce statut peut être annulé plus tard.

Ce que l’auteur peut améliorer est concret : bien cadrer la proposition, la rendre simple à construire et garder les questions ouvertes visibles.

Je suis l’un des cinq auteurs nommés d’ERC-3643 (T-REX, désormais Final). Je suis le premier des six auteurs d’ERC-6960 (Dual Layer Token, brouillon) et co-auteur d’ERC-7410 (mise à jour des autorisations de dépense, brouillon).

Je suis aussi co-auteur d’ERC-8203, deuxième sur trois. Il est encore à l’état de brouillon, dans la pull request ouverte n° 1614, et n’est pas Fusionné Ajouté sous forme de fichier au dépôt ethereum/ERCs. Un éditeur fusionne une proposition au statut Draft dès que son format est correct : fusionné ne veut pas dire Final. Voir le glossaire. Ces standards m’ont beaucoup appris sur la procédure.

Les mots à connaître avant la procédure

EN BREF Un ERC est une interface sur laquelle des équipes qui ne se connaissent pas peuvent construire. Les autres mots disent comment on la relit.

LES MOTS À CONNAÎTRE

EIP
Ethereum Improvement Proposal : un document de conception public qui propose un changement ou une règle commune pour Ethereum.
ERC
La catégorie d’EIP qui fixe des règles pour les applications, par exemple le comportement d’un jeton ou d’un wallet. ERC-20, le standard de jeton, en est un.
Interface
La liste des fonctions et des événements qu’un contrat doit exposer pour que d’autres programmes sachent exactement comment l’appeler.
Éditeur EIP
Un membre du groupe d’éditeurs qui vérifie qu’une proposition est bien formée, complète et cohérente. Selon EIP-1, les éditeurs ne jugent pas l’idée.
Fusionné
Ajouté sous forme de fichier au dépôt ethereum/ERCs. Un éditeur fusionne une proposition au statut Draft dès que son format est correct : fusionné ne veut pas dire Final.
Last Call
La dernière période de relecture avant le statut Final, en général 14 jours, ouverte quand l’auteur estime la spécification stable.

Comment un ERC passe de l’idée au statut Final, étape par étape

EN BREF EIP-1 fixe un parcours public unique pour chaque ERC : Idea, Draft, Review, Last Call, puis Final. Toutes les propositions n’arrivent pas au bout.

ÉTAPE PAR ÉTAPE

Diagramme de flux : 5 étapesDiagramme de flux : 5 étapes. Idea, puis Draft. Draft, puis Review. Review, puis Last Call. Last Call, puis Final. Last Call revient à Review.1IdeaFil sur Ethereum Magicians2DraftPR fusionnée si le format est bon3ReviewRelecture, sans durée fixée4Last CallDernière période, en général 14jours5FinalEnsuite, corrections en principe

Étape 1 sur 7. Idea. EIP-1 recommande d’exposer d’abord le problème sur Ethereum Magicians. Le stade Idea n’est pas suivi dans le dépôt. Une absence de réponse n’est pas un refus formel.

  1. Idea EIP-1 recommande d’exposer d’abord le problème sur Ethereum Magicians. Le stade Idea n’est pas suivi dans le dépôt. Une absence de réponse n’est pas un refus formel.
  2. Draft Vous ouvrez une pull request dans le dépôt ethereum/ERCs. Un éditeur la fusionne au statut Draft dès que le format est correct.
  3. Review Vous demandez la relecture par les pairs. Les relecteurs cherchent les cas limites et les conflits. Aucune durée n’est fixée.
  4. Last Call Une fois la spécification stable, vous ouvrez la dernière période de relecture, en général 14 jours.
  5. Retour en Review Si le Last Call entraîne un changement normatif, c’est-à-dire une règle nouvelle pour les implémenteurs, la proposition repart en Review.
  6. Final Final, c’est le standard achevé. Ensuite, il ne devrait recevoir que des corrections d’erreurs et des clarifications non normatives.
  7. Stagnant Six mois sans activité en Draft, Review ou Last Call la font passer en Stagnant. Auteurs ou éditeurs peuvent la relancer.
Le chemin principal d’EIP-1. Une proposition peut aussi devenir Stagnant ou Withdrawn (retirée), et fusionner un brouillon ne vaut pas finalisation.

Le processus officiel EIP-1 fixe ce chemin pour tout EIP Ethereum Improvement Proposal : un document de conception public qui propose un changement ou une règle commune pour Ethereum. Voir le glossaire. Le travail à chaque étape dépend de la proposition et du nombre de questions encore ouvertes.

Scénario
Délai
Facteur clé
Cas favorable (consensus fort, périmètre clair)
Aucune durée garantie
Soutien fort de la communauté
Cas courant (plusieurs tours de retours)
Dépend des retours non résolus
Révisions successives de la spécification
Cas difficile (sujet de conception disputé)
Peut ne jamais aboutir
Alignement politique nécessaire

Ce que contient le document

EN BREF Le document consigne la conception ; la discussion et le code vérifient si d’autres peuvent s’en servir.

ANATOMIE
Ce que contient le document
Abstractattendu

Décrivez l’interface et le périmètre réels. Ne promettez que ce que la spécification définit.

Motivationfacultatif

Le problème concret que l’ERC résout.

Specificationattendu

Signatures de fonctions et événements, assez précis pour écrire du code.

Rationaleattendu

Le compromis retenu et celui écarté. C’est ici que vivent les objections traitées.

Test casesfacultatif

Facultatif pour un ERC. Sans eux, je lis une spécification comme un texte dont personne n’a fait tourner le code.

Reference implementationfacultatif

Facultatif dans EIP-1, utile pour rendre le comportement testable.

Security considerationsobligatoire

EIP-1 rejette une proposition qui n’en a pas.

Les parties que tout EIP devrait avoir selon EIP-1. Certaines y sont facultatives, la section Security Considerations est obligatoire ; les notes sont mes conseils.

L’Interface La liste des fonctions et des événements qu’un contrat doit exposer pour que d’autres programmes sachent exactement comment l’appeler. Voir le glossaire est le cœur d’un ERC. C’est la partie sur laquelle d’autres équipes écriront leur code : elle doit être exacte.

Une implémentation de référence, c’est-à-dire un code d’exemple qui montre les règles en pratique, est facultative. Elle transforme un texte abstrait en quelque chose qu’un relecteur peut exécuter.

Un exemple concret : une proposition ciblée, une proposition fourre-tout

EN BREF Un relecteur peut tester une interface étroite ; face à une interface qui promet tout, il ne peut qu’attendre.

Les deux esquisses d’interface ci-dessous sont des exemples pédagogiques, et le scénario qui les entoure est fictif. Ce ne sont ni des standards complets ni du code de référence testé, et la première n’est pas l’interface réelle d’ERC-7410. La seconde illustre un périmètre large : ni une vraie proposition ni un résultat mesuré.

UN EXEMPLE CONCRET

Chiffres illustratifs

VALIDÉUne proposition ciblée : ajuster une autorisation de dépense

ENTRÉE

Périmètre
un seul problème : modifier une autorisation existante
Interface
3 fonctions
Code qui tourne
oui, avec tests (supposés)

CE QUI SE PASSE

  1. Un relecteur lit vite toute l’interface.
  2. Elle pose une question précise : que se passe-t-il si la baisse dépasse l’autorisation ?
  3. L’auteur répond dans le fil et ajoute le cas limite à la section Rationale.
IAllowanceAdjust.sol (ciblée)
// Teaching sketch. One interface, one problem: adjust an existing
// allowance without a full re-approve. Not ERC-7410's real interface.
interface IAllowanceAdjust {
    function increaseAllowance(address spender, uint256 addedValue) external returns (bool);
    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool);
    function allowanceOf(address owner, address spender) external view returns (uint256);
}

SORTIE

Verdict
relisible : publiez

À DÉCOUPERUne proposition fourre-tout : une interface pour tout

ENTRÉE

Périmètre
identité, vérifications multi-chaînes, paiements, clés, litiges
Interface
6 fonctions montrées, 6 autres promises
Code qui tourne
aucun

CE QUI SE PASSE

  1. Un relecteur ne sait pas ce que chaque fonction doit faire, donc il ne peut pas la tester.
  2. Chaque sujet attire ses propres objections, venues d’experts différents.
  3. Éditeurs et relecteurs attendent que l’auteur la définisse.
IAgentEverything.sol (fourre-tout)
// Teaching sketch. One interface trying to be a whole platform.
// Illustrative broad scope, not a real proposal or measured outcome.
interface IAgentEverything {
    function authenticate(bytes calldata proof) external returns (bool);
    function verifyAcrossChains(uint256 chainId, bytes calldata data) external returns (bool);
    function settlePayment(address to, uint256 amount, bytes calldata terms) external;
    function registerIdentity(address agent, bytes calldata credential) external;
    function rotateQuantumKey(bytes calldata newKey) external;
    function resolveDispute(bytes32 txId, bytes calldata evidence) external returns (bytes32);
    // ...and six more the abstract promised
}

SORTIE

Verdict
à découper

Ce qui rend un standard facile à relire

EN BREF Une proposition utile permet à un développeur de repérer le problème, de tester l’interface et de formuler une objection précise.

Facteur de réussite
Ce que ça veut dire
Pourquoi ça marche (d’expérience)
Périmètre précis
Résout un seul problème. Définit une interface, pas un environnement d’exécution.
Les lecteurs savent exactement ce qu’ils évaluent.
Retours d’implémentation réels
Du code qui tourne rend l’interface testable.
La spécification reflète la réalité, pas la théorie.
Auteur crédible et présent
Suit les commentaires de fond et y répond.
Les relecteurs font confiance aux auteurs qui prennent les retours au sérieux.
Le problème d’abord
La motivation énonce un problème concret.
Les relecteurs le reconnaissent dans leur travail.

L’activité sur le forum ne prouve à elle seule ni la qualité ni l’adoption. Un long fil peut signaler une bonne idée ou une idée confuse.

Ce qui complique la relecture

EN BREF Des promesses larges, sans comportement défini, rendent chaque partie d’une proposition plus difficile à relire.

Signal d’alerte
Pourquoi ça bloque (ce que j’ai vu)
Titre plein de mots à la mode, sans interface
Les éditeurs attendent que vous le complétiez. Les relecteurs ne s’engagent pas sur un concept.
Périmètre fourre-tout
Chaque problème en plus multiplie les objections. Mieux vaut plusieurs ERC ciblés qu’un seul ambitieux.
Aucune présence après la publication
Le moyen le plus rapide d’être ignoré. Le forum a de la mémoire.
Spécifications floues
Ni signatures, ni événements, ni cas de test. Les relecteurs supposent que vous ne l’avez pas construit.
Auteur seul sur une proposition complexe
Une proposition qui couvre plusieurs domaines gagne à avoir des co-auteurs qui repèrent les angles morts.

Un fil silencieux est un signal à creuser, pas la preuve qu’une idée ou un auteur a échoué. Demandez-vous si le problème est clair et si les bonnes équipes l’ont vu.

La relecture publique : répondre aux objections

EN BREF Faire accepter un ERC est un travail social : vous construisez un consensus, vous ne gagnez pas un débat.

ÉTAPE PAR ÉTAPE

Diagramme de flux : 5 étapesDiagramme de flux : 5 étapes. Une objection arrive, puis Demander où ça casse. Demander où ça casse, puis Souvent un vrai cas limite. Souvent un vrai cas limite, puis Corriger, remercier en public. Corriger, remercier en public, puis L’écrire dans la section Rationale.1Une objection arriveNe pas se défendre tout de suite2Demander où ça casseLe cas, pas le désaccord3Souvent un vrai cas limite4Corriger, remercier en public5L’écrire dans la sectionRationaleDéjà traité la fois suivante

Étape 1 sur 5. Objection. Quelqu’un dit que votre spécification est fausse. Ne la défendez pas tout de suite.

  1. Objection Quelqu’un dit que votre spécification est fausse. Ne la défendez pas tout de suite.
  2. Demander le cas Demandez le scénario où votre spécification casse. Faites décrire le cas, pas le désaccord.
  3. Cas limite D’expérience, c’est la plupart du temps un vrai cas limite auquel vous n’aviez pas pensé.
  4. Corriger Corrigez la spécification et remerciez la personne en public.
  5. Consigner Écrivez le compromis dans la section Rationale. Le relecteur suivant trouve la question déjà traitée.
Suivez cette boucle en public, à chaque objection.

Répondez à chaque commentaire de fond. Même quand vous refusez une suggestion, dites pourquoi. « Hors périmètre pour cet ERC », plus deux phrases de contexte, c’est une réponse complète. Le silence, non.

Trouvez des alliés dans l’écosystème. Si l’équipe d’un wallet veut implémenter votre ERC, dites-le dans le fil. D’expérience, cet intérêt concret fait plus avancer une proposition que la théorie : la spécification va se frotter à du vrai code.

Soyez patient sans avoir l’air absent. « Je prends deux semaines pour réfléchir à ces retours » ne se lit pas du tout comme un silence. Un simple point d’avancement fait la différence.

Menez la relecture comme un projet. Consultez votre fil chaque semaine et répondez à tout ce qui date de plus d’une semaine. S’il se tait pendant un mois, publiez un résumé et demandez quelles objections restent.

Ma méthode après trois ERC intégrés au dépôt

EN BREF Ce que je fais autrement aujourd’hui, après ERC-3643, ERC-6960 et ERC-7410.

MA MÉTHODE
1

Commencer par le problème, pas la solution

Avant toute interface, écrivez deux paragraphes sur le cas concret où les standards actuels échouent. Si vous n’y arrivez pas, l’ERC n’est pas prêt.

2

Livrer l’implémentation de référence avant la spécification

Mon travail sur la suite T-REX et OnchainID m’a donné le contexte d’implémentation d’ERC-3643. Validez la conception sur un cas réel avant de déclarer son interface stable.

3

Trouver au moins trois équipes qui en ont besoin

Avant de publier, contactez en privé des équipes du domaine. Sans trois réponses « oui, on a ce problème », réfléchissez encore.

4

Un ERC, un problème d’interface

ERC-3643 définit un cadre de jetons à accès contrôlé. ERC-6960 définit des soldes à deux niveaux. ERC-7410 traite la mise à jour des autorisations de dépense. Aucun ne remplace le reste d’une application.

5

Co-écrire quand les domaines se recoupent

J’ai conçu une couche de conformité et une structure de jeton à plusieurs niveaux, et j’ai quand même cherché des co-auteurs pour les angles morts.

6

Traiter les objections comme des relectures

Suivez à chaque fois la boucle des objections ci-dessus. C’est ce qui raccourcit le cycle de relecture.

Six habitudes tirées de trois ERC intégrés au dépôt. C’est ma pratique, pas une règle d’EIP-1.
CONTRÔLE AVANT DÉPART
Décision : Votre ERC est-il prêt à être publié ?Arbre de décision : Votre ERC est-il prêt à être publié ? Si Vous avez du code qui tourne, au moins trois équipes avec ce problème précis, et un seul problème d’interface., alors Publiez.. Si La spécification se lit bien, mais aucun code ne la soutient encore., alors Construisez d’abord.. Si Elle veut couvrir identité, vérification et multi-chaîne dans une seule interface., alors Découpez..DÉCISIONVotre ERC est-il prêt à être publié?SI Vous avez du code qui tourne, aumoins trois équipes avec ceproblème précis, et un seulproblème d’interface.Publiez.Ouvrez le fil et répondez à chaquecommentaire de fond.SI La spécification se lit bien,mais aucun code ne la soutientencore.Construisez d’abord.Laissez le code révéler les zonesfloues, puis révisez spécificationet code ensemble.SI Elle veut couvrir identité,vérification et multi-chaîne dansune seule interface.Découpez.Donnez à chaque partie son propreERC, puis dites comment elles vontensemble.
À faire avant d’ouvrir le fil sur Ethereum Magicians. Tout autre résultat que « Publiez » veut dire que l’ERC n’est pas encore prêt.

Pourquoi un standard survit à une fonctionnalité

EN BREF Une fonctionnalité vit dans votre code ; un ERC adopté vit dans chaque base de code qui s’appuie dessus.

FONCTIONNALITÉ OU STANDARD

Une fonctionnalité livrée

Vit dans une seule base de code. Son impact reste surtout chez vos utilisateurs.

Un ERC adopté

D’autres wallets, applications et outils s’appuient dessus, y compris des équipes que vous ne rencontrerez jamais.
Une interface stable laisse applications et outils évoluer chacun de leur côté. L’adoption demande quand même implémentation et maintenance, et le statut Final ne la garantit pas.

ERC-3643 est arrivé au statut Final parce que nous avons fait le travail ingrat : fils de forum, révisions de la spécification, réponses patientes aux relecteurs sceptiques. Rien de tout cela ne se voit dans le document.

La procédure récompense ceux qui visent juste et restent là, bien après l’élan du début. Éditeur EIP Un membre du groupe d’éditeurs qui vérifie qu’une proposition est bien formée, complète et cohérente. Selon EIP-1, les éditeurs ne jugent pas l’idée. Voir le glossaire vérifient la forme et la complétude. C’est la communauté qui décide du sort de l’idée.

Vous avez une idée qui pourrait régler un problème précis du protocole ? La procédure ERC en vaut la peine. Mais sachez que la politique et le lien avec la communauté font le gros du travail. En comparaison, écrire la partie technique est facile.

Vous préférez bâtir sur un standard existant plutôt qu’écrire le vôtre ? J’ai comparé ERC-3643, ERC-1400 et CMTAT dans l’épisode suivant.

TESTEZ-VOUS

Un éditeur vient de fusionner la première pull request de votre proposition dans le dépôt ethereum/ERCs. Pouvez-vous dire que votre standard est accepté ?

Voir la réponse
Non. Cette première fusion l’enregistre seulement comme brouillon, au statut Draft. Il doit encore passer par Review et Last Call pour atteindre Final, et même Final n’oblige personne à l’adopter.

TESTEZ-VOUS

Pendant le Last Call, un relecteur signale une coquille dans un commentaire de code. Un autre trouve un bug qui vous oblige à changer la signature d’une fonction. Lequel renvoie la proposition en Review ?

Voir la réponse
Le bug. Une nouvelle signature change ce que les implémenteurs doivent faire : c’est un changement normatif, et la proposition repart en Review. La coquille ne change rien à ce qu’ils doivent faire. Une fois la spécification de nouveau stable, elle pourra repasser en Last Call.

Trois idées à garder

  1. Avant de publier : décrivez le problème en deux paragraphes, trouvez au moins trois équipes qui l’ont, et tenez-vous à un seul problème d’interface.
  2. Construisez du code qui tourne avant de déclarer l’interface stable. EIP-1 rend la section « implémentation de référence » facultative ; je construis quand même le code en premier, car il révèle les zones floues.
  3. Une fois le fil ouvert : consultez-le chaque semaine, répondez à chaque commentaire de fond et consignez les objections traitées dans la section Rationale. Six mois de silence en Draft, Review ou Last Call peuvent faire passer la proposition au statut Stagnant.

ÉTAPE SUIVANTEERC-3643, ERC-1400 ou CMTAT

Sources : EIP-1, ERC-3643, ERC-6960, ERC-7410, ERC-8203 (brouillon, PR ouverte n° 1614, non fusionnée).

FAQ

Aucun délai n’est promis. Une proposition passe par les statuts Draft, Review et Last Call avant Final. Le Last Call dure en général 14 jours, et un changement normatif la renvoie en Review. Prévoyez plusieurs cycles de relecture, pas une date.

Non. EIP-1 rend la section « implémentation de référence » facultative. Je recommande quand même du code qui tourne : il révèle les zones floues de l’interface et donne aux relecteurs quelque chose à tester. Il ne garantit pas l’acceptation.

Un EIP (Ethereum Improvement Proposal) est la catégorie générale. Les ERC (Ethereum Request for Comments) sont les EIP qui fixent des règles pour les applications : jetons, contrats, wallets. Vous définissez un standard de jeton ou une interface de contrat ? Vous écrivez un ERC.

Oui. EIP-1 demande une liste d’auteurs, sans exiger de co-auteur. Pour une proposition complexe qui touche plusieurs domaines, des co-auteurs se partagent la relecture et repèrent les angles morts. Pour une proposition étroite et bien cadrée, un auteur seul suffit.

C’est le forum qu’EIP-1 recommande pour discuter d’une proposition. EIP-1 recommande aussi de soumettre l’idée à la communauté avant d’écrire une proposition formelle. Servez-vous du fil pour recueillir les besoins des implémenteurs et garder trace des objections.

Après six mois sans activité, une proposition en Draft, Review ou Last Call passe au statut Stagnant. Elle n’est pas morte pour autant. Ses auteurs ou les éditeurs EIP peuvent la remettre en Draft ou à son statut précédent.

Standards That Ship

Episode 1 · 5 publies

PrecedentSuivant
Adam Boudjemaa
Adam Boudjemaa

Ancien CTO d'Integra. Auteur nommé (1 sur 5) d'ERC-3643, premier auteur d'ERC-6960, co-auteur d'ERC-7410 et co-auteur d'ERC-8203, encore à l'état de brouillon. Conçoit des systèmes d'IA en production et des systèmes Web3 régulés.

Un projet à livrer ou un poste à pourvoir ?

Parlons de votre besoin
Suivre les notes techniques

Recevez les nouveaux articles sur l’IA en production et les smart contracts par email.