Zum Hauptinhalt springen

38 Minuten Lesezeit

Übersicht

Hyperliquid vereint zwei Schichten in einem einheitlichen System: HyperCore, eine Order-Book-Engine mit extrem geringer Latenz, auf die über signierte Aktionen zugegriffen wird, und HyperEVM, ein vollständig EVM-kompatibles Netzwerk für die Entwicklung mit Standard-Solidity.

Chainlink CCIP ermöglicht die Überbrückung von Assets zwischen verschiedenen Blockchains mithilfe eines „Burn-and-Mint“-Mechanismus. Innerhalb von Hyperliquid werden Umwandlungen zwischen HyperCore (HIP-1)-Assets und deren HyperEVM-Darstellungen durch native Protokollabläufe abgewickelt.

In dieser Anleitung werden Sie mit Foundry einen HyperEVM-Token erstellen, der einem HIP-1-Asset entspricht, und diesen Token mithilfe von CCIP zwischen HyperEVM und der BNB Smart Chain (BSC) überbrücken.

Ihre Aufgaben


  • Erstellen Sie einen Wrapper-Vertrag für ein HyperEVM-Token, das mit einem HIP-1-Asset verknüpft ist
  • CCIP-Token-Pools auf HyperEVM und BSC bereitstellen und konfigurieren
  • Überprüfen Sie unsere bereitgestellten Token- und Pool-Verträge in der Blockchain
  • CCIP-Übertragungen zwischen HyperEVM und BSC mit Foundry-Skripten durchführen

Was Sie benötigen


Haftungsausschluss

In dieser Anleitung verwenden wir die MAINNETS der jeweiligen Blockketten. Der Grund dafür ist, dass Chainlink CCIP zum Zeitpunkt der Erstellung dieses Leitfadens im HyperEVM-Testnetz nicht verfügbar ist. Bitte seien Sie vorsichtig und setzen Sie nur Geld ein, dessen Verlust Sie verkraften können.

Einrichten der Entwicklungsumgebung

Wir werden Foundry verwenden, um unsere Smart Contracts zu kompilieren, bereitzustellen und mit ihnen zu interagieren. Falls Sie Foundry noch nicht installiert haben, können Sie dies tun, indem Sie den folgenden Befehl in Ihrem Terminal ausführen:

curl -L https://foundry.paradigm.xyz | bash

Befolgen Sie die Anweisungen auf dem Bildschirm, und anschließend können Sie die foundryup Befehl zur Installation von Foundry. Stellen Sie sicher, dass Sie diesen Befehl in einer neuen Terminalsitzung ausführen, damit die Änderungen an Ihrer PATH Variable.

foundryup

Wir benötigen lokal einen neuen Ordner, in dem unser Projekt für diese Anleitung gespeichert wird. Wir nennen unseren Ordner „hyperevm_ccip“, aber Sie können ihn beliebig benennen. Führen Sie diese Befehle in Ihrem Terminal aus, um den Ordner zu erstellen, und wechseln Sie mit Ihrem Code-Editor in diesen Ordner. In dieser Anleitung verwenden wir VS Code.

forge init hyperevm_ccip
cd hyperevm_ccip
code .

Zu diesem Zeitpunkt sollte Ihre Konfiguration in etwa so aussehen:

Super! Unsere Foundry-Projektstruktur ist nun eingerichtet. Als Nächstes erstellen Sie eine .env Datei im Stammverzeichnis Ihres Projektordners. Dort werden wir unsere Umgebungsvariablen speichern, wie beispielsweise unseren privaten Schlüssel und die RPC-URLs. Das Format der .env Die Datei sollte wie folgt aussehen:

HYPEREVM_RPC="Ihre_HypereVM-RPC-URL"
BSC_RPC="Ihre_BSC-RPC-URL"
PRIVATE_KEY="Ihr_privater_Schlüssel"
ETHERSCAN_API_KEY="Ihr_Etherscan-API-Schlüssel"

Wir werden gleich erläutern, was diese Variablen jeweils bedeuten und wie man sie ermittelt. Der nächste Schritt besteht darin, die Standardwerte zu löschen src/Counter.sol Vertrag und script/Counter.s.sol Skript, das Foundry für uns generiert. Diese werden wir in dieser Anleitung nicht verwenden. Alternativ können Sie die folgenden Befehle in Ihrem Terminal ausführen, um diese Dateien zu löschen:

rm src/Counter.sol
rm script/Counter.s.sol

Außerdem müssen Sie die foundry.toml Datei im Stammverzeichnis Ihres Projektordners, um wichtige Einstellungen für den Solidity-Compiler sowie Neuzuordnungen für die von uns verwendeten Import-Anweisungen festzulegen. So sieht Ihre foundry.toml Die Datei sollte wie folgt aussehen:

[Profil.Standard]
src = "src"
out = „out“
libs = [„lib“]
Optimierer = true
Optimierungsläufe = 200

Neuzuordnungen = [
'@chainlink/contracts-ccip/=node_modules/@chainlink/contracts-ccip/',
'@chainlink/contracts/=node_modules/@chainlink/contracts/',
]

fs_permissions = [{ Zugriff = "Lese-Schreib-Zugriff", Pfad = "./" }]

In dieser Datei haben wir Folgendes hinzugefügt: Optimierer Einstellungen zur Optimierung unserer Smart Contracts für die Bereitstellung. Die fs_permissions Dieser Eintrag ermöglicht es Foundry, Dateien im Projektverzeichnis zu lesen und zu schreiben. Der Neuzuordnungen Die Einträge sind die Pfade zu den Chainlink-Vertragspaketen, die wir in dieser Anleitung verwenden werden. Diese Pakete werden wir als Nächstes installieren.

Installation der Abhängigkeiten

In dieser Anleitung werden wir zwei Chainlink-Vertragspakete verwenden: @chainlink/contracts-ccip und @chainlink/Verträge. Das erste Paket enthält die zentralen CCIP-Verträge, mit denen wir interagieren werden, sowie die CCIP-Token-Pool-Verträge, die wir bereitstellen werden. Das zweite Paket enthält die maßgeschneiderten ERC20 Verträge, die den Anforderungen von Chainlink für kettenübergreifende Übertragungen entsprechen.

Außerdem werden wir die @layerzerolabs/hyperliquid-composer Paket, mit dem das Gaslimit für unsere Transaktionen auf HyperEVM erhöht wird. HyperEVM verfügt über ein Mehrblockarchitektur das aus kleineren Blöcken mit einem Gaslimit von 2 Millionen Gaseinheiten und größeren Blöcken mit einem Gaslimit von 30 Millionen Gaseinheiten besteht. Kleinere Blöcke haben eine Blockzeit von 1 Sekunde, während größere Blöcke eine Blockzeit von 1 Minute haben. Standardmäßig ist ein Konto auf HyperEVM darauf beschränkt, Transaktionen zu senden, die dem Gaslimit der kleineren Blöcke entsprechen. Mit diesem Paket können wir unser Konto so einrichten, dass es Transaktionen mit höheren Gaslimits senden kann, die in die größeren Blöcke passen.

Um diese Pakete zu installieren, geben Sie die folgenden Befehle mit Ihrem bevorzugten Paketmanager ein:

npm install @chainlink/contracts-ccip @chainlink/contracts @layerzerolabs/hyperliquid-composer

Super! Sie haben die Abhängigkeiten, die wir in dieser Anleitung verwenden werden, erfolgreich installiert. Als Nächstes werden wir die Umgebungsvariablen besprechen, die wir in unserer .env Datei.

Umgebungsvariablen

Quicknode-Endpunkte

Zunächst müssen wir die entsprechenden RPC-Endpunkte für HyperEVM und BSC abrufen. Diese finden Sie unter Quicknode. Melden Sie sich einfach für eine kostenlose Testversion an, erstellen Sie einen neuen Multi-Chain-Endpunkt und kopieren Sie die HTTPS-URLs für jede Chain. Fügen Sie die entsprechenden URLs in die HYPEREVM_RPC und BSC_RPC Variablen in Ihrer .env Datei.

Etherscan-API

Gehe anschließend zu deinem Profil auf Etherscan und wechseln Sie zur Registerkarte „API-Schlüssel“. Falls Sie noch kein Konto haben, erstellen Sie eines. hier. Hier erstellen Sie einen API-Schlüssel, mit dem Sie Ihre Smart Contracts in der Blockchain verifizieren können. Kopieren Sie den API-Schlüssel und fügen Sie ihn in das ETHERSCAN_API_KEY Variable in Ihrem .env Datei.

Etherscan-API v2
Etherscan hat seine API auf Version 2 aktualisiert. Wenn Sie auf Etherscan einen API-Schlüssel erstellen, kann dieser auch für mehrere von Etherscan unterstützte Blockketten verwendet werden, darunter HyperEVM und BSC. Sie müssen also nicht für jede Blockkette einen separaten API-Schlüssel erstellen.

Privater Schlüssel

Zuletzt öffnest du MetaMask und kopierst den privaten Schlüssel eines deiner Konten. Wie du auf deinen privaten Schlüssel zugreifen kannst, erfährst du in dieser kurzen Anleitung Leitfaden. Fügen Sie diesen privaten Schlüssel in die PRIVATE_KEY Variable in Ihrem .env Datei.

Damit sind alle Umgebungsvariablen in Ihrer .env Die Datei sollte nun ausgefüllt sein. Der letzte Schritt bei dieser Einrichtung besteht darin, die entsprechenden Netzwerke zu unserer MetaMask-Wallet hinzuzufügen.

Netzwerke zu MetaMask hinzufügen

Wir werden die Netzwerke „HyperEVM Mainnet“ und „Binance Smart Chain Mainnet“ zu unserer MetaMask-Wallet hinzufügen. Am einfachsten fügen Sie diese Netzwerke hinzu, indem Sie auf hyperevmscan.io und bscscan.com und klicken Sie auf die Hinzufügen Schaltfläche unten links auf der Seite. Dadurch werden die Netzwerke zu Ihrer MetaMask-Wallet hinzugefügt:

Herzlichen Glückwunsch! Sie haben Ihre Entwicklungsumgebung für diese Anleitung erfolgreich eingerichtet. Als Nächstes werden wir ein HIP-1-Asset von HyperCore nach HyperEVM übertragen.

Brücke von HyperCore zu HyperEVM

Sie werden nun ein HIP-1-Asset von HyperCore auf HyperEVM übertragen. Bei diesem Vorgang wird das HIP-1-Asset in die entsprechende HyperEVM-Token-Darstellung umgewandelt. Für diese Anleitung verwenden wir die native Ökosystem-Coin von Hyperliquid: HYPE. Rufen Sie die Hyperliquid-Handelsoberfläche auf und melden Sie sich mit MetaMask an, um loszulegen.

Falls Sie noch keine HYPE-Coins besitzen, können Sie diese erwerben, indem Sie USDC vom Arbitrum-Mainnet bei Hyperliquid einzahlen und diese dann über den Spot-Handel auf der Handelsplattform gegen HYPE eintauschen:

Hyperliquid-Handelsschnittstelle

ERINNERUNG
In dieser Anleitung verwenden wir die Mainnets der jeweiligen Blockchains. Dies liegt daran, dass Chainlink CCIP zum Zeitpunkt der Erstellung dieses Leitfadens im HyperEVM-Testnetz nicht verfügbar ist. Bitte seien Sie vorsichtig und setzen Sie nur Geld ein, dessen Verlust Sie sich leisten können.

Sobald Sie über HYPE verfügen, können Sie damit fortfahren, diese an HyperEVM zu überweisen. Klicken Sie dazu unten auf der Seite unterhalb des Diagramms auf die Schaltfläche „An/von EVM übertragen “. Geben Sie einfach den Betrag an HYPE ein, den Sie überweisen möchten, und klicken Sie auf „Bestätigen“.

Brücke von HYPE zu HyperEVM

Brücke von HYPE zu HyperEVM

Super! Sie haben HYPE erfolgreich von HyperCore auf HyperEVM übertragen. Sie sollten nun Ihren HYPE-Kontostand in MetaMask im HyperEVM-Netzwerk sehen können. Wir fahren nun mit der Erstellung eines Wrapper-Vertrags für HYPE fort, der den Anforderungen von Chainlink für kettenübergreifende Transfers entspricht.

Erstellen eines Wrapper-Vertrags für HYPE

Um HYPE mithilfe von Chainlink CCIP zwischen HyperEVM und BSC zu überbrücken, müssen wir einen Wrapper-Vertrag erstellen, der den Anforderungen von Chainlink für kettenübergreifende Transfers entspricht. Dazu müssen wir einen neuen ERC20-Token-Vertrag erstellen, der den bestehenden HYPE-Asset auf HyperEVM einbindet, sowie einen entsprechenden ERC20-Token-Vertrag auf BSC.

Wir werden ein Quicknode – Der Hype um das Produkt Token mit dem Symbol qWHYPE. Geben Sie den folgenden Befehl ein, um eine neue Solidity-Datei im Verzeichnis src Ordner in Ihrem Projektverzeichnis und fügen Sie den folgenden Code dort ein.

touch src/qWHYPE.sol

Den Wrapper-Vertrag verstehen

Schauen wir uns den Code in der qWHYPE.sol Vertrag. Der Vertrag importiert die BurnMintERC20 Vertrag von der @chainlink/Verträge Paket, das die erforderlichen Funktionen zum Schaffen und Vernichten von Token bereitstellt. Wenn Nutzer HYPE in den Vertrag einzahlen, werden an ihre Adresse qWHYPE-Token in gleicher Höhe geschaffen. Umgekehrt werden, wenn Nutzer qWHYPE-Token abheben, die Token vom Vertrag vernichtet und die entsprechende Menge an HYPE zurück an die Adresse des Nutzers übertragen.

Dieser spezielle Vertrag wird im HyperEVM-Netzwerk bereitgestellt. Auf der BSC werden wir die Basisversion bereitstellen BurnMintERC20 direkt als Vertrag, da er keine zusätzlichen Funktionen erfordert. Im nächsten Abschnitt werden wir beide Verträge mithilfe von Skripten bereitstellen.

Schriften für die Schriftgießerei erstellen

Wir werden mehrere Foundry-Skripte erstellen, um unsere Smart Contracts bereitzustellen und mit ihnen zu interagieren. Dieser Abschnitt ist in mehrere Teile gegliedert, um jedes Skript im Detail zu behandeln. Wir werden die folgenden Skripte erstellen und sie in dieser Reihenfolge ausführen:

SkriptnameBeschreibung
DeployTokens.s.solStellt den qWHYPE-Vertrag auf HyperEVM und der Basis bereit BurnMintERC20 Vertrag über BSC
DeployPools.s.solStellt die CCIP-Token-Pool-Verträge sowohl auf HyperEVM als auch auf BSC bereit
SetupAdmin.s.solRegistrieren und konfigurieren Sie die Administratorrollen in den CCIP-Verträgen für jede Kette
ConfigurePools.s.solKonfiguriert unsere CCIP-Token-Pools für kettenübergreifende Transfers untereinander
DepositAndTransferTokens.s.solEine kleine Menge HYPE auf den qWHYPE-Kontrakt einzahlen, um qWHYPE-Token zu prägen, und anschließend eine kettenübergreifende Übertragung an BSC durchführen
TransferTokens.s.solFühren Sie eine kettenübergreifende Übertragung von qWHYPE-Token in beide Richtungen durch

Voraussetzungen

Bevor wir die Skripte schreiben, benötigen wir eine Möglichkeit, die Adressen unserer bereitgestellten Verträge zu verfolgen, sowie eine Datei zur Speicherung allgemeiner Konstanten, die wir in unseren Skripten verwenden werden.

Führen Sie die folgenden Befehle aus, um die entsprechenden Dateien zu erstellen:

touch script/Constants.s.sol
mkdir -p script/output
touch script/output/deployments.json

Wir werden das deployments.json Datei zur Nachverfolgung der Adressen der auf den einzelnen Blockchains bereitgestellten Verträge.

Hier ist, was die Konstanten.s.sol Die Datei sollte wie folgt aussehen:

Zum Anzeigen des Codes hier klicken
// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import {Script} from "forge-std/Script.sol";

contract Constants is Script {

struct CCIPConstants {
uint64 chainSelector;
address router;
address rmnProxy;
address tokenAdminRegistry;
address registryModuleOwnerCustom;
string nativeCurrencySymbol;
}

function getCCIPConstants(uint256 chainId) public pure returns (CCIPConstants memory) {
if(chainId == 999) {
return CCIPConstants({
chainSelector: 2442541497099098535,
router: 0x13b3332b66389B1467CA6eBd6fa79775CCeF65ec,
rmnProxy: 0x07f15e9813FBd007d38CF534133C0838f449ecFA,
tokenAdminRegistry: 0xcE44363496ABc3a9e53B3F404a740F992D977bDF,
registryModuleOwnerCustom: 0xbAb3aBB5F29275065F2814F1f4B10Ffc1284fFEf,
nativeCurrencySymbol: "HYPE"
});
} else if (chainId == 56) {
return CCIPConstants({
chainSelector: 11344663589394136015,
router: 0x34B03Cb9086d7D758AC55af71584F81A598759FE,
rmnProxy: 0x9e09697842194f77d315E0907F1Bda77922e8f84,
tokenAdminRegistry: 0x736Fd8660c443547a85e4Eaf70A49C1b7Bb008fc,
registryModuleOwnerCustom: 0x47Db76c9c97F4bcFd54D8872FDb848Cab696092d,
nativeCurrencySymbol: "BNB"
});
}
revert("Chain not supported");
}
}

Skript-Menü

Dieses Skript stellt die qWHYPE Vertrag über HyperEVM und die Basis BurnMintERC20 Vertrag auf BSC. Erstellen Sie eine neue Datei in der Skript Ordner in Ihrem Projektverzeichnis mit dem Namen DeployTokens.s.sol und fügen Sie den folgenden Code dort ein.

Zum Anzeigen des Codes hier klicken

Erstellen Sie die Datei:

touch script/DeployTokens.s.sol

Füge den folgenden Code in die Datei ein:

// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

import {Script, console} from "forge-std/Script.sol";
import {qWHYPE} from "../src/qWHYPE.sol";
import {BurnMintERC20} from "@chainlink/contracts/src/v0.8/shared/token/ERC20/BurnMintERC20.sol";

contract DeployTokens is Script {
string internal constant OUTPUT_PATH = "script/output/deployments.json";

/// forge script script/DeployTokens.s.sol:DeployTokens
function run() external {
// Load env vars
bytes memory hyperevm = bytes(vm.envString("HYPEREVM_RPC"));
bytes memory bsc = bytes(vm.envString("BSC_RPC"));
uint256 pk = vm.envUint("PRIVATE_KEY");

// Check if env vars are set
require(hyperevm.length != 0, "HYPEREVM_RPC not set");
require(bsc.length != 0, "BSC_RPC not set");

// print deployer address
address deployer = vm.addr(pk);
console.log("Deployer address:", deployer);

// Deploy on both chains
address hyperAddr = deployOn(hyperevm, deployer, pk);
address bscAddr = deployOn(bsc, deployer, pk);

// Write deployed addresses to JSON file
string memory obj = vm.serializeString("deployments", "qWHYPE_hyperevm", vm.toString(hyperAddr));
obj = vm.serializeString("deployments", "qWHYPE_bsc", vm.toString(bscAddr));
vm.writeJson(obj, OUTPUT_PATH);
}

function deployOn(bytes memory rpc, address deployer, uint256 pk) internal returns (address) {
vm.selectFork(vm.createFork(string(rpc)));
vm.startBroadcast(pk);
string memory chainName = getChainName(block.chainid);
address tokenAddr = address(block.chainid == 999 ? new qWHYPE() : new BurnMintERC20("Quicknode Wrapped HYPE", "qWHYPE", 18, 0, 0));
console.log("\nDeployed qWHYPE to:", tokenAddr, "on", chainName);
BurnMintERC20(tokenAddr).grantMintAndBurnRoles(deployer);
console.log("Granted minter and burner roles on", chainName, "qWHYPE to:", deployer);
vm.stopBroadcast();
return tokenAddr;
}

function getChainName(uint256 chainId) internal pure returns (string memory) {
if (chainId == 56) return "\x1b[36mBSC Mainnet\x1b[0m";
else if (chainId == 999) return "\x1b[32mHyperEVM Mainnet\x1b[0m";
else revert("Unsupported chain ID");
}
}

Das DeployTokens-Skript verstehen

In diesem Skript laden wir zunächst die Umgebungsvariablen für die RPC-URLs und den privaten Schlüssel. Anschließend definieren wir eine deployOn Funktion, die eine RPC-URL, die Adresse des Deployers und einen privaten Schlüssel als Parameter entgegennimmt. Diese Funktion erstellt einen Fork der angegebenen Chain, beginnt mit der Übertragung von Transaktionen unter Verwendung des bereitgestellten privaten Schlüssels und stellt entweder das qWHYPE Vertrag (auf HyperEVM) oder die Basis BurnMintERC20 Vertrag (auf BSC). Nach der Bereitstellung gewährt er der Adresse des Bereitstellers die Rechte zum Prägen und Verbrennen des bereitgestellten Token-Vertrags.

Ausführen der Skripte

Nachdem wir nun alle erforderlichen Skripte geschrieben haben, können wir sie nacheinander ausführen, um unsere CCIP-Token-Pools bereitzustellen und zu konfigurieren sowie eine kettenübergreifende Übertragung von qWHYPE-Token durchzuführen.

Wir haben bereits die Multi-Block-Architektur von Hyperliquid besprochen: Kleinere Blöcke verbrauchen maximal 2M Gas, während größere Blöcke bis zu 30M Gas verbrauchen können. Unsere Transaktionen zur Vertragsbereitstellung werden das Gaslimit von 2M mit Sicherheit überschreiten, daher müssen wir zunächst unser Konto für die Nutzung größerer Blöcke freischalten. Führen Sie dazu den folgenden Befehl in Ihrem Terminal aus:

source .env
npx @layerzerolabs/hyperliquid-composer set-block --size big --network mainnet --private-key $PRIVATE_KEY
Info

Wir empfehlen, Ihren privaten Schlüssel nicht direkt in der Befehlszeile anzugeben, da er möglicherweise im Verlauf Ihrer Shell gespeichert wird. Verwenden Sie für den Umgang mit sensiblen Informationen stets Umgebungsvariablen oder sichere Methoden!


Warnung

Wenn Ihre Wallet nicht bei HyperCore registriert ist, schlägt dieser Befehl möglicherweise mit folgender Fehlermeldung fehl: Der Benutzer oder die API-Wallet existiert nicht. Stellen Sie sicher, dass Sie eine Einzahlung getätigt oder einen Handel auf Hyperliquid durchgeführt haben, um Ihre Wallet zu registrieren. Wenn Sie die Schritte in Brücke von HyperCore zu HyperEVM Richtig, Ihre Wallet ist bereits registriert!

Super! Unser Konto kann nun größere Blöcke verwenden. Wir werden unsere Token nun mithilfe des DeployTokens.s.sol Skript:

forge script script/DeployTokens.s.sol:DeployTokens --broadcast --verify --verifier etherscan

Dieser Befehl stellt unsere Token sowohl im HyperEVM- als auch im BSC-Netzwerk bereit. Der Fortschritt der Bereitstellung wird in Ihrem Terminal angezeigt, und sobald die Transaktionen bestätigt sind, werden die Transaktions-Hashes angezeigt. Die --Sendung Das Flag zeigt an, dass wir die Transaktionen an das Netzwerk senden möchten, während das --verify und --Verifizierer Etherscan flags überprüft unsere Smart Contracts nach der Bereitstellung automatisch auf hyperevmscan.io und bscscan.com. Sie werden außerdem feststellen, dass Ihre deployments.json Die Datei wurde mit den Adressen der bereitgestellten Verträge gefüllt. Die Ausgabe auf Ihrem Terminal sollte in etwa so aussehen:

Ergebnis der Bereitstellung

Als Nächstes werden wir unsere CCIP-Token-Pools mithilfe des DeployPools.s.sol Skript:

forge script script/DeployPools.s.sol:DeployPools --broadcast --verify --verifier etherscan

Dieser Befehl stellt unsere Token-Pools sowohl im HyperEVM- als auch im BSC-Netzwerk bereit. Ähnlich wie im vorherigen Schritt werden Ihnen der Fortschritt der Bereitstellung in Ihrem Terminal sowie die Transaktions-Hashes angezeigt, sobald die Transaktionen bestätigt sind. Der deployments.json Die Datei wird mit den Adressen der bereitgestellten Pools aktualisiert. Die Ausgabe auf Ihrem Terminal sollte in etwa so aussehen:

Ausgabe der Pool-Bereitstellung

Als Nächstes richten wir den Admin-Bereich für unsere Tokens mithilfe der SetupAdmin.s.sol Skript und konfigurieren unsere Pools mithilfe des ConfigurePools.s.sol Skript. Mit den folgenden Befehlen können wir beide Skripte nacheinander ausführen:

forge script script/SetupAdmin.s.sol:SetupAdmin --broadcast
forge script script/ConfigurePools.s.sol:ConfigurePools --broadcast

Wie im vorherigen Schritt wird eine ähnliche Terminalausgabe mit den Transaktions-Hashes angezeigt, sobald die Transaktionen bestätigt sind.

Unsere erste kettenübergreifende Übertragung

Abschließend werden wir eine kettenübergreifende Übertragung von qWHYPE-Token von HyperEVM zu BSC mithilfe der DepositAndTransferTokens.s.sol Skript:

forge script script/DepositAndTransferTokens.s.sol:DepositAndTransferTokens --broadcast

Dieser Befehl hinterlegt HYPE, um qWHYPE auf HyperEVM zu prägen, und überträgt anschließend die qWHYPE-Token an BSC. Sobald die Transaktion bestätigt ist, werden Ihnen der Fortschritt der Übertragung in Ihrem Terminal sowie der Transaktions-Hash angezeigt. Außerdem wird die CCIP-Nachrichten-ID der Übertragung angezeigt, mit der Sie den Status der Übertragung im Chainlink CCIP Explorer verfolgen können. Ihr Terminal gibt die Nachrichten-ID wie unten gezeigt aus:

Übertragungsausgabe Terminalausgabe mit der CCIP-Meldungs-ID

Prüfen wir, ob die qWHYPE Die Token sind auf dem BSC-Netzwerk eingegangen. Öffnen Sie Ihre MetaMask-Wallet, wechseln Sie zum BSC-Netzwerk und importieren Sie die qWHYPE Token unter Verwendung der Adresse, die Sie in Ihrer deployments.json Datei mit dem Schlüssel qWHYPE_bsc. Wenn Sie Hilfe beim Importieren eines Tokens benötigen, befolgen Sie die Anleitung von MetaMask hier. In Ihrer Wallet sollte nun ein Guthaben von 0,01 qWHYPE-Token angezeigt werden, was bestätigt, dass die kettenübergreifende Übertragung erfolgreich war!


MetaMask-Guthaben

Übertragung in jede Richtung

Die TransferTokens.s.sol Mit diesem Skript lassen sich qWHYPE-Token in beide Richtungen zwischen HyperEVM und BSC übertragen. Sie können die Richtung der Übertragung festlegen, indem Sie entweder to-bsc oder to-hyperevm als Argument beim Ausführen des Skripts. Um beispielsweise qWHYPE-Token von BSC auf HyperEVM zu übertragen, würden Sie den folgenden Befehl ausführen:

forge script script/TransferTokens.s.sol:TransferTokens --broadcast --sig 'run(string)' 'to-hyperevm'

Die Ausgabe wird ähnlich wie bei unserer ersten kettenübergreifenden Übertragung aussehen und den Transaktions-Hash sowie die CCIP-Nachrichten-ID anzeigen. Wenn Sie die Nachrichten-ID in den Chainlink CCIP Explorer einfügen, wird nun die Übertragung in die entgegengesetzte Richtung angezeigt:

CCIP Explorer Rückwärts

Fazit

Herzlichen Glückwunsch! Sie haben erfolgreich gelernt, wie man mit Chainlink CCIP Token auf Hyperliquid überbrückt. Sie haben Ihre eigenen ERC-20-Token bereitgestellt, CCIP-Token-Pools eingerichtet und kettenübergreifende Übertragungen von qWHYPE-Token zwischen HyperEVM und BSC durchgeführt.

Nächste Schritte

Nachdem Sie nun über eine funktionierende kettenübergreifende Brücke verfügen, können Sie Ihre Konfiguration weiter optimieren und anpassen. Hier sind einige Ideen:


  • Hyperliquid Bridge UI: Erstellen Sie eine benutzerfreundliche Oberfläche für Ihre Bridge mithilfe von Frameworks wie React oder Vue.js. So können Nutzer problemlos mit Ihrer Bridge interagieren, ohne Befehlszeilentools verwenden zu müssen.
  • Ratenbegrenzung: Richten Sie eine Ratenbegrenzung für Ihre Token-Pools ein, um Missbrauch zu verhindern und eine faire Nutzung zu gewährleisten. Sie können die Ratenbegrenzungen in der ConfigurePools.s.sol Skript.
  • Weitere Blockchains implementieren: Erweitern Sie Ihre Bridge, um weitere von Chainlink CCIP unterstützte Blockchains zu integrieren. Sie können die in dieser Anleitung beschriebenen Schritte befolgen, um Token-Pools auf anderen Blockchains bereitzustellen und zu konfigurieren. Informieren Sie sich im CCIP-Verzeichnis über die Lanes und die unterstützten Blockchains.
  • Weitere HIP-1-Assets „verpacken“: Sie können auf Hyperliquid zusätzliche „verpackte“ Token für andere HIP-1-Assets erstellen und bereitstellen, wobei Sie ähnlich vorgehen wie bei HYPE. Der einzige Unterschied besteht darin, dass für jedes Asset ein eigener ERC-20-Wrapper-Vertrag erstellt werden muss. Dadurch können Nutzer eine größere Bandbreite an Assets zwischen HyperEVM und anderen Blockchains übertragen.

Weitere Ressourcen


Wenn du nicht weiterkommst oder Fragen hast, teile sie uns einfach in unserem Discord mit. Bleibe auf dem Laufenden, indem du uns auf X (@Quicknode) oder in unserem Telegram-Ankündigungskanal folgst.

Wir ❤️ Feedback!

Wenn Sie Anregungen oder Fragen zu dieser Dokumentation haben, teilen Sie uns diese bitte mit. Wir freuen uns auf Ihre Rückmeldung!

Diesen Leitfaden teilen