Docs

Bridge Hub - Polkadot Interoperability

Production-ready guide for integrating with Bridge Hub on Polkadot. Learn how to consume Dwellir RPC endpoints, work with bridge pallets, and operate trustless connections to Kusama, Ethereum (Snowbridge), and other ecosystems.

Bridge Hub RPC

With Dwellir, you get access to our global Bridge Hub 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 Bridge Hub?

Bridge Hub is Polkadot's system parachain dedicated to secure cross-network connectivity. It hosts bridge light clients, routing logic, and XCM tooling that allow ecosystems such as Kusama and Ethereum to interoperate without trusted third parties.

Trustless Finality

  • On-chain GRANDPA & BEEFY verification – Embedded light clients validate both Polkadot and bridged consensus, enabling permissionless relayers.
  • Optimistic root tracking – Finality proofs are persisted so downstream chains can verify historical headers.
  • Governed suspension modes – Bridge operators can pause lanes per pallet when anomalies are detected.

Multi-Chain Connectors

  • Polkadot Kusama routing – Bridge Westend/Bridge Bulletin pallets exchange relay-chain and parachain headers between ecosystems.
  • Snowbridge (Polkadot Ethereum) – Native integration of Snowbridge pallets for ERC-20 asset movement and message passing with Ethereum mainnet.
  • Message fan-out – Bridge Bulletin instances distribute payloads to partner chains without duplicating relayer work.

Specialized Pallets

  • pallet_bridge_grandpa – Stores bridged finality proofs and validator sets.
  • pallet_bridge_parachains – Syncs parachain headers required for XCM and HRMP messaging.
  • pallet_bridge_messages – Manages outbound/inbound lanes, delivery proofs, and fee accounting for cross-chain messages.
  • pallet_xcm_bridge_hub – Provides XCM helpers for routing assets and arbitrary instructions over bridge lanes.

Quick Start with Bridge Hub

Connect to Bridge Hub using Dwellir's low-latency infrastructure:

Bridge Hub RPC Endpoints
HTTPS
WSS
curl -sS -X POST https://api-bridge-hub-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-bridge-hub-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-bridge-hub-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-bridge-hub-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))}

Multi-network Access

Dwellir maintains Bridge Hub connectivity across Polkadot environments:

  • Polkadot Bridge Hub – Production-grade routing parachain for trustless bridging.
  • Westend Bridge Hub – Official Polkadot testnet used for validating upgrades before mainnet rollout.
  • Paseo Bridge Hub – Community-driven public testnet mirroring upcoming Polkadot features.
  • Kusama Bridge Hub – Economic canary network that ships features before Polkadot.

Installation & Setup

Network Information

ParameterValueDetails
Genesis Hash0xdcf691b5...Bridge Hub (Polkadot)
Block Time6 secondsAura + Relay finality
Native TokenDOTFees paid via Relay Chain
Parachain ID1002Polkadot system parachain

Network Details

ParameterValueDetails
Relay ChainPolkadot
Genesis Hash0xdcf691b5a3fbe24adc99ddc959c0561b973e329b1aef4c4b22e7bb2ddecb4464
ConsensusCollator-produced blocks with Polkadot relay GRANDPA finality
Bridged CounterpartsKusama (Westend), Bridge Bulletin, Ethereum (Snowbridge)
SecurityOn-chain slashable relayer incentives via pallet_bridge_relayers

API Reference

Bridge Hub exposes the standard Substrate namespaces alongside bridge-specific RPCs for GRANDPA, BEEFY, and Snowbridge messaging. Public bridge_* proof namespaces are not yet exposed on current nodes.

Bridge Protocols

Snowbridge (Ethereum Polkadot)

  • BEEFY light client verifies Ethereum finality proofs and publishes outbound commitments.
  • Inbound queue accepts ERC-20 and arbitrary message payloads via event proofs.
  • Outbound queue batches Polkadot-origin messages and anchors them on Ethereum.

Kusama Bridge (Westend Polkadot)

  • BridgeWestendGrandpa pallet syncs Westend finality headers and validator sets.
  • BridgeWestendParachains tracks parachain heads to validate XCM and HRMP messages.
  • BridgeWestendMessages exposes lane metrics, delivery confirmations, and fee accounting.

Bridge Bulletin

  • Polkadot Bulletin acts as a hub-and-spoke relay for partners requiring broadcast style delivery.
  • Permissionless lanes allow new chains to request connectivity without runtime upgrades.

XCM Integration

Bridge Hub exposes pallet_xcm_bridge_hub helpers for routing XCM messages over bridge lanes.

TypeScript
import { ApiPromise, WsProvider } from '@polkadot/api';
import { BN } from '@polkadot/util';

const api = await ApiPromise.create({
  provider: new WsProvider('wss://api-bridge-hub-polkadot.n.dwellir.com/YOUR_API_KEY')
});

const laneId = 0; // Snowbridge outbound lane
const beneficiary = {
  parents: 2,
  interior: { X1: { AccountId32: { network: 'Any', id: '0x...' } } }
};
const assets = {
  parents: 1,
  interior: 'Here'
};

const tx = api.tx.xcmBridgeHub.sendAssetsOverBridge(
  laneId,
  beneficiary,
  assets,
  new BN('100000000000'),
  'Unlimited'
);

await tx.signAndSend('//Alice', ({ status }) => {
  if (status.isInBlock) {
    console.log('Bridge XCM submitted in block', status.asInBlock.toString());
  }
});

Development Guides

1. Finality Relayer Checklist

  • Subscribe to bridgeWestendGrandpa.bestFinalized and bridgePolkadotBulletinGrandpa.bestFinalized storage changes.
  • Submit new proofs via BridgeGrandpa.submit_finality_proof extrinsics when headers advance by configured intervals.
  • Monitor pallet_bridge_relayers::Rewards to reconcile payments.

2. Message Relayer Operations

  • Watch bridgeWestendMessages.outboundLanes(laneId) for latest_generated_nonce vs latest_received_nonce.
  • When public proof RPCs are released, fetch Merkle lane proofs before submitting to bridged chains (currently relayers must build proofs off-chain).
  • Handle rejections by inspecting bridgeHub events: MessageDispatched and MessageRejected.

3. Observability & Alerting

  • Track BEEFY justifications with beefy_subscribeJustifications for Snowbridge health.
  • Use state_traceBlock on Bridge Hub to replay block execution when diagnosing bridge stalls.
  • Surface metrics such as MessageQueue.Processed events to confirm queue throughput.

Monitoring & Troubleshooting

ScenarioDiagnostic StepsResolution
Lane backpressureCompare latest_generated_nonce and latest_confirmed_nonce on outbound lanesIncrease relayer frequency or investigate failed proofs
Proof rejected on target chainRebuild proofs off-chain and verify against the target runtimeRe-submit with corrected payload or wait for next finalized header
BEEFY stalledCheck beefy_subscribeJustifications stream and collator logsRestart Snowbridge relayer or investigate validator availability

With Dwellir endpoints you get globally replicated infrastructure, WebSocket support for proof streaming, and archive access for rebuilding historical proofs.