Get started › Network
Parameters
| Network name | Bitcoin Swap |
|---|---|
| Chain ID | 482120 (0x75b48) — also the chain's Hyperlane domain |
| RPC (HTTPS) | https://rpc.btcw.tech — JSON-RPC over POST, batch requests supported |
| RPC (WebSocket) | wss://rpc.btcw.tech/ws — supports eth_subscribe (newHeads, logs) |
| Explorer | explorer.btcw.tech — Blockscout, with the /api/v2 API |
| Native coin | BTCw, 18 decimals |
| Client · consensus | Hyperledger Besu · QBFT |
| Block time | 5 seconds |
| Finality | QBFT finalizes as soon as a block is produced — no reorgs, no need to wait for extra confirmations |
| Block gas limit | 30,000,000 |
Gas fees
The chain has EIP-1559 enabled, but baseFeePerGas is always 0. Nodes only accept transactions with a gas price of at least 1000000 wei (0.001 gwei).
eth_gasPrice returns exactly this value; eth_maxPriorityFeePerGas returns 0 — wallets that compute EIP-1559 fees themselves should set
both maxFeePerGas and maxPriorityFeePerGas to at least 1000000.
Example: a swap uses about 150,000 gas × 0.001 gwei ≈ 0.00000015 BTCw.
Add the network to a wallet
EIP-3085 — the same parameters the SDK exports as ADD_CHAIN_PARAMS:
await window.ethereum.request({
method: "wallet_addEthereumChain",
params: [{
chainId: "0x75b48",
chainName: "Bitcoin Swap",
nativeCurrency: { name: "Bitcoin Swap", symbol: "BTCw", decimals: 18 },
rpcUrls: ["https://rpc.btcw.tech"],
blockExplorerUrls: ["https://explorer.btcw.tech"],
iconUrls: ["https://btcw.tech/logo.svg"],
}],
});
ethereum-lists format: /chain.json.
Add the USDw token
await window.ethereum.request({
method: "wallet_watchAsset",
params: { type: "ERC20", options: {
address: "0x3b5BD179CA6Aab4DAF0f842829776843ABe6e727", symbol: "USDw", decimals: 18,
image: "https://btcw.tech/usdw.png" } },
});
Addresses and logos of the 200 price-tracker tokens are in /api/v2/swap/assets (the logoURI field).
Arbitrum One
The other end of the bridge: chain ID 42161 (also its Hyperlane domain), public RPC https://arb1.arbitrum.io/rpc,
explorer arbiscan.io. See Bridge.