Chiliz Chain'den Base'e Köprü
LayerZero v2 kullanarak Chiliz Chain'de bir OFT Adapter ve Base'de Yerel OFT deploy ederek bir Chiliz Chain token'ını Base üzerinde omnichain hale getirin.
Mevcut bir token'ı Chiliz Chain'den Base'e köprülemek için iki ayrı akıllı sözleşme yazıp deploy etmeniz gerekir: token'ın halihazırda var olduğu zincirde (Chiliz Chain) bir OFT Adapter ve hedef zincirde (Base) bir Yerel OFT.
LayerZero'nun OFT sözleşmeleri için kendi QuickStart rehberini ve Chiliz Chain'den Base gibi başka bir EVM zincirine nasıl basım yapılacağına dair öğreticiyi sağladığını unutmayın. Bu öğretici hedef zincir olarak Optimism kullanmaktadır, ancak bunu Base'in ayrıntılarıyla değiştirebilirsiniz.
Ön Koşullar
Bu rehber için şunlar gereklidir:
Chiliz Chain'de bir ERC20 token sözleşme adresi.
Hem Chiliz Chain hem de Base ile çalışacak şekilde yapılandırılmış bir Web3 cüzdanı (MetaMask gibi).
Her iki zincirde sözleşme deploy maliyetleri ve mesaj gönderme gas ücretlerini karşılayacak yeterli gas token'ı.
Chiliz Chain'de: CHZ token'ları.
Base'de: ETH token'ları.
Geliştirme ortamı olarak Hardhat ve Node/npx kullanacağız.
Adım 1: Sözleşme Geliştirme
Chiliz Chain'de OFTAdapter Hazırlama
OFTAdapter HazırlamaBu hazırlık adımıdır, hemen deploy etmeyin! Adım 3'te deploy edeceksiniz.
OFTAdapter sözleşmesi, mevcut token'ınız için bir kilitli kutu işlevi görür. Kullanıcılar token'larını Chiliz Chain'den köprülediğinde, bu sözleşme orijinal ERC20 token'larını kilitler.
Contracts klasörünüzde ChilizTokenAdapter.sol adında yeni bir dosya oluşturun:
Bu sözleşmenin hem LayerZero OFT Adapter sözleşmesini hem de yönetici anahtarlarını vermek için standart bir Ownable.sol sözleşmesini genişlettiğini görebilirsiniz. Zincirleri güvenli biçimde birbirine bağlamak için her ikisine de ihtiyacınız var.
Bunu Chiliz Chain Mainnet'e deploy ederken mevcut token'ınızın sözleşme adresini _token olarak ve Chiliz Endpoint V2 adresini (0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) _lzEndpoint olarak geçirmeniz gerekir.
Chiliz Chain için tüm mevcut endpoint'leri burada görün:
Base'de OFT Hazırlama
OFT HazırlamaToken henüz Base'de yerel olarak mevcut olmadığından standart bir OFT sözleşmesi deploy etmeniz gerekir. Bu sözleşme, Chiliz'de deploy edilen OFT Adapter'dan geçerli bir mesaj aldığında yeni token basma ve kullanıcılar geri köprülerken token'ları yakma yetkisine sahiptir.
Contracts klasörünüzde BaseTokenOFT.sol adında yeni bir dosya oluşturun:
Bu sözleşmenin hem LayerZero OFT sözleşmesini hem de yukarıda belirtilen aynı nedenlerle standart bir Ownable.sol sözleşmesini genişlettiğini görebilirsiniz.
Bunu Base'e deploy ederken kullanıcıların kafasını karıştırmamak için _name ve _symbol değerlerinin Chiliz Chain'deki orijinal token'ınızla eşleştiğinden emin olun. Base Endpoint V2 adresini (0x1a44076050125825900e736c501f859c50fE728c) _lzEndpoint olarak geçirin.
Base için tüm mevcut endpoint'leri burada görün:
Adım 2: LayerZero Yapılandırması
Sözleşmeleriniz hazır olduğunda, LayerZero araçlarına nasıl bağlandıklarını bildirmeniz gerekir. Bu, Hardhat projenizin kök dizininde bulunan bir layerzero.config.ts dosyası aracılığıyla yapılır.
Simple Config Generator, çift yönlü bağlantıları otomatikleştirdiği ve önerilen güvenlik yapılandırmalarını otomatik olarak uyguladığı için bağlantı yapılandırması oluşturmak için önerilen yöntemdir.
Hardhat projenizin kökünde layerzero.config.ts dosyasını oluşturun veya güncelleyin:
Adım 3: Deploy İş Akışı
Sözleşmeleriniz yazıldı ve layerzero.config.ts'niz hazırlandı; artık sözleşmeleri ilgili ağlara deploy etme zamanı. LayerZero V2 araç seti, deploy işlemlerini verimli biçimde yönetmek için hardhat-deploy eklentisine dayanır.
Projenizin deploy/ dizininde iki deploy betiği oluşturmanız gerekecektir: biri Chiliz Chain Mainnet için diğeri Base Mainnet için.
Chiliz Adapter Deploy Betiği
deploy/ klasörünüzde 01_deploy_chiliz_adapter.ts adında bir dosya oluşturun. Bu betik, mevcut token adresinizi ve Chiliz Endpoint V2 adresini constructor'a geçirir.
Base OFT Deploy Betiği
deploy/ klasörünüzde 02_deploy_base_oft.ts adında ikinci bir dosya oluşturun. Bu betik, Base'de yeni Yerel OFT'yi başlatır.
Deploy İşlemlerini Çalıştırma
hardhat.config.ts dosyanızda hem Chiliz Chain hem de Base için RPC URL'lerinin ve private key'lerin doğru şekilde yapılandırıldığından emin olun.
Sözleşmeleri deploy etmek için terminalinizde şu komutları çalıştırın:
Deploy işlemleri tamamlandıktan sonra Hardhat, sözleşme adreslerini deployments/ klasörüne kaydedecektir. LayerZero araçları, sonraki adımda bağlantı komutunu çalıştırdığımızda bu adresleri otomatik olarak okuyacaktır.
Adım 4: Bağlantı ve Eşleşme
Bu aşamada ChilizTokenAdapter ve BaseTokenOFT sözleşmeleriniz her iki zincire deploy edildi ancak tamamen izole durumdalar.
Base sözleşmesi token basmasını söyleyen bir mesaj aldığında, bu mesajın gerçekten sizin Chiliz'deki Adapter'ınızdan geldiğini, kötü niyetli bir aktörden değil, bilmesi gerekir.
Sözleşmeleri kriptografik olarak eşler olarak "bağlayarak" bu güveni oluşturmanız gerekir.
Bu işlem, hem Chiliz hem de Base'de işlemler oluşturup yürütecek olan wire komutu çalıştırılarak gerçekleştirilir.
Arka Planda Neler Oluyor?
Eksiksiz bir LayerZero V2 yol yapılandırması her iki zincirde de 6 işlem gerektirir:
setSendLibrary: Mesaj gönderiminden sorumlu LayerZero MessageLib'i atar.setReceiveLibrary: Mesaj alımından sorumlu MessageLib'i atar. (Genellikle0olarak ayarlanan birgracePeriodiçerir).setConfig(Gönderme Kütüphanesi): Giden mesajlar için belirli Merkeziyetsiz Doğrulayıcı Ağlarını (DVN) ve Executor'ları ayarlar.setConfig(Alma Kütüphanesi): Gelen mesajları doğrulamak için gereken belirli DVN'leri ayarlar.setEnforcedOptions: Gerekli çalıştırma gas limitlerini ayarlar. Bir kullanıcı Chiliz Chain'den mesaj gönderdiğinde, hedef gas ücretini peşin öder. Zorunlu seçeneklerin ayarlanması, LayerZero Executor'ın işlemi Chiliz Chain'de başarıyla işlemesi için yeterli gas ödenmesini sağlar.setPeer: Bir hedef Endpoint ID'yi (EID) güvenilir bir sözleşme adresine bağlar. Chiliz Chain sözleşmesine Base sözleşmesine, Base sözleşmesine de Chiliz Chain sözleşmesine güvenmesi gerektiğini belirtmeniz gerekir.
Wire Görevini Çalıştırma
Terminalinizde şu komutu çalıştırın:
Araç zinciri gerekli parametreleri otomatik olarak hesaplayacak, yürütmek üzere olduğu işlemlerin bir tablosunu size sunacak ve bunları deployer cüzdanınızı kullanarak Chiliz ve Base'e gönderecektir.
İşlemler her iki ağda da onaylandıktan sonra token köprünüz resmi olarak aktif ve tam yapılandırılmış olacaktır! Chiliz Adapter artık Base'e basım komutları göndermeye yetkilidir ve Base, kilit açma komutlarını Chiliz'e göndermeye yetkilidir.
Adım 5: Operasyon ve Test
Sözleşmeleriniz deploy edildi ve güvenli biçimde bağlandı; token'ınız artık omnichain. Son adım, Chiliz Chain Mainnet'ten Base Mainnet'e çapraz zincir transferi gerçekleştirmektir.
1) Çapraz Zincir Transferini Gerçekleştirme
LayerZero V2 araç seti, doğrudan terminalinizden OFT transferlerini test etmek için yerleşik bir Hardhat görevi sağlar. Bu komut, çapraz zincir gas ücretini tahmin edecek, cüzdanınızdan $CHZ (kaynak zincirin yerel gas token'ı) ile ücret kesecek ve transferi başlatacaktır.
ChilizTokenAdapter'ın mevcut Fan Token'larınızı kilitleme iznine ihtiyacı olduğundan, bir ERC-20 approve() işlemi gereklidir.
LayerZero CLI bunu algılar ve mesaj göndermeden önce onayı otomatik olarak gerçekleştirir.
Şu komutu çalıştırın:
Bu komut şunları yapar:
Yapılandırmanızda Chiliz Mainnet (
30409) ve Base Mainnet (30184) ayarlarını bulur.LayerZero Executor tarafından gereken çapraz zincir ücretini hesaplar.
Chiliz Adapter'ınızda
send()fonksiyonunu çağırır.Adapter 10 token'ı kilitler ve LayerZero Endpoint'e bir paket yayınlar.
2) Paketi LayerZero Scan'de İzleme
Çapraz zincir işlemleri eşzamansızdır. Chiliz işleminiz birkaç saniye içinde onaylanırken mesajın hâlâ Base'de doğrulanıp yürütülmesi gerekmektedir.
Bu yolculuğu gerçek zamanlı izlemek için CLI çıktısında görünen LayerZero Scan bağlantısına tıklayın.
Bu araç hakkında daha fazla bilgi edinin:
Gas Limitlerini Ayarlama
Gas limitlerini ayarlamak son derece önemlidir; aksi takdirde çapraz zincir mesajlarınız hedef ağda başarısız olabilir.
Bir kullanıcı Chiliz Chain'den Base'e token köprülediğinde, her iki zincirin gas ücretini Chiliz'de yapılan tek bir işlemde peşin öder ($CHZ kullanarak). LayerZero ardından bu ücretin bir bölümünü Base'deki basım işlemini yürütmek için gereken gerçek ETH gas ücretini ödemek için kullanır.
LayerZero'nun hedef zincirde lzReceive fonksiyonunu başarıyla işlemesi için yeterli gas'a sahip olmasını sağlamak amacıyla Zorunlu Seçenekleri ayarlamanız gerekir. Bu ayarlanmazsa işlem, hedef zincirde "Out of Gas" hatasıyla geri alınabilir.
Seçenekleri Yapılandırma
Bu seçenek layerzero.config.ts dosyanızda ayarlanır. connections dizisini her yol için enforcedOptions bloğunu içerecek şekilde güncelleyin:
Parametrelerin açıklaması:
msgType: 1: Standart bir token transferini temsil eder.msgType: 2, "bileşik" çağrılar için kullanılır (örneğin bir token'ı köprüleyip hemen tek tıklamayla stake etmek).optionType: 1: Executor'a yalnızcalzReceivefonksiyonunu yürütmesini bildirir.gas: 200000: Standart OFT basım ve kilit açma işlemleri için güvenli bir temel gas limiti. Deploy edilen sözleşmelerinizin belirli gas tüketimine göre ayarlayabilirsiniz.
Bu seçeneği zincirleri zaten bağladıktan sonra ayarladıysanız, seçenekler şimdi mevcut olduğundan aynı komutu kullanarak yeniden bağlayabilirsiniz:
Araçlar değişiklikleri otomatik olarak algılayacak ve hem Chiliz'deki hem de Base'deki sözleşmelerinize bir setEnforcedOptions() işlemi gönderecektir. Artık bir kullanıcı köprüyü tetiklediğinde, sözleşmeler kullanıcının hedef zincirde en az 200.000 gas birimi ödemesini zorunlu kılacak ve güvenilir teslimat sağlayacaktır.
Son güncelleme
Bu yararlı oldu mu?