Série de sécurité Web3 : Si vous transférez des fonds vers une autre chaîne par erreur, pouvez-vous encore les récupérer ?

ETH7,96%

Dans le monde de la cryptomonnaie, une simple erreur de clic peut déclencher une « catastrophe numérique ». L’un des cauchemars les plus courants est d’envoyer des actifs vers la mauvaise blockchain. Par exemple, vous souhaitez envoyer des ETH à une adresse sur le testnet Sepolia d’Ethereum, mais par erreur, vous les envoyez à une adresse sur le réseau principal d’Ethereum. Dans ce cas, est-il encore possible de récupérer les fonds transférés par erreur depuis le réseau principal ? La possibilité de retrouver les actifs dépend principalement du type d’adresse de destination. Cet article analysera différentes situations.

1. Scénario 1 : l’adresse de destination est une EOA

Une (Compte Externe Contrôlé) (EOA) est ce que nous appelons couramment un portefeuille contrôlé directement par une clé privée ou une phrase de récupération.

Conditions préalables pour récupérer les actifs :

  • Vous avez envoyé des actifs à une adresse EOA.
  • Vous possédez la clé privée ou la phrase de récupération de cette adresse EOA cible. (Généralement, il s’agit d’un autre portefeuille que vous contrôlez, ou celui d’un ami prêt à coopérer).
  • La chaîne cible est compatible EVM.

Méthode de récupération des actifs :

Le titulaire de la clé privée de l’adresse EOA de réception peut simplement retirer les fonds sur la chaîne cible.

2. Scénario 2 : l’adresse de réception est un contrat

C’est l’un des scénarios les plus désespérés. Étant donné que l’adresse d’un contrat intelligent n’est pas générée par une clé privée, personne ne possède la clé privée du contrat. Par conséquent, il n’est pas possible de contrôler le contrat de la même manière qu’une EOA. De plus, si le contrat n’a pas été préalablement programmé pour gérer “les transferts d’erreur” avec une fonction de secours, les fonds envoyés par erreur risquent d’être verrouillés définitivement dans le contrat, personne ne pouvant les retirer.

Cependant, dans certains cas, il existe encore une lueur d’espoir. Nous allons d’abord élaborer un scénario où des ETH sont verrouillés sur le réseau principal d’Ethereum, puis expliquer comment récupérer ces fonds.

2.1. Présentation du scénario

Ce scénario peut être résumé ainsi : un utilisateur souhaite appeler un contrat sur le testnet Sepolia et transférer des ETH dans ce contrat pour minter des tokens, mais lors de l’envoi, il s’est connecté par erreur au réseau principal, ce qui a entraîné le verrouillage des ETH dans un contrat sur le réseau principal. La construction précise du scénario est la suivante :

1. Sur le testnet Ethereum Sepolia, le projet (EOA) déploie un contrat de réalisation, supposons que ce contrat a pour fonction principale que l’utilisateur dépose des ETH pour minter des AToken, une version simplifiée de la fonction mintTokens. Supposons que l’adresse du déploiement soit A. À noter que, dans A, il n’existe aucune fonction permettant de retirer directement des ETH.

2. Sur le testnet Ethereum Sepolia, le projet déploie un contrat de usine (factory), ce contrat permet, en utilisant l’adresse du contrat de réalisation et un salt, de déployer un contrat proxy minimal (Clones) pointant vers le contrat de réalisation (comme la fonction deployProxyByImplementation). Admettons que cette usine ait été déployée à l’adresse B. En appelant la fonction deployProxyByImplementation avec l’adresse du contrat A comme _implementation,** on déploie un contrat proxy pointant vers A, à l’adresse C.**

3. Un utilisateur souhaite, sur le testnet Sepolia, minter des AToken en transférant ETH, et envoie une transaction pour appeler le contrat proxy C. Normalement, le contrat proxy C appelle la fonction mintTokens du contrat A pour effectuer l’opération. Cependant, l’utilisateur s’est connecté par erreur au réseau principal. Il a donc envoyé des ETH directement à l’adresse C sur le réseau principal.** À ce moment-là, aucune contrat n’est déployé à l’adresse C du réseau principal, et personne ne possède la clé privée de C, donc l’argent de l’utilisateur est temporairement verrouillé à cette adresse C du réseau principal.

2.2. Points clés

Avant de présenter une solution de secours concrète, il est important de connaître quelques notions fondamentales nécessaires.

2.2.1. create & create2

create et create2 sont deux méthodes courantes pour déployer un contrat en Solidity.

  • create déploie un contrat dont l’adresse est déterminée par l’adresse de l’expéditeur et le nonce de ce compte, indépendamment du contenu du contrat.
  • create2 déploie un contrat dont l’adresse dépend non seulement de l’adresse de l’expéditeur, mais aussi de quatre paramètres :
    • 0xff
    • l’adresse du contrat à déployer (address))
    • la valeur de salt (entière) fournie en paramètre
    • le bytecode d’initiation du contrat (init_code)

2.2.2. Clones (Proxy minimal)

https://docs.openzeppelin.com/contracts/4.x/api/proxy#clones

Les Clones, ou contrats proxy minimaux, sont une technique pour déployer à coût réduit (gas faible) un contrat proxy pointant vers un contrat de réalisation spécifique. Dans le contrat Clones, le déploiement d’un proxy via create ou create2 est possible, par exemple avec la fonction cloneDeterministic, qui utilise create2.

Dans la fonction cloneDeterministic, le bytecode du proxy déployé est très court, par exemple : 0x363d3d373d3d3d363d73<adresse du contrat de réalisation>5af43d82803e903d91602b57fd5bf3. L’adresse du proxy est calculée en intégrant l’adresse du déployeur, le salt, et le bytecode, mais elle n’est pas dépendante du contenu du contrat de réalisation.

Selon la fonction cloneDeterministic, le proxy déployé via create2 a une adresse qui dépend du déployeur, du salt, et de l’adresse du contrat de réalisation, mais pas du bytecode du contrat de réalisation lui-même.

2.3. Solution de secours

Nous allons maintenant expliquer comment récupérer les ETH présents à l’adresse C du réseau principal. L’idée principale est de déployer un contrat à cette adresse, qui prendra en charge la gestion du fonds, et pourra ainsi récupérer et transférer les ETH.

Voici les étapes détaillées :

1. Déployer sur le réseau principal un contrat usine (factory) à la même adresse B que sur le testnet. La raison est que, lors du déploiement via cloneDeterministic, l’adresse du proxy dépend de l’adresse du contrat usine. En retrouvant la transaction de déploiement de l’usine sur le testnet, on peut calculer le nonce du déployeur à ce moment-là. Sur le réseau principal, en utilisant ce nonce, on déploie à nouveau le même contrat usine, ce qui donne la même adresse B.

2. Déployer un contrat de réalisation (implementation) à la même adresse A que sur le testnet. Le déploiement du contrat de réalisation n’est pas dépendant du bytecode, mais de l’adresse du déployeur et du nonce. On peut donc déployer un contrat compatible à l’adresse A, en ajustant le nonce du déployeur pour correspondre à celui du testnet. Ce contrat doit disposer d’une fonction permettant de retirer des ETH.

3. Déployer sur le réseau principal un contrat proxy à la même adresse C que sur le testnet. En utilisant la transaction de déploiement du proxy sur le testnet (avec le même salt), on peut calculer l’adresse C. En déployant le proxy avec ce même salt, on obtient le même contrat proxy à l’adresse C.

4. Appeler la fonction de retrait dans le contrat proxy C pour transférer les ETH vers le portefeuille souhaité. Le propriétaire (EOA) appelle la fonction de retrait du contrat proxy C, en spécifiant une adresse de réception, pour récupérer les ETH verrouillés.

#最小代理合约(Clones)## 2.4. Résumé

D’après cette méthode de secours, la récupération des fonds dépend de plusieurs conditions. Par exemple, l’adresse du déployeur n’a pas été utilisée avec un nonce supérieur à celui du déploiement initial, le contrat verrouillant les fonds possède une fonction de retrait ou une méthode pour déployer une telle fonction, ou via des mécanismes d’upgrades ou de proxies (Clones).

En conclusion, il faut être extrêmement prudent lors de chaque transaction, vérifier attentivement chaque étape, et avant d’interagir avec un contrat, utiliser des outils de scan de vulnérabilités comme AI SCAN de ZAN pour tester la sécurité. En cas de fonds bloqués, ne pas paniquer : contactez l’équipe de sécurité contractuelle de ZAN pour une assistance de récupération.

Cet article a été rédigé par ZANTeam (@zan_team) & AntChain OpenLabs (@AntChainOpenLab), avec Cara (@Cara6289).

Avertissement : Les informations contenues dans cette page peuvent provenir de tiers et ne représentent pas les points de vue ou les opinions de Gate. Le contenu de cette page est fourni à titre de référence uniquement et ne constitue pas un conseil financier, d'investissement ou juridique. Gate ne garantit pas l'exactitude ou l'exhaustivité des informations et n'est pas responsable des pertes résultant de l'utilisation de ces informations. Les investissements en actifs virtuels comportent des risques élevés et sont soumis à une forte volatilité des prix. Vous pouvez perdre la totalité du capital investi. Veuillez comprendre pleinement les risques pertinents et prendre des décisions prudentes en fonction de votre propre situation financière et de votre tolérance au risque. Pour plus de détails, veuillez consulter l'avertissement.

Articles similaires

La Fondation Ethereum vend 416,67 ETH pour 933 340 DAI

Message des actualités de Gate News : la Fondation Ethereum a vendu 416,67 ETH en échange de 933 340 DAI contre 933 340 $. La fondation continue de détenir des avoirs ETH supplémentaires.

GateNewsIl y a 49m

ETH baisse de 1,11 % sur 15 minutes : les fonds des gros détenteurs affluent en masse vers les bourses, entraînant une pression vendeuse qui domine

Du 2026-04-08 13:30 à 13:45 (UTC), le prix de l’ETH a chuté de 2265.79 USDT à 2234.72 USDT en 15 minutes, avec une amplitude de 1.37% ; le rendement de la bougie en K est de -1.11%. La baisse anormale a attiré une large attention du marché ; la volatilité à court terme est nettement plus élevée que celle des périodes qui précèdent et suivent, reflétant que le sentiment de trading a été perturbé par des facteurs déclenchés de manière soudaine, tandis que le risque de liquidité s’est accru. Le principal moteur de ce mouvement anormal est un afflux massif et synchronisé de capitaux de gros acteurs vers les plateformes de trading ; les données on-chain montrent l’existence de 4 transferts d’un montant supérieur à 10k ETH chacun, les entrées sur les exchanges

GateNewsIl y a 55m

BlackRock a transféré 8 513 ETH et environ 417 BTC vers un certain CEX, pour une valeur totale d’environ 49 millions de dollars

Actualités de Gate News, le 8 avril, selon des données surveillées par Arkham, environ une heure auparavant, BlackRock a transféré vers une adresse CEX certains 8 513 ETH via son fonds négocié en bourse d’actions sur Ethereum (ETF) spot ETHA, d’une valeur de 19,14 millions de dollars ; en outre, via son fonds négocié en bourse d’actions sur Bitcoin (ETF) IBIT, BlackRock a transféré vers une adresse CEX 416.654 BTC, d’une valeur de 29,86 millions de dollars.

GateNewsIl y a 2h

Des chercheurs d’Ethereum proposent la solution EIP-8142, visant à réduire la charge de données des validateurs

Des chercheurs en Ethereum ont proposé la solution EIP-8142 « Block-in-Blobs », visant à encoder les données de transaction dans des blobs afin de réduire les besoins en bande passante. Grâce à l’échantillonnage de la disponibilité des données et à des engagements cryptographiques, l’exactitude et la disponibilité des données sont garanties, ce qui permet d’unifier le modèle de facturation en « data gas » et d’améliorer la fiabilité des scénarios zkEVM.

GateNewsIl y a 2h

Un expert en crypto déclare qu’Ethereum (ETH), l’altcoin pionnier, fera x3 à x4 au cours des 6 prochains mois.

Un expert en crypto annonce que la crypto pionnière Ethereum (ETH) va multiplier sa valeur par 3 à 4.  Cette hausse devrait survenir d’ici les 6 prochains mois. Cela va dans le sens des nombreuses perspectives optimistes selon lesquelles ETH atteindra de nouveaux sommets historiques (ATH) cette année. Le prix de l’actif crypto pionnier Bitcoin (BTC) vient tout juste d’enregistrer une hausse

CryptoNewsLandIl y a 3h
Commentaire
0/400
Aucun commentaire