Bridge de Chiliz Chain vers Base
Pour relier un jeton existant de Chiliz Chain à Base, vous devez գրել et déployer deux contrats intelligents distincts : un OFT Adapter sur la chaîne où le jeton existe déjà (Chiliz Chain), et un Native OFT sur la chaîne de destination (Base).
Notez que LayerZero fournissent leur propre QuickStart pour les contrats OFT, ainsi qu’un tutoriel pour apprendre à frapper depuis Chiliz Chain vers une autre chaîne EVM comme Base. Ce tutoriel utilise Optimism comme chaîne cible, mais vous pouvez le remplacer par les détails de Base.
Prérequis
Ce guide nécessite ce qui suit :
Une adresse de contrat de jeton ERC20 sur Chiliz Chain.
Un portefeuille Web3 (comme MetaMask) configuré pour fonctionner à la fois avec Chiliz Chain et Base.
Assez de jetons de gaz sur chaque chaîne pour payer les déploiements des contrats ainsi que les frais de gaz pour l’envoi des messages.
Sur Chiliz Chain : des jetons CHZ.
Sur Base : des jetons ETH.
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 Chiliz Chain
OFTAdapter sur Chiliz ChainIl s’agit d’une étape préparatoire, ne le déployez pas tout de suite ! Vous le déploierez à l’étape 3.
Le OFTAdapter le contrat agit comme un coffre-fort pour votre jeton existant. Lorsque des utilisateurs transfèrent leurs jetons hors de Chiliz Chain, ce contrat verrouille les jetons ERC20 d’origine.
Créez un nouveau fichier nommé ChilizTokenAdapter.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 Chiliz Chain Mainnet, vous devez transmettre l’adresse du contrat de votre jeton existant comme _token et l’adresse du Chiliz Endpoint V2 (0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) en tant que _lzEndpoint.
Voir ici tous les endpoints disponibles pour Chiliz Chain :
Préparation de l’ OFT sur Base
OFT sur BaseComme le jeton n’existe pas encore nativement sur Base, 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 de l’OFT Adapter déployé sur Chiliz, et de les brûler lorsque les utilisateurs effectuent le retour.
Créez un nouveau fichier nommé BaseTokenOFT.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 Base, assurez-vous que le _name et le _symbol correspondent à votre jeton d’origine sur Chiliz Chain afin d’éviter de semer la confusion chez les utilisateurs. Passez l’adresse du Base Endpoint V2 (0x1a44076050125825900e736c501f859c50fE728c) comme _lzEndpoint.
Voir tous les endpoints disponibles pour Base ici :
É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 :
É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 : un pour le Chiliz Chain Mainnet et un pour le Base Mainnet.
Le script de déploiement de l’Adapter Chiliz
Créez un fichier nommé 01_deploy_chiliz_adapter.ts dans votre deploy/ dossier. Ce script transmet l’adresse de votre jeton existant et l’adresse du Chiliz Endpoint V2 au constructeur.
Le script de déploiement de l’OFT Base
Créez un second fichier nommé 02_deploy_base_oft.ts dans votre deploy/ dossier. Ce script initialise le nouvel OFT natif sur Base.
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 Chiliz Chain et Base.
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 ChilizTokenAdapter et le BaseTokenOFT les contrats sont déployés sur chaque chaîne, mais ils sont complètement isolés.
Si le contrat Base reçoit un message lui indiquant de frapper des jetons, il doit savoir que le message provient réellement de votre l’Adapter sur Chiliz, 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 ungracePeriod, généralement défini sur0).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 gaz d’exécution requises. Lorsqu’un utilisateur envoie un message depuis Chiliz Chain, il paie le gaz de destination à l’avance. La définition d’options imposées garantit qu’il paie suffisamment de gaz pour que le LayerZero Executor traite avec succès la transaction sur Chiliz Chain.setPeer: associe un ID de endpoint de destination (EID) à une adresse de contrat de confiance. Vous devez indiquer au contrat de Chiliz Chain de faire confiance au contrat Base, et au contrat Base de faire confiance au contrat de Chiliz Chain.
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 passerelle de jetons est officiellement en ligne et entièrement configurée ! L’Adapter Chiliz est désormais autorisé à envoyer des commandes de frappe à Base, et Base est autorisé à renvoyer des commandes de déverrouillage à Chiliz.
Étape 5 : fonctionnement et tests
Une fois 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 à effectuer un transfert inter-chaînes de Chiliz Chain Mainnet vers Base 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 gaz inter-chaînes, débitera votre portefeuille en $CHZ (le jeton de gaz natif de la chaîne source) et lancera le transfert.
Comme le ChilizTokenAdapter a besoin d’une autorisation pour verrouiller vos Fan Tokens existants, une transaction ERC-20 approve() est requise.
Le CLI LayerZero détecte cela et gère automatiquement l’approbation avant d’envoyer le message.
Exécutez la commande suivante :
Ce que fait cette commande :
Recherche le Chiliz Mainnet (
30409) et le Base Mainnet (30184) dans votre configuration.Estime les frais inter-chaînes requis par l’Executor LayerZero.
Appelle la
send()fonction sur votre Chiliz Adapter.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 Chiliz Chain vers Base, il paie les frais de gaz pour les deux chaînes à l’avance dans une seule transaction sur Chiliz (en utilisant $CHZ). LayerZero utilise ensuite une partie de ces frais pour payer le gaz ETH réel nécessaire à l’exécution de la transaction de frappe sur Base.
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: 2est 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 lalzReceivefonction.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 vers vos contrats sur Chiliz et Base. Désormais, chaque fois qu’un utilisateur déclenche un pont, les contrats exigeront que l’utilisateur paie au moins 200 000 unités de gaz sur la chaîne de destination, garantissant une livraison fiable.
Mis à jour
Ce contenu vous a-t-il été utile ?