Solana'dan Chiliz Chain'e Köprü
LayerZero v2 kullanarak Solana'da bir OFT Adapter ve Chiliz Chain'de Yerel OFT deploy ederek token'ları Solana'dan Chiliz Chain'e köprüleyin.
Mevcut bir token'ı Solana'dan Chiliz Chain'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 (Solana) bir OFT Adapter ve hedef zincirde (Chiliz Chain) bir Yerel OFT.
LayerZero'nun OFT sözleşmeleri için kendi QuickStart rehberini sağladığını unutmayın:
Ön Koşullar
Solana'dan (EVM Dışı) Chiliz Chain'e (EVM) köprüleme, çift yığın geliştirme gerektirir. Her iki ekosistem için de ortamlar ve cüzdanlar kurmanız gerekecektir.
Bu nedenle şu ortamlara ihtiyacınız olacak:
Solana etkileşimleri için: Rustup (Solana akıllı sözleşmeleri Rust programlama dili kullanır), Solana CLI ve Anchor çerçevesi ve LayerZero'nun Solana SDK'sı.
Chiliz Chain etkileşimleri için: Node/npx ve Hardhat.
Bu rehber için şunlar gereklidir:
Chiliz Chain'e köprülemek istediğiniz mevcut SPL Token'ının mint adresi.
Her zincir için bir Web3 cüzdanı:
Solana için: Solana Mainnet yapılandırmasıyla Solflare cüzdanı. İşte kurulum kılavuzları.
Chiliz Chain için: Chiliz Chain RPC yapılandırmasıyla MetaMask cüzdanı.
Her iki zincirde sözleşme deploy maliyetleri ve mesaj gönderme gas ücretlerini karşılayacak yeterli gas token'ı.
Solana'da: SOL token'ları.
Chiliz Chain'de: CHZ token'ları.
Adım 1: Sözleşme Geliştirme
"Shared Decimals" Sorunu
Ethereum Sanal Makinesi (EVM) token matematiğini Solana'dan farklı biçimde yönettiğinden, token'lar köprüden geçmeden önce ondalık hassasiyetlerini hizalamak gerekir:
Solana (Kaynak): Yerel SPL Token'ları genellikle 9 ondalık basamağa sahiptir.
Chiliz Chain (Hedef): Standart ERC-20 token'ları (ve yeni hedef OFT'niz) genellikle 18 ondalık basamak kullanır.
Solana'dan 9 ondalık basamaklı bir payload'ı doğrudan Chiliz'e dönüştürmeden gönderirseniz, EVM sözleşmesi miktarı yanlış yorumlar ve hedef zincirde bir token'ın mikroskobik bir kesri basılır.
Matematiği normalleştirmek için LayerZero bir sharedDecimals yapılandırması kullanır. Varsayılan olarak, LayerZero V2 OFT standardı sharedDecimals değerini 6 olarak ayarlar.
Bir kullanıcı Solana'dan 1.00 SPL token köprülediğinde, Solana Adapter sayıyı 6 ondalık basamağa indirir (SPL token'ının en düşük 3 ondalık basamağını "toz" olarak değerlendirir ve bunları güvenle kullanıcının cüzdanında bırakır).
6 ondalık basamaklı mesaj payload'ı köprü üzerinden gönderilir.
Chiliz Chain Yerel OFT, 6 ondalık basamaklı sayıyı alır ve ERC-20 token'ını kullanıcının EVM cüzdanına basmadan önce yerel 18 ondalık basamağa yükseltir.
Solana Program Geliştirme
Token'ınız zaten Solana'da mevcut olduğundan yeni bir token sözleşmesi oluşturmanıza gerek yoktur. Bunun yerine Rust dilinde yazılmış bir Solana OFT Adapter Programı deploy edeceksiniz. Bu program, kullanıcılar Chiliz Chain'e köprülerken SPL token'larını güvenli biçimde tutan ve kullanıcılar geri döndüğünde serbest bırakan merkeziyetsiz bir kilitli kutu görevi görecektir.
LayerZero, Rust mantığını sıfırdan yazmanıza gerek kalmayacak şekilde önceden oluşturulmuş ve denetlenmiş sözleşmelerle hazır bir Anchor çalışma alanı sağlar.
1. LayerZero Solana SDK'yı Klonlama
Solana OFT Adapter örneğini içeren resmi LayerZero geliştirici araçları deposunu klonlayarak başlayın.
Terminalinizi açın ve şunu çalıştırın:
2. Solana Adapter Programını Derleme
Bu dizin hem Yerel OFT hem de OFT Adapter uygulamalarını içeren bir Anchor çalışma alanıdır. Benzersiz Solana Program ID'nizi oluşturmak için Rust programını derlemeniz gerekir.
Derleme tamamlandıktan sonra şunu çalıştırarak yeni Program ID'nizi alın:
Deploy etmeden önce Anchor.toml dosyasını ve programs/oft-adapter/src/lib.rs içindeki declare_id! makrosunu yeni Program ID'nizle güncellemeniz gerekir.
3. Solana Mainnet'e Deploy Etme
Solana CLI'nizin Mainnet için yapılandırıldığından ve yerel cüzdanınızın deploy boyutunu ve depolama kirasını karşılayacak yeterli $SOL'a sahip olduğundan emin olun.
4. OFT Adapter'ı Başlatma
Yerel OFT'nin aksine (yeni bir Mint oluşturulmasını gerektiren), Adapter'ı başlatmak, yeni deploy edilen Program ID'nizi mevcut SPL Token Mint Adresinize bağlamanızı sağlar.
LayerZero SDK, bu başlatmayı komut satırından gerçekleştirmek için Hardhat görevleri sağlar. Solana LayerZero Endpoint'inizi (30168) yapılandırın ve şunu çalıştırın:
Burada kritik parametreler var:
--mint: Köprülemek istediğiniz SPL token'ının tam Base58 Mint Adresi olmalıdır. Adapter bu token için özel bir emanet hesabı oluşturacaktır.--shared-decimals 6: Bu, payload'ı EVM'ye göndermeden önce Adapter'ın ölçeklendirme biçimini belirler. Solana token'ınızın 9 ondalık basamağı varsa, burada 6 shared decimals bırakmak köprü boyunca güvenli biçimde çevrilmesini sağlar.
Bu başlatma işlemi Solana'da onaylandıktan sonra Adapter'ınız canlı ve SPL token'larınızı güvenle kilitlemeye hazır!
Chiliz Sözleşme Geliştirme
Solana SPL token'ınız henüz Chiliz Chain'de mevcut olmadığından, standart bir Yerel OFT sözleşmesi deploy etmeniz gerekir. Bu sözleşme minter görevi görecektir. Solana Adapter'ınızdan doğrulanmış bir mesaj aldığında, karşılık gelen ERC-20 token'larını basacak; kullanıcı Solana'ya geri döndüğünde ise yakacaktır.
"Shared Decimals Sorunu"nda da tartıştığımız gibi, Solana Adapter'ınız payload'ı göndermeden önce 6 ondalık basamağa indirger.
LayerZero'nun EVM uygulaması, özel ölçeklendirme mantığı yazmanızı gerektirmez. Varsayılan olarak, OFT.sol sözleşmesi 18 yerel ondalık basamak ve 6 shared decimal kullanır. Solana'dan gelen 6 ondalık basamaklı payload'ı otomatik olarak algılar ve ERC-20 token'ını kullanıcının cüzdanına basmadan önce standart 18 ondalık basamak formatına yükseltir.
Chiliz Chain'de OFT Deploy Etme
Hardhat projenizin contracts/ klasöründe ChilizNativeOFT.sol adında yeni bir dosya oluşturun:
Henüz deploy etmeyin! Ancak şunu aklınızda tutun:
Kullanıcılarınız için birleşik bir deneyim sağlamak amacıyla
_nameve_symbolparametrelerinin orijinal Solana SPL token'ınızla birebir eşleştiğinden emin olun.Chiliz Mainnet'e deploy ederken Chiliz Endpoint V2 adresini (
0x6F475642a6e85809B1c36Fa62763669b1b48DD5B)_lzEndpointolarak geçireceksiniz.
Adım 2: LayerZero Yapılandırması
Solana Adapter'ınız başlatıldı ve Chiliz Yerel OFT'niz deploy için hazır olduğunda, aralarındaki bağlantıyı yapılandırmanız gerekir.
Buradaki temel zorluk adres formatlamasıdır. LayerZero'nun çapraz zincir mesajlaşması, tüm eş adreslerin bytes32 olarak formatlanmasını gerektirir. LayerZero V2 Hardhat araç seti bunu otomatik olarak Base58 Solana Adapter Program ID'nizi çözerek standart EVM formatına doldurarak gerçekleştirir.
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 önerilen yöntemdir.
Hardhat projenizin kökünde layerzero.config.ts dosyasını oluşturun veya güncelleyin:
Oluşturucu, Solana Base58 adresinizi Chiliz akıllı sözleşmesinin gerektirdiği EVM bytes32 dolgusu biçimine otomatik olarak dönüştürür.
Adım 3: Deploy İş Akışı
Bu aşamada Solana Adapter'ınız zaten derlenmiş, deploy edilmiş ve başlatılmıştır (Adım 1'de ele alınmıştır). Şimdi köprünün EVM tarafını — Yerel OFT'yi — Chiliz Chain'e deploy etmeniz gerekiyor.
Hardhat'i bu sözleşmeyi Chiliz Mainnet'e göndermek için kullanacaksınız.
1. Chiliz Yerel OFT Deploy Betiği
Hardhat projenizde, deploy/ dizininde 01_deploy_chiliz_native_oft.ts adında bir deploy betiği oluşturun. Bu betik Chiliz'de yeni ERC-20 token'ı başlatır.
2. Solana Program Deploy
Kısa bir hatırlatma olarak, Solana Adapter'ınız ilk deploy için Hardhat kullanmaz. Şimdiye kadar:
Rust programını Solana Mainnet'e göndermek için
anchor buildveanchor deploykomutlarını çalıştırmış olmalısınız.Adapter'ı mevcut SPL Token Mint'inize bağlamak için
lz:oft-adapter-solana:initgörevini çalıştırmış olmalısınız.Elde edilen Base58 Program ID'yi
layerzero.config.tsdosyanıza kopyalamış olmalısınız.
3. Chiliz Deploy İşlemini Çalıştırma
hardhat.config.ts dosyanızda RPC URL'sinin ve private key'in chiliz ağı için doğru şekilde yapılandırıldığından emin olun.
Yerel OFT'yi deploy etmek için terminalinizde şu komutu çalıştırın:
Deploy tamamlandıktan sonra Hardhat, yeni Chiliz sözleşme adresini deployments/ klasörüne kaydedecektir. Artık hem Solana'da (SVM) hem de Chiliz Chain'de (EVM) canlı sözleşmeleriniz var, ancak henüz birbirleriyle konuşmaya yetkilendirmediler.
Adım 4: Bağlantı ve Eşleşme
Bu noktada Solana'da bir Rust Adapter Programı ve Chiliz Chain'de bir Yerel EVM OFT'niz var. Güvenli iletişim kurmalarını sağlamak için onları güvenilir eşler olarak "bağlamanız" gerekir.
Tıpkı ters yönde köprülemede olduğu gibi, iki tamamen farklı Sanal Makineyle (SVM ve EVM) uğraşıyoruz. Bu nedenle Zorunlu Seçenekleri (Gas Limitleri) doğru yapılandırmak, işlemlerinizin hedef zincirde takılmaması için kritik öneme sahiptir.
Chiliz için "Zorunlu Seçenekler" (EVM)
Bir kullanıcı SPL token'ını Solana'dan Chiliz'e köprülediğinde, LayerZero Executor'ın ERC-20 token'larını basmak için Chiliz sözleşmenizde lzReceive fonksiyonunu çağırması için EVM gas'ına ihtiyacı vardır.
Tersine, geri dönüş yolculuğunda (Chiliz'den Solana'ya), Executor'ın SPL token'larını açmak ve potansiyel olarak İlişkili Token Hesabı (ATA) kirası için Solana Compute Unit'e ve Lamport'a ihtiyacı olacaktır.
Yapılandırmayı Güncelleme
Executor'ın her iki yönde yeterli gas'a sahip olmasını garanti etmek için, bağlamadan önce bu limitleri layerzero.config.ts dosyanızda tanımlamanız gerekir.
Yapılandırma dosyanızdaki connections dizisini aşağıdaki enforcedOptions ile güncelleyin:
Wire Görevini Çalıştırma
Yapılandırmanız kaydedildikten sonra, LayerZero V2 araç seti eşleşme sürecini otomatikleştirir. Base58 Solana adresinizi çözer, gerekli bytes32 EVM formatına doldurur ve hem Solana Mainnet hem de Chiliz Mainnet'e yapılandırma işlemlerini gönderir.
Terminalinizde şu komutu çalıştırın:
CLI işlemleri onaylamanızı isteyecektir. İşlemi Solana ağına göndermek için yapılandırılmış Solana cüzdanınızı ($SOL maliyetiyle) ve Chiliz hedef işlemini göndermek için Hardhat'i ($CHZ maliyetiyle) kullanacaktır.
Chiliz tarafında, LayerZero Hardhat araç seti 6 gerekli yapılandırma işlemini otomatik olarak oluşturup yürütür:
setSendLibrary: Mesaj gönderimi için V2 MessageLib'i atar.setReceiveLibrary: Mesaj alımı için MessageLib'i atar.setConfig(Gönderme Kütüphanesi): DVN'leri ve Executor'ı yapılandırır.setConfig(Alma Kütüphanesi): Gelen doğrulama için DVN'leri yapılandırır.setEnforcedOptions: Tutarlı çalıştırma parametrelerini sağlar (özellikle geri dönüş yolculuğu için yeterli Solana Compute Unit'inin ödenmesini garanti eder).setPeer: Chiliz EID'yi Solana Adapter'ınızın Base58 Program ID'sine (bytes32'ye dönüştürülmüş) kriptografik olarak bağlar.
Her iki işlem de onaylandıktan sonra, Solana'dan Chiliz'e köprünüz resmi olarak aktif ve güvenli biçimde izin verilmiş olacaktır!
Adım 5: Operasyon ve Test
Solana Adapter'ınız deploy edildi, Chiliz Yerel OFT'niz başlatıldı ve ikisi düzgün biçimde bağlandı; SPL Token'ınız artık resmi olarak SVM/EVM engelini aşmaya hazır. Son adım, Solana'dan Chiliz Chain'e bir test transferi gerçekleştirmek ve izlemektir.
1) Solana Cüzdanınızı Hazırlama
EVM'nin aksine (burada Adapter'a bir ödenek vermek için ayrı bir önceki approve() işlemi yürütmeniz gerekir), Solana token onaylarını ve transferleri aynı işlem talimatları içinde gerçekleştirir.
Ancak, yerel Solana cüzdanınızın (projenizde yapılandırılmış olan) köprülemek istediğiniz SPL token'larının bakiyesini ve kaynak işlem ücreti ile LayerZero çapraz zincir mesaj ücretini ödemek için yeterli $SOL'u gerçekten tuttuğundan emin olmalısınız.
2) Chiliz'e Çapraz Zincir Mesajı Gönderme
LayerZero V2 araç seti, kaynak zincir Solana olduğunda bile doğrudan komut satırından OFT transferleri göndermek için bir Hardhat görevi içerir.
Solana'dan Solana'ya transferlerin aksine, hedefiniz burada standart bir EVM onaltılık cüzdan adresidir (örneğin 0x123...). LayerZero CLI, payload için doldurmayı ve byte dönüşümünü otomatik olarak gerçekleştirir.
Terminalinizde şu komutu çalıştırın:
Burada neler oluyor?
Betik çapraz zincir ücretini $SOL cinsinden hesaplar.
Cüzdanınızdan 10 SPL token'ı Solana Adapter'ının emanet hesabına transfer eden bir işlem oluşturur.
Adapter, 9 ondalık basamaklı SPL token miktarını 6 shared decimal'e indirir.
LayerZero Endpoint, paketi Chiliz Mainnet'e doğru yayınlar.
3) Paketi LayerZero Scan'de İzleme
Solana'dan köprüleme, iki tamamen farklı konsensüs mekanizması arasında çeviri yapmayı ve SVM'de işlemi kesinleştirmeyi içerdiğinden, eşzamansız bir 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.
Bu araç hakkında daha fazla bilgi edinin:
Chiliz Yerel OFT, köprüden gelen 6 ondalık basamaklı payload'ı EVM standardı olan 18 ondalık basamağa otomatik olarak yükseltecektir; böylece tam olarak 10 token alırsınız.
4) Takılı Mesajlarda Sorun Giderme
İşleminiz Solana'da onaylandı ancak Chiliz'de yürütülmedi olarak işaretlendiyse, en yaygın neden EVM Gas Yetersizliği hatasıdır.
Adım 5'te yapılandırılan
enforcedOptions'dakigasparametresi, Chiliz ağınınlzReceivebasım fonksiyonunu işlemesi için çok düşük ayarlanmışsa, LayerZero Executor mesajı iletmeyi başaramaz.Çözüm: Token'larınızı kaybetmiyorsunuz. Takılı bir mesajı LayerZero Scan arayüzü aracılığıyla manuel olarak ilerletebilirsiniz. EVM cüzdanınızı Chiliz Chain'e bağlayın, blok gezginindeki "Force Resume" veya "Execute" düğmesine tıklayın ve basımı sonlandırmak için Chiliz gas ücretini kendiniz ödeyin.
Son güncelleme
Bu yararlı oldu mu?