Aller au contenu

    Appuyez sur / pour rechercher, sur [ et ] pour la page précédente et la suivante.

    Fonctionnement en détail

    Dépôts : proxys CREATE2

    Pour déposer, on envoie des USDC à une adresse personnelle sur HyperCore. Ce qui y arrive vous est crédité ; il n’y a aucune fonction de dépôt à appeler ni rien à approuver. Déposez via l’app : des USDC envoyés à la même adresse sur HyperEVM ne sont pas crédités.

    Déposer via votre adresse de dépôtLes USDC envoyés à votre adresse de dépôt sur HyperCore sont balayés vers l’Exchange, vérifiés deux fois, puis crédités sur votre solde.1Vous envoyez des USDCà votre adresse de dépôt2Proxy de dépôtun contrat que seul l’Exchange peut vider3Demande de balayageproxy → Exchange sur HyperCore4Deux vérificationsle solde du proxy a baissé et les fonds sont arrivés5Créditévotre solde de trading
    Déposer via votre adresse de dépôt. Les USDC envoyés à votre adresse de dépôt sur HyperCore sont balayés vers l’Exchange, vérifiés deux fois, puis crédités sur votre solde.

    Votre propre adresse de dépôt

    Chaque compte a sa propre adresse de dépôt, calculée à partir de l’adresse du portefeuille avec CREATE2 par le DepositProxyFactory :

    proxy    = last 20 bytes of keccak256(0xff ‖ factory ‖ keccak256(user) ‖ keccak256(initCode))
    initCode = DepositProxy creation code ‖ abi.encode(exchange, user)
    

    Toutes les entrées sont publiques, donc n’importe qui peut recalculer l’adresse, et elle peut recevoir des fonds avant que le contrat qui se trouve derrière n’existe. Le contrat est déployé quand le premier dépôt est balayé, soit par la clé de déploiement de notre relayer, soit par le compte lui-même ; personne d’autre ne peut le déployer.

    L’app enregistre l’adresse auprès de notre sweeper avant d’envoyer quoi que ce soit, et compare son propre calcul à la réponse du serveur et à la chaîne ; s’ils divergent, rien n’est envoyé. Toutes les routes aboutissent du côté HyperCore de l’adresse : les transferts Hyperliquid, les émissions CCTP de Circle et les exécutions Across, qui arrivent par le contrat de dépôt HyperCore de Circle sur HyperEVM. Un simple transfert du jeton vers le proxy sur HyperEVM n’est pas surveillé et n’est pas crédité.

    Le sweeper prend le relais

    Notre sweeper réagit aux signes d’arrivée de fonds : dépôts CCTP et HyperEVM indexés, transferts HyperCore vers des adresses enregistrées, et vérifications demandées par l’app. Quand une adresse de dépôt détient au moins 10 USDC, il déclenche deux appels à l’Exchange, tous deux publics :

    1. Demande. L’Exchange lit les soldes HyperCore du proxy. Si les USDC sont en collatéral perp, il demande au proxy de les passer en spot et s’arrête ; la demande suivante les balaie. Sinon, il enregistre un balayage en attente (le montant et le solde du proxy à ce moment) et demande au proxy d’envoyer ce montant au compte HyperCore de l’Exchange via CoreWriter.
    2. Finalisation. Dans un bloc ultérieur (au moins 1 après la demande), l’Exchange crédite le montant si, et seulement si, les deux vérifications passent : le solde du proxy est désormais inférieur à celui enregistré (seul l’Exchange peut le déplacer, donc l’envoi a eu lieu), et le solde HyperCore propre de l’Exchange dépasse tout ce qu’il doit déjà d’au moins ce montant (les fonds sont arrivés et ne sont encore crédités à personne).

    Ne vérifier que le solde du proxy créditerait un envoi qui a échoué après prélèvement de frais, ou créditerait deux fois quand un envoi est en retard et qu’un nouveau dépôt arrive dans la même fenêtre ; exiger que les fonds arrivent ferme ces deux brèches. Si les vérifications ne passent pas encore, la finalisation est retentée dans les blocs suivants. Un balayage qui n’a pas abouti en 5 blocs est marqué non confirmé et son montant enregistré ; un réconciliateur peut le créditer plus tard, mais seulement jusqu’au montant enregistré, seulement à partir de fonds dont l’arrivée est vérifiable et qui ne sont attribués à personne, et seulement dans un délai de 30 jours. Chaque réconciliation est un événement on-chain. C’est pourquoi l’app envoie un dépôt à la fois et attend qu’il soit crédité.

    Les fonds arrivent généralement sur votre solde quelques blocs après leur arrivée à votre adresse ; un premier dépôt attend aussi le déploiement de son proxy, et paie l’activation de compte unique de HyperCore, de 1 USDC.

    Pourquoi des proxys plutôt que des dépôts directs

    Pour deux raisons. La première est la commodité : une fonction de dépôt demanderait une approbation et un dépôt, chacun avec son gas. Un proxy transforme un dépôt en simple transfert vers une adresse, qui fonctionne de la même façon qu’il vienne d’Hyperliquid, d’un bridge de Circle ou d’Across.

    La seconde est l’isolation : le proxy de chaque compte est une adresse distincte, donc les fonds de personne ne peuvent se mélanger aux vôtres, et le sweeper traite chaque compte séparément. Un problème sur le dépôt d’un compte ne touche pas les autres.

    Ce à quoi vous faites confiance

    Les proxys sont déployés par une seule factory, avec CREATE2 et un code fixe. N’importe qui peut dériver l’adresse attendue pour n’importe quel portefeuille et vérifier que le contrat qui s’y trouve correspond : la factory, le sel et le hash du code sont publics. Si le code changeait un jour, l’adresse dérivée changerait avec lui ; votre ancienne adresse ne contiendrait plus de contrat, plutôt que de pointer en silence vers un autre code. Ni la factory ni le proxy ne sont évolutifs.

    Seul l’Exchange peut faire envoyer des USDC par un proxy, et seulement vers l’Exchange. Ce qui est envoyé au mauvais endroit ne peut être récupéré que par vous : les jetons ou les HYPE arrivés sur le contrat du proxy sur HyperEVM, avec withdrawStuckToken et withdrawStuckNative, appelés depuis votre portefeuille sur le proxy, et les jetons autres que l’USDC arrivés sur son compte HyperCore, avec rescueProxyCoreToken, appelé depuis votre portefeuille sur l’Exchange.

    Dernière mise à jour: