Help & FAQ

Everything you need to bridge a token

Warp Foundry walks you through creating a Hyperlane warp route for your token, signing each on-chain step with your own wallets. This page explains what every step and button actually does, and how to read the errors you might hit along the way.

The basics

What does this tool actually create?

A warp route is a pair of linked contracts — one on each chain — that let a token move between them. One side locks (or mints) the token; the other side does the opposite. Nothing about the token's economics changes: the total supply in circulation across both chains stays the same, it's just able to move.

Warp Foundry deploys only your token's own contracts. The shared security (a 3-of-4 validator set) and gas infrastructure are already live in production — nothing extra gets created or configured by you.

The wizard, step by step

Step 01 — where does your token already live?

This decides the direction of the route:

  • Terra Classic — your token already exists there (a native denom or an existing CW20). It gets locked on Terra Classic, and a synthetic copy is minted on the chain(s) you pick in step 03.
  • BSC / Ethereum — your token already exists there (the chain's own gas coin, or an existing ERC20). It gets locked on that chain, and a synthetic cw20 is minted on Terra Classic instead. The destination is fixed — there's no step 03 in this direction.

Picking the wrong side doesn't break anything — you can only lock a token that really lives on the chain you pick, so if you don't have it there, the next step (address detection) will tell you.

The wizard, step by step

Step 02 — native coin or existing contract?

On an EVM origin (BSC/Ethereum) you choose between:

  • Native coin — the chain's own gas token (ETH, BNB). Nothing to type; there's no contract address for a native coin.
  • Existing token contract — paste the ERC20 address and click Detect to auto-fill its name, symbol and decimals.

On Terra Classic, only an existing CW20 contract can be the origin — paste its address and click Detect the same way.

The wizard, step by step

Step 04 — owner wallets

The owner wallet is the one that ends up controlling each side's contract — it's the only wallet allowed to later change security settings or the router links (the enroll steps in the checklist, below). It does not have to be the wallet paying for gas on every step — deploy/initialize/create accept any funded wallet, only the two enroll steps require the owner specifically.

Double-check these addresses before continuing — they're only changeable later with the "Switch account" / "Make this the owner" controls explained below, and changing an already-deployed contract's owner means abandoning it and deploying a fresh one.

Wallets

Which wallets do I need?

Chain sideWalletSigns
Terra ClassicKeplrcreate/instantiate + enroll steps on the Terra Classic side
BSC / EthereumMetaMaskdeploy/initialize + enroll steps on the EVM side
Solana (destination only)Phantomthe in-browser program deploy

You only need the wallets for the chains actually involved in your route — a BSC-origin route to Terra Classic never touches Phantom, for example.

After you create the order

The deployment checklist — what each step does

Every route walks through the same shape of steps, just mirrored depending on direction:

  • Deploy — creates your token's own router contract on one chain (locks the real token, or is ready to mint the synthetic). Any funded wallet can sign.
  • Initialize — wires the production security module and fee hook onto that router, and records the owner. Any funded wallet can sign.
  • Create the synthetic token (Terra Classic side only) — instantiates the cw20 that gets minted/burned on transfers. Any funded wallet can sign.
  • Enroll (both directions) — tells each router where its counterpart lives on the other chain. This is onlyOwner — it must be signed by the exact owner wallet from step 04.
  • Verify — reads both sides on-chain to confirm they point at each other, then generates the registry YAML for listing the route.

Steps are resumable — closing the page or hitting an error never loses progress. Click Retry and it picks up where it left off (and safely recovers an already-sent transaction instead of sending a duplicate).

Common confusion

"Switch account" and "Make this the owner"

+What does 'Switch account' do?

Re-opens your wallet extension's connection prompt so you can pick a different account without leaving the page. Use it when the wallet connected in the checklist isn't the one you want to sign with — for example, your owner wallet has no gas but another wallet of yours does.

+What does 'Make this the owner' do, and when does it appear?

It only shows up once a wallet is connected that's different from the owner recorded on the order. Clicking it updates the order to use the connected wallet as owner going forward.

If the contract on that side was already created, this resets that step and the ones after it — the old contract is abandoned (its owner never changes on its own) and a fresh one gets deployed under the new owner the next time you run that step.

+I clicked it by mistake / changed my mind — can I undo it?

On the Terra Classic side, yes: an Undo button appears next to the other two right after the change, as long as you haven't re-run the reset step yet. Once you do re-run it (a real new contract now exists), undo is no longer offered — at that point there are genuinely two contracts and undoing would mean silently discarding the new one.

Money

Costs: service fee vs. network gas

These are two separate things. The service fee (shown on the first page, paid in LUNC, or waived entirely by a coupon) is what Warp Foundry itself charges. It never covers network gas — the actual on-chain transaction costs on Terra Classic (~60 LUNC total across its steps) and whichever other chain you're using (a small amount of that chain's own gas token). Gas always comes out of whichever wallet signs that step, paid directly to the network — Warp Foundry never touches it.

Money

Got a coupon code?

If the service fee shows a price (it's free during testing periods), a coupon code field appears right below it on the first page. Type your 5-character code and click Apply — a valid code waives the fee entirely for that order. Each code works exactly once.

Troubleshooting

Common errors

+“Not enough LUNC/ETH/BNB for gas on …”

The wallet that's about to sign doesn't have enough of that chain's gas token. This is a pre-flight check — nothing was sent. Fund that wallet, or use Switch account to sign with a different, funded one instead.

+“This step must be signed by the owner wallet …”

You're on an enroll step, which is onlyOwner on-chain. Either Switch account to the owner wallet shown, or use Make this the owner to make your currently-connected wallet the owner instead (see above for what that resets).

+“No cw20-base code id configured for …”

The Terra Classic side needs an already-uploaded cw20-base contract code to mint the synthetic from — this is a one-time, per-network setup an admin handles, not something tied to your specific token. If you see this, it means the network you're on hasn't had one uploaded yet — reach out on Telegram (below).

+“Route not found” when trying to send a transfer after everything shows done

Both enroll steps have to complete — one links chain A → chain B, the other links B → A independently. If only one side's enroll succeeded, transfers in the other direction will fail this way until the remaining enroll step is run.

+A step failed with a raw error I don't understand

Click Download log at the bottom of the checklist — it's a full, timestamped record of every attempt, including the underlying on-chain error text. Share it on Telegram (below) and we can tell you exactly what happened.

After deployment

My route is live — now what?

Once Verify finishes, your order status moves to in_review. The generated registry YAML is what gets submitted so your route can appear in the official bridge UI — from the order page you can submit that as a listing request directly.

Get help

Still stuck?

Message us on Telegram with your order link and, if a step failed, the downloaded log. Prefer to do everything by hand instead of using this tool? Every step here is open source and documented in the self-deploy documentation.

Prefer to do it yourself, for free?

This tool is a paid convenience — it is not required. Everything it does is open source, and you can create the same warp route by hand (installing the toolchain, running the scripts and opening the registry PR yourself) by following the official documentation:

📖 Terra Classic warp route — self-deploy documentation ↗