> For the complete documentation index, see [llms.txt](https://docs.symbiosis.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.symbiosis.finance/main-concepts/symbiosis-cross-chain-swaps/symbiosis-to-from-btc.md).

# Symbiosis: To/From BTC

The Symbiosis protocol: the implementation of the cross-chain BTC exchange process using the Symbiosis BTC bridge

## Introduction

This document describes how cross-chain swaps involving Bitcoin are processed through the Symbiosis protocol using the **Symbiosis BTC bridge**.

Current BTC routing through the Symbiosis BTC bridge uses **symBTC on Ethereum** as an intermediate routing asset.

The protocol supports:

1. **BTC → token:** exchanging BTC from the Bitcoin network for another token on a supported blockchain.
2. **Token → BTC:** exchanging a token from a supported blockchain for native BTC on the Bitcoin network.

{% hint style="info" %}
Token → BTC swaps can also be routed through the **THORChain BTC bridge** or **Chainflip BTC bridge**.

Learn more: [Symbiosis as Interchain Communication Protocol](/main-concepts/symbiosis-as-interchain-communication-protocol.md)
{% endhint %}

## **Key Components in the BTC Bridge/Exchange Process within the Symbiosis Protocol**

<figure><img src="https://1179234091-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbqmbXNUH5sa4BvYwD0%2Fuploads%2FHQfzbUxwN6qc5XK2dcQX%2FSymbiosis%20Top%20Scheme-Copy%20of%20Top%20Scheme%20%2B%20BTC.png?alt=media&amp;token=25bfbb1b-98e0-48b9-a5b5-b0d68819657c" alt="" width="380"><figcaption><p>Scheme 1. The Symbiosis protocol: main components</p></figcaption></figure>

* **Forwarder:** This component handles user requests to exchange BTC from the Bitcoin network for tokens across other blockchain networks. It generates a unique BTC address for each request, stores the payload for the request, and forwards the received BTC to the intended destination (hence the name “forwarder”). The forwarder implements functionality that isn't available in Bitcoin network smart contracts.\
  \
  The forwarder acts as a custodial wallet; it can be operated by anyone willing to cover the fees for forwarding transactions on the Bitcoin network. \
  **Important:** the forwarder must be fully trusted. Each integrator can deploy their own forwarder and trust it to process transactions initiated through their integration. Symbiosis, for example, trusts its own forwarder for transactions handled through its WebApp.\
  \
  The forwarder provides compatibility with regular and legacy Bitcoin wallets.
* **BTC portal:** This is a smart contract located on the Bitcoin blockchain, playing a role similar to Portal smart contracts of the Symbiosis protocol on other supported blockchains. Unlike Ethereum Virtual Machine (EVM) smart contracts, its state is validated only by the relayers MPC group. The Bitcoin consensus layer only validates funds moving to or from its address.
* **Web/mobile apps powered by the Symbiosis web SDK:** A UI provided by Symbiosis or an integrator that enables users to access the functionality of the Symbiosis protocol. It uses the Symbiosis SDK/API to compose call data for cross-chain operations and retrieve states stored on Symbiosis smart contracts. This documentation explains how users interact with the protocol using the Symbiosis WebApp. However, any integrator using the Symbiosis API/SDK can provide similar UI and functionality to interact with the Symbiosis protocol.
* **Relayers network:** A blockchain-agnostic, P2P network consisting of registered relayer nodes securitised by the MPC/HTSS scheme. It facilitates the secure and efficient transmission of data between supported blockchain networks, ensuring data integrity and resilience against potential attacks through various technical approaches and crypto-economic incentive mechanisms. For more information about the relayers network, please refer to [Relayers network](/relayers-network/symbiosis-relayers-network.md).
* **Сore smart contracts** implement the on-chain logic of cross-chain operations (cross-chain swaps, cross-chain zaps, interchain communication, bridging). The smart contracts are deployed and tuned by Symbiosis administrators while adding a blockchain to the Symbiosis protocol. For more information about the Symbiosis smart contracts, please refer to [Symbiosis Routing Contracts](/crosschain-liquidity-engine/symbiosis-routing-contracts.md).

## symBTC: BTC Routing Asset

**symBTC is an internal routing token on Ethereum used to process BTC-related swaps through the Symbiosis BTC bridge.**

Its purpose is to provide an intermediate representation of BTC while a cross-chain swap is being routed and executed. Users normally do not need to interact with symBTC directly.

{% hint style="warning" %}
**symBTC is intended only for routing swaps through Symbiosis.**

symBTC is not designed to be accumulated, held as a standalone wrapped BTC asset, or traded independently outside the intended Symbiosis routing flow.

Buying, holding, accumulating, or otherwise using symBTC outside this routing flow is outside its intended use.\
If symBTC deviates from the price of BTC, losses resulting from such use are not eligible for compensation.
{% endhint %}

symBTC address

## **Exchanging BTC Two Ways**

{% hint style="info" %}
BTC swaps processed through the Symbiosis BTC bridge are routed through **Ethereum**, using **symBTC** as the intermediate BTC routing asset.
{% endhint %}

### **Exchanging BTC** for Another Token

A BTC → token swap involves the following steps:

1. **Requesting a quote:** A user specifies the BTC amount, slippage tolerance, destination token, destination chain, and destination address.
2. **Receiving a quote:** The protocol returns the expected destination amount, estimated fees, and a newly generated Bitcoin address.
3. **Triggering the swap:** The user sends the quoted BTC amount to the generated Bitcoin address.

   If the deposit can be processed, it triggers the cross-chain swap. If the swap cannot proceed, BTC can be returned to the fallback Bitcoin address specified for the operation.
4. **Routing BTC to Ethereum:** The BTC bridge processes the deposit and creates the corresponding symBTC routing position on Ethereum.
5. **Solving the symBTC swap:** symBTC is locked in the Depository under predefined execution conditions. The Solver searches for an on-chain route that satisfies these conditions.
6. **Completing the cross-chain swap:** Once the symBTC exchange succeeds, the resulting tokens continue through the standard Symbiosis cross-chain flow until the destination tokens are delivered to the user.

**An example of exchanging BTC for USDT on TRON is shown below: Scheme 2**

<figure><img src="https://1179234091-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbqmbXNUH5sa4BvYwD0%2Fuploads%2FzrPNFXXcwg0bwtT8xiqs%2FV2%20swaps%20BTC-From%20BTC_%20depositary%20(1).png?alt=media&amp;token=0b63740b-ad7b-4bec-b617-a9315a102851" alt=""><figcaption><p>Scheme 2. BTC -> token routing via the Octopool with stable tokens.</p></figcaption></figure>

**Important notes for Scheme 2**

**Step 1.** The user specifies the BTC amount, slippage tolerance, destination token, destination chain, and destination address.

**Step 2.**

* Similar to any cross-chain swap, the Symbiosis WebApp or integrator composes calldata, calculating all necessary intermediate swaps and estimates transaction fees on the intermediate chains and the destination chain to complete the cross-chain swap with the specified values from Step 1
* Unlike other cross-chain swaps, the Symbiosis WebApp or integrator sends this calldata to the Forwarder and requests it to generate an address on the Bitcoin network for this cross-chain swap.

**Step 3:** The Forwarder generates a Bitcoin address and stores the associated swap payload. The address is valid for a limited period.

**Step 4.** The generated Bitcoin address and expiration time are returned to the user.

**Step 5.** The user sends the specified amount of BTC (from Step 1) to the provided address (from Step 4) using their chosen BTC wallet.

**Step 6.**

* **Step 6.1.** Forwarder monitors generated addresses.
* **Step 6.2.** After receiving BTC, it forwards the funds to the BTC Portal together with the associated swap payload.

**Step 7.**

* **Step 7.1.** Relayers monitor the BTC Portal (MPC address) on the Bitcoin blockchain.
* **Step 7.2.** When relayers detect a BTC transfer to the BTC Portal (MPC address), they compose, sign, and send a transaction to Ethereum. The instructions for actions on Ethereum and other chains come from the payload.

**Step 8.** symBTC is minted and locked in the Depository contract. For each symBTC lock, the Depository stores the following parameters:

* Conditions under which the lock can be released
* The minimum acceptable amount of tokens after the exchange (on Ethereum)
* Destination addresses the tokens can be sent to (the user’s address and/or Metarouter contract)
* The execution payload required to complete the cross-chain swap

All this data is derived from the payload constructed in Step 2.

**Step 9.**

* **Step 9.1.** The Solver continuously monitors lock events emitted by the Depository.
* **Step 9.2.** When a lock event is detected, the Solver:
  * Finds an exchange route that satisfies the unlock conditions.
  * Sends a transaction on Ethereum, calling the Depository to complete the swap.

**Step 10.**

* **Step 10.1.** If the release conditions are met, the following actions happen:
  * The locked symBTC is released and exchanged for WBTC in the Symbiosis symBTC ↔ WBTC liquidity pool.
  * The WBTC is swapped for USDC through third-party liquidity sources (DEX aggregators are used).
  * The resulting USDC is forwarded to Symbiosis contracts to continue the cross-chain flow.&#x20;
* **Step 10.2.** The received USDC is then locked inside Symbiosis contracts, and an Oracle request is issued.

**Important** Steps 10.1. & 10.2 are executed within a single transaction. This ensures that if something fails, the symBTC remains locked in the Depository, allowing the Solver to retry the operation.

**Lock Release Conditions**

* **Immediate Swap Completion:** The Depository releases the symBTC lock without delay if the tokens are exchanged for an amount higher than the minimum required amount.
* **Delayed Completion:** The Depository releases the lock with delay if the exchange results in an amount equal to the minimum acceptable amount.
* **Return of Funds** to the Bitcoin Network: If it becomes impossible to perform the exchange even at the minimum amount:
  * The symBTC is unwrapped back into native BTC.
  * The BTC is returned to the user-specified address on the Bitcoin network.

**Example:**&#x20;

A symBTC lock is created with a minimum acceptable output of 100 USDC on Ethereum.

* If the Solver finds an exchange route that yields 110 USDC, the lock is released immediately.
* If the Solver finds an exchange route that yields 100 USDC, the lock will be released with a delay.
* If the Solver cannot find a route that produces even 100 USDC, even after a significant amount of time, the symBTC will be unwrapped, and the user will receive their BTC back on the Bitcoin network.

**Additional information:** [Slippage Tolerance Distribution in Cross-Chain Swaps](/developer-tools/symbiosis-api/slippage-tolerance-distribution-in-cross-chain-swaps.md)

**Steps 10.2-14** are similar to any cross-chain swap performed across supported blockchain networks. For more information, please refer to [Symbiosis: Cross-Chain Swaps](/main-concepts/symbiosis-cross-chain-swaps.md)

### What Is Solver

The Solver service is an off-chain component that monitors new lock events and executes the steps required to complete a cross-chain swap. It computes the best available on-chain route that satisfies the defined conditions and performs the necessary transactions. The Solver can make multiple attempts to complete the swap, increasing the likelihood of successful execution.

To ensure high availability and reliable performance across supported networks, Symbiosis maintains several Solver instances.

The Solver is designed as a **permissionless service**: anyone can run a Solver instance and participate in executing cross-chain swaps. Over time, the ecosystem will expand to include multiple independent Solver operators, each capable of completing swaps and receiving fees for successful executions.

### **Exchanging a Token for BTC**

Exchanging a token for BTC through the Symbiosis protocol involves the following steps:

1. **Requesting a Quotation:** A user initiates an exchange by specifying the token amount, slippage tolerance, and a Bitcoin destination address.
2. **Receiving a Quotation:** The protocol provides a quote with the expected BTC amount and estimated fees.
3. **Triggering the Exchange:** The user signs and sends the transaction containing the calldata received on Step 2, which triggers the cross-chain exchange process with the specified parameters.
4. **Completing the Operation:** Once the cross-chain operation is completed, the user receives BTC at the specified address on the Bitcoin network.

Below is an example of exchanging TRX from TRON for BTC: **Scheme 3.**

<figure><img src="https://1179234091-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MbqmbXNUH5sa4BvYwD0%2Fuploads%2FrtHbUBMSUwKWsrujKHQL%2FV2%20swaps%20BTC-TRX_%20To%20BTC%20via%20Symbi%20(1).png?alt=media&amp;token=359933d2-f60f-4001-9193-ad51403e896c" alt=""><figcaption><p>Scheme 3. Token -> BTC routing via the Octopool with stable tokens.</p></figcaption></figure>

**Important notes for Scheme 3**

**Step 1.** A user specifies the amount to exchange, slippage tolerance, and the address on the Bitcoin network.

**Steps 2-9** are similar to any cross-chain swap performed across supported blockchain networks. For more information, please refer to [Symbiosis: Cross-Chain Swaps](/main-concepts/symbiosis-cross-chain-swaps.md)

**Step 10-12.** WBTC is exchanged for symBTC on Ethereum and burning the symBTC.

**Step 13.**

* **Step 13.1.** Relayers monitor Oracle requests generated by the Symbiosis smart contracts.
* **Step 13.2.** When relayers detect an Unwrap event, they compose, sign, and send a transaction to the Bitcoin network transfering BTC from BTC Portal to the address specified by the user (Step 1).

## Historical Use: syBTC — Deprecated

{% hint style="info" %}
**syBTC is deprecated and is no longer used for current BTC routing through the Symbiosis BTC bridge**
{% endhint %}

Earlier versions of the Symbiosis BTC bridge used **syBTC** as an intermediate BTC representation for routing and bridging operations.

syBTC was deployed on:

* Ethereum: [0x01a8b61e7b03891a736b5df865e0ef9c511850ad](https://etherscan.io/address/0x01a8b61e7b03891a736b5df865e0ef9c511850ad) — Deprecated
* BNB Chain: [0xA67c48F86Fc6d0176Dca38883CA8153C76a532c7](https://bscscan.com/token/0xa67c48f86fc6d0176dca38883ca8153c76a532c7#transactions) — Deprecated
* Citrea: [0x384157027B1CDEAc4e26e3709667BB28735379Bb](https://explorer.mainnet.citrea.xyz/address/0x384157027B1CDEAc4e26e3709667BB28735379Bb?tab=index) — Deprecated
* Rootstock: [0xb52E582263C1D0189b3cC1402C1B7205B7F2e9BA](https://rootstock.blockscout.com/address/0xb52E582263C1D0189b3cC1402C1B7205B7F2e9BA) — Deprecated

Historical BTC flows used syBTC on these networks, including routing through liquidity pools on BNB Chain, Ethereum, Citrea, and Rootstock.

These contracts remain relevant for identifying and understanding historical Symbiosis transactions, but **syBTC is no longer used for new BTC routing operations**.

Current BTC routing through the Symbiosis BTC bridge uses symBTC **on Ethereum** instead.

## Next Steps

* Use the Symbiosis WebApp: <https://app.symbiosis.finance/swap>
* Learn how Symbiosis core contracts interact: [Symbiosis Routing Contracts](/crosschain-liquidity-engine/symbiosis-routing-contracts.md)
* For integrators: [Symbiosis API](/developer-tools/symbiosis-api.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

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

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.symbiosis.finance/main-concepts/symbiosis-cross-chain-swaps/symbiosis-to-from-btc.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
