Base'ten Chiliz Chain'e köprüleme

Base'den Chiliz Chain'e mevcut bir tokenı köprülemek için, iki ayrı akıllı sözleşme yazıp dağıtmanız gerekir: tokenın zaten bulunduğu zincirde (Base) bir OFT Adapter ve hedef zincirde (Chiliz Chain) bir Native OFT.

LayerZero'nun kendi OFT sözleşmeleri için QuickStart sunduğunuve ayrıca nasıl Base'den başka bir EVM zincirine basım yapılacağını öğrenmek için bir öğretici Chiliz Chain gibi. O öğretici hedef zincir olarak Optimism'i kullanıyor, ancak bunu Chiliz Chain'in ayrıntılarıyla.

Ön Koşullar

Bu kılavuz aşağıdakileri gerektirir:

Kullanacağız Hardhat geliştirme ortamı olarak ve Node/npx.

1. Adım: Sözleşme Geliştirme

Hazırlanması OFTAdapter Base üzerinde

Şu OFTAdapter sözleşmesi, mevcut tokenınız için bir kilit kutusu gibi davranır. Kullanıcılar tokenlarını Base'den köprüleyerek çıkardığında, bu sözleşme orijinal ERC20 tokenlarını kilitler.

Şu adla yeni bir dosya oluşturun: BaseTokenAdapter.sol sözleşmenizi contracts klasörüne koyun:

Gördüğünüz gibi bu sözleşme LayerZero OFT Adapter sözleşmesinive ayrıca standart bir Ownable.sol sözleşmesini genişletiyor; böylece yönetim anahtarları veriliyor. Her ikisine de ihtiyacınız var; böylece siz ve yalnızca siz, zincirleri güvenli bir şekilde birbirine bağlayabilirsiniz.

Bunu Base Mainnet'e dağıtırken, mevcut tokenınızın sözleşme adresini _token olarak ve Base Endpoint V2 adresini (0x1a44076050125825900e736c501f859c50fE728c) _lzEndpoint.

Chiliz Chain için mevcut tüm endpoint'leri burada görün:

Hazırlanması OFT Chiliz Chain üzerinde

Token henüz Chiliz Chain üzerinde doğal olarak mevcut olmadığından, standart bir OFT sözleşmesi dağıtmanız gerekir. Bu sözleşme, Base üzerinde dağıtılmış OFT Adapter'dan geçerli bir mesaj aldığında yeni tokenlar mint etme ve kullanıcılar geri köprülediğinde bunları yakma yetkisine sahiptir.

Şu adla yeni bir dosya oluşturun: ChilizTokenOFT.sol sözleşmenizi contracts klasörüne koyun:

Gördüğünüz gibi bu sözleşme LayerZero OFT sözleşmesini ve ayrıca standart bir Ownable.sol sözleşmesini, yukarıda belirtilen nedenlerle.

Bunu Chiliz Chain'e dağıtırken, kullanıcıların kafasını karıştırmamak için _name ve _symbol orijinal tokenınızla Base üzerinde eşleştiğinden emin olun. Chiliz Chain Endpoint V2 adresini (0x6F475642a6e85809B1c36Fa62763669b1b48DD5B) _lzEndpoint.

Chiliz Chain için mevcut tüm endpoint'leri burada görün:

olarak vereceksiniz

Sözleşmeleriniz hazır olduğunda, LayerZero araçlarına bunların nasıl bağlandığını söylemeniz gerekir. Bu, Hardhat projenizin kök dizininde bulunan bir layerzero.config.ts dosyası kullanılarak yapılır.

Bu yapılandırma dosyası, zincirler arası mimariniz için bir plan görevi görür. Dağıtılmış akıllı sözleşmelerinizi ilgili LayerZero Endpoint ID'leri (EID'ler) ile eşler ve aralarındaki yolları (bağlantıları) tanımlar.

Şu olarak biçimlendirilmesini gerektirir. LayerZero V2 Hardhat toolbox bunu, Base58 Solana Adapter Program ID’nizi çözümleyip onu standart EVM formatına doldurarak otomatik olarak yönetir. Simple Config Generator

yapılandırma kablolamasını oluşturmak için önerilen yoldur; çünkü çift yönlü kablolamayı otomatikleştirir ve önerilen güvenlik yapılandırmalarını altyapıda uygular. layerzero.config.ts dosyanızı Hardhat projenizin kök dizininde oluşturun veya güncelleyin:

Dizi [EVM_ENFORCED_OPTIONS, EVM_ENFORCED_OPTIONS] LayerZero Executor'a mesajı Chiliz'e teslim ederken 200.000 gas birimini ve aynı şekilde mesajı Base'e geri gönderirken de 200.000 gas birimini zorunlu kılmasını söyler.

3. Adım: Dağıtım İş Akışı

Sözleşmeleriniz yazıldıktan ve layerzero.config.ts hazırlandıktan sonra, sözleşmeleri ilgili ağlara dağıtma zamanı gelmiştir. LayerZero V2 araç seti, dağıtımları verimli şekilde yönetmek için hardhat-deploy eklentiye dayanır.

Projenizin deploy/ dizininde iki dağıtım betiği oluşturmanız gerekecek: biri Base Mainnet için, biri de Chiliz Chain Mainnet için.

Base Adapter Dağıtım Betiği

şu adda bir dosya oluşturun 01_deploy_base_adapter.ts klasörünüzde. deploy/ Bu betik, mevcut token adresinizi ve Base Endpoint V2 adresini kurucuya iletir.

Chiliz Chain OFT Dağıtım Betiği

ikinci bir dosya oluşturun 02_deploy_chiliz_oft.ts klasörünüzde. deploy/ klasör. Bu betik, Chiliz Chain üzerinde yeni Native OFT'yi başlatır.

Dağıtımların Yürütülmesi

şunu yaptığınızdan emin olun hardhat.config.ts hem Base hem de Chiliz Chain için RPC URL'lerinin ve özel anahtarların doğru şekilde yapılandırılmış olduğundan emin olun.

RPC kullanarak bağlanın

Sözleşmeleri dağıtmak için terminalinizde aşağıdaki komutları çalıştırın:

Dağıtımlar tamamlandıktan sonra Hardhat, sözleşme adreslerini bir deployments/ klasörüne kaydedecektir. Bir sonraki adımda wiring komutunu çalıştırdığımızda LayerZero araçları bu adresleri otomatik olarak okuyacaktır.

4. Adım: Wiring ve Peering

Bu aşamada, BaseTokenAdapter ve ChilizTokenOFT sözleşmeleriniz her zincirde dağıtılmıştır, ancak tamamen izoledir. Chiliz Chain sözleşmesi token mint etmeyi söyleyen bir mesaj alırsa, mesajın gerçekten sizin Base üzerindeki Adapter'ınızdan geldiğini, kötü niyetli bir aktörden gelmediğini bilmesi gerekir.

Sözleşmeleri akranlar olarak kriptografik biçimde "kablaglamak" yoluyla bu güveni tesis etmelisiniz.

Bu, wire komutunu çalıştırarak yapılır; bu komut hem Chiliz hem de Base üzerinde işlemler oluşturur ve yürütür.

Kaputun Altında Ne Oluyor?

Tam bir LayerZero V2 yol yapılandırması aslında her zincirde 6 işlem gerektirir:

  • setSendLibrary: Mesaj göndermekten sorumlu LayerZero MessageLib'i atar (örneğin, V2 Send Library'yi kullanacak şekilde yapılandırır).

  • setReceiveLibrary: Mesaj almaktan sorumlu MessageLib'i atar. (Bir gracePeriodiçerir, genellikle şu değere ayarlanır 0).

  • setConfig (Send Library): Giden mesajlar için belirli Decentralized Verifier Networks (DVN'ler) ve Executor'ları ayarlar.

  • setConfig (Receive Library): Gelen mesajları doğrulamak için gereken belirli DVN'leri ayarlar.

  • setEnforcedOptions: gerekli yürütme gas limitlerini ayarlar. Bir kullanıcı Base'den bir mesaj gönderdiğinde, hedef gas ücretini peşin öder. Zorunlu seçeneklerin ayarlanması, LayerZero Executor'ın işlemi Chiliz Chain üzerinde başarıyla işleyebilmesi için yeterli gas ödemelerini sağlar.

  • setPeer: Bir hedef Endpoint ID'sini (EID) güvenilen bir sözleşme adresine bağlar. Base sözleşmesine Chiliz Chain sözleşmesine, Chiliz Chain sözleşmesine de Base sözleşmesine güvenmesini söylemelisiniz.

Wire Görevini Yürütme

Terminalinizde aşağıdaki komutu çalıştırın:

Araç zinciri gerekli parametreleri otomatik olarak hesaplayacak, yürütmek üzere olduğu işlemlerin tablosunu size gösterecek ve bunları dağıtıcı 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 resmen canlıdır ve tamamen yapılandırılmıştır! Base Adapter artık Chiliz Chain'e mint komutları göndermeye yetkilidir ve Chiliz Chain de Base'e geri unlock komutları göndermeye yetkilidir.

5. Adım: İşletim ve Test

Sözleşmeleriniz dağıtılıp güvenli bir şekilde birbirine bağlandıktan sonra, tokenınız artık omnichain'dir. Son adım, Base Mainnet'ten Chiliz Chain Mainnet'e çapraz zincir transferi gerçekleştirmektir.

1) Çapraz Zincir Transferini Yürütme

LayerZero V2 araç seti, OFT transferlerini doğrudan terminalinizden test etmek için yerleşik bir Hardhat görevi sağlar. Bu komut çapraz zincir gas ücretini tahmin edecek, cüzdanınızdan $ETH ile ücretlendirecek (kaynak zincirdeki yerel gas tokenı, Base) ve transferi başlatacaktır.

Aşağıdaki komutu çalıştırın:

Bu komutun yaptığı şey:

  1. Base Mainnet'i (30184) ve Chiliz Mainnet'i (30409) yapılandırmanızda arar.

  2. LayerZero Executor tarafından gerekli olan çapraz zincir ücretini fiyatlandırır.

  3. şunu çağırır send() fonksiyonunu Base Adapter'ınız üzerinde.

  4. Adapter 10 tokenı kilitler ve LayerZero Endpoint'e bir paket gönderir.

2) Paketin LayerZero Scan üzerinde Takibi

Çapraz zincir işlemleri asenkron çalışır. Chiliz işleminiz birkaç saniye içinde onaylansa da, mesajın yine de Base üzerinde doğrulanıp yürütülmesi gerekir.

Solana’dan köprüleme, iki tamamen farklı mutabakat mekanizması arasında çeviri yapmayı ve EVM’de yürütmeden önce işlemi SVM üzerinde kesinleştirmeyi içerdiğinden, asenkron gecikme normaldir.

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.

Gas Limitlerini Ayarlama

Gas limitlerini ayarlamak son derece önemlidir; bunu yapmamak çapraz zincir mesajlarınızın hedef ağda başarısız olmasına neden olabilir.

Bir kullanıcı Base'den Chiliz Chain'e bir token köprülediğinde, gas ücretini her iki zincir için Base üzerinde tek bir işlemde peşin öder ( $ETHkullanarak). LayerZero daha sonra bu ücretin bir kısmını, Chiliz Chain üzerinde mint işlemini yürütmek için gereken gerçek ETH gas ücretini ödemek için kullanır.

LayerZero'nun başarılı şekilde işlemesi için yeterli gas'a sahip olmasını sağlamak için lzReceive fonksiyonunu, hedef zincirdeki bir "Out of Gas" hatası nedeniyle işlemin geri dönmemesi için Enforced Options ayarlamalısınız. Bunlar ayarlanmazsa, işlem hedef zincirde geri dönebilir.

Seçenekleri Yapılandırma

Bu seçenek layerzero.config.ts dosyanızda ayarlanır. connections dizisini güncelleyerek enforcedOptions her yol için bloğu dahil edin:

Parametrelerin açıklaması:

  • msgType: 1: Standart bir token transferini temsil eder. msgType: 2 "composed" çağrılar için kullanılır (örneğin, bir tokenı köprüleyip tek tıkla hemen stake etmek).

  • optionType: 1: Executor'a yalnızca lzReceive fonksiyonunu yürütmesini söyler.

  • gas: 200000: Standart OFT mint ve unlock işlemleri için güvenli bir temel gas limitidir. Bunu, dağıtılmış sözleşmelerinizin özel gas tüketimine göre ayarlayabilirsiniz.

Bu seçeneği zincirleri zaten kabloladıktan sonra ayarladıysanız, seçenekler artık yerindeyken aynı komutu kullanarak yeniden kablolayabilirsiniz:

Araçlar değişiklikleri otomatik olarak algılayacak ve bir setEnforcedOptions() işlemini hem Base hem de Chiliz üzerindeki sözleşmelerinize gönderecektir. Artık bir kullanıcı bridge tetiklediğinde, sözleşmeler kullanıcıdan hedef zincirde en az 200.000 gas birimi için ödeme yapmasını zorunlu kılacak ve güvenilir teslimatı sağlayacaktır.

Son güncelleme

Bu yararlı oldu mu?