Bridge de Base vers Chiliz Chain

Pour relier un jeton existant de Base vers Chiliz Chain, vous devez écrire et déployer deux contrats intelligents distincts : un OFT Adapter sur la chaîne où le jeton existe déjà (Base) et un Native OFT sur la chaîne de destination (Chiliz Chain).

Notez que LayerZero fournissent leur propre QuickStart pour les contrats OFT, ainsi qu’un tutoriel pour apprendre à frapper de Base vers une autre chaîne EVM comme Chiliz Chain. Ce tutoriel utilise Optimism comme chaîne cible, mais vous pouvez le remplacer par les détails de Chiliz Chain.

Prérequis

Ce guide nécessite ce qui suit :

Nous allons utiliser Hardhat comme environnement de développement, ainsi que Node/npx.

Étape 1 : développement du contrat

Préparation de l’ OFTAdapter sur Base

Le OFTAdapter Le contrat agit comme un coffre-fort pour votre jeton existant. Lorsque les utilisateurs transfèrent leurs jetons depuis Base, ce contrat verrouille les jetons ERC20 d’origine.

Créez un nouveau fichier nommé BaseTokenAdapter.sol dans votre dossier contracts :

Comme vous pouvez le voir, ce contrat étend le contrat LayerZero OFT Adapter, ainsi qu’un contrat standard Ownable.sol pour attribuer les clés d’administration. Vous avez besoin des deux afin que vous seul puissiez relier les chaînes en toute sécurité.

Lors du déploiement sur Base Mainnet, vous devez passer l’adresse du contrat de votre jeton existant en tant que _token et l’adresse Base Endpoint V2 (0x1a44076050125825900e736c501f859c50fE728c) en tant que _lzEndpoint.

Voir ici tous les endpoints disponibles pour Chiliz Chain :

Préparation de l’ OFT sur Chiliz Chain

Comme le jeton n’existe pas encore nativement sur Chiliz Chain, vous devez déployer un contrat OFT standard. Ce contrat a l’autorité de frapper de nouveaux jetons lorsqu’il reçoit un message valide du OFT Adapter déployé sur Base, et de les brûler lorsque les utilisateurs effectuent le retour du bridge.

Créez un nouveau fichier nommé ChilizTokenOFT.sol dans votre dossier contracts :

Comme vous pouvez le voir, ce contrat étend le contrat LayerZero OFT ainsi qu’un contrat standard Ownable.sol pour les mêmes raisons que celles citées ci-dessus.

Lors du déploiement sur Chiliz Chain, assurez-vous que les _name et le _symbol correspondent à votre jeton d’origine sur Base afin d’éviter toute confusion chez les utilisateurs. Passez l’adresse Chiliz Chain Endpoint V2 (0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) comme _lzEndpoint.

Voir ici tous les endpoints disponibles pour Chiliz Chain :

Étape 2 : configuration LayerZero

Une fois vos contrats prêts, vous devez indiquer à l’outillage LayerZero comment ils se connectent. Cela se fait à l’aide d’un layerzero.config.ts fichier situé à la racine de votre projet Hardhat.

Ce fichier de configuration agit comme le plan de votre architecture inter-chaînes. Il associe vos contrats intelligents déployés à leurs identifiants de endpoint LayerZero (EID) respectifs et définit les voies (connexions) entre eux.

Le Générateur de configuration simple est la méthode recommandée pour générer la configuration de câblage, car il automatise le câblage bidirectionnel et applique en coulisses les configurations de sécurité recommandées.

Créez ou mettez à jour votre fichier layerzero.config.ts à la racine de votre projet Hardhat :

Le tableau [EVM_ENFORCED_OPTIONS, EVM_ENFORCED_OPTIONS] indique à l’Executor LayerZero d’imposer 200 000 unités de gas lors de la livraison du message vers Chiliz, et identiquement 200 000 unités de gas lors du retour du message vers Base.

Étape 3 : flux de déploiement

Avec vos contrats écrits et votre layerzero.config.ts préparé, il est temps de déployer les contrats sur leurs réseaux respectifs. La boîte à outils LayerZero V2 s’appuie sur le plugin hardhat-deploy pour gérer les déploiements efficacement.

Vous devrez créer deux scripts de déploiement dans le deploy/ répertoire de votre projet : un pour Base Mainnet et un pour Chiliz Chain Mainnet.

Le script de déploiement de l’Adapter Base

Créez un fichier nommé 01_deploy_base_adapter.ts dans votre deploy/ dossier. Ce script transmet l’adresse de votre jeton existant et l’adresse Base Endpoint V2 au constructeur.

Le script de déploiement OFT de Chiliz Chain

Créez un second fichier nommé 02_deploy_chiliz_oft.ts dans votre deploy/ dossier. Ce script initialise le nouveau Native OFT sur Chiliz Chain.

Exécution des déploiements

Assurez-vous que votre hardhat.config.ts a les URL RPC et les clés privées correctement configurées pour Base et Chiliz Chain.

Se connecter via RPC

Exécutez les commandes suivantes dans votre terminal pour déployer les contrats :

Une fois les déploiements terminés, Hardhat enregistrera les adresses des contrats dans un deployments/ dossier. L’outillage LayerZero lira automatiquement ces adresses lorsque nous exécuterons la commande de liaison à l’étape suivante.

Étape 4 : câblage et pairage

À ce stade, vos BaseTokenAdapter et le ChilizTokenOFT contrats sont déployés sur chaque chaîne, mais ils sont complètement isolés. Si le contrat Chiliz Chain reçoit un message lui ordonnant de frapper des jetons, il doit savoir que le message provient bien de votre Adapter sur Base, et non d’un acteur malveillant.

Vous devez établir cette confiance en « reliant » cryptographiquement les contrats entre eux en tant que pairs.

Cela se fait en exécutant la commande wire , qui générera et exécutera des transactions sur Chiliz et Base.

Que se passe-t-il en coulisses ?

Une configuration complète de voie LayerZero V2 nécessite en réalité 6 transactions sur chaque chaîne :

  • setSendLibrary: assigne la MessageLib LayerZero responsable de l’envoi des messages (par exemple, la configurer pour utiliser la bibliothèque d’envoi V2).

  • setReceiveLibrary: assigne la MessageLib responsable de la réception des messages. (Inclut un gracePeriod, généralement défini sur 0).

  • setConfig (Send Library) : définit les Decentralized Verifier Networks (DVN) et les Executors spécifiques pour les messages sortants.

  • setConfig (Receive Library) : définit les DVN spécifiques requis pour vérifier les messages entrants.

  • setEnforcedOptions: définit les limites de gas d’exécution requises. Lorsqu’un utilisateur envoie un message depuis Base, il paie à l’avance le gas de la destination. La définition d’options imposées garantit qu’il paie suffisamment de gas pour que l’Executor LayerZero puisse traiter avec succès la transaction sur Chiliz Chain.

  • setPeer: associe un EID de destination à une adresse de contrat de confiance. Vous devez indiquer au contrat Base de faire confiance au contrat Chiliz Chain, et au contrat Chiliz Chain de faire confiance au contrat Base.

Exécution de la tâche de câblage

Exécutez la commande suivante dans votre terminal :

La chaîne d’outils calculera automatiquement les paramètres requis, vous présentera un tableau des transactions qu’elle s’apprête à exécuter et les soumettra à Chiliz et Base à l’aide de votre portefeuille de déploiement.

Une fois les transactions confirmées sur les deux réseaux, votre bridge de jeton est officiellement en service et entièrement configuré ! L’Adapter Base est désormais autorisé à envoyer des commandes de frappe à Chiliz Chain, et Chiliz Chain est autorisé à envoyer des commandes de déverrouillage vers Base.

Étape 5 : fonctionnement et tests

Avec vos contrats déployés et reliés de manière sécurisée, votre jeton est désormais omnichaîne. La dernière étape consiste à exécuter un transfert inter-chaînes de Base Mainnet vers Chiliz Chain Mainnet.

1) Exécution du transfert inter-chaînes

La boîte à outils LayerZero V2 fournit une tâche Hardhat intégrée pour tester les transferts OFT directement depuis votre terminal. Cette commande estimera les frais de gas inter-chaînes, débitera votre portefeuille en $ETH (le jeton de gas natif sur la chaîne source, Base) et initiera le transfert.

Exécutez la commande suivante :

Ce que fait cette commande :

  1. Recherche Base Mainnet (30184) et Chiliz Mainnet (30409) dans votre configuration.

  2. Estime les frais inter-chaînes requis par l’Executor LayerZero.

  3. Appelle la send() fonction sur votre Adapter Base.

  4. L’Adapter verrouille 10 jetons et émet un paquet vers le Endpoint LayerZero.

2) Suivi du paquet sur LayerZero Scan

Les transactions inter-chaînes sont asynchrones. Bien que votre transaction Chiliz se confirme en quelques secondes, le message doit encore être vérifié et exécuté sur Base.

Pour suivre ce parcours en temps réel, cliquez sur le lien LayerZero Scan qui apparaît dans la sortie du CLI.

En savoir plus sur cet outil ici :

Configuration des limites de gas

Il est très important de définir des limites de gas, car l’omission de cette étape peut faire échouer vos messages inter-chaînes sur le réseau de destination.

Lorsqu’un utilisateur transfère un jeton de Base vers Chiliz Chain, il paie les frais de gas pour les deux chaînes à l’avance dans une seule transaction sur Base (en utilisant $ETH). LayerZero utilise ensuite une partie de ces frais pour payer le gas ETH réel nécessaire à l’exécution de la transaction de frappe sur Chiliz Chain.

Pour garantir que LayerZero dispose de suffisamment de gas pour traiter avec succès la lzReceive fonction sur la chaîne de destination, vous devez définir des options imposées. Si elles ne sont pas définies, la transaction peut être annulée sur la chaîne de destination en raison d’une erreur « Out of Gas ».

Configuration des options

Cette option est configurée dans votre layerzero.config.ts fichier. Mettez à jour le connections tableau pour inclure le enforcedOptions bloc pour chaque voie :

Explication des paramètres :

  • msgType: 1: Représente un transfert de jeton standard. msgType: 2 est utilisé pour les appels « composés » (par exemple, transférer un jeton et le staker immédiatement en un seul clic).

  • optionType: 1: demande à l’Executor d’exécuter simplement la lzReceive fonction.

  • gas: 200000: Une limite de gas de base sûre pour les frappes et déverrouillages OFT standards. Vous pouvez l’ajuster en fonction de la consommation réelle de gas de vos contrats déployés.

Si vous avez défini cette option après avoir déjà relié les chaînes, vous pouvez relier à nouveau avec les options désormais en place en utilisant la même commande :

L’outillage détectera automatiquement les changements et soumettra une setEnforcedOptions() transaction à vos contrats sur Base et Chiliz. Désormais, chaque fois qu’un utilisateur déclenche un bridge, les contrats exigeront que l’utilisateur paie au moins 200 000 unités de gas sur la chaîne de destination, garantissant une livraison fiable.

Mis à jour

Ce contenu vous a-t-il été utile ?