PaperTrade et Hyperliquid: une enquête sur les transactions synthétiques, les cotations et les retraits

PaperTrade et Hyperliquid: une enquête sur les transactions synthétiques, les cotations et les retraits

Une analyse de PaperTrade montre comment un mouvement de $4.40 dans le prix de l'ETH a produit un profit de $13,224 sur une position synthétique avec un notionnel de $10M.

23 oct. 2026

PaperTrade a signalé des tentatives de manipulation des meilleurs prix d'achat et de vente (BBO) sur Hyperliquid du 10 au 11 octobre 2026. Ces cotations étaient utilisées pour évaluer les positions de trading synthétiques. Le projet a reconnu ces tentatives le 11 octobre. Le compte examiné dans cette analyse a retiré 1,279,106.191184 USDC de plus qu'il n'en avait déposé sur la plateforme.

PaperTrade réglait les positions clôturées au point médian entre le meilleur prix d'achat et de vente actuels. En même temps, l'ajustement à la baisse du profit, appelé «haircut», était calculé à l'aide d'une taille de position de référence fixe.

Adresses et leurs rôles

Toutes les adresses ci-dessous se trouvent sur le réseau HyperEVM, qui utilise l'ID de chaîne 999.

RéseauAdresseRôle établi
HyperEVM0x2025137a136bea7446deba681cbfc7cf1970840eLe compte de trading examiné dans cette analyse.
HyperEVM0x6cd5661646289fb6e65ea5c032310fded797d0a2Le contrat proxy d'échange qui enregistre les positions, les soldes et les retraits.
HyperEVM0xa9b4c7b7ca5835652d81e25739c870d49f39cc2eLe contrat proxy de PriceOracle, le composant qui récupère les données de prix.
HyperEVM0x3997ffc8cbd281d4fc8d0548e505ae2fbbbd985aL'implémentation de PriceOracle exécutée dans les transactions d'ouverture et de clôture de position examinées.

Contexte

PaperTrade proposait un trading à effet de levier sur des positions synthétiques adossées au pool de liquidité Martingaler. L'ouverture d'une position créait une exposition de trading interne: PaperTrade ne plaçait pas d'ordre d'achat ou de vente équivalent pour l'actif réel sur Hyperliquid. Lorsqu'une position était clôturée, son résultat financier, le profit ou la perte (PnL), était réglé à partir des fonds du pool.

PriceOracle récupérait les meilleurs prix d'achat et de vente actuels sur Hyperliquid via un mécanisme système spécial appelé precompile à l'adresse 0x080e, puis calculait le point médian de ces prix. Celui-ci était utilisé comme prix d'exécution de la transaction. Lorsqu'une position bénéficiaire était clôturée, une bande de seuil, un ajustement du profit pour l'impact de prix asymétrique et des frais sur les clôtures bénéficiaires étaient appliqués. S'il n'y avait pas assez de liquidité pour un paiement, les paiements étaient mis en file d'attente.

Le prix provenait donc des meilleures cotations d'Hyperliquid, tandis que la position synthétique était adossée au pool de PaperTrade. Le montant du paiement dépendait de la taille de la position, même si une transaction de la taille correspondante n'avait pas nécessairement lieu sur le marché au point médian utilisé.

Comment les événements se sont déroulés

Tous les horodatages ci-dessous sont exprimés en temps universel coordonné (UTC). Les quatre étapes décrivent l'ouverture et la clôture de la position du compte examiné, son trading externe et ses retraits.

1. Ouverture de la position

Le 10 octobre à 21:41:36, le compte 0x2025137a136bea7446deba681cbfc7cf1970840e a ouvert une position longue sur ETH, un pari sur la hausse du prix d'Ethereum, numérotée 72098. Cela s'est produit dans la transaction 0xe639…f225.

Étape 1 - enregistrement d'ouverture de position décodé localement, bloc 48,202,020, journal d'événements 4. Visualisation: CertiK
Étape 1 - enregistrement d'ouverture de position décodé localement, bloc 48,202,020, journal d'événements 4. Visualisation: CertiK

2. Clôture de la position

Six minutes plus tard, à 21:47:36, la position a été clôturée dans la transaction 0xb5bc…df42d. L'enregistrement de clôture indique un prix de sortie de $2,510.85. Pendant ce temps, le prix a évolué en faveur de la position d'environ 17.55 points de base.

La trace historique des appels montre la séquence Exchange → PriceOracle → le mécanisme système de récupération des meilleures cotations BBO 0x080e. Ce mécanisme a renvoyé les valeurs 251080 et 251090 en unités de $0.01, soit un prix d'achat de $2,510.80 et un prix de vente de $2,510.90. PriceOracle a renvoyé 251085, correspondant au prix $2,510.85 enregistré lors de la clôture réussie de la position. Les deux lectures de cotations BBO dans cette transaction montrent les mêmes valeurs.

L'écart entre le prix d'achat et le prix de vente était de $0.10, soit environ 0.40 points de base. Le chiffre de 17.55 points de base reflète le rendement de la position entre l'entrée et la sortie sur six minutes, et non un écart par rapport à un prix de marché indépendant. Aucun de ces deux chiffres ne prouve à lui seul que la cotation était anormale ou délibérément influencée. Cet exemple montre comment fonctionnaient les règles de règlement enregistrées. Un trading à effet de levier ordinaire reste une explication suffisante pour cette transaction particulière.

Étape 2 - Traces historiques dRPC sauvegardées, rendues localement, incluant l'ouverture et la clôture de la position 72098. Visualisation: CertiK
Étape 2 - Traces historiques dRPC sauvegardées, rendues localement, incluant l'ouverture et la clôture de la position 72098. Visualisation: CertiK

C'est l'étape où le prix d'entrée se transforme en gain. Les prix sont exprimés en unités de $0.01, donc la bande de seuil, calculée avec arrondi à l'entier inférieur, est:

Le résultat correspond au calcul enregistré à la clôture de la position. Les valeurs du tableau sont arrondies à six décimales; les calculs intermédiaires ont été effectués en pleine précision.

Étape de calculFormuleMontant, USDC
Profit brut après la bande de seuil10,000,000 × m17,355.223523
Profit ajustéProfit brut × coefficient13,494.728986
Frais sur clôture profitableProfit ajusté × 2%269.894580
Profit net après fraisProfit ajusté − frais13,224.834407

Avec les mêmes prix et paramètres, une position hypothétique de $500K aurait généré 661.241720 USDC après frais. La position enregistrée de $10M a généré 20 fois plus, tandis que la réduction en pourcentage du profit liée à l'ajustement d'impact sur le prix est restée identique dans les deux cas, à 22.243992%.

Ainsi, un mouvement de prix de $4.40 a produit un profit de 13,224.834407 USDC sur la position examinée. Dans les cinq secondes précédant la clôture de cette position, le compte n'a effectué aucune transaction ETH ayant abouti à l'exécution d'un ordre. Cet exemple établit donc comment le gain a été calculé, mais ne révèle pas de transaction manipulatrice correspondante.

Une envolée de 100x, un prêt de $75M et un retour en arrière de la blockchain: que s'est-il passé avec Tectonic?5 sept. 2026En savoir plus

3. Transactions externes et règlements répétés

Entre 22:01:00 et 22:03:00, le même compte a effectué 597 transactions ETH sur Hyperliquid: il a acheté 6,058.1450 ETH et vendu 383.0414 ETH. L'historique plus complet collecté du compte contient 10,427 transactions ETH pour un chiffre d'affaires total d'environ $231.84M.

L'historique de PaperTrade enregistre 337 positions ETH clôturées, dont 296 clôturées avec profit. Les positions profitables couvraient six tailles notionnelles, de $500K à $10M. L'exposition totale a été constituée sur plusieurs positions.

Étape 3 - Résumé local des registres de transactions Hyperliquid et des vérifications de règlement PaperTrade, avec les identifiants de transactions d'origine conservés dans l'échantillon. Visualisation: CertiK
Étape 3 - Résumé local des registres de transactions Hyperliquid et des vérifications de règlement PaperTrade, avec les identifiants de transactions d'origine conservés dans l'échantillon. Visualisation: CertiK

Sur les 296 clôtures profitables, 62 se sont produites dans la seconde suivant une transaction ETH effectuée par le même compte. Dans 52 cas, le chevauchement temporel ne concernait que des transactions où le compte agissait en tant que maker, c'est-à-dire fournissait de la liquidité au marché. Dans 10 autres cas, il y avait des transactions où le compte agissait en tant que taker, exécutant des ordres déjà placés. Ces dix derniers cas s'inscrivent dans trois transactions de clôture de position en l'espace de deux secondes.

Par exemple, la position 69035 a été clôturée avec profit sur une position courte, un pari sur la baisse du prix, à $2,505.85, tandis que des ventes taker à $2,505.80 ont été exécutées à un moment proche. En comparaison, la clôture de la position 71121 a coïncidé dans le temps avec dix achats maker.

La trace de transaction reconstituée pour la position 69035 montre des cotations de $2,505.80 et $2,505.90, dont le point médian est le $2,505.85 enregistré. La transaction pour la position 71121 montre de même des prix de $2,509.70 et $2,509.80, et l'oracle renvoie le point médian de $2,509.75. Les cotations réelles d'entrée pour ces transactions ont donc été établies.

Tester une influence délibérée sur le prix nécessite des données séquentielles sur les cotations à l'échelle de l'ensemble du marché, sur les ordres placés et annulés, ainsi qu'un prix de marché indépendant pour la même période. Un simple horodatage correspondant ne suffit pas.

4. Retraits

Durant la période examinée, cinq retraits de l'Exchange correspondaient à des enregistrements de transactions réussis et à des crédits USDC sur le réseau HyperCore.

Heure de retrait, UTCMontant, USDCTransaction HyperEVM
10 octobre, 21:13:5917,961.1126120x9979…cd72
10 octobre, 21:34:09131,739.2378440x9a27…3fbc
10 octobre, 22:06:481,543,488.7920970x4162…23b0
10 octobre, 22:13:21735,681.5022820x136e…abd6
11 octobre, 02:10:3550,336.0492030x0223…ac48
Total retiré2,479,206.694038
Étape 4 - Rendu local du plus grand retrait, bloc 48,203,557, journal d'événements 17, et le crédit correspondant sur HyperCore. Visualisation: CertiK
Étape 4 - Rendu local du plus grand retrait, bloc 48,203,557, journal d'événements 17, et le crédit correspondant sur HyperCore. Visualisation: CertiK

Le total des dépôts s'élevait à 1,200,100.502854 USDC, y compris les re-dépôts de fonds précédemment retirés. En soustrayant les dépôts du total des retraits, on obtient une sortie nette du compte de 1,279,106.191184 USDC.

Parallèlement, le total des retraits inclut le capital initial restitué et des fonds réutilisés.

Un point médian BBO sans vérification indépendante du prix de marché

La branche PriceOracle décompilée rejette les prix nuls et les cotations invalides dans lesquelles l'offre d'achat (bid) est supérieure à l'offre de vente (ask), puis retourne le point médian actuel des deux cotations. Le code ne contient aucun calcul de moyenne des prix sur une période et aucune vérification indépendante d'un écart significatif par rapport au prix du marché.

Ces vérifications confirment que les cotations ont un format et une relation valides, mais n'évaluent pas s'il existe suffisamment de liquidité réelle pour couvrir une position synthétique de la taille correspondante.

Code de l'oracle désassemblé - Lecture des cotations BBO
Code de l'oracle désassemblé - Lecture des cotations BBO

Le pourcentage d'ajustement ne dépend pas de la taille de la position

La formule asymétrique d'impact sur le prix utilise le paramètre fixe referenceNotional, un montant notionnel pris comme base de calcul, au lieu de la taille réelle de la position. Ainsi, le montant monétaire du versement augmente avec la taille de la position, mais le pourcentage d'ajustement reste le même.

Pour les six tailles de position, les résultats des 296 clôtures rentables correspondent à la courbe de calcul documentée à 0.000000001 USDC près.

Documentation officielle sur l'ajustement des profits, enregistrée le 19 octobre, montrant l'utilisation d'un montant notionnel de référence fixe. La conclusion repose sur la documentation, et non sur un code source Solidity vérifié de manière indépendante et déployé au moment de l'incident
Documentation officielle sur l'ajustement des profits, enregistrée le 19 octobre, montrant l'utilisation d'un montant notionnel de référence fixe. La conclusion repose sur la documentation, et non sur un code source Solidity vérifié de manière indépendante et déployé au moment de l'incident

Réponse de PaperTrade et restitution des fonds

Dans une déclaration du 11 octobre, PaperTrade a reconnu que des tentatives avaient été faites pendant la nuit pour manipuler les meilleurs prix d'achat et de vente (BBO) du BTC et de l'ETH sur Hyperliquid. Le projet a expliqué que ces tentatives avaient été rendues possibles par des limites d'intérêt ouvert trop souples au lancement de la plateforme. Il a également indiqué avoir commencé à resserrer les limites directement on-chain et au niveau du relayer, le composant qui transmet les demandes de trading.

PaperTrade a également indiqué que l'un des utilisateurs ayant réalisé un profit avait restitué la quasi-totalité des gains via de nouveaux comptes. Le compte examiné a enregistré 30 liquidations ultérieures ayant entraîné des pertes de 450,000 USDC. Ces pertes sont déjà incluses dans le calcul de la sortie nette.

Cependant, les changements de limites et la restitution des fonds via d'autres comptes n'ont pas été confirmés de manière indépendante.

#USDC#Piratage#Ethereum#DeFi
Une position de $10M et un profit de $13K: décomposition des mécanismes de règlement de PaperTrade