Integrate › Integration checklist
Everything an integrator needs to add Bitcoin Swap, grouped by who you are. Each item links to the page or file with the details; every value here is read from the chain or the public API, so you can check it.
Wallets
- Network: chain ID
482120(0x75b48), RPChttps://rpc.btcw.tech, WebSocketwss://rpc.btcw.tech/ws, explorerhttps://explorer.btcw.tech, native coin BTCw with 18 decimals. Ready-made parameters: chain.json (ethereum-lists format) andADD_CHAIN_PARAMSin the SDK. - Gas: base fee is always 0;
eth_gasPriceandeth_maxPriorityFeePerGasboth return1000000wei. A transfer costs about 0.00000002 BTCw. See Network. - Tokens and logos: tokenlist.json (Uniswap Token Lists format, 325 ERC-20s with
logoURI, CORS open, regenerated every 6 hours). Native BTCw is not in it — usehttps://btcw.tech/logo.png. - Prices:
/api/price(BTCw),/api/v2/market(every asset, PriceHub oracle) — see Read prices. Prices are also readable on-chain in the Chainlink AggregatorV3 format. - Swaps in the wallet:
/api/v2/swap/quotereturns a ready-to-sign transaction for any pair of the 323 assets — Swaps for wallets. - Balances in one call: a JSON-RPC batch of
balanceOfcalls counts as one request; Multicall3 is at0xA0093EA76633A983364cb2582959870eaffDdea0. - Finality: QBFT finalizes each block when it is produced (5-second blocks) — one confirmation is final.
Exchanges and aggregators
- Registry: contracts.json — every contract with its address and ABI (CORS open), including the swap venues (ClpPools, UsdClpPools, OracleAMM, OracleTokenAMM, Uniswap V2) and SwapRouter.
- Quote and route: use the quote API, or call the pools directly — Swap through contracts; pricing rules in Swap mechanics.
- Decimals: every price-tracker token, USDw, WBTCw and stBTCw use 18 decimals; USDC.e uses 6. Match assets by chain ID + address, never by symbol.
- Deposits and withdrawals: one confirmation is final; run your own node (Run a node) rather than depending on the public RPC limits.
- Who controls what: read the Trust model before listing an asset — it lists each contract's owner powers.
- Limits: rate limits and error codes in Limits & errors.
Indexers and data sites
| Contract | Address | From block | Event (topic0) |
|---|---|---|---|
| ClpPools (BTCw hub) | 0x557aDc3d900c471F3907cdDA3a9F5377d6F9E7e0 | 92983 | Swap(address indexed trader, address indexed token, bool btcwIn, uint256 amountIn, uint256 amountOut, uint256 fee, address to)0x3d81dab5fd0adae94dd4575fa04ee278503eb7390a0611793e57cfc76a19b97d |
| UsdClpPools (USDw hub) | 0x78aCB6Ec7aF4cc83BF9E698706de79c08D61C13f | 180828 | Swap(address indexed trader, address indexed token, bool usdIn, uint256 amountIn, uint256 amountOut, uint256 fee, address to)0x3d81dab5fd0adae94dd4575fa04ee278503eb7390a0611793e57cfc76a19b97d (same signature types) |
| OracleAMM (BTCw ⇄ USDw) | 0xd953d53414a81eb6AC5a4edE73d13992181aF51E | 91520 | Swap(address indexed trader, bool btcwIn, uint256 amountIn, uint256 amountOut, uint256 priceWad)0x176648f1f11cda284c124490086be42a926ddf0ae887ebe7b1d6b337d8942756 |
| SwapRouter | 0x397E607eA05eF7909f84540077F3a716778031E4 | — | Routed(address indexed sender, address indexed tokenIn, address indexed tokenOut, uint256 amountIn, uint256 amountOut, address to, uint256 hops)0x4def0ac4d95c951d0c151c5d1f830a4625c790c4565982a613f25e2bc298fca4 |
| WBTCw / USDC.e (Uniswap V2 pair) | 0xED2967B738d98B3e4D3e6780A08Dc161A55EF304 | 179882 | Uniswap V2 Swap, Sync, Mint, Burn |
| PriceHub (oracle) | 0xE87FDdCC0b668564a20B23F3bE1EE108C805ecb4 | 92977 | AnswerUpdated(address indexed asset, int256 answer, uint256 roundId, uint256 updatedAt)0x8c0ec3bb658fc9145f07a529744298f972f32ca3f91c868abefc2e78abbf07a8 |
- A swap that goes through SwapRouter emits one pool
Swapper leg plus oneRouted; count theRoutedevent once if you report trades. - User vs keeper: the Treasury keeper wallets are listed in
treasury_addressesof/api/v2/stats./api/v2/marketreports user and keeper trades and volume per asset — see REST API. - Explorer API: Blockscout
/api/v2and the Etherscan-compatible/apiatexplorer.btcw.tech(CORS open). - Pool and market data:
/api/v2/pools,/api/v2/usd-pools,/api/v2/market,/api/v2/history,/api/v2/swaps.
Bridges
- Hyperlane warp routes between Arbitrum One and chain 482120 (Hyperlane domain = chain ID 482120): USDC and USD₮0 ⇄ USDw (open to every wallet), and the sealed WBTC ⇄ BTCw and USDC ⇄ USDC.e routes (allowlisted wallets). Addresses, ISM and limits in Bridge; how a user moves funds in Bridge funds.
- Locked collateral on Arbitrum can be checked against supply on 482120 at any time on Proof of reserve.
Standard infrastructure
Permit2, EntryPoint v0.7 and Safe 1.3.0 are at their usual addresses, deployed through the standard CREATE2 deployer — see
Addresses and the contracts.canonical section of contracts.json.
Contact
Integration questions and listing requests: @btcwtechHQ. Security reports: see Security.