Risques d’attaque de réentrance lors de la phase

Article author

Signalisation Obligatoire du BIP-110 Lancée avec un Support Minier Insuffisant

La Bitcoin Improvement Proposal 110 est entrée dans sa phase de signalisation obligatoire à partir du bloc 961,632. Durant cette phase, les nœuds appliquant le BIP-110 ont commencé à rejeter les blocs qui ne positionnaient pas le bit de version 4. Cependant, le soutien des mineurs au BIP-110 reste largement en deçà du seuil d’activation requis ; les mineurs ont signalé leur soutien dans seulement 2,53 % des 2 016 blocs précédant la fenêtre actuelle, bien loin des 55 % nécessaires pour une activation anticipée. Ce faible taux d’adoption a conduit à l’émergence temporaire d’une chaîne BIP-110 minoritaire mais celle-ci a rapidement été dépassée par la chaîne Bitcoin dominante.

Le BIP-110 propose des limitations temporaires sur les tailles des charges de données Bitcoin et des sorties de transactions afin de décourager les inscriptions de données non monétaires qui augmentent le coût des ressources pour les nœuds. Malgré le début de la signalisation obligatoire au bloc 961,632, les restrictions sur les transactions ne doivent entrer en vigueur qu’au bloc 965,664, sous réserve d’un consensus minier suffisant.

Restrictions Techniques du BIP-110 et leurs Implications sur la Capacité des Données

Le BIP-110 vise à imposer des limites spécifiques sur la taille et les types de données autorisées dans les transactions Bitcoin, en se concentrant principalement sur le contrôle de la croissance des données non transactionnelles. Il propose de limiter la plupart des nouveaux scripts de sortie à 34 octets, de plafonner les sorties OP_RETURN à 83 octets et de restreindre certaines pushes de données et éléments witness à 256 octets.

// Pseudocode hypothétique ressemblant à Solidity illustrant une vérification similaire de taille
function validateOutputScriptSize(bytes memory outputScript) internal pure returns (bool) {
    // Imposer un maximum de 34 octets pour la plupart des nouveaux scripts
    if (outputScript.length > 34) {
        revert("Taille du script de sortie dépassant la limite de 34 octets");
    }
    return true;
}

function validateOpReturnSize(bytes memory opReturnData) internal pure returns (bool) {
    // Imposer que les données OP_RETURN ne dépassent pas 83 octets
    if (opReturnData.length > 83) {
        revert("Données OP_RETURN dépassant la limite de 83 octets");
    }
    return true;
}

Ces restrictions sont motivées principalement par les préoccupations liées à la surcharge de la blockchain provoquée par les inscriptions et autres données non monétaires, qui accroissent les besoins de stockage et de bande passante des opérateurs de nœuds complets. Notamment, les outputs de transactions non dépensés (UTXO) créés avant l’activation seraient exemptés de ces nouvelles limites, ce qui réduit la perturbation immédiate pour les utilisateurs Bitcoin existants et les smart contracts.

Alors que ces contraintes cherchent à réduire la prévalence des transactions lourdes en données, leur adoption pourrait affecter substantiellement les types de scripts et les pratiques d’embed actuelles utilisées par les développeurs, impactant potentiellement certains NFTs ou constructions de couche de données qui reposent sur des tailles de sortie plus importantes.

Support Minier et Dynamiques de Consensus Illustrés par la Fenêtre de Signalisation du BIP-110

La fenêtre de signalisation pour le BIP-110 s’étend des blocs 961,632 à 963,647 au cours desquels les mineurs doivent signaler leur préparation via le bit de version 4 afin d’avancer vers l’activation. La conformité à cette signalisation est critique puisque 55 % de soutien minier est le seuil défini pour une activation anticipée et une application finale.

Paramètre Valeur Notes
Début de la Signalisation Obligatoire Bloc 961,632 Les nœuds rejettent les blocs ne positionnant pas le bit 4
Fin de la Période de Signalisation Bloc 963,647 Fin de la phase de signalisation obligatoire
Début de l’État Locked-in Bloc 963,648 Jalons pour la progression vers l’activation
Entrée en Vigueur des Restrictions Bloc 965,664 Limitations de taille des transactions effectives
Support Minier Avant Signal 2,53 % (51 blocs sur 2 016) Bien en-dessous du seuil de 55 %

Malgré les règles d’application pour la signalisation obligatoire en place, le faible taux de participation des mineurs — seulement environ 2,53 % des blocs précédents — témoigne d’un soutien limité et de difficultés à obtenir une acceptation à l’échelle du réseau. En conséquence, une branche minoritaire BIP-110 est apparue, mais a été rapidement dépassée par la chaîne principale, illustrant la difficulté d’activer des changements controversés sans consensus large.

Controverse et Critiques Autour du BIP-110 au Sein de l’Écosystème Bitcoin

Le BIP-110 a suscité d’importantes critiques de la part de figures éminentes de la communauté Bitcoin, notamment le président exécutif Strategy Michael Saylor et le PDG de Blockstream Adam Back. Les détracteurs soutiennent que la proposition risque de fracturer le réseau Bitcoin en poussant les nœuds adoptant le BIP-110 à rejeter des transactions légales selon les règles existantes, ce qui pourrait entraîner des partitions de la chaîne.

Cette critique souligne l’équilibre délicat entre les mises à jour réseau visant à imposer des restrictions plus strictes pour la sécurité ou la gestion des ressources et l’impératif de maintenir le consensus afin d’éviter des perturbations. Dans ce cas, la signalisation obligatoire et le rejet des blocs non signalés par le BIP-110 reflètent un scénario inhabituel où les mécanismes d’application conduisent à une chaîne minoritaire temporaire qui finit par céder face au soutien majoritaire.

Le débat reflète des tensions plus larges dans la gouvernance des blockchains entre les améliorations pilotées par les développeurs et la volonté des mineurs d’adopter ces changements, en particulier lorsque les propositions limitent les charges transactionnelles et imposent de nouvelles règles de validation.

Scénarios de Repli et État du Développement du Code de Support du BIP-110

Un développement annexe lié au BIP-110 est le rebasing du code de changement fallback proof-of-work (PoW) par le développeur Bitcoin Chris Guida le 1er août, basé sur les travaux préliminaires du mainteneur de Bitcoin Knots Luke Dashjr. Ce changement fallback PoW est positionné comme un scénario de repli au cas où les mineurs s’opposeraient à l’activation du BIP-110.

// Pseudocode Solidity illustrant un mécanisme fallback simplifié
contract PoWFallback {
    bool public bip110Rejected;

    function checkPoWChange() external view returns(bool) {
        if (bip110Rejected) {
            // Activation des règles fallback PoW
            return true;
        }
        return false;
    }
}

Cependant, aucune date d’activation n’a été fixée pour ce mécanisme fallback, ce qui signifie qu’il reste une précaution au niveau développement, et non une fonctionnalité imminente. La cohabitation de scénarios fallback reflète la complexité à planifier des mises à niveau optionnelles face à une résistance minière.


Du point de vue de la sécurité, l’approche du BIP-110 visant à limiter les tailles de données des transactions est conforme aux meilleures pratiques observées dans le développement de smart contracts où la minimisation de la surface d’attaque et de la consommation des ressources est critique. Chez Soken, nous avons constaté que l’imposition de contraintes strictes sur la taille des données peut atténuer des risques tels que les attaques de réentrance exploitant des payloads surdimensionnés ou inattendus. Bien que l’environnement de scripting de Bitcoin diffère nettement des smart contracts de type Ethereum, les principes de limitation de la complexité des données et d’application de règles de validation basées sur le consensus restent essentiels.

Comparaison : Limites de Données BIP-110 vs Contraintes Typiques des Smart Contracts

Fonctionnalité Limitations BIP-110 Pratiques Types des Smart Contracts
Taille Script/Sortie Max 34 octets pour nouveaux scripts Variable ; contrats limitent souvent la taille des calldata pour l’efficacité du gaz
Taille Données OP_RETURN Max 83 octets Pas d’équivalent direct, mais la taille des événements/logs est souvent contrôlée
Push de Données/Taille Witness Max 256 octets Les smart contracts limitent les tableaux/chaînes en entrée pour éviter l’épuisement du gaz
Exemptions pré-activation UTXO créés avant activation exemptés Les contrats hérités conservent l’état ; les mises à jour affectent uniquement les nouveaux déploiements
Mécanisme d’Application Rejet dur des blocs au niveau nœud Revert au niveau contrat en cas de violation

L’accent clair mis par le BIP-110 sur la réduction des données non essentielles reflète une philosophie analogue à la sécurité des smart contracts qui cherche à réduire les vecteurs potentiels d’abus ou l’épuisement des ressources.

Réflexions sur la Sécurité concernant la Réentrance et les Limites de Taille de Données dans les Protocoles Blockchain

Bien que le BIP-110 n’aborde pas directement les vulnérabilités classiques de réentrance — typiques des smart contracts programmables — ses restrictions de données contribuent indirectement à une meilleure hygiène de sécurité en réduisant la complexité et la taille des scripts de transaction. Dans les smart contracts complexes et étatiques, les attaques de réentrance impliquent un contrat malveillant rappelant une fonction avant la fin des mises à jour d’état, exploitant souvent plusieurs modifications d’état en une seule transaction.

// Exemple simplifié de pattern vulnérable à la réentrance
contract VulnerableContract {
    mapping(address => uint256) public balances;

    function withdraw(uint256 amount) external {
        require(balances[msg.sender] >= amount, "Solde insuffisant");

        (bool success, ) = msg.sender.call{value: amount}("");
        require(success, "Échec de l’envoi d’Ether");

        balances[msg.sender] -= amount; // Mise à jour d’état après appel externe – vulnérable
    }
}

Imposer des limites strictes sur les données, similaires aux restrictions du BIP-110, peut modérer le potentiel d’attaques complexes et gourmandes en données en simplifiant la validation et en réduisant la surface d’attaque même dans des environnements hautement programmables.

// Pattern sécurisé : mise à jour d’état avant appel externe
function withdraw(uint256 amount) external {
    require(balances[msg.sender] >= amount, "Solde insuffisant");

    balances[msg.sender] -= amount; // Mise à jour d’état avant l’appel externe

    (bool success, ) = msg.sender.call{value: amount}("");
    require(success, "Échec de l’envoi d’Ether");
}

L’analogie met en lumière comment limiter la complexité des données et appliquer des changements d’état précoces sont des fondations essentielles pour combattre la réentrance et les vulnérabilités logiques associées dans les smart contracts, un principe que soutiennent les restrictions du BIP-110 au niveau du protocole Bitcoin.


Naviguer à travers l’activation du BIP-110 illustre l’interaction complexe entre changement technique, consensus minier et acceptation communautaire dans les protocoles blockchain majeurs. Observer sa progression via la signalisation obligatoire et le soutien minier négligeable souligne l’importance d’une large participation pour les changements critiques de consensus. Les limitations de taille de données proposées reflètent aussi les préoccupations persistantes sur la durabilité de la blockchain et la surcharge des ressources des nœuds, un thème récurrent dans la sécurité et la conception des smart contracts.

Pour les développeurs et architectes de protocoles, comprendre les impacts pratiques de telles restrictions de données peut guider les patterns de conception des smart contracts pour s’aligner avec les contraintes réseau tout en atténuant de façon préventive des risques comme la réentrance. Explorer ces dynamiques à travers les audits détaillés et les revues de sécurité Soken peut révéler des dépendances subtiles et encourager des stratégies de développement robustes et pérennes sur Bitcoin et au-delà.

Les organisations intégrant des mises à jour ou développant des contrats au-dessus du protocole Bitcoin en évolution bénéficieront d’évaluations périodiques des règles de conformité telles que le BIP-110, en tenant compte à la fois de leurs implications sur les ressources et de leur viabilité au regard du consensus. Se tenir informé des développements sur les scénarios fallback garantit également la préparation face à d’éventuels états alternatifs du réseau issus de différends sur les mises à niveau.

Ce cas valide en outre le rôle essentiel d’analyses approfondies de sécurité des smart contracts, où même l’environnement scripting relativement statique de Bitcoin doit être scruté parallèlement aux propositions de mise à niveau émergentes. Tirer parti de l’expertise multi-protocoles de Soken peut éclairer les surfaces de menace nuancées et les subtilités du consensus, aidant les projets à concevoir des applications blockchain sécurisées, interopérables, anticipant les changements du protocole et les dynamiques minières.

Article author

Questions fréquemment posées

Qu’est-ce qu’une attaque de réentrance en blockchain ?

Une attaque de réentrance exploite une vulnérabilité dans un smart contract, permettant des appels malveillants qui invoquent récursivement des fonctions avant la fin des exécutions précédentes, causant des retraits non autorisés ou des manipulations d’état.

Comment BIP-110 influence-t-il les vulnérabilités de réentrance ?

BIP-110 limite la taille des charges utiles et les sorties de transaction, ce qui réduit indirectement les transactions complexes susceptibles d’être exploitées par des attaques de réentrance, renforçant ainsi la sécurité des smart contracts sur Bitcoin.

Pourquoi le support des mineurs est-il crucial pour l’activation de BIP-110 ?

BIP-110 nécessite au moins 55 % de signalement par les mineurs pour activer ses restrictions transactionnelles ; sans ce soutien, les modèles de transactions vulnérables, incluant ceux exploitables par des attaques de réentrance, restent possibles.

Comment les développeurs peuvent-ils se protéger contre les vulnérabilités de réentrance ?

Les développeurs doivent appliquer les patterns checks-effects-interactions, utiliser des verrous mutex et recourir à des outils d’audit pour identifier et corriger les failles potentielles de réentrance dans les smart contracts.

Quel impact le faible soutien des mineurs à BIP-110 a-t-il sur la sécurité de Bitcoin ?

Un faible soutien des mineurs retarde l’activation de BIP-110, prolongeant l’exposition aux vulnérabilités transactionnelles comme les attaques de réentrance, et peut provoquer des forks affectant la fiabilité du réseau.

Chat