Bridge de Solana vers Chiliz Chain

Pour relier un jeton existant de Solana à 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à (Solana), et un Native OFT sur la chaîne de destination (Chiliz Chain).

Notez que LayerZero propose son propre QuickStart pour les contrats OFT :

Prérequis

Le pont entre Solana (non-EVM) et Chiliz Chain (EVM) nécessite un développement dual-stack. Vous devrez configurer des environnements et des portefeuilles pour les deux écosystèmes.

Vous aurez donc besoin des environnements suivants :

Ce guide nécessite ce qui suit :

  • L’adresse de mint du jeton SPL existant que vous souhaitez relier à Chiliz Chain.

  • Un portefeuille Web3 pour chaque chaîne :

  • 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 Solana : des jetons SOL.

    • Sur Chiliz Chain : des jetons CHZ.

Étape 1 : développement du contrat

Le défi des « Shared Decimals »

Comme l’Ethereum Virtual Machine (EVM) gère les mathématiques des jetons différemment de Solana, nous devons aligner leur précision décimale avant que les jetons ne traversent le pont :

  • Solana (source) : les jetons SPL natifs ont généralement une précision de 9 décimales.

  • Chiliz Chain (destination) : les jetons ERC-20 standard (et votre nouveau OFT de destination) utilisent généralement 18 décimales.

Si vous envoyiez une charge utile à 9 décimales depuis Solana directement vers Chiliz sans conversion, le contrat EVM interpréterait mal le montant, ce qui entraînerait le mint d’une fraction microscopique de jeton sur la chaîne de destination.

Pour normaliser les calculs, LayerZero utilise une configuration sharedDecimals . Par défaut, le standard OFT LayerZero V2 définit sharedDecimals à 6.

  • Lorsqu’un utilisateur relie 1,00 jeton SPL depuis Solana, l’Adapter Solana réduit le nombre à 6 décimales (considérant les 3 dernières décimales du jeton SPL comme de la « poussière » et les laissant en toute sécurité dans le portefeuille de l’utilisateur).

  • La charge utile du message à 6 décimales est envoyée à travers le pont.

  • Le Native OFT de Chiliz Chain reçoit le nombre à 6 décimales et le convertit vers le haut à ses 18 décimales locales avant de minter le jeton ERC-20 dans le portefeuille EVM de l’utilisateur.

En savoir plus ici.

Développement du programme Solana

Comme votre jeton existe déjà sur Solana, vous n’avez pas besoin de créer un nouveau contrat de jeton. À la place, vous déploierez un programme Solana OFT Adapter écrit en Rust. Ce programme agira comme un coffre-fort décentralisé, conservant en toute sécurité vos jetons SPL lorsque les utilisateurs les relient à Chiliz Chain, et les libérant lorsqu’ils les renvoient.

LayerZero fournit un workspace Anchor avec des contrats préconstruits et audités, afin que vous n’ayez pas à écrire la logique Rust à partir de zéro.

1. Cloner le SDK Solana de LayerZero

Commencez par cloner le dépôt officiel des outils de développement de LayerZero, qui contient l’exemple de Solana OFT Adapter.

Ouvrez votre terminal et exécutez :

2. Construire le programme d’Adapter Solana

Ce répertoire est un workspace Anchor contenant à la fois les implémentations Native OFT et OFT Adapter. Vous devez compiler le programme Rust pour générer votre identifiant unique de programme Solana.

Une fois la compilation terminée, récupérez votre nouvel identifiant de programme en exécutant :

3. Déploiement sur Solana Mainnet

Assurez-vous que votre Solana CLI est configurée pour Mainnet et que votre portefeuille local dispose de suffisamment de $SOL pour couvrir la taille du déploiement et le loyer du stockage.

4. Initialisation de l’OFT Adapter

Contrairement au Native OFT (qui nécessite la création d’un nouveau Mint), l’initialisation de l’Adapter lie simplement votre nouvel identifiant de programme déployé à l’adresse de mint SPL existante.

Le SDK LayerZero fournit des tâches Hardhat pour gérer cette initialisation depuis la ligne de commande. Assurez-vous que votre endpoint LayerZero Solana (30168) est configuré, puis exécutez :

Il y a ici des paramètres cruciaux :

  • --mint: il doit s’agir de l’adresse de mint Base58 exacte du jeton SPL que vous souhaitez relier. L’Adapter créera un compte d’escrow spécifiquement pour ce jeton.

  • --shared-decimals 6: cela détermine comment l’Adapter met à l’échelle la charge utile avant de l’envoyer à l’EVM. Si votre jeton Solana a 9 décimales, laisser 6 décimales partagées ici garantit une traduction sûre à travers le pont sans problème de dépassement.

Une fois cette transaction d’initialisation confirmée sur Solana, votre Adapter est actif et prêt à verrouiller vos jetons SPL en toute sécurité !

Développement du contrat Chiliz

Comme votre jeton SPL Solana n’existe pas encore sur Chiliz Chain, vous devez déployer un contrat Native OFT . Ce contrat servira de minter. Lorsqu’il recevra un message vérifié de votre Adapter Solana, il mintera les jetons ERC-20 correspondants ; lorsqu’un utilisateur renverra des jetons vers Solana, il les brûlera.

Comme nous l’avons expliqué dans « Le défi des Shared Decimals », votre Adapter Solana réduit la charge utile à 6 décimales avant de l’envoyer.

L’implémentation EVM de LayerZero est telle que vous n’avez pas besoin d’écrire une logique de mise à l’échelle personnalisée. Par défaut, le contrat OFT.sol utilise 18 décimales locales et 6 décimales partagées. Il détectera automatiquement la charge utile à 6 décimales arrivant de Solana et la mettra à l’échelle au format standard à 18 décimales () avant de minter le jeton ERC-20 dans le portefeuille de l’utilisateur.

Déployer l’OFT sur Chiliz Chain

Créez un nouveau fichier nommé ChilizNativeOFT.sol dans le dossier contracts/ de votre projet Hardhat :

Ne le déployez pas encore ! Mais gardez ceci à l’esprit :

  • Assurez-vous que les paramètres _name et le _symbol correspondent exactement à votre jeton SPL Solana d’origine afin d’offrir une expérience unifiée à vos utilisateurs.

  • Lors du déploiement sur Chiliz Mainnet, vous passerez l’adresse de l’endpoint Chiliz V2 (0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) comme _lzEndpoint.

Étape 2 : configuration LayerZero

Maintenant que votre Adapter Solana est initialisé et que votre Native OFT Chiliz est prêt à être déployé, vous devez configurer la connexion entre eux.

Le principal défi ici est le format des adresses. La messagerie cross-chain de LayerZero exige que toutes les adresses de pairs soient formatées en bytes32. La toolbox Hardhat LayerZero V2 gère cela automatiquement en décodant votre identifiant de programme Solana Base58 et en le complétant au format EVM standard.

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 générateur gère la conversion automatique de votre adresse Solana Base58 en le format EVM bytes32 complété requis par le contrat intelligent Chiliz.

Étape 3 : flux de déploiement

À ce stade, votre Adapter Solana est déjà compilé, déployé et initialisé (comme couvert dans l’étape 1). Maintenant, vous devez déployer la partie EVM du pont — le Native OFT — sur Chiliz Chain.

Vous utiliserez Hardhat pour déployer ce contrat sur Chiliz Mainnet.

1. Script de déploiement du Native OFT Chiliz

Dans votre projet Hardhat, créez un script de déploiement dans votre répertoire deploy/ nommé 01_deploy_chiliz_native_oft.ts. Ce script initialisera le nouveau jeton ERC-20 sur Chiliz.

2. Déploiement du programme Solana

Petit rappel : votre Adapter Solana n’utilise pas Hardhat pour son déploiement initial. Vous devriez déjà avoir :

  1. Exécuté anchor build et le anchor deploy pour pousser le programme Rust sur Solana Mainnet.

  2. Exécuté la tâche lz:oft-adapter-solana:init pour lier votre Adapter à votre adresse de mint SPL existante.

  3. Copié l’identifiant de programme Base58 résultant dans votre fichier layerzero.config.ts .

3. Exécution du déploiement Chiliz

Assurez-vous que votre fichier hardhat.config.ts dispose correctement de l’URL RPC et de la clé privée configurées pour le réseau chiliz .

Exécutez la commande suivante dans votre terminal pour déployer le Native OFT :

Une fois le déploiement terminé, Hardhat enregistrera l’adresse du contrat Chiliz nouvellement mintée dans le dossier deployments/ . Vous avez maintenant des contrats actifs sur Solana (SVM) et Chiliz Chain (EVM), mais ils ne sont pas encore autorisés à communiquer entre eux.

Étape 4 : câblage et pairage

À ce stade, vous avez un programme Adapter Rust sur Solana et un Native OFT EVM sur Chiliz Chain. Pour leur permettre de communiquer en toute sécurité, vous devez les « câbler » ensemble comme pairs de confiance.

Tout comme pour le pont dans la direction opposée, nous traitons ici avec deux machines virtuelles complètement différentes (SVM et EVM). Pour cette raison, configurer correctement les options imposées (limites de gaz) est essentiel pour garantir que vos transactions ne se bloquent pas sur la chaîne de destination.

Les « options imposées » pour Chiliz (EVM)

Lorsqu’un utilisateur relie son jeton SPL depuis Solana vers Chiliz, l’Executor LayerZero a besoin de gaz EVM pour appeler la fonction lzReceive sur votre contrat Chiliz afin de minter les jetons ERC-20.

Inversement, pour le retour (de Chiliz vers Solana), l’Executor aura besoin de Compute Units Solana et de Lamports pour déverrouiller les jetons SPL et éventuellement payer le loyer d’un Associated Token Account (ATA).

Mise à jour de la configuration

Pour garantir que l’Executor dispose de suffisamment de gaz dans les deux directions, vous devez définir ces limites dans votre fichier layerzero.config.ts avant le câblage.

Mettez à jour le tableau connections dans votre fichier de configuration pour inclure les éléments suivants enforcedOptions:

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

Une fois votre configuration enregistrée, la toolbox LayerZero V2 automatise le processus de pairage. Elle décode votre adresse Solana Base58, la complète au format bytes32 EVM requis, et soumet les transactions de configuration à la fois au Solana Mainnet et au Chiliz Mainnet.

Exécutez la commande suivante dans votre terminal :

Le CLI vous demandera de confirmer les transactions. Il utilisera votre portefeuille Solana configuré pour soumettre la transaction source (coûtant des $SOL) et Hardhat pour soumettre la transaction de destination Chiliz (coûtant des $CHZ).

Du côté Chiliz, la toolbox Hardhat de LayerZero générera et exécutera automatiquement 6 transactions de configuration requises :

  1. setSendLibrary: assigne la V2 MessageLib pour l’envoi des messages.

  2. setReceiveLibrary: assigne la MessageLib pour la réception des messages.

  3. setConfig (Send Library) : configure les DVN et l’Executor.

  4. setConfig (Receive Library) : configure les DVN pour la vérification entrante.

  5. setEnforcedOptions: garantit des paramètres d’exécution cohérents (en particulier en s’assurant que suffisamment de Compute Units Solana sont payées pour le trajet retour).

  6. setPeer: lie cryptographiquement l’EID Chiliz à l’identifiant de programme Base58 de votre Adapter Solana (converti en bytes32).

Le SDK Solana gère en coulisses les instructions programmatiques équivalentes pour la partie SVM.

Une fois les deux transactions confirmées, votre pont Solana-vers-Chiliz est officiellement opérationnel et autorisé en toute sécurité !

Étape 5 : fonctionnement et tests

Avec votre Adapter Solana déployé, votre Native OFT Chiliz initialisé et les deux correctement reliés, votre jeton SPL est officiellement prêt à traverser la séparation SVM/EVM. La dernière étape consiste à exécuter et suivre un transfert test de Solana vers Chiliz Chain.

1) Préparation de votre portefeuille Solana

Contrairement à l’EVM où vous devez exécuter au préalable une transaction approve() distincte pour accorder une autorisation à un Adapter, Solana gère les approbations et les transferts de jetons dans les mêmes instructions de transaction.

Cependant, vous devez vous assurer que votre portefeuille Solana local (celui configuré dans votre projet) détient bien un solde des jetons SPL que vous souhaitez relier, ainsi qu’assez de $SOL pour payer les frais de transaction source et les frais de message cross-chain LayerZero.

2) Envoi du message cross-chain vers Chiliz

La toolbox LayerZero V2 inclut une tâche Hardhat pour envoyer des transferts OFT directement depuis la ligne de commande, même lorsque la chaîne source est Solana.

Contrairement aux transferts Solana-vers-Solana, votre destination ici est une adresse de portefeuille hexadécimale EVM standard (par exemple, 0x123...). Le CLI LayerZero gère automatiquement le padding et la conversion des octets pour la charge utile.

Exécutez la commande suivante dans votre terminal :

Que se passe-t-il ici ?

  1. Le script estime les frais cross-chain en $SOL.

  2. Il construit une transaction qui transfère 10 jetons SPL de votre portefeuille vers le compte d’escrow de l’Adapter Solana.

  3. L’Adapter réduit le montant du jeton SPL à 9 décimales jusqu’aux 6 décimales partagées.

  4. L’endpoint LayerZero émet le paquet vers le Chiliz Mainnet.

3) Suivi du paquet sur LayerZero Scan

Comme le pont depuis Solana implique une traduction entre deux mécanismes de consensus entièrement différents et la finalisation de la transaction sur le SVM avant l’exécution sur l’EVM, un délai asynchrone est normal.

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 :

Le Native OFT Chiliz aura automatiquement remonté la charge utile à 6 décimales au format standard EVM à 18 décimales, de sorte que vous recevez exactement 10 jetons complets

4) Résolution des messages bloqués

Si votre transaction est marquée comme confirmée sur Solana mais échoue à s’exécuter sur Chiliz, le coupable le plus fréquent est une erreur EVM de manque de gaz.

  • Si le gas paramètre dans votre enforcedOptions (configuré à l’étape 5) était défini trop bas pour que le réseau Chiliz puisse traiter la lzReceive fonction de mint, l’Executor LayerZero échouera à livrer le message.

  • Correction : vous ne perdez pas vos jetons. Vous pouvez pousser manuellement un message bloqué via l’interface utilisateur de LayerZero Scan. Il suffit de connecter votre portefeuille EVM à Chiliz Chain, de cliquer sur le bouton « Force Resume » ou « Execute » sur l’explorateur de blocs, et de payer vous-même les frais de gaz Chiliz pour finaliser le mint.

Mis à jour

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