CoinEx Institute — Le problème de la sécurité des actifs de la blockchain : Raisons pour lesquelles le temps réel est nécessaire comme couche de sécurité supplémentaire
Depuis le DeFi Summer de 2020, sous l’impulsion de l’avancement continu des infrastructures blockchain, les protocoles DeFi ont évolué de Swap to Lend to Yield Farming vers des protocoles de plus en plus sophistiqués, couvrant les stratégies AMM (automated market making) Yield Farming basées sur les dérivés blockchain, les plateformes de prêts structurés construites sur l’infrastructure de prêt, et les protocoles de prêts on-chain connectant des collatéraux du monde réel, etc.
L’un des facteurs clés de l’essor de l’innovation DeFi est un concept appelé composabilité. La plupart du temps, lorsqu’un nouveau protocole DeFi est publié, la majeure partie de son code source est également mise à la disposition du public. Cela signifie que les codes sources des contrats intelligents d’un ou plusieurs protocoles DeFi peuvent être facilement composés ensemble pour en créer un nouveau. Ils fonctionnent comme des blocs Lego — des blocs de différentes formes peuvent être utilisés pour construire des projets uniques, ce qui réduit considérablement le coût de l’innovation.
Étonnamment, à la lumière d’innovations aussi massives, le nombre d’utilisateurs de DeFi n’a pas connu de croissance significative depuis 2020. Pendant ce temps, les institutions traditionnelles n’ont pas mis de liquidités dans l’espace blockchain. L’une des principales causes de cette situation est le problème de sécurité de DeFi.
La finance du monde réel vient avec un système bien établi et sécurisé. Par exemple, lorsque vous déplacez des fonds de la banque A à la banque B, des camions-caisses et des policiers armés seront là pour garder les fonds en sécurité, ce qui est un processus rassurant. En outre, les banques seront également responsables des biens du client et offriront une compensation pour toute perte pendant le processus.
DeFi, cependant, diffère du système financier traditionnel. Les contrats intelligents sont immuables par conception. Ce sont essentiellement des boîtes noires qui n’envoient pas de journaux lisibles, de sorte que les gens ne peuvent pas avoir une vision claire des processus internes. La plupart des audits de contrats intelligents n’aident pas car ils se concentrent uniquement sur les formes d’attaques connues, plutôt que sur les nouveaux types de failles qui sont très susceptibles de se produire. Par ailleurs, de nombreux protocoles DeFi se présentent comme un produit “à utiliser à ses propres risques”. Cela peut être effrayant pour les utilisateurs réguliers et leur faire perdre confiance pour placer la plupart de leurs dépôts bancaires dans un écosystème DeFi.
DeFi n’a pas déçu ceux qui ne lui faisaient pas confiance. Jusqu’à présent, DeFi a connu 82 brèches de sécurité, avec un montant initial piraté de plus de 1,8 milliard de dollars. En particulier, le prêt flash est l’attaque la plus courante, représentant 33 cas. L’une des raisons de sécurité derrière une attaque de prêt flash est l’absence du concept de temps précis et d’un mécanisme de confirmation dans les blockchains. Nous allons passer en revue les raisons spécifiques dans les chapitres suivants.
I. Le temps et le réseau temporel des ordinateurs
Voyons d’abord comment le temps fonctionne dans les programmes informatiques classiques :
Le temps est un concept essentiel pour les programmes informatiques. Sans le concept de temps, il est impossible d’accéder à un site Web compatible TLS, de créer de l’entropie pour certains algorithmes, d’échanger des secrets ou d’authentifier des licences Windows. Nous considérons la mesure du temps sur les ordinateurs comme allant de soi, mais l’échange et le suivi du temps constituent un problème incroyablement difficile à résoudre lorsqu’il s’agit d’opérations réelles.
Le temps est essentiellement une représentation de l’état global actuel de l’univers. Cela signifie qu’à tout moment, chaque entité doit partager exactement la même valeur. C’est évidemment un énorme problème pour les ordinateurs : Supposons qu’il existe une énorme horloge atomique très précise au centre de l’univers, qui transmet des données temporelles sur Internet. Un problème au cours de ce processus est que la transmission des données prend du temps en soi. Lorsqu’un dispositif reçoit des données temporelles sur l’internet et les applique à ses propres systèmes, l’état global de l’univers (temps) a déjà changé. En d’autres termes, il est impossible pour un dispositif de mise en réseau d’être parfaitement à jour avec la valeur réelle du temps global.
Un autre problème de la mesure du temps en réseau est qu’il est impossible de prévoir parfaitement le temps nécessaire à la transmission des données : les conditions du réseau changent constamment et personne ne peut garantir une fiabilité parfaite dans la nature. Combiné au premier problème, cela signifie que le destinataire ne peut pas non plus reproduire parfaitement la valeur du temps, ce qui entraîne des incohérences.
Le protocole NTP (Network Time Protocol) résout ce problème grâce à la structure de vérification mutuelle de serveurs de chronométrage répartis dans le monde entier (jusqu’à 15 strates) et à la construction d’un arbre de Bellman-Ford à plus court chemin (qui réduit à la fois la latence et les incohérences de temps de transfert). Cela fonctionne parfaitement bien pour les ordinateurs personnels et les services centralisés, en particulier pour les applications qui dépendent d’une synchronisation précise (par exemple, les programmes de cryptage). Même si les horodatages dérivés du NTP ne sont que de simples estimations, ils sont suffisamment précis et matures pour que les applications dont le temps est critique puissent s’y fier.
II. Le mécanisme du temps dans les réseaux blockchain
Le concept de temps existe également sur les blockchains. Bien que certains disent que la blockchain elle-même est un dérivé du concept de temps, le traitement du temps par un réseau blockchain est extrêmement imprécis comparé à la précision de 64 bits du système NTP. Après tout, c’est aussi parce que les services visés par le temps blockchain ne sont pas des applications de contrats intelligents sensibles au temps comme les applications DeFi. En outre, elle vise à permettre l’exécution sûre et efficace du mécanisme de consensus. Un objectif aussi différent rend également les réseaux blockchain plus tolérants aux imprécisions temporelles. Dans les paragraphes suivants, nous examinerons certains mécanismes de consensus populaires et la façon dont ils déterminent le temps. Cela dit, il convient de noter que la confirmation du temps sur les blockchains est si généralement imprécise qu’elles ne peuvent pas effectuer les opérations financières et les contrôles de sécurité pour les actifs sur la chaîne qui valent des dizaines de milliards de dollars.
1. Bitcoin
Bitcoin présente le concept de temps car il est nécessaire pour son mécanisme de consensus Proof-of-Work. Sans un horodatage valide, le réseau ne peut pas vérifier si une transaction particulière en cours de minage tente de modifier une transaction précédente. Bien que chaque bloc Bitcoin contienne un horodatage UNIX, l’heure d’un bloc n’est pas une représentation exacte d’un horodatage UNIX. Cela est dû au fait que le consensus Bitcoin ne considère les horodatages que comme une partie du système de sécurité PoW, et non comme un outil réel pour mesurer le temps sur la blockchain.
Pour citer Bitcoin Wiki, chaque bloc contient un horodatage Unix fourni par les mineurs et sera accepté comme valide s’il est 1) supérieur à l’horodatage médian des 11 blocs précédents et 2) inférieur à l’heure ajustée du réseau plus 2 heures. Par conséquent, la différence entre les temps des blocs et les temps réels varie d’une heure à deux heures.
2. Ethereum
Dans le réseau Ethereum, les horodateurs sont également soumis directement par les mineurs avec une grande flexibilité. En d’autres termes, un horodatage Ethereum peut être soit vrai, soit faux, et le mécanisme de consensus n’a aucun moyen de confirmer son exactitude.
Selon un post sur le forum Ethereum :
source :https://ethereum.stackexchange.com/questions/413/can-a-contract-safely-rely-on-block-timestamp/428#428, plusieurs mécanismes peuvent être utilisés pour empêcher la déviation excessive des horodatages Ethereum : 1) Si l’horodatage d’un bloc s’écarte significativement du temps réel, personne ne sera disposé à générer plus de blocs avec ce bloc comme bloc parent ; 2) L’horodatage du dernier bloc ne peut pas être antérieur au bloc parent ; 3) La difficulté du bloc sera la plus faible lorsque le bloc n’est pas marqué plus tôt que nécessaire. Ces mécanismes pourraient permettre aux mineurs de soumettre volontairement des horodatages qu’ils estiment corrects. Cependant, lorsque d’autres incitations externes existent, le réseau Ethereum ne dispose d’aucun mécanisme rigoureux pour garantir que les mineurs soumettent toujours l’horodatage correct. Par conséquent, le réseau ne peut pas garantir le bon fonctionnement des protocoles sensibles au temps (par exemple, l’agriculture de rendement, le prêt). Ainsi, les grandes institutions ne confieront pas leur argent à Ethereum.
3. Polkadot
Selon le document de Substrate, Polkadot marque également les blocs avec des horodatages qui sont directement fournis par les mineurs. En attendant, il n’existe aucun mécanisme rigoureux pour confirmer ou synchroniser ces horodatages. Le document indique également que bien que l’heure d’un bloc ne puisse être prouvée, les validateurs peuvent convenir qu’elle se situe dans un certain delta de leur horloge système.
4. Cosmos
Cosmos’s Tendermint is the only consensus algorithm that writes time into the consensus mechanism, which equips it with the most robust concept of time. To be more specific, the nodes of a block will vote on the time it has submitted to reach a consensus, and only the timestamp that nodes agree on will be included in the block.
III. L’absence d’un système d’horodatage dans les blocs
Les blockchains sont non seulement imprécises en termes de génération d’horodatage, mais elles ne disposent pas non plus d’un système ou d’un mécanisme d’horodatage au sein des blocs. Les transactions du monde réel sont envoyées puis confirmées une par une, chacune d’entre elles étant accompagnée d’une heure et d’une séquence précises. De cette façon, de nombreuses fausses transactions ne peuvent pas se produire ou être confirmées. Dans un réseau blockchain, en revanche, les transactions de chaque bloc sont regroupées et ne sont pas marquées par des horodatages précis, une par une.
Bien que toutes les transactions puissent être vérifiées après la génération du bloc, il est impossible de déterminer l’heure de soumission et la séquence spécifiques de chaque transaction. Cela explique en partie pourquoi de nombreuses attaques (par exemple, les prêts flash ou les échanges flash) peuvent être menées à bien. Si des marques temporelles précises sont fournies à l’intérieur des blocs comme preuve de vérification, les protocoles d’application pourraient développer des algorithmes plus sûrs et plus stables. En attendant, en raison de ses caractéristiques intrinsèques, le temps est un réseau de consensus hautement sécurisé, irréversible et immuable.
IV. Solutions potentielles
Le manque de temps sur les blockchains peut être résolu en interne ou en externe.
Solution interne : Un mécanisme de confirmation au niveau du consensus qui vérifie l’heure de la blockchain par rapport à l’heure du monde réel devrait être introduit, ou un système de temps indépendant avec une plus grande précision devrait être établi.
Solution externe : Les blockchains ont besoin d’un réseau décentralisé qui utilise un réseau d’oracle de temps de type NTP pour ajouter des horodatages précis aux blocs du réseau et aux transactions au sein des blocs.
À la lumière de la collaboration multi-chaînes, la solution externe pourrait être plus appropriée. En supposant, par exemple, qu’Ethereum et Terra aient leurs propres horloges, si les horodatages fournis par ces horloges sont différents, il nous sera difficile de déterminer lequel est correct lors des interactions entre les deux. Par exemple, dans un réseau informatique classique, en fin de compte, une seule horloge maîtresse indique à tous l’heure qu’il est. Les blockchains ont également besoin d’une horloge maîtresse.
Dans le futur multivers rendu possible par les chaînes multiples, nous serons confrontés à un autre défi : le nombre d’horloges sur tous les différents ordinateurs est bien plus élevé que prévu. Par exemple, il y a des horloges de jeu, des horloges d’accumulation des intérêts de DeFi, des horloges de blockchain, etc. Comme ces horloges vont perturber l’heure dans les méta-nœuds, il faudra une seule source de temps fiable pour unifier et synchroniser toutes les transactions. Lorsqu’un tel réseau d’oracle du temps sera finalement largement adopté, il fournira une couche de sécurité supplémentaire, en offrant des confirmations de temps supplémentaires à chaque transaction, tout comme ce qui se passe dans le monde réel. Le temps deviendra également une couche de sécurité supplémentaire pour les réseaux blockchain.
Référence :
2. https://en.bitcoin.it/wiki/Block_timestamp