Docs

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 key

Why 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.

Bifrost RPC Endpoints
HTTPS
WSS
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

ParameterBifrost (Polkadot Mainnet)Bifrost (Kusama Canary)
Relay ChainPolkadotKusama
Parachain ID20302001
Genesis Hash0x262e1b2ad728475fd6fe88e62d34c200abe6fd693931ddad144059b1eb884e5b0x9f28c6a68e0fc9646eff64935684f6eeeece527e37bbe1f213d22caa1d9d6bed
Runtime (2025-10-03)specVersion 21001, transactionVersion 1specVersion 19000, transactionVersion 1
Unit SymbolBNCBNC
Decimals1212
SS58 Prefix66
Explorerbifrost.subscan.iobifrost-kusama.subscan.io
Average Block Time~6 seconds~6 seconds

Additional Details

ParameterValueDetails
Collator Rotation>16 active authorsRefTime utilization stays under 0.5% per block
Runtime PalletsHyperbridge, FlexibleFee, Farming, and IsmpCross-ecosystem liquidity orchestration

Common Integration Patterns

Real-Time Block Streaming

TypeScript
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

Bash
# 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

TypeScript
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 (Polkadot 21001, Kusama 19000 as of 2025-10-03) to avoid repeated handshakes.
  • Use state_getKeysPaged with sized pages (<1024 keys) when scanning liquidity pools or reward ledgers.
  • Pin to finalized heads for settlement-critical reads; leverage chain_getFinalizedHead before fetching block data.
  • Implement jittered reconnect backoff (250 ms → 8 s) to respect Dwellir rate limiting during failover events.

Troubleshooting

SymptomLikely CauseResolution
1010: Invalid Transaction when submitting vToken extrinsicsRuntime upgrade bumped specVersion/transactionVersionRefresh metadata, rebuild the payload, and resubmit with the updated version info
Invalid SS58 address errorsUsing Polkadot prefix (0) for Bifrost accountsRe-derive addresses with SS58 prefix 6 before signing or decoding
TypeError: Cannot decode storageMissing custom pallets (Hyperbridge, FlexibleFee) in type registryExtend your type bundle with the latest Bifrost runtime metadata
Persistent WebSocket disconnectsIdle connection without keep-alivesSend periodic heartbeats (e.g., rpc_methods) or enable WsProvider autoConnect
Authoring not allowed for account on collator nodesRotate keys not submitted after upgradeCall author_rotateKeys and parachainStaking.setKeys on the canary network, then on mainnet

Smoke Tests

Run these checks before pushing to production:

  1. 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 isSyncing is false and peer count stays above 8.

  2. 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).

  3. 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…TEZ shows 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 6 for Bifrost accounts.
  • Metadata: Refresh runtime metadata whenever specVersion changes (currently 21001 on Polkadot, 19000 on Kusama). Update custom pallets (Hyperbridge, FlexibleFee, SALP) in your type registry.
  • Fee estimation: Run payment_queryInfo for vToken transfers; Bifrost’s flexible-fee pallet introduces dynamic surcharge multipliers.
  • Pallet coverage: Check rpc_methods after upgrades to discover new bifrost_* runtime APIs (e.g., omnipool analytics, Hyperbridge routing).

Resources & Tools

Plan your integration, mint liquidity-backed vTokens, and rely on Dwellir’s globally distributed RPC edge to keep your Bifrost workloads online.