Most z Base do Chiliz Chain
Wdróż OFT Adapter na Base i Native OFT na Chiliz Chain przy użyciu LayerZero v2, aby zmostkować istniejący token ERC-20 z Base do Chiliz Chain.
Aby zmostkować istniejący token z Base do Chiliz Chain, musisz napisać i wdrożyć dwa osobne smart contracty: OFT Adapter na łańcuchu, na którym token już istnieje (Base), oraz Native OFT na łańcuchu docelowym (Chiliz Chain).
Pamiętaj, że LayerZero udostępnia własny QuickStart dla kontraktów OFT, a także tutorial uczący, jak mintować z Base na inny łańcuch EVM, taki jak Chiliz Chain. Ten tutorial używa Optimism jako łańcucha docelowego, ale możesz go zastąpić szczegółami Chiliz Chain.
Wymagania wstępne
Ten przewodnik wymaga następujących elementów:
Adresu kontraktu tokena ERC20 na Base.
Portfela Web3 (takiego jak MetaMask) skonfigurowanego do pracy zarówno z Base, jak i Chiliz Chain.
Wystarczającej ilości tokenów gas na każdym łańcuchu, aby opłacić wdrożenia kontraktów oraz opłaty gas za wysyłanie wiadomości.
Na Base: tokeny ETH.
Na Chiliz Chain: tokeny CHZ.
Użyjemy Hardhat jako środowiska deweloperskiego oraz Node/npx.
Krok 1: Tworzenie kontraktów
Przygotowanie OFTAdapter na Base
OFTAdapter na BaseTo jest krok przygotowawczy, nie wdrażaj od razu! Wdrożenie nastąpi w Kroku 3.
Kontrakt OFTAdapter działa jako sejf (lockbox) dla twojego istniejącego tokena. Gdy użytkownicy mostkują swoje tokeny z Base, ten kontrakt blokuje oryginalne tokeny ERC20.
Stwórz nowy plik o nazwie BaseTokenAdapter.sol w folderze contracts:
Jak widać, ten kontrakt rozszerza kontrakt OFT Adapter od LayerZero, a także standardowy kontrakt Ownable.sol, który nadaje klucze administracyjne. Potrzebujesz obu, aby ty, i tylko ty, mógł bezpiecznie połączyć łańcuchy ze sobą.
Wdrażając ten kontrakt na Base Mainnet, musisz przekazać adres kontraktu swojego istniejącego tokena jako _token oraz adres Base Endpoint V2 (0x1a44076050125825900e736c501f859c50fE728c) jako _lzEndpoint.
Zobacz wszystkie dostępne endpointy dla Chiliz Chain tutaj:
Przygotowanie OFT na Chiliz Chain
OFT na Chiliz ChainPonieważ token nie istnieje jeszcze natywnie na Chiliz Chain, musisz wdrożyć standardowy kontrakt OFT. Ten kontrakt ma uprawnienia do mintowania nowych tokenów, gdy otrzyma prawidłową wiadomość od OFT Adaptera wdrożonego na Base, oraz do ich palenia, gdy użytkownicy mostkują z powrotem.
Stwórz nowy plik o nazwie ChilizTokenOFT.sol w folderze contracts:
Jak widać, ten kontrakt rozszerza kontrakt OFT od LayerZero, a także standardowy kontrakt Ownable.sol, z tych samych powodów, które wymieniono powyżej.
Wdrażając ten kontrakt na Chiliz Chain, upewnij się, że _name i _symbol pasują do twojego oryginalnego tokena na Base, aby nie wprowadzać użytkowników w błąd. Przekaż adres Chiliz Chain Endpoint V2 (0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) jako _lzEndpoint.
Zobacz wszystkie dostępne endpointy dla Chiliz Chain tutaj:
Krok 2: Konfiguracja LayerZero
Gdy twoje kontrakty są gotowe, musisz poinformować narzędzia LayerZero, jak się ze sobą łączą. Robi się to za pomocą pliku layerzero.config.ts znajdującego się w katalogu głównym twojego projektu Hardhat.
Ten plik konfiguracyjny działa jak plan architektury cross-chain. Mapuje twoje wdrożone smart contracty na ich odpowiednie LayerZero Endpoint ID (EID) i definiuje ścieżki (połączenia) między nimi.
Simple Config Generator jest zalecanym sposobem generowania konfiguracji okablowania (wiring), ponieważ automatyzuje dwukierunkowe okablowanie i stosuje pod maską zalecane konfiguracje bezpieczeństwa.
Stwórz lub zaktualizuj plik layerzero.config.ts w katalogu głównym twojego projektu Hardhat:
Tablica [EVM_ENFORCED_OPTIONS, EVM_ENFORCED_OPTIONS] mówi Executorowi LayerZero, aby wymusił 200 000 jednostek gas przy dostarczaniu wiadomości do Chiliz oraz identycznie 200 000 jednostek gas przy zwracaniu wiadomości do Base.
Krok 3: Proces wdrożenia
Gdy twoje kontrakty są napisane, a plik layerzero.config.ts przygotowany, nadszedł czas, aby wdrożyć kontrakty do ich odpowiednich sieci. Toolbox LayerZero V2 polega na pluginie hardhat-deploy, aby efektywnie zarządzać wdrożeniami.
Będziesz musiał stworzyć dwa skrypty wdrożeniowe w katalogu deploy/ swojego projektu: jeden dla Base Mainnet i jeden dla Chiliz Chain Mainnet.
Skrypt wdrożenia Base Adapter
Stwórz plik o nazwie 01_deploy_base_adapter.ts w folderze deploy/. Ten skrypt przekazuje adres twojego istniejącego tokena oraz adres Base Endpoint V2 do konstruktora.
Skrypt wdrożenia OFT na Chiliz Chain
Stwórz drugi plik o nazwie 02_deploy_chiliz_oft.ts w folderze deploy/. Ten skrypt inicjalizuje nowy Native OFT na Chiliz Chain.
Wykonanie wdrożeń
Upewnij się, że twój hardhat.config.ts ma poprawnie skonfigurowane adresy URL RPC oraz klucze prywatne zarówno dla Base, jak i Chiliz Chain.
Uruchom następujące polecenia w terminalu, aby wdrożyć kontrakty:
Po zakończeniu wdrożeń Hardhat zapisze adresy kontraktów w folderze deployments/. Narzędzia LayerZero automatycznie odczytają te adresy, gdy uruchomimy polecenie okablowania (wiring) w następnym kroku.
Krok 4: Okablowanie i parowanie
Na tym etapie twoje kontrakty BaseTokenAdapter i ChilizTokenOFT są wdrożone na każdym łańcuchu, ale są całkowicie odizolowane.
Jeśli kontrakt na Chiliz Chain otrzyma wiadomość nakazującą mu mintowanie tokenów, musi wiedzieć, że wiadomość rzeczywiście pochodzi od twojego Adaptera na Base, a nie od złośliwego aktora.
Musisz ustanowić to zaufanie, kryptograficznie „okablowując" kontrakty ze sobą jako peery.
Robi się to poprzez uruchomienie polecenia wire, które wygeneruje i wykona transakcje zarówno na Chiliz, jak i na Base.
Co dzieje się pod maską?
Pełna konfiguracja ścieżki LayerZero V2 wymaga w rzeczywistości 6 transakcji na każdym łańcuchu:
setSendLibrary: Przypisuje LayerZero MessageLib odpowiedzialny za wysyłanie wiadomości (np. konfiguruje go do używania V2 Send Library).setReceiveLibrary: Przypisuje MessageLib odpowiedzialny za odbieranie wiadomości. (ZawieragracePeriod, zwykle ustawiony na0).setConfig(Send Library): Ustawia konkretne Decentralized Verifier Networks (DVN) oraz Executory dla wiadomości wychodzących.setConfig(Receive Library): Ustawia konkretne DVN wymagane do weryfikacji wiadomości przychodzących.setEnforcedOptions: ustawia wymagane limity gas dla wykonania. Gdy użytkownik wysyła wiadomość z Base, płaci za gas docelowy z góry. Ustawienie wymuszonych opcji gwarantuje, że płaci wystarczająco dużo gas, aby LayerZero Executor mógł pomyślnie przetworzyć transakcję na Chiliz Chain.setPeer: Łączy docelowy Endpoint ID (EID) z zaufanym adresem kontraktu. Musisz powiedzieć kontraktowi na Base, aby ufał kontraktowi na Chiliz Chain, oraz kontraktowi na Chiliz Chain, aby ufał kontraktowi na Base.
Wykonanie zadania Wire
Uruchom następujące polecenie w terminalu:
Toolchain automatycznie obliczy wymagane parametry, wyświetli ci tabelę transakcji, które zamierza wykonać, i prześle je do Chiliz oraz Base, używając twojego portfela deployera.
Gdy transakcje potwierdzą się w obu sieciach, twój token bridge jest oficjalnie aktywny i w pełni skonfigurowany! Base Adapter jest teraz autoryzowany do wysyłania poleceń mint do Chiliz Chain, a Chiliz Chain jest autoryzowany do wysyłania poleceń unlock z powrotem do Base.
Krok 5: Działanie i testowanie
Gdy twoje kontrakty są wdrożone i bezpiecznie okablowane ze sobą, twój token jest teraz omnichain. Ostatnim krokiem jest wykonanie transferu cross-chain z Base Mainnet do Chiliz Chain Mainnet.
1) Wykonanie transferu cross-chain
Toolbox LayerZero V2 udostępnia wbudowane zadanie Hardhat do testowania transferów OFT bezpośrednio z terminala. To polecenie oszacuje opłatę gas cross-chain, obciąży twój portfel w $ETH (natywnym tokenie gas na łańcuchu źródłowym, Base) i zainicjuje transfer.
Uruchom następujące polecenie:
Co robi to polecenie:
Wyszukuje Base Mainnet (
30184) i Chiliz Mainnet (30409) w twojej konfiguracji.Wycenia opłatę cross-chain wymaganą przez LayerZero Executor.
Wywołuje funkcję
send()na twoim Base Adapter.Adapter blokuje 10 tokenów i emituje pakiet do LayerZero Endpoint.
2) Śledzenie pakietu na LayerZero Scan
Transakcje cross-chain są asynchroniczne. Podczas gdy twoja transakcja na Chiliz potwierdzi się w ciągu kilku sekund, wiadomość nadal musi zostać zweryfikowana i wykonana na Base.
Aby śledzić tę podróż w czasie rzeczywistym, kliknij link LayerZero Scan, który pojawia się w wyjściu CLI.
Dowiedz się więcej o tym narzędziu tutaj:
Ustawianie limitów gas
Bardzo ważne jest, aby ustawić limity gas, ponieważ ich nieustawienie może spowodować, że twoje wiadomości cross-chain zakończą się niepowodzeniem w sieci docelowej.
Gdy użytkownik mostkuje token z Base do Chiliz Chain, płaci opłatę gas za oba łańcuchy z góry w jednej transakcji na Base (używając $ETH). LayerZero używa następnie części tej opłaty, aby zapłacić rzeczywisty gas ETH wymagany do wykonania transakcji mintowania na Chiliz Chain.
Aby zapewnić, że LayerZero ma wystarczająco dużo gas, by pomyślnie przetworzyć funkcję lzReceive na łańcuchu docelowym, musisz ustawić Enforced Options. Jeśli nie zostaną one ustawione, transakcja może zostać cofnięta na łańcuchu docelowym z powodu błędu „Out of Gas".
Konfiguracja opcji
Ta opcja jest ustawiana w twoim pliku layerzero.config.ts. Zaktualizuj tablicę connections, aby zawierała blok enforcedOptions dla każdej ścieżki:
Wyjaśnienie parametrów:
msgType: 1: Reprezentuje standardowy transfer tokena.msgType: 2jest używany dla wywołań „złożonych" (np. zmostkowanie tokena i natychmiastowe jego stakowanie jednym kliknięciem).optionType: 1: Instruuje Executora, aby po prostu wykonał funkcjęlzReceive.gas: 200000: Bezpieczny bazowy limit gas dla standardowych operacji mint i unlock OFT. Możesz go dostosować w oparciu o konkretne zużycie gas twoich wdrożonych kontraktów.
Jeśli ustawiłeś tę opcję po już wykonanym okablowaniu łańcuchów, możesz ponownie wykonać okablowanie z wprowadzonymi teraz opcjami, używając tego samego polecenia:
Narzędzia automatycznie wykryją zmiany i prześlą transakcję setEnforcedOptions() do twoich kontraktów zarówno na Base, jak i Chiliz. Teraz, ilekroć użytkownik uruchomi bridge, kontrakty będą wymagać, aby użytkownik zapłacił za co najmniej 200 000 jednostek gas na łańcuchu docelowym, zapewniając niezawodne dostarczenie.
Ostatnia aktualizacja
Czy to było pomocne?