StarkGate – Le pont pour l’écosystème StarkNet

StarkGate est le bridge natif de StarkNet faisant la liaison Ethereum<>StarkNet, il est développé par StarkWare même.

Que permet StarkGate?

Comme tout bridge, StarkGate permet d’effectuer des transactions de token d’une chaine à une autre. En l’occurrence, StarkGate permet d’effectuer des transferts de token ETH              et ERC-20 résidant sur Ethereum L1 en direction du réseau StarkNet Alpha.

À s’avoir que chaque token pris en charge est associé à un contrat de bridge L1<>L2 communiquant via le mécanisme de messagerie de StarkNet. (En s’avoir plus ici)

StarkGate Alpha

Il faut s’avoir que StarkGate est bien live sur le mainnet mais encore en statut Alpha. La nomination Alpha est là par précaution et prévenir qu’il faut s’attendre à des changements, des corrections et améliorations. La version Alpha n’a pas encore subi d’audit en raison de changement futur sur le réseau et que celui-ci évolue davantage.

En cas de risque de sécurité imminents, une mise à niveau des contrats StarkGate peut être effectué sans délai ou sans avertissement.

Fonctionnement

Les termes tels que “dépôts”, “transactions”, “transfert” désigne diverses opérations impliquant un bridge, même si les tokens ETH et ERC-20 ne quittent jamais Ethereum.

L1→L2 Transfert (dépôt)

  1. Appel de la fonction de dépôt sur L1

→ l’utilisateur appelle la fonction de dépôt (ERC-20 déposer et ETH déposer), en fournissant comme paramètres l’adresse du destinataire sur StarkNet ainsi que le montant à transférer

→ vérification que les fonds transférés respectent les limitations de transfert propre à l’Alpha de StarkNet

→ transfert des fonds du compte utilisateur vers le bridge StarkNet

→ émet un évènement de dépôts avec l’adresse de l’expéditeur sur L1, l’adresse du destinataire sur L2 ainsi que le montant

→ envoie un message au bridge L2 concerné avec le montant à transférer ainsi que l’adresse du destinataire (à s’avoir que chaque bridge est dédié à un type de token, le type de token n’a pas besoin d’être spécifié ici)

Après l’exécution sur L1 la transaction de dépôt est connue du séquenceur de StarkNet, le séquenceur peut attendre suffisamment de confirmations de L1 avant d’initier la transaction de dépôt. Au cours de cette étape, le statut de l’opération est NOT_RECEIVED.

  1. Dépôt déclenché sur StarkNet

→ une fois suffisamment de confirmations reçue pour l’exécution de l’étape 1, le séquenceur se réfère à la demande de dépôt et d’éclanche la fonction handle_deposit du handle (gestionnaire) L1 sur le bridge L2.

→ la fonction handle_deposit vérifie que le dépôt provient bien du bridge L1 correspondant

→ ensuite, il appelle le contrat ERC-20 correspondant et mint les tokens pour l’utilisateur

Une fois que le séquenceur a traité cette transaction (avant la génération d’une preuve), le statut de la demande de dépôts sera ACCEPTED_ON_L2

  1. Le bloc qui inclut le transfert est prouvé

Une fois que le séquenceur termine la construction du bloc, les prouveurs de StarkNet prouveront sa validité et soumettront une mise à jour d’état à L1.

Le message confirmant le transfert de fonds sera effacé du contrat de base StarkNet ainsi le transfert de fonds enclenché par l’utilisateur fera partie de l’état final de StarkNet.

L2→L1 (retrait)

  1. Appeler la fonction de retrait sur L2

Pour initier un retrait, la fonction initiate_withdraw sur le contrat L2 du bridge, ayant pour paramètre l’adresse du destinataire sur Ethereum L1 ainsi que le montant à transférer.

La fonction de retrait :

→ burn la quantité de token transférée du solde à l’initiateur du retrait

→ envoie un message au bridge L1 concerné avec le montant à transférer ainsi qu’à  l’adresse du destinataire.

  1. Le bloc qui comprend la transaction est prouvé

Une fois que le séquenceur a terminé la construction du bloc, les prouveurs de StarkNet prouveront la validité du bloc et soumettront une mise à jour d’état à L1.

Une fois effectué, le message de l’étape 1 est stocké dans le contrat StarkNet Core.

  1. Transfert des fonds sur L1

Une fois que le message de retrait a été enregistré sur le contract StarkNet Core, n’importe qui peut finaliser le transfert sur L1 du bridge vers l’utilisateur, en appelant la fonction de retrait (ERC-20 retirer et ETH retirer)

Actifs actuellement supportés 

StarkGate Alpha supporte ETH et les tokens ERC-20 mentionné ci-dessous :

→ WBTC | USDC | USDT | DAI

Voici le repo permettant de voir les adresses de contrat correspondant.

Retrouvez les données on-chain de StarkNet sur :

StarkBoard : https://app.starkboard.io/

Dune Analysis : https://dune.com/fennec/Stark-Gate

Liens utiles

StarkGate Mainnet

StarkGate Testnet (Goerli)

Bridge tutoriel

https://twitter.com/StarknetFr/status/1531317331829395457?s=20&t=TeTHUqpafynV8ug2MxrljQ

Sources de cet article :

Documentation technique | Article StarkWare | Code |

Total
0
Shares
Article précédent

Découvrez la Solution StarkEx

Article suivant

Qu’est-ce que StarkNet ?