For the complete documentation index, see llms.txt. This page is also available as Markdown.

Chiliz Chain'den Solana'ya Köprü

LayerZero v2 kullanarak Chiliz Chain'de bir OFT Adapter ve Solana'da Yerel OFT deploy ederek token'ları Chiliz Chain'den Solana ağına köprüleyin.

Mevcut bir token'ı Chiliz Chain'den Solana'ya 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 (Solana) bir Yerel OFT.

LayerZero'nun OFT sözleşmeleri için kendi QuickStart rehberini sağladığını unutmayın:

Ön Koşullar

Chiliz Chain'den (EVM) Solana'ya (EVM Dışı) 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:

Bu rehber için şunlar gereklidir:

  • Chiliz Chain'de bir token sözleşme adresi. Sahibi olmanız gerekmez.

  • Her zincir için bir Web3 cüzdanı (MetaMask EVM dışı zincirleri desteklemez):

  • 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ı.

    • Solana'da: SOL token'ları.

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

"Shared Decimals" Sorunu

Solana token matematiğini Ethereum Sanal Makinesinden (EVM) farklı biçimde yönettiğinden, ondalık basamakları doğru işlememiz gerekir:

  • Chiliz Chain (EVM): Standart ERC-20 token'ları genellikle 18 ondalık basamağa sahiptir.

  • Solana: Yerel SPL Token'ları genellikle 9 ondalık basamağa sahiptir.

Chiliz'den Solana'ya $1 \times 10^{18}$ birim gönderirseniz, Solana sözleşmesi miktarı yanlış yorumlar ve hedef zincirde token'ın büyük bir enflasyonuna yol açar.

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ı Chiliz'den 1.00 token köprülediğinde, Adapter en düşük 12 ondalık basamağı ("toz" olarak değerlendirerek) bırakır ve sayıyı 6 ondalık basamağa indirir.

  • Mesaj köprü üzerinden gönderilir.

  • Solana programı 6 ondalık basamaklı sayıyı alır ve basmadan önce yerel 9 ondalık basamağa yükseltir.

Daha fazla bilgi için buraya bakın.

Chiliz Chain'de OFTAdapter Hazırlama

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.

LayerZero'nun OFTAdapter'ı varsayılan olarak sharedDecimals değerini 6 olarak ayarladığından, standart uygulamayı kullanabilirsiniz. Bunu değiştirmeniz gerekirse (örneğin 8'e), sharedDecimals() fonksiyonunu geçersiz kılarsınız.

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.

Solana'da OFT Hazırlama ve Deploy Etme

Chiliz Chain'in aksine, Solana Ethereum Sanal Makinesini (EVM) veya Solidity dilini kullanmaz. Solana akıllı sözleşmeleri ("Programlar") Rust dilinde yazılır.

Token'ınızı köprülemek için Solana'ya bir OFT programı deploy etmeniz gerekir. Bu program, Chiliz'de deploy edilen OFTAdapter'ınızdan doğrulanmış bir mesaj aldığında, karşılık gelen SPL token'ını kullanıcının Solana cüzdanına basacaktır.

LayerZero, Rust köprü mantığını sıfırdan yazmanıza gerek kalmayacak şekilde kullanıma hazır bir Anchor örneği sağlar.

1. LayerZero OFT Solana örneğini klonlayın:

2. Rust programını derleyin

Bu işlem aynı zamanda benzersiz Solana Program ID'nizi de oluşturur (EVM'deki sözleşme adresine eşdeğer):

Derleme tamamlandıktan sonra Anchor, target/deploy/oft_solana-keypair.json dosyasında yeni bir anahtar çifti oluşturacaktır. Yeni Program ID'nizi şunu çalıştırarak alabilirsiniz:

3. Solana Mainnet'e deploy edin

Solana CLI'nizin Mainnet için yapılandırıldığından ve yerel cüzdanınızın deploy ve depolama kirası için yeterli $SOL'a sahip olduğundan emin olun. Deploy etmeden önce Anchor.toml dosyasını ve lib.rs'deki declare_id! makrosunu bu yeni Program ID ile güncellemeyi unutmayın.

4. OFT'yi ve SPL Mint'i başlatın

Solana'da token'ın mantığı ve defteri ayrılmıştır. Yeni bir Mint Hesabı (SPL Token) başlatmanız ve yeni deploy edilen OFT Programınızı Mint Authority olarak atamanız gerekir. Bu, yalnızca LayerZero köprüsünün Solana'da yeni token basabilmesini sağlar.

LayerZero SDK, bu başlatmayı doğrudan komut satırından gerçekleştirmek için Hardhat/TypeScript görevleri sağlar. oft-solana projenizde LayerZero Endpoint'inizi Solana için (30168) yapılandırın ve başlatma betiğini çalıştırın:

Kritik Parametreler:

  • --mint-decimals 9: Solana'da standart SPL token hassasiyetini ayarlar.

  • --shared-decimals 6: Chiliz Chain OFTAdapter'ınızda yapılandırdığınız (veya varsayılan) shared decimals değeriyle eşleşmelidir. Bu, 1 Chiliz token = 1 Solana token garantisini sağlar.

Bu başlatma işlemi Solana blockchain'inde onaylandıktan sonra, yerel OFT programınız tam olarak kurulmuş ve Chiliz OFTAdapter'a bağlanmaya hazır!

Adım 2: LayerZero Yapılandırması

Chiliz Adapter'ınız deploy edildi ve Solana OFT programınız başlatıldı; şimdi bağlantılarını yapılandırmanız gerekir. Bu noktada EVM ve EVM dışı ağlar arasındaki fark belirginleşir.

Adres Formatlaması:

  • Chiliz Chain (EVM): Standart 20 baytlık onaltılık adresler kullanır (örn. 0x123...).

  • Solana: Base58 kodlu adresler kullanır (örn. YourProgramId111111111111111111111111111111).

LayerZero'nun çapraz zincir mesajlaşması, tüm eş adreslerinin bytes32 olarak formatlanmasını gerektirir. Neyse ki, endpoint'leri yapılandırmanızda doğru biçimde tanımladığınız sürece LayerZero V2 Hardhat araçları Base58'den Bytes32'ye dönüştürmeyi otomatik olarak gerçekleştirir.

Simple Config Generator, çift yönlü bağlantıları otomatikleştirdiği için önerilen yöntemdir.

Hardhat projenizin kökünde layerzero.config.ts dosyasını oluşturun veya güncelleyin:

LayerZero wire görevi bunu okuyacak, Base58 dizesini çözecek, 32 bayta dolduracak ve güvenli biçimde Chiliz OFTAdapter'ın setPeer fonksiyonuna geçirecektir.

Adım 3: Deploy İş Akışı

Sözleşmeleriniz yazıldı ve layerzero.config.ts'niz hazırlandı; Chiliz OFTAdapter'ı deploy etme zamanı. Adım 1'de Anchor kullanarak Solana yerel OFT programını zaten oluşturup deploy ettiğinizden, bu adım Hardhat kullanarak köprünün EVM tarafını deploy etmeye odaklanmaktadır.

Chiliz OFTAdapter Sözleşmesinin Deploy Edilmesi

Hardhat projenizde, deploy/ dizininde 01_deploy_chiliz_solana_adapter.ts adında bir deploy betiği oluşturun. Bu betik, mevcut token adresinizi ve Chiliz Endpoint V2 adresini (EID) constructor'a geçirir.

Chiliz OFTAdapter'ın Deploy Edilmesi

Devam etmeden önce şunlardan emin olun:

  • Elde edilen Base58 Program ID'yi layerzero.config.ts dosyanıza kopyaladınız.

  • hardhat.config.ts dosyanızda Chiliz Chain Mainnet için RPC URL'si ve private key doğru şekilde yapılandırıldı.

EVM Adapter'ı deploy etmek için terminalinizde şu komutu çalıştırın:

Deploy tamamlandıktan sonra Hardhat, Chiliz sözleşme adresini deployments/ klasörüne kaydedecektir.

Bu noktada hem Chiliz Chain'de (EVM) hem de Solana'da (SVM) canlı sözleşmeleriniz var, ancak henüz birbirlerine güvenmiyorlar. Onları tanıştırma zamanı!

Adım 4: Bağlantı ve Eşleşme

OFTAdapter sözleşmenizin ve OFT programınızın iletişim kurmasını sağlamak için onları güvenilir eşler olarak "bağlamanız" gerekir.

İki tamamen farklı Sanal Makine (EVM ve SVM) arasında köprü kurduğumuzdan, yapılandırma özel dikkat gerektirir.

EVM gas ile Solana compute unit karşılaştırması

Bir kullanıcı Chiliz Chain'den başka bir EVM zincirine (Base gibi) token köprülediğinde, LayerZero Executor'ın lzReceive fonksiyonunu çağırması için EVM gas'ına ihtiyacı vardır.

Ancak Chiliz Chain'den Solana'ya köprülerken, hedef zincir EVM gas kullanmaz. Compute Unit ve Lamport ($SOL'un kesintileri) kullanır. Ayrıca, bir kullanıcı token'ları henüz token'ınızı tutmayan bir Solana cüzdanına köprülerse, Executor onlar için bir İlişkili Token Hesabı (ATA) oluşturmak için Solana'nın "kira muafiyeti" ücretini ödemek zorundadır. Bu, hedefe gerçek $SOL değeri bırakmayı gerektirir.

Executor'ın Solana'da token basacak ve ATA oluşturacak yeterli Compute Unit ve Lamport'a sahip olmasını garanti etmek için, bağlamadan önce bu limitleri layerzero.config.ts dosyanızda tanımlamanız gerekir.

Terminalinizde otomatik wire komutunu çalıştırın:

Bu, 6 gerekli yapılandırma işlemini hazırlayacaktır:

  1. setSendLibrary: Giden paketler için MessageLib'i atar.

  2. setReceiveLibrary: Gelen paketler için MessageLib'i atar.

  3. setConfig: DVN'leri ve Executor'ı yapılandırır.

  4. setConfig: Gelen doğrulama için DVN'leri yapılandırır.

  5. setEnforcedOptions: Tutarlı çalıştırma parametrelerini sağlar (kullanıcının Solana Compute Unit'i ve Lamport kirasını karşılayacak yeterli miktarı peşin ödemesini garanti etmek için kritiktir).

  6. setPeer: Solana EID'yi hedef Base58 Program ID'nize bağlar.

LayerZero V2 araç seti ağır işi otomatikleştirir: Base58 Solana adresini çözecek, gerekli bytes32 EVM formatına dolduracak ve her iki zincire de setPeer ve setEnforcedOptions işlemlerini gönderecektir.

Bağlantı işlemleri onaylandıktan sonra EVM'den Solana'ya köprünüz aktif ve güvenli biçimde izin verilmiş olacaktır.

Token'ınız artık resmi olarak EVM/SVM engelini aşmaya hazır!

Adım 5: Operasyon ve Test

Chiliz Adapter'ınız deploy edildi, Solana Yerel OFT'niz başlatıldı ve ikisi düzgün biçimde bağlandı; token'ınız artık resmi olarak EVM/SVM engelini aşmaya hazır. Son adım, Chiliz Chain'den Solana'ya bir test transferi gerçekleştirmek ve izlemektir.

1) Solana'ya Çapraz Zincir Mesajı Gönderme

LayerZero V2 araç seti, doğrudan komut satırından OFT transferleri göndermek için bir Hardhat görevi içerir.

EVM'den EVM'ye transferlerin aksine, hedefiniz burada bir Base58 Solana cüzdan adresidir. LayerZero CLI, mesaj payload'ı için Base58'den Bytes32'ye dönüşümü otomatik olarak gerçekleştirir.

Terminalinizde şu komutu çalıştırın:

Burada neler oluyor?

  1. Betik çapraz zincir ücretini $CHZ cinsinden hesaplar (EVM gas, doğrulayıcı ağ ücretleri ve Solana hedef ücretlerini kapsar).

  2. Chiliz Adapter'ınızda send() fonksiyonunu çağırır.

  3. Adapter 10 token'ı kilitler (18 ondalık basamak). Payload'ı 6 sharedDecimal'e indirmek için en düşük 12 ondalık basamağı "toz" olarak bırakır (Chiliz cüzdanınızda kalır).

  4. LayerZero Endpoint, paketi Solana Mainnet'e doğru yayınlar.

2) Paketi LayerZero Scan'de İzleme

Solana'ya köprüleme, iki tamamen farklı konsensüs mekanizması arasında çeviri yapmayı ve SVM kesinliğini beklemeyi 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:

Ondalık Çeviri

Solana Yerel OFT, köprüden gelen 6 ondalık basamaklı payload'ı otomatik olarak standart SPL 9 ondalık basamağına yükseltecektir; böylece Solana cüzdanınız tam olarak 10 token alır.

4) Takılı Mesajlarda Sorun Giderme

İşleminiz Chiliz'de onaylandı ancak Solana'da yürütülmedi olarak işaretlendiyse, en yaygın neden Yetersiz Lamport veya Compute Unit hatasıdır.

  • Hedef Solana cüzdanı belirtilen token için zaten bir İlişkili Token Hesabına (ATA) sahip değilse, LayerZero Executor bunu oluşturmak için Solana'nın "kira muafiyeti" ücretini ödemek zorunda kaldı.

  • enforcedOptions'daki value parametresi (Lamport) bu kirayı karşılayacak kadar düşük ayarlandıysa veya gas (Compute Unit) yetersizse, Executor kendi cebinden ödemeyi reddedecek ve mesaj takılı kalacaktır.

  • Çözüm: Token'larınızı kaybetmiyorsunuz. Takılı bir mesajı LayerZero Scan arayüzü aracılığıyla manuel olarak ilerletebilirsiniz. Solana cüzdanınızı bağlayın, blok gezginindeki "Force Resume" veya "Execute" düğmesine tıklayın ve basımı sonlandırmak için yerel hedef ücretini ($SOL cinsinden Compute Unit + ATA Kirası) kendiniz ödeyin.

Son güncelleme

Bu yararlı oldu mu?