# Chiliz Chain'den Solana'ya köprüleme

Chiliz Chain’den Solana’ya 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 (Chiliz Chain) bir OFT Adapter ve hedef zincirde (Solana) bir Native OFT.

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

{% embed url="<https://docs.layerzero.network/v2/developers/evm/oft/quickstart>" %}

## Ön Koşullar

{% hint style="info" %}
Chiliz Chain (EVM) ile Solana (Non-EVM) arasında köprü kurmak çift yığın geliştirme gerektirir.\
Her iki ekosistem için de ortamların ve cüzdanların kurulmuş olması gerekir.

Bu nedenle aşağıdaki ortamlara ihtiyacınız olacak:

* Chiliz Chain etkileşimleri için: Node/npx ve Hardhat.
* Solana etkileşimleri için: [Rustup](https://rustup.rs/) (Solana akıllı sözleşmeleri Rust programlama dilini kullanır), [Solana CLI ve Anchor framework](https://solana.com/docs/intro/installation), ve [LayerZero’nun Solana SDK’sı](https://docs.layerzero.network/v2/tools/sdks/solana-sdk).
  {% endhint %}

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

* Chiliz Chain üzerindeki bir token sözleşmesi adresi. Ona sahip olmanız gerekmez.
* Her zincir için bir Web3 cüzdanı (MetaMask non-EVM zincirleri desteklemez):
  * Chiliz Chain için: [Chiliz Chain RPC yapılandırmasına sahip MetaMask cüzdanı](/tr-ai/develop/basics/connect-to-chiliz-chain/connect-using-rpc.md).
  * Solana için: [Solflare](https://www.solflare.com/) cüzdanı ile [Solana Mainnet yapılandırması](https://solana.com/docs/references/clusters). İşte [kurulum kılavuzu](https://www.solflare.com/guides/how-to-set-up-your-first-crypto-wallet-with-solflare-step-by-step/).
* Sözleşme dağıtımları ile mesaj gönderme için gereken gas ücretlerini ödeyecek kadar her zincirde yeterli gas tokenı.
  * Chiliz Chain’de: CHZ tokenları.
  * Solana’da: SOL tokenları.

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

{% hint style="info" %}
**“Shared Decimals” Zorluğu**

Solana token matematiğini Ethereum Virtual Machine’den (EVM) farklı şekilde ele aldığı için, ondalıkları doğru biçimde yönetmemiz gerekir:

* Chiliz Chain (EVM): Standart ERC-20 token’ları genellikle 18 ondalık hassasiyete sahiptir.
* Solana: Yerel SPL Token’ları genellikle 9 ondalık hassasiyete sahiptir.

Eğer\
&#x20;$$ $1 \times 10^{18}$ $$ birimi Chiliz’den Solana’ya gönderirseniz, Solana sözleşmesi miktarı yanlış yorumlar ve bu da hedef zincirde token’ın aşırı şişmesine 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ığı atar (bunları "dust" olarak değerlendirir) ve sayıyı 6 ondalığa düşürür.
* Mesaj köprü üzerinden gönderilir.
* Solana programı 6 ondalıklı sayıyı alır ve onu\
  &#x20;*yukarı* basmadan önce yerel 9 ondalığına ölçekler.

[Buradan daha fazlasını öğrenin](https://docs.layerzero.network/v2/faq#what-is-shareddecimals-can-i-override-default-shareddecimals-in-an-oft-contract).
{% endhint %}

### Hazırlanması `OFTAdapter` Chiliz Chain üzerinde

{% hint style="warning" %}
Bu hazırlık adımıdır, hemen dağıtım yapmayın!\
3\. adımda dağıtım yapacaksınız.
{% endhint %}

Şu `OFTAdapter` sözleşme, mevcut token’ınız için bir kilit kutusu gibi davranır. Kullanıcılar token’larını Chiliz Chain’den dışarı köprülediğinde, bu sözleşme orijinal ERC20 token’ları kilitler.

{% hint style="info" %}
Çünkü LayerZero’nun `OFTAdapter` ayarlar `sharedDecimals` varsayılan olarak 6’ya, standart uygulamayı kullanabilirsiniz. Bunu değiştirmek isterseniz (örneğin 8’e),\
&#x20;`sharedDecimals()` fonksiyonunu yürütmesini söyler.
{% endhint %}

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

```solidity
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

import { OFTAdapter } from "@layerzerolabs/lz-evm-oapp-v2/contracts/oft/OFTAdapter.sol";
import { Ownable } from "@openzeppelin/contracts/access/Ownable.sol";

contract ChilizSolanaAdapter is OFTAdapter {
    constructor(
        address _token,      // Chiliz Chain üzerindeki MEVCUT Token’ınızın adresi (18 ondalık)
        address _lzEndpoint, // Chiliz üzerindeki LayerZero V2 Endpoint adresi
        address _delegate    // Yapılandırma değişiklikleri yapabilen adres (genellikle cüzdanınız)
    ) OFTAdapter(_token, _lzEndpoint, _delegate) Ownable(_delegate) {}
}
```

{% hint style="info" %}
Gördüğünüz gibi bu sözleşme [LayerZero OFT Adapter sözleşmesini](https://github.com/LayerZero-Labs/LayerZero-v2/blob/main/packages/layerzero-v2/evm/oapp/contracts/oft/OFTAdapter.sol)ve 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.
{% endhint %}

### Hazırlama ve Dağıtma `OFT` Solana üzerinde

Chiliz Chain’den farklı olarak, Solana Ethereum Virtual Machine’i (EVM) veya Solidity dilini kullanmaz. Solana akıllı sözleşmeleri ("Programs" olarak adlandırılır) şu dilde yazılır: [Rust](https://rust-lang.org/).

Token’ınızı köprülemek için Solana üzerinde bir OFT programı dağıtmanız gerekir. Bu program, Chiliz’de dağıtılmış OFTAdapter’ınızdan doğrulanmış bir mesaj aldığında, ilgili SPL token’ı kullanıcının Solana cüzdanına basacaktır.

{% embed url="<https://docs.layerzero.network/v2/developers/solana/oft/overview>" %}

LayerZero bir [kullanıma hazır Anchor örneği](https://github.com/LayerZero-Labs/devtools/tree/main/examples/oft-solana) sunar; böylece köprü mantığını Rust ile sıfırdan yazmanız gerekmez.

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

```bash
git clone https://github.com/LayerZero-Labs/devtools.git
cd devtools/examples/oft-solana
npm install
```

#### 2. Rust programını derleyin

Bu ayrıca size benzersiz Solana Program ID’nizi de oluşturur (EVM’deki sözleşme adresine eşdeğer):

```bash
anchor build
```

Derleme tamamlandıktan sonra, Anchor yeni bir keypair oluşturacaktır: `target/deploy/oft_solana-keypair.json`.\
Aşağıdaki komutu çalıştırarak yeni Program ID’nizi alabilirsiniz:

```bash
anchor keys list
```

#### 3. Solana Mainnet’e dağıtın

Solana CLI’nizin Mainnet için yapılandırıldığından ve yerel cüzdanınızda dağıtım ve depolama kirası için yeterli $SOL bulunduğundan emin olun.\
Şunu güncellemeyi unutmayın: `Anchor.toml` dosyası ve `lib.rs` dağıtmadan önce declare\_id! makrosunu bu yeni Program ID ile.

```bash
solana config set --url mainnet-beta
anchor deploy
```

#### 4. OFT ve SPL Mint’i başlatın

Solana’da bir token’ın mantığı ve defteri ayrıdır. Yeni bir Mint Account (SPL Token) başlatmalı ve yeni dağıttığınız OFT Program’ı Mint Authority olarak atamalısınız. Bu, yalnızca LayerZero köprüsünün Solana üzerinde yeni token basabilmesini sağlar.

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

{% code overflow="wrap" lineNumbers="true" %}

```bash
npx hardhat lz:oft-solana:init --program-id <YOUR_NEW_PROGRAM_ID> --mint-decimals 9 --shared-decimals 6
```

{% endcode %}

{% hint style="info" %}
Kritik Parametreler:

* `--mint-decimals 9`: Solana’daki standart SPL token hassasiyetini belirler.
* `--shared-decimals 6`: Chiliz Chain’inizde yapılandırdığınız paylaşılan ondalıklarla (veya varsayılanla) eşleşmelidir `OFTAdapter`. Bu, 1 Chiliz token = 1 Solana token olmasını garanti eden şeydir.
  {% endhint %}

Bu başlatma işlemi Solana blok zincirinde onaylandıktan sonra, yerel OFT programınız tamamen kurulmuş olur ve Chiliz OFTAdapter’a bağlanmaya hazırdır!

## olarak vereceksiniz

Chiliz Adapter’ınız dağıtılmış ve Solana OFT programınız başlatılmış haldeyken, şimdi bunların bağlantısını yapılandırmanız gerekir. EVM ve non-EVM ağları arasındaki farkın en net görüldüğü yer burasıdır.

{% hint style="info" %}
Adres Biçimlendirme:

* Chiliz Chain (EVM): Standart 20 baytlık onaltılık adresler kullanır (örneğin, `0x123...`).
* Solana: Base58 ile kodlanmış adresler kullanır (örneğin, `YourProgramId111111111111111111111111111111`).
  {% endhint %}

LayerZero’nun zincirler arası mesajlaşması tüm [eş adreslerinin](https://docs.layerzero.network/v2/concepts/glossary#peer) şu biçimde olmasını gerektirir: `Buradaki ana zorluk adres biçimlendirmesidir. LayerZero’nun zincirler arası mesajlaşması, tüm eş adreslerin`. Neyse ki LayerZero V2 Hardhat araçları, konfigürasyonunuzda uç noktaları doğru tanımladığınız sürece Base58’den Bytes32’ye dönüşümü sizin için otomatik olarak yapar.

Ş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.](https://docs.layerzero.network/v2/tools/simple-config) 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:

{% code lineNumbers="true" %}

```typescript
import { ExecutorOptionType } from '@layerzerolabs/lz-v2-utilities';
import { OAppEnforcedOption, OmniPointHardhat } from '@layerzerolabs/toolbox-hardhat';
import { EndpointId } from '@layerzerolabs/lz-definitions';
import { generateConnectionsConfig } from '@layerzerolabs/metadata-tools';

// Sözleşmeleri Tanımla
const chilizContract: OmniPointHardhat = {
    eid: EndpointId.CHILIZ_V2_MAINNET,
    contractName: 'ChilizSolanaAdapter', // EVM üzerindeki Hardhat dağıtım adınız
};

const solanaContract: OmniPointHardhat = {
    eid: EndpointId.SOLANA_V2_MAINNET,
    address: 'YourSolanaProgramIdHereInBase58', // Solana için Base58 adres biçimi
};

// Solana için Yürütme Seçeneklerini tanımlayın (Compute Units & Lamports)
const SOLANA_ENFORCED_OPTIONS: OAppEnforcedOption[] = [
    {
        msgType: 1,
        optionType: ExecutorOptionType.LZ_RECEIVE,
        gas: 200000,    // Hedef yürütme için gerekli Solana Compute Units
        value: 2500000, // Olası ATA oluşturma kira ücretini karşılamak için Lamports
    },
];

// Chiliz’e dönüş yolculuğu için Yürütme Seçeneklerini tanımlayın (EVM Gas)
const EVM_ENFORCED_OPTIONS: OAppEnforcedOption[] = [
    {
        msgType: 1, 
        optionType: ExecutorOptionType.LZ_RECEIVE,
        gas: 200000, // Chiliz üzerinde token kilidini açmak için standart EVM gas birimleri
        value: 0,
    },
];

// Oluşturulan Yapılandırmayı Dışa Aktar
export default async function () {
    return {
        contracts: [
            { contract: chilizContract },
            { contract: solanaContract },
        ],
        connections: await generateConnectionsConfig([
            [
                chilizContract, 
                solanaContract,
                [['LayerZero Labs'], []], 
                [1, 1], 
                [SOLANA_ENFORCED_OPTIONS, EVM_ENFORCED_OPTIONS], // Seçenekler [Solana SVM’ye, Chiliz EVM’ye]
            ],
        ]),
    };
}
```

{% endcode %}

LayerZero kablolama görevi bunu okuyacak, Base58 dizesini çözecek, 32 bayta dolduracak ve bunu güvenli bir şekilde Chiliz OFTAdapter’ın `setPeer` fonksiyonunu yürütmesini söyler.

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

Sözleşmeleriniz yazıldıktan ve `layerzero.config.ts` hazırlandıktan sonra, Chiliz OFTAdapter’ı dağıtma zamanı gelmiştir. 1. Adımda Anchor kullanarak Solana yerel OFT programını zaten oluşturup dağıttığınız için, bu adım Hardhat kullanarak köprünün EVM tarafını dağıtmaya odaklanır.

### **Chiliz OFTAdapter sözleşmesinin dağıtılması**

Hardhat projenizde, `deploy/` dizininizde `01_deploy_chiliz_solana_adapter.ts`. Bu betik, mevcut token adresinizi ve Chiliz Endpoint V2 adresini (EID) kurucuya iletir.

{% code overflow="wrap" lineNumbers="true" %}

```typescript
import { DeployFunction } from 'hardhat-deploy/types';

const deployAdapter: DeployFunction = async ({ getNamedAccounts, deployments }) => {
    const { deploy } = deployments;
    const { deployer } = await getNamedAccounts();

    // Chiliz üzerindeki mevcut ERC-20 token’ınızın adresi (18 ondalık)
    const TOKEN_ADDRESS = "0xYourTokenAddressHere"; 
    
    // Chiliz Mainnet Endpoint V2 Adresi
    const CHILIZ_ENDPOINT_V2 = "0x6F475642a6e85809B1c36Fa62763669b1b48DD5B";

    console.log("Chiliz Mainnet’e OFTAdapter dağıtılıyor...");

    await deploy('ChilizSolanaAdapter', {
        from: deployer,
        args: [
            TOKEN_ADDRESS,       // _token
            CHILIZ_ENDPOINT_V2,  // _lzEndpoint
            deployer             // _delegate (Sahip)
        ],
        log: true,
        waitConfirmations: 2,
    });
};

export default deployAdapter;
deployAdapter.tags = ['ChilizSolanaAdapter'];
```

{% endcode %}

### **Chiliz OFTAdapter’ın dağıtılması**

{% hint style="info" %}
Devam etmeden önce şunlardan emin olun:

* ortaya çıkan Base58 Program ID’yi kendi dosyanıza kopyaladınız `layerzero.config.ts` dosyanız.
* sizin `hardhat.config.ts` RPC URL’si ve özel anahtar Chiliz Chain Mainnet için doğru şekilde yapılandırılmıştır.
  {% endhint %}

EVM Adapter’ı dağıtmak için terminalinizde aşağıdaki komutu çalıştırın:

{% code overflow="wrap" lineNumbers="true" %}

```bash
npx hardhat deploy --network chiliz --tags ChilizSolanaAdapter
```

{% endcode %}

Dağıtım tamamlandığında, Hardhat Chiliz sözleşme adresini şu klasöre kaydedecektir: `deployments/` klasörü.

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

## 4. Adım: Wiring ve Peering

OFTAdapter sözleşmenizin ve OFT programınızın iletişim kurmasına izin vermek için, onları güvenilir eşler olarak birbirine "wire" etmeniz gerekir.

Tamamen farklı iki Sanal Makine (EVM ve SVM) arasında köprü kurduğumuz için, yapılandırma özel dikkat gerektirir.

{% hint style="info" %}
**EVM gas ve Solana compute units**

Bir kullanıcı Chiliz Chain’den başka bir EVM zincirine (Base gibi) token köprülediğinde, LayerZero Executor çağrı yapmak için EVM gas’a ihtiyaç duyar `lzReceive`.

Ancak Chiliz Chain’den Solana’ya köprüleme yapıldığında, hedef zincir EVM gas kullanmaz. [Compute Units ve Lamports ($SOL’un kesirleri) kullanır](https://solana.com/docs/core/fees).\
Ayrıca, bir kullanıcı token’ınız henüz bulunmayan bir Solana cüzdanına token köprülerse, Executor’ın onlar için Associated Token Account (ATA) oluşturmak üzere Solana’nın "rent exemption" ücretini ödemesi gerekir. Bu, hedefte gerçek $SOL değeri harcanmasını gerektirir.
{% endhint %}

Executor’ın Solana üzerinde token basmak ve ATA oluşturmak için yeterli Compute Units ve Lamports’a sahip olmasını garanti etmek için, bunları kendi `layerzero.config.ts` dosyayı *önce* kablolama

işlemini terminalinizde çalıştırın:

{% code lineNumbers="true" %}

```bash
npx hardhat lz:oapp:wire --oapp-config layerzero.config.ts
```

{% endcode %}

Bu, gerekli 6 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ı yürütme parametreleri sağlar (kullanıcının Solana Compute Units ve Lamport kirasını karşılamak için peşin olarak yeterince ödeme yapmasını sağlamak açısından kritik).
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 `Buradaki ana zorluk adres biçimlendirmesidir. LayerZero’nun zincirler arası mesajlaşması, tüm eş adreslerin` EVM biçimine dolduracak ve `setPeer` ve `setEnforcedOptions` işlemlerini her iki zincire gönderecektir.

Kablolama işlemleri onaylandıktan sonra, EVM’den Solana’ya köprünüz çalışır durumdadır ve güvenli şekilde yetkilendirilmiştir.

Token’ınız resmen EVM/SVM ayrımını geçmeye hazır!

## 5. Adım: İşletim ve Test

Chiliz Adapter’ınız dağıtılmış, Solana Native OFT’niz başlatılmış ve ikisi düzgün şekilde birbirine bağlanmış durumda; token’ınız artık resmen EVM/SVM ayrımını geçmeye hazır. Son adım, Chiliz Chain’den Solana’ya bir test transferi gerçekleştirmek ve bunu izlemektir.

### 1) Zincirler Arası Mesajı Solana’ya Gönderme

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

Hedefinizin standart bir onaltılık dize olduğu EVM’den EVM’ye transferlerin aksine, burada hedefiniz Base58 Solana cüzdan adresidir. LayerZero CLI, mesaj yükü için Base58’den Bytes32’ye dönüşümü otomatik olarak yönetir.

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

{% code overflow="wrap" lineNumbers="true" %}

```bash
npx hardhat lz:oft:send --oapp-config layerzero.config.ts --from-eid 30409 --to-eid 30168 --to <YOUR_SOLANA_WALLET_ADDRESS_BASE58> --amount 10
```

{% endcode %}

{% hint style="info" %}
Burada ne oluyor?

1. Betik, zincirler arası ücreti $CHZ cinsinden hesaplar (bu ücret EVM gas’ını, doğrulayıcı ağ ücretlerini ve Solana hedef ücretlerini karşılar).
2. Şunu çağırır: `send()` fonksiyonunu Chiliz Adapter’ınızda bulur.
3. Adapter 10 token’ı (18 ondalık) kilitler. Yükü 6’ya düşürmek için en düşük 12 ondalığı "dust" olarak atar (bunları Chiliz cüzdanınızda bırakır) `sharedDecimals`.
4. LayerZero Endpoint paketi Solana Mainnet’e gönderir.
   {% endhint %}

### 2) Paketin LayerZero Scan üzerinde Takibi

Solana’ya köprüleme, iki tamamen farklı mutabakat mekanizması arasında çeviri yapmayı ve SVM kesinliğini beklemeyi içerdiğinden, asenkron bir gecikme normaldir.

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.

{% embed url="<https://docs.layerzero.network/v2/developers/evm/tooling/layerzeroscan>" %}

{% hint style="info" %}

#### Ondalık Çeviri

Solana Native OFT, köprüden gelen 6 ondalıklı yükü otomatik olarak standart SPL 9 ondalığına ölçeklendirecektir; böylece Solana cüzdanınız tam olarak 10 token alır.
{% endhint %}

**Chiliz Native OFT, 6 ondalıklı yükü otomatik olarak EVM standardı 18 ondalığa yükseltecektir; böylece tam olarak 10 tam token alırsınız**

İşleminiz Chiliz üzerinde onaylandı olarak işaretlenip Solana üzerinde yürütülemezse, en yaygın neden Yetersiz Lamports veya Compute Units hatasıdır.

* Hedef Solana cüzdanında belirli token’ınız için önceden bir Associated Token Account (ATA) yoksa, LayerZero Executor bunu oluşturmak için Solana "rent exemption" ücretini ödemek zorunda kalmıştır.
* İşleminiz Solana’da onaylanmış olarak işaretlenmesine rağmen Chiliz üzerinde yürütülemezse, en yaygın neden bir EVM Out-of-Gas hatasıdır. `value` parametresi (Lamports) sizin `enforcedOptions` bu kirayı karşılamak için çok düşük ayarlanmışsa veya `Eğer` (Compute Units) yetersizse, Executor kendi cebinden ödeme yapmayı reddeder ve mesaj takılır.
* Düzeltme: Token’larınızı kaybetmezsiniz. LayerZero Scan UI üzerinden takılmış bir mesajı manuel olarak ilerletebilirsiniz. Solana cüzdanınızı bağlayın, blok gezgininde "Force Resume" veya "Execute" düğmesine tıklayın ve mint işlemini tamamlamak için yerel hedef ücretini (Compute Units + ATA Rent, $SOL cinsinden) kendiniz ödeyin.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.chiliz.com/tr-ai/develop/advanced/use-omnichain-tokens/bridging-from-chiliz-chain-to-solana.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
