# Hyperlane Warp Route Token Bridge Guide

By [SouthKay](https://paragraph.com/@hoangsk1807) · 2024-09-27

---

**Hyperlane** is a permissionless interoperability layer that allows developers to connect any blockchain, out-of-the-box. Its primary goal is to unify the crypto user experience by connecting fragmented assets and chains.

This article will walk you through how to deploy a Warp Route with the Hyperlane CLI.

You can use Github CodeSpace, VPS or Ubuntu.

**Prepare**
===========

First download Yarn

    npm install -g yarn
    

We need the Hyperlane CLI to deploy the **Warp Route** contract.

Run the following command to install the Hyperlane CLI.

    yarn global add @hyperlane-xyz/cli
    

Continue entering the following command line. Remember to enter each command line.

    yarn global bin
    export PATH="$(yarn global bin):$PATH"
    source ~/.bashrc
    

After entering the above commands, continue entering the command below.

    hyperlane --version
    

This command is used to check the Hyperlane CLI version, if it looks like the image below, you did it correctly.

![](https://storage.googleapis.com/papyrus_images/bf4708f9f9a699809ed9b161d6523c6f97230060115727adbf236748d8fa7f75.png)

**Creating a Burner Wallet**
============================

Before starting the contract deployment, you should create a **burner wallet** and send in small amounts of ETH for gas fees. Once the wallet is created, you’ll need to export the private key to allow the Hyperlane CLI to access it.

You should use a secondary wallet, or a wallet with less assets in it. Always be careful.

Run the following command in your terminal, replacing _“YOUR\_PRIVATE\_KEY”_ with the private key of the burner wallet you created.

    export HYP_KEY="YOUR_PRIVATE_KEY"
    

**Initializing the Warp Route**
===============================

After exporting your private key, you can initialize the **Hyperlane Warp Route** with the following command:

    hyperlane warp init
    

The Hyperlane CLI will automatically detect your wallet address from the private key you exported. You’ll be prompted to confirm the public key, type `Y` in the prompt box to confirm.

![](https://storage.googleapis.com/papyrus_images/fbb76101d1072527c6e5da659b2691f347a496a9a1683f77a606ece82a7052e3.png)

Next, you’ll be prompted in the terminal to choose between **mainnet** and **testnet**. We will be working with mainnet chains for this tutorial walkthrough; select **mainnet** and then press enter.

![](https://storage.googleapis.com/papyrus_images/f99ef492c7b967197534b2b927bbf0b5315f5aa0f1177b2a3993a1a8d0e03d3b.png)

Next you will see a long list of chains available to choose from. I want to bridge the token **Coinbase Wrapped BTC (cbBTC)** with the contract address _0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf_ which is currently live on **Base** to **BSC**. Navigate to **Base** and **BSC**, use the spacebar button to select both chains, then hit enter.

**Configuring the Warp Route**
==============================

The next step is configuring the warp route for the **Coinbase Wrapped BTC** token. There are few options available to configure a warp route:

*   **Synthetic**: Used when creating a new ERC-20 token on a new chain.
    
*   **Collateral**: Used for ERC-20 tokens that have been deployed on a particular chain.
    

Since the **Coinbase Wrapped BTC** token is live on Base, choose the c**ollateral** option.

![](https://storage.googleapis.com/papyrus_images/f7c14301750b31fb1caed8cdb0988bf0d47d5d61e99a66db4349bd618a884751.png)

The Hyperlane CLI will automatically detect the mailbox address for each chain from its registry. Confirm the detected mailbox address by typing `Y` when prompted.

![](https://storage.googleapis.com/papyrus_images/aa2320f8e8c5408b1014cc581cba8a524460730437aafb6a2578294530893661.png)

Next, you will be prompted to enter the contract address of the token:

This is the contract address for the **Coinbase Wrapped BTC** token on **Base**. You can buy some **Coinbase Wrapped BTC** on **Aerodrome** or **Uniswap** . You will need the **Coinbase Wrapped BTC** token to complete the Warp Route bridging.

Next step is configuring the warp route for the **Coinbase Wrapped BTC** token on **BSC**.

In this scenario, choose the **synthetic** option since the **Coinbase Wrapped BTC** token is not live on **BSC**. It’s essentially a new token being deployed and a new bridge route being configured by **Hyperlane**.

![](https://storage.googleapis.com/papyrus_images/4338646ea7d198c620ab1a702bca2bbabcabd702d1a69d5ea46e2d6ff2902349.png)

Again, confirm the mailbox address on **BSC** when prompted.

![](https://storage.googleapis.com/papyrus_images/5d8b5b2b0791e2e8f32c7ae650a503c397575a5749ed53b553d2e6a8463a46ee.png)

Our warp route configuration has been defined; the next step is to deploy the contract.

![](https://storage.googleapis.com/papyrus_images/2b97c978582e028ea8fd9f6e3165a652caedd01177a2f366ea51980971fcf72b.png)

**Deploying the Warp Route**
============================

With the warp route configured, you can now deploy the warp route contract by running the command:

You’ll be prompted with an option to use an API key to verify the contract. For this tutorial, type `N`, as it's not necessary.

![](https://storage.googleapis.com/papyrus_images/5eed34f10485c04cf948b2ed92d2263afddbf58cae3b0eb5d2bb78429e0d897b.png)

The CLI will then create a **Warp Route Deployment Plan** and it will prompt you to confirm if it’s correct. Type `Y` to proceed.

![](https://storage.googleapis.com/papyrus_images/d36fa1f783b5bf808dbbf37c3ff376e89cb0754cd36f03725ab9e15b434cc375.png)

If you get a warning in your terminal about “Deployment may fail due to insufficient balance(s)”, ensure you have at least $2 worth of ETH on **Base** and 2$ worth of BNB on **BSC**, then type `Y` to proceed.

![](https://storage.googleapis.com/papyrus_images/b3cc6e42c65326a92adf7d196b557b5fe624225a4be182c11e49acc5c3b38d54.png)

Once the deployment is complete, you’ll see a confirmation in your terminal. The output will include your warp route configuration, which should look something like this:

    tokens:
          - chainName: base
            standard: EvmHypCollateral
            decimals: 8
            symbol: cbBTC
            name: Coinbase Wrapped BTC
            addressOrDenom: "0x773137689dCf05d8d610bC6a90b815bAC1D701C8"
            collateralAddressOrDenom: "0xcbB7C0000aB88B473b1f5aFd9ef808440eed33Bf"
            connections:
              - token: ethereum|bsc|0xf86Ba45160ded3E5B9B9b051Fb0B8FC6621430d1
          - chainName: bsc
            standard: EvmHypSynthetic
            decimals: 8
            symbol: cbBTC
            name: Coinbase Wrapped BTC
            addressOrDenom: "0xf86Ba45160ded3E5B9B9b051Fb0B8FC6621430d1"
            connections:
              - token: ethereum|base|0x773137689dCf05d8d610bC6a90b815bAC1D701C8
    

The next thing you want to do is copy the warp route config output, and we are ready to bridge our **Coinbase Wrapped BTC**  token to **BSC.**

**Bridging the Coinbase Wrapped BTC Token**
===========================================

Once the contract is deployed, you can now bridge the **Coinbase Wrapped BTC** token between the **Base** and **BSC** chains. To do this:

1.  Go to the [Hyperlane Superbridge app](https://hyperlane.superbridge.app/).
    
2.  Click on the **Settings** icon.
    
3.  Navigate to **Warp Routes** and click **Customize**.
    
4.  Paste the warp route config output you copied into the box and hit **Save**.
    

![](https://storage.googleapis.com/papyrus_images/f4d589a5b47fbb9bfeed89b1071dca2308e735937a2072737c75f4a7f4cabf7f.png)

*   Connect your wallet and choose the **Base** and **BSC** chains.
    
*   Select the amount of **Coinbase Wrapped BTC** tokens you want to bridge, and initiate the bridging process.
    

![](https://storage.googleapis.com/papyrus_images/58a254cd270de0fba2188e506c9e7cc4af5167c071e25f66f13408c8d284b418.png)

And the result

![](https://storage.googleapis.com/papyrus_images/cb4d9f68ad5abf86be71d242d2e6dd958ce514252c3b843a9754d2827c66eaa3.png)

And you can also bridge **Coinbase Wrapped BTC** tokens from **BSC** to **Base**

![](https://storage.googleapis.com/papyrus_images/d7f15c19c74e25821a77706d52f6255939602134516a52faf493c9b64ca1fb04.png)

And result

![](https://storage.googleapis.com/papyrus_images/10482740931a4d4bdc611696e5332c37ef6ceaf5f174532d0a19c7d78540cd89.png)

You can check if your bridging was successful on the hyperlane explorer:

[https://explorer.hyperlane.xyz/?](https://explorer.hyperlane.xyz/?)

And finally, don't forget to enter the command below into the terminal to delete the private key for wallet security.

    unset HYP_KEY
    

**Conclusion**
==============

**Hyperlane** provides a seamless and secure way to bridge tokens between blockchains. In this guide, we walk through deploying a **Warp Route** to bridge the **Coinbase Wrapped BTC** token from **Base** to **BSC** and vice versa.

Happy to contribute a little effort to build Base.

Good luck!!!

---

*Originally published on [SouthKay](https://paragraph.com/@hoangsk1807/hyperlane-warp-route-token-bridge-guide)*
