Bifrost Liquid Staking Parachain RPC Guide
Production-ready JSON-RPC guide for Bifrost, Polkadot's native liquid staking parachain. Learn verified endpoints, network specs, integration patterns, and troubleshooting tips for BNC builders.
Bifrost RPC
With Dwellir, you get access to our global Bifrost network which always routes your API requests to the nearest available location, ensuring low latency and the fastest speeds.
Get your API keyWhy Build on Bifrost?
Bifrost is Polkadot's liquid staking hub, issuing omni-chain vTokens that unlock staking liquidity while keeping rewards flowing. Builders target Bifrost because it delivers:
Omni-Chain Liquidity Routing
- Staking Liquidity Protocol (SLP) mints yield-bearing vTokens (vDOT, vKSM, vETH, vFIL) that stay composable across parachains and EVM networks.
- Slot Auction Liquidity Protocol (SALP) releases DOT/KSM crowdloan positions into tradable derivatives, letting users support auctions without sacrificing liquidity.
- Liquid staking primitives integrate with major DeFi venues (Pendle, Loop Stake, Talisman, etc.) to optimize leverage and hedging strategies.
Protocol-Neutral Architecture
- Dedicated pallets for cross-chain execution (ISMP, CrossInOut, Hyperbridge) make it easy to bridge liquidity between Polkadot, Kusama, and external EVMs.
- Governance and fee-share pallets align collators, liquidity providers, and derivative users through on-chain revenue distribution.
- Runtime upgrades (v0.21.1 / specVersion 21001) focus on async backing, Hyperbridge routes, and tokenomics 2.0 for sustained reward flows.
Battle-Tested Operations
- Active collator set with ~6 s block time keeps derivatives in sync with relay-chain finality.
- Proven SALP campaigns unlock DOT crowdloans while maintaining reward accrual.
- Continuous grant support and ecosystem partnerships accelerate tooling and collateral adoption.
Quick Start with Bifrost
Connect to mainnet or the Kusama canary network in seconds using Dwellir-managed infrastructure.
curl -sS -X POST https://api-bifrost-polkadot.n.dwellir.com/<API_Keys_Are_Not_Made_for_Bots> \ -H 'Content-Type: application/json' \ -d '{"jsonrpc":"2.0","method":"chain_getBlockHash","params":[0],"id":1}'import { ApiPromise, WsProvider } from '@polkadot/api';const provider = new WsProvider('wss://api-bifrost-polkadot.n.dwellir.com/<API_Keys_Are_Not_Made_for_Bots>');const api = await ApiPromise.create({ provider });const hash = await api.rpc.chain.getBlockHash(0);console.log(hash.toHex());from substrateinterface import SubstrateInterfacesubstrate = SubstrateInterface(url='wss://api-bifrost-polkadot.n.dwellir.com/<API_Keys_Are_Not_Made_for_Bots>')block_hash = substrate.get_block_hash(block_id=0)print(block_hash)package mainimport ( "bytes" "fmt" "io" "net/http")func main() { url := "https://api-bifrost-polkadot.n.dwellir.com/<API_Keys_Are_Not_Made_for_Bots>" payload := []byte(`{"jsonrpc":"2.0","id":1,"method":"chain_getBlockHash","params":[0]}`) resp, err := http.Post(url, "application/json", bytes.NewBuffer(payload)) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body))}Canary Environment
The Kusama deployment (Para ID 2001) runs identical pallets ahead of Polkadot releases. Use it for SALP dry-runs, Hyperbridge testing, and upgrade rehearsals before promoting to mainnet Para ID 2030.
Installation & Setup
API Reference
Bifrost exposes the standard Substrate namespaces for node telemetry, finality, storage, extrinsic submission, and runtime metadata, alongside specialized pallets such as Hyperbridge, FlexibleFee, Farming, and Ismp.
Network Information
| Parameter | Bifrost (Polkadot Mainnet) | Bifrost (Kusama Canary) |
|---|---|---|
| Relay Chain | Polkadot | Kusama |
| Parachain ID | 2030 | 2001 |
| Genesis Hash | 0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b | 0x9f28c6a68e0fc9646eff64935684f6eeeece527e37bbe1f213d22caa1d9d6bed |
| Runtime (2025-10-03) | specVersion 21001, transactionVersion 1 | specVersion 19000, transactionVersion 1 |
| Unit Symbol | BNC | BNC |
| Decimals | 12 | 12 |
| SS58 Prefix | 6 | 6 |
| Explorer | bifrost.subscan.io | bifrost-kusama.subscan.io |
| Average Block Time | ~6 seconds | ~6 seconds |
Additional Details
| Parameter | Value | Details |
|---|---|---|
| Collator Rotation | >16 active authors | RefTime utilization stays under 0.5% per block |
| Runtime Pallets | Hyperbridge, FlexibleFee, Farming, and Ismp | Cross-ecosystem liquidity orchestration |
Common Integration Patterns
Real-Time Block Streaming
import { ApiPromise, WsProvider } from '@polkadot/api';
const provider = new WsProvider('wss://api-bifrost-polkadot.n.dwellir.com/YOUR_API_KEY');
const api = await ApiPromise.create({ provider });
api.rpc.chain.subscribeNewHeads((header) => {
console.log(`New Bifrost block #${header.number.toString()} (${header.hash.toHex()})`);
});Query Staking Liquidity Positions
# Read total issuance for vDOT (AssetRegistry + Tokens pallet)
curl https://api-bifrost-polkadot.n.dwellir.com/YOUR_API_KEY \
-H "Content-Type: application/json" \
-d '{
"jsonrpc":"2.0",
"id":42,
"method":"state_getStorage",
"params":[
"0x1bd4a27d04bdb9c3f135c3b09677626d26c37dd72647d0f2788a3341e9ac1371"
]
}'Estimate Fees for SALP Transfers
const api = await ApiPromise.create({ provider: new WsProvider('wss://api-bifrost-polkadot.n.dwellir.com/YOUR_API_KEY') });
const tx = api.tx.crossInOut.swapExactAssetsForAssets(
/* asset_in */ { Xcm: { V3: { parents: 1, interior: 'Here' } } },
/* asset_out */ { Token: 'BNC' },
/* amount */ 1_000_000_000_000n,
/* min_receive */ 990_000_000_000n
);
const info = await api.rpc.payment.queryInfo(tx.toHex());
console.log(`Partial fee: ${info.partialFee.toHuman()}`);
console.log(`Weight: ${info.weight.refTime.toString()} refTime`);Performance Best Practices
- Prefer WebSocket endpoints for subscriptions and long-lived queries; use HTTPS for bursty read-only workloads.
- Cache runtime metadata and type registries keyed by
specVersion(Polkadot21001, Kusama19000as of 2025-10-03) to avoid repeated handshakes. - Use
state_getKeysPagedwith sized pages (<1024 keys) when scanning liquidity pools or reward ledgers. - Pin to finalized heads for settlement-critical reads; leverage
chain_getFinalizedHeadbefore fetching block data. - Implement jittered reconnect backoff (250 ms → 8 s) to respect Dwellir rate limiting during failover events.
Troubleshooting
| Symptom | Likely Cause | Resolution |
|---|---|---|
1010: Invalid Transaction when submitting vToken extrinsics | Runtime upgrade bumped specVersion/transactionVersion | Refresh metadata, rebuild the payload, and resubmit with the updated version info |
Invalid SS58 address errors | Using Polkadot prefix (0) for Bifrost accounts | Re-derive addresses with SS58 prefix 6 before signing or decoding |
TypeError: Cannot decode storage | Missing custom pallets (Hyperbridge, FlexibleFee) in type registry | Extend your type bundle with the latest Bifrost runtime metadata |
| Persistent WebSocket disconnects | Idle connection without keep-alives | Send periodic heartbeats (e.g., rpc_methods) or enable WsProvider autoConnect |
Authoring not allowed for account on collator nodes | Rotate keys not submitted after upgrade | Call author_rotateKeys and parachainStaking.setKeys on the canary network, then on mainnet |
Smoke Tests
Run these checks before pushing to production:
-
Node health
Bash curl https://api-bifrost-polkadot.n.dwellir.com/YOUR_API_KEY \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"system_health","params":[]}'Verify
isSyncingisfalseand peer count stays above 8. -
Latest header increments
Bash curl https://api-bifrost-polkadot.n.dwellir.com/YOUR_API_KEY \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":2,"method":"chain_getHeader","params":[]}'Confirm block numbers advance ~every 6 seconds (e.g., #9,053,714 at 2025-10-03 07:42:18 UTC).
-
Account snapshot
Bash curl https://api-bifrost-polkadot.n.dwellir.com/YOUR_API_KEY \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":3,"method":"state_getStorage","params":["0x26aa394eea5630e07c48ae0c9558cef7f0d3720dbb6f7b3bb82b41c16dbf8d0887f21b38c918a1962fa4273d0f3c2c23244cc25f029aba80a72f1ac277957bc4"]}'Decode the SCALE payload to check BNC balances (collator
15mYsj6…TEZshows active staking reserves).
Migration Guide (Polkadot/Westend → Bifrost)
- Endpoints: Swap legacy Polkadot URLs for
https://api-bifrost-polkadot.n.dwellir.com/YOUR_API_KEY. Use the Kusama canary endpoint for staging. - Address encoding: Update wallets and services to SS58 prefix
6for Bifrost accounts. - Metadata: Refresh runtime metadata whenever
specVersionchanges (currently21001on Polkadot,19000on Kusama). Update custom pallets (Hyperbridge, FlexibleFee, SALP) in your type registry. - Fee estimation: Run
payment_queryInfofor vToken transfers; Bifrost’s flexible-fee pallet introduces dynamic surcharge multipliers. - Pallet coverage: Check
rpc_methodsafter upgrades to discover newbifrost_*runtime APIs (e.g., omnipool analytics, Hyperbridge routing).
Resources & Tools
- Bifrost network explorer: bifrost.subscan.io
- Bifrost GitHub releases and runtime notes: github.com/bifrost-io/bifrost/releases
- Dwellir Dashboard: dashboard.dwellir.com/register
- Community updates and integration stories: parachains.info/details/bifrost_finance_polkadot
Plan your integration, mint liquidity-backed vTokens, and rely on Dwellir’s globally distributed RPC edge to keep your Bifrost workloads online.
eth_coinbase
Check the legacy eth_coinbase compatibility method on Berachain. Public endpoints may return an address, `unimplemented`, or another unsupported-method response depending on the client.
chain_getBlock
Retrieve block data by hash on Bifrost. Essential for accessing block headers and extrinsics on Polkadot's largest liquid staking appchain with 60% DOT LST market share and $125M+ TVL.

