Use this guide to add the WBTX testnet, request gas and wrapped test BTX, try WBTX in DeFi-style flows, generate a BTX deposit memo, and request a WBTX redeem.
All funds on this testnet are resettable and have no mainnet value. Do not send real BTX or mainnet ETH to these addresses.
Once the faucet has funded a wallet, WBTX can be used like a normal 18-decimal ERC-20 on chain 31337. That means test apps can call balanceOf, transfer, approve, and transferFrom, then compose WBTX into DEX, lending, vault, treasury, and payment flows.
Payments and treasuries: send WBTX between wallets or contracts, track balances, and redeem through the bridge when you want to test the BTX exit path.
DEX markets: pair WBTX with a second test asset, seed liquidity, perform swaps, and observe how thin liquidity affects price and slippage.
Lending and vaults: prototype collateral deposits, liquidation triggers, reserve checks, and oracle handling without using mainnet assets.
Route testing: use WBTX as one hop in a test swap route, for example test USDC → WBTX → test WETH, once a router is deployed on this chain.
DeFi testing here is for software behavior only. Testnet pool prices, TWAPs, oracle outputs, rewards, and liquidity depth are synthetic or thin and should not be treated as market value.
5. Uniswap-Style Swaps and Liquidity
WBTX can work with Uniswap-style contracts because it is an ERC-20. The missing piece on this testnet is a canonical Uniswap deployment: the public Uniswap app and mainnet deployment addresses should not be assumed to work on chain 31337. Use a dedicated test deployment, scripts, or a custom integration.
Deploy or select a DEX stack: deploy Uniswap v2, v3, or v4-compatible contracts to chain 31337. For v3, confirm the factory, router, WETH wrapper, position manager, and quoter addresses for this chain before using them.
Create test assets: use WBTX plus a second test ERC-20 such as mock USDC, mock WETH, or a project token. Fund the same wallet with both tokens and gas.
Create the pool: for v2-style pools, seed the pair through router addLiquidity. For v3-style pools, initialize the WBTX/test asset pool at a starting price and mint a position with NonfungiblePositionManager. For v4-style pools, initialize a PoolKey through PoolManager / PositionManager.
Approve exact amounts: approve WBTX and the paired token to the router or position manager. Prefer exact test amounts over unlimited approvals.
Swap with guardrails: use exact-input or exact-output swaps with a deadline and conservative slippage. In thin pools, small trades can move price sharply.
Watch bridge state: use https://api.btx.supply/api/v1/reserve, /bridge, and /oracle alongside pool data. AMM price is not proof that WBTX is backed or redeemable.
Call factory.getPair(WBTX, tokenB). If it returns zero, create the pair through the factory/router flow.
Approve the router for exact WBTX and tokenB amounts.
Seed liquidity with addLiquidity(WBTX, tokenB, amountWbtxDesired, amountBDesired, amountWbtxMin, amountBMin, recipient, deadline). The first LP sets the initial price, so choose the ratio deliberately.
Swap with swapExactTokensForTokens(amountIn, amountOutMin, path, recipient, deadline). Example paths are [WBTX, mockUSDC] or [mockUSDC, WBTX, tokenC].
Remove liquidity by approving the LP token to the router and calling removeLiquidity.
V3-Style Recipe
Deploy or locate the v3 factory, swap router or Universal Router, NonfungiblePositionManager, quoter, and WETH wrapper for chain 31337.
Sort WBTX and the paired token into token0/token1, choose a fee tier such as 500, 3000, or 10000, and initialize the pool with sqrtPriceX96.
Approve both tokens to NonfungiblePositionManager, then mint with MintParams: token pair, fee, tick range, desired token amounts, minimum token amounts, recipient, and deadline.
Swap with exactInputSingle or exactOutputSingle. Never leave amountOutMinimum or token minimums at zero in production-like tests.
For route tests, encode v3 multi-hop paths as tokenIn, fee, intermediateToken, fee, tokenOut.
V4-Style Notes
v4 pools live under a singleton PoolManager and are identified by a PoolKey: sorted currencies, fee, tick spacing, and hook address.
Create and initialize through PoolManager/PositionManager, then add liquidity through position-manager actions such as mint position and settle pair.
Swaps commonly route through Universal Router v4 commands. Hooks can change pool behavior, so document every hook used in a WBTX pool.
Keep BTX bridge math out of pool math. Pools see WBTX as an 18-decimal ERC-20. BTX L1 has 8 decimals, and the bridge handles the 1 satoshi = 10,000,000,000 WBTX-unit conversion.
6. Test BTX to WBTX Deposit Memo Generation
Paste the Ethereum recipient that should receive WBTX.
Enter the BTX amount using 8-decimal BTX units.
Copy the generated OP_RETURN memo. The memo binds recipient, amount, and chain ID, so regenerate it if any value changes.
The memo binds recipient, amount, and chain ID, so regenerate it if any value changes.
For public testers today, the faucet is the fastest way to get WBTX. The memo view is included so integrators can inspect the exact deposit payload before broader BTX deposit testing opens.
7. Request WBTX to BTX Redeem
Use a funded wallet with WBTX and gas on chain 31337.
Enter the WBTX amount to redeem.
Leave destination type as P2MR scriptPubKey unless a tester guide gives you a different destination.
Click Approve & Request Redeem. Your wallet signs two transactions: WBTX approval, then bridge redeem request.
Redeem requests become pending on the bridge immediately and are visible through the dashboard and API.
8. Verify From the API or RPC
Use the reserve endpoint to confirm WBTX backing and pending bridge state.
Use the bridge endpoint to check pending withdrawals and unresolved claims.
Use the RPC endpoint for raw Ethereum JSON-RPC checks against the same testnet.
Testnet funds: public testnet BTX/WBTX has no monetary value, may be reset, and may be lost without recovery. Do not use production private keys or wallets holding real assets.
Approvals: verify chain ID, RPC URL, token address, and spender before approving. Prefer exact-amount approvals and revoke unused allowances.
Liquidity pools: LP positions are not safe deposits. They can lose value from price movement, thin liquidity, contract bugs, pauses, hooks, and bridge risk controls.
Oracles and prices: testnet TWAPs, depth, and oracle outputs may be stale, synthetic, or easy to manipulate. Do not rely on them as real market prices.
MEV, slippage, and impermanent loss: public mempools and thin pools can produce bad execution, failed swaps, and large price movement. Use small amounts and conservative slippage.
Mainnet differences: future contracts, addresses, fees, liquidity, oracle sources, pause controls, and exit mechanics may differ. Testnet participation does not imply rewards, allocations, or mainnet availability.