Glossaire / Protocole et mises à jour
Procédure accélérée
- Qu'est-ce que la procédure accélérée ?
- La procédure accélérée est le dispositif d'activation utilisé pour Taproot : une courte fenêtre de signalement des mineurs avec un seuil abaissé à 90 pour cent et une application reportée à une hauteur de bloc ultérieure fixée.
Spécifié dans BIP-341.
La procédure accélérée est un déploiement de bits de version modifié du BIP-9, inscrit dans le BIP-341 lui-même plutôt que dans un BIP qui lui serait propre. Les mineurs disposaient de 109 jours, du 24 avril au 11 août 2021, pour activer le bit 2 dans 1 815 blocs sur 2 016, avec une application fixée au bloc 709 632. Cette hauteur d'application a été fixée avant l'ouverture du signalement, de sorte que les détenteurs connaissaient le bloc exact auquel les règles changeraient.
Comment cela fonctionne
La procédure accélérée conserve la méthode de comptage du BIP-9, modifie deux de ses nombres et ajoute un paramètre que le BIP-9 n'a jamais eu.
Le BIP-9 compte les blocs de signalement sur chaque période de réajustement de 2 016 blocs et fait passer un déploiement de STARTED à LOCKED_IN dès qu'une période en contient assez. Son seuil est de 1 916 blocs, soit 95 pour cent d'une période, et sa propre ligne directrice pour la fenêtre est d'un an, soit 31 536 000 secondes après l'heure de début. Le début et l'expiration sont lus à partir du temps médian passé, l'horodatage médian d'un bloc et de ses dix prédécesseurs, de sorte que l'horloge appartient à la chaîne plutôt qu'à la montre de quiconque.
Le déploiement de Taproot a ramené le seuil à 1 815 blocs, soit 90 pour cent, et a donné à la fenêtre 9 417 600 secondes, de l'horodatage d'époque 1619222400 à 1628640000. L'ajout était min_activation_height. Avec le BIP-9 ordinaire, un déploiement verrouillé devient ACTIVE à la prochaine limite de réajustement, de sorte que le verrouillage ne fixe la hauteur d'application qu'aux 2 016 blocs qui le suivent. Avec la procédure accélérée, l'état LOCKED_IN boucle jusqu'à ce que la chaîne atteigne la hauteur indiquée, et ne passe à ACTIVE qu'ensuite. Celle du réseau principal était 709 632, ce qui correspond exactement à 352 périodes de réajustement et donc à une limite de période. Le déploiement s'est bien activé à cette hauteur.
La séparation est toute l'idée. Le signalement répond rapidement à une question, et le long intervalle qui suit laisse à tous les autres le temps de mettre à jour leur logiciel plutôt que le temps de continuer à débattre.
Où le voir
Les paramètres de la procédure accélérée sont lisibles dans le champ de version de chaque bloc miné pendant la fenêtre de signalement de 2021.
Un bloc de signalement porte les bits de tête 001 plus le bit propre au déploiement, de sorte qu'un signal Taproot sur le bit 2 se lit comme la version 0x20000004. Les mineurs qui demandent du travail rencontrent le même déploiement via getblocktemplate, dont la clé "rules" nomme les soft forks déjà actifs et dont la clé "vbavailable" associe chaque déploiement en attente à son bit. Le nom que le BIP-341 donne à ce déploiement, et donc la chaîne qu'un mineur lit, est simplement "taproot".
L'exécution du même déploiement sur testnet3 montre à quoi servait le délai. Elle a utilisé des horodatages de début et d'expiration identiques, un seuil de 1 512 blocs à 75 pour cent et une min_activation_height de 0, de sorte que rien n'était reporté au-delà de la période de décalage propre au BIP-9 et qu'il est devenu actif à la hauteur 2 011 968. Le réseau principal a eu l'attente supplémentaire ; le réseau de test n'avait aucune économie à protéger. Sur signet, les règles étaient toujours actives, donc aucune procédure n'y a eu lieu.
Procédure accélérée vs UASF
Un soft fork activé par les utilisateurs impose l'issue du côté des nœuds, et la procédure accélérée a délibérément refusé ce pouvoir.
Le mécanisme de contrainte est écrit dans le BIP-8 sous le nom lockinontimeout. Réglez-le sur true et le déploiement obtient une période MUST_SIGNAL avant l'expiration, durant laquelle les blocs qui ne signalent pas deviennent invalides une fois la marge de blocs non signalants de la période épuisée, ce qui garantit le verrouillage que les mineurs coopèrent ou non. Le BIP-8 recommande ce drapeau pour tout soft fork censé affronter une opposition politique d'une part non négligeable des mineurs, et avertit dans le même document que les nœuds qui l'activent peuvent suivre une chaîne à moindre travail pendant une période prolongée et devoir se connecter préférentiellement entre eux.
La procédure accélérée ne portait aucun drapeau de ce type. Manquer le seuil avant l'expiration plaçait le déploiement en FAILED sans rien faire d'autre, ce qui était le compromis retenu : aucune garantie d'activation, aucun risque de scission de la chaîne, et une réponse peu coûteuse dans les deux cas.