Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion packages/adapter-polkadot/src/__tests__/adapter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@ describe('Module Exports', () => {
// Verify Hub chains are present
const chainIds = polkadotChains.map((c) => c.id);
expect(chainIds).toContain(420420419); // polkadotHub
// expect(chainIds).toContain(420420418); // kusamaHub - Temporarily disabled, RPC DNS not resolving
expect(chainIds).toContain(420420418); // kusamaHub
expect(chainIds).toContain(420420417); // polkadotHubTestNet

// Verify Parachain chains are present
Expand Down
86 changes: 44 additions & 42 deletions packages/adapter-polkadot/src/__tests__/networks.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@ import { moonbaseAlpha, moonbeam, moonriver } from 'viem/chains';
import { describe, expect, it } from 'vitest';

import {
// NOTE: kusamaHub and kusamaHubMainnet temporarily disabled - RPC DNS not resolving
kusamaHub,
kusamaHubMainnet,
moonbaseAlphaTestnet,
moonbeamMainnet,
moonriverMainnet,
Expand Down Expand Up @@ -42,27 +43,30 @@ describe('Polkadot Hub Network Configurations', () => {
});
});

// NOTE: kusamaHubMainnet tests temporarily disabled - RPC DNS not resolving
// Re-enable once the Kusama Hub EVM RPC service is publicly available.
// describe('kusamaHubMainnet', () => {
// it('should have correct chain configuration', () => {
// expect(kusamaHubMainnet.id).toBe('kusama-hub');
// expect(kusamaHubMainnet.chainId).toBe(420420418);
// expect(kusamaHubMainnet.ecosystem).toBe('polkadot');
// expect(kusamaHubMainnet.executionType).toBe('evm');
// expect(kusamaHubMainnet.networkCategory).toBe('hub');
// expect(kusamaHubMainnet.relayChain).toBe('kusama');
// });
//
// it('should have correct native currency', () => {
// expect(kusamaHubMainnet.nativeCurrency.symbol).toBe('KSM');
// expect(kusamaHubMainnet.nativeCurrency.decimals).toBe(18);
// });
//
// it('should use Blockscout (Etherscan V1 API)', () => {
// expect(kusamaHubMainnet.supportsEtherscanV2).toBe(false);
// });
// });
describe('kusamaHubMainnet', () => {
it('should have correct chain configuration', () => {
expect(kusamaHubMainnet.id).toBe('kusama-hub');
expect(kusamaHubMainnet.chainId).toBe(420420418);
expect(kusamaHubMainnet.ecosystem).toBe('polkadot');
expect(kusamaHubMainnet.executionType).toBe('evm');
expect(kusamaHubMainnet.networkCategory).toBe('hub');
expect(kusamaHubMainnet.relayChain).toBe('kusama');
});

it('should have correct native currency', () => {
expect(kusamaHubMainnet.nativeCurrency.symbol).toBe('KSM');
expect(kusamaHubMainnet.nativeCurrency.decimals).toBe(18);
});

it('should use Blockscout (Etherscan V1 API)', () => {
expect(kusamaHubMainnet.supportsEtherscanV2).toBe(false);
});

it('should include viem chain definition', () => {
expect(kusamaHubMainnet.viemChain).toBeDefined();
expect(kusamaHubMainnet.viemChain).toBe(kusamaHub);
});
});

describe('polkadotHubTestnet', () => {
it('should have correct chain configuration', () => {
Expand Down Expand Up @@ -187,17 +191,15 @@ describe('Viem Chain Definitions', () => {
});
});

// NOTE: kusamaHub tests temporarily disabled - RPC DNS not resolving
// Re-enable once the Kusama Hub EVM RPC service is publicly available.
// describe('kusamaHub', () => {
// it('should have correct chain ID', () => {
// expect(kusamaHub.id).toBe(420420418);
// });
//
// it('should have correct native currency', () => {
// expect(kusamaHub.nativeCurrency.symbol).toBe('KSM');
// });
// });
describe('kusamaHub', () => {
it('should have correct chain ID', () => {
expect(kusamaHub.id).toBe(420420418);
});

it('should have correct native currency', () => {
expect(kusamaHub.nativeCurrency.symbol).toBe('KSM');
});
});

describe('polkadotHubTestNet', () => {
it('should have correct chain ID', () => {
Expand All @@ -212,17 +214,18 @@ describe('Viem Chain Definitions', () => {

describe('Network Collections', () => {
describe('polkadotMainnetNetworks', () => {
// NOTE: kusamaHubMainnet temporarily excluded - RPC DNS not resolving
it('should contain Hub networks before parachains (priority order)', () => {
expect(polkadotMainnetNetworks).toHaveLength(3); // Was 4, now 3 without Kusama Hub
expect(polkadotMainnetNetworks).toHaveLength(4);
// Hub networks first (P1)
expect(polkadotMainnetNetworks[0].id).toBe('polkadot-hub');
expect(polkadotMainnetNetworks[0].networkCategory).toBe('hub');
// Parachains after (P2) - now at index 1 and 2
expect(polkadotMainnetNetworks[1].id).toBe('polkadot-moonbeam-mainnet');
expect(polkadotMainnetNetworks[1].networkCategory).toBe('parachain');
expect(polkadotMainnetNetworks[2].id).toBe('polkadot-moonriver-mainnet');
expect(polkadotMainnetNetworks[1].id).toBe('kusama-hub');
expect(polkadotMainnetNetworks[1].networkCategory).toBe('hub');
// Parachains after (P2)
expect(polkadotMainnetNetworks[2].id).toBe('polkadot-moonbeam-mainnet');
expect(polkadotMainnetNetworks[2].networkCategory).toBe('parachain');
expect(polkadotMainnetNetworks[3].id).toBe('polkadot-moonriver-mainnet');
expect(polkadotMainnetNetworks[3].networkCategory).toBe('parachain');
});

it('should only contain mainnet networks', () => {
Expand Down Expand Up @@ -253,15 +256,14 @@ describe('Network Collections', () => {
});

describe('polkadotNetworks', () => {
// NOTE: kusamaHubMainnet temporarily excluded - RPC DNS not resolving
it('should contain all networks', () => {
expect(polkadotNetworks).toHaveLength(5); // Was 6, now 5 without Kusama Hub
expect(polkadotNetworks).toHaveLength(6);
});

it('should contain all mainnet and testnet networks', () => {
const ids = polkadotNetworks.map((n) => n.id);
expect(ids).toContain('polkadot-hub');
// expect(ids).toContain('kusama-hub'); // Temporarily disabled
expect(ids).toContain('kusama-hub');
expect(ids).toContain('polkadot-hub-testnet');
expect(ids).toContain('polkadot-moonbeam-mainnet');
expect(ids).toContain('polkadot-moonriver-mainnet');
Expand Down
6 changes: 2 additions & 4 deletions packages/adapter-polkadot/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,7 @@ export type {
export { polkadotNetworks, polkadotMainnetNetworks, polkadotTestnetNetworks } from './networks';

// Individual Hub networks (P1 - MVP)
// NOTE: kusamaHubMainnet temporarily disabled - RPC DNS not resolving
export { polkadotHubMainnet, polkadotHubTestnet } from './networks';
export { kusamaHubMainnet, polkadotHubMainnet, polkadotHubTestnet } from './networks';

// Individual Parachain networks (P2)
export { moonbeamMainnet, moonriverMainnet, moonbaseAlphaTestnet } from './networks';
Expand All @@ -43,8 +42,7 @@ export { moonbeamMainnet, moonriverMainnet, moonbaseAlphaTestnet } from './netwo
// ============================================================================

// Custom Hub chain definitions
// NOTE: kusamaHub temporarily disabled - RPC DNS not resolving
export { polkadotHub, polkadotHubTestNet } from './networks/chains';
export { kusamaHub, polkadotHub, polkadotHubTestNet } from './networks/chains';

// Parachain viem chains (re-exported from viem/chains)
export { moonbeam, moonriver, moonbaseAlpha } from './networks';
Expand Down
45 changes: 20 additions & 25 deletions packages/adapter-polkadot/src/networks/chains.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,32 +37,27 @@ export const polkadotHub = defineChain({
/**
* Kusama Hub mainnet chain definition.
* Chain ID: 420420418
*
* NOTE: Temporarily disabled - The official RPC endpoint DNS
* (kusama-asset-hub-eth-rpc.polkadot.io) does not resolve as of Jan 2026.
* Re-enable once the Kusama Hub EVM RPC service is publicly available.
* @see https://kusama.network/smart-contracts for updates
*/
// export const kusamaHub = defineChain({
// id: 420420418,
// name: 'Kusama Hub',
// nativeCurrency: {
// name: 'Kusama',
// symbol: 'KSM',
// decimals: 18,
// },
// rpcUrls: {
// default: {
// http: ['https://kusama-asset-hub-eth-rpc.polkadot.io'],
// },
// },
// blockExplorers: {
// default: {
// name: 'Blockscout',
// url: 'https://blockscout-kusama-asset-hub.parity-chains-scw.parity.io',
// },
// },
// });
export const kusamaHub = defineChain({
id: 420420418,
name: 'Kusama Hub',
nativeCurrency: {
name: 'Kusama',
symbol: 'KSM',
decimals: 18,
},
rpcUrls: {
default: {
http: ['https://kusama-asset-hub-eth-rpc.polkadot.io'],
},
},
blockExplorers: {
default: {
name: 'Blockscout',
url: 'https://blockscout-kusama-asset-hub.parity-chains-scw.parity.io',
},
},
});

/**
* Polkadot Hub TestNet chain definition.
Expand Down
6 changes: 2 additions & 4 deletions packages/adapter-polkadot/src/networks/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,13 @@ import { mainnetNetworks } from './mainnet';
import { testnetNetworks } from './testnet';

// Viem chain definitions (custom Hub chains)
// NOTE: kusamaHub temporarily disabled - RPC DNS not resolving
export { polkadotHub, polkadotHubTestNet } from './chains';
export { kusamaHub, polkadotHub, polkadotHubTestNet } from './chains';

// Viem chain definitions (from viem/chains)
export { moonbeam, moonriver, moonbaseAlpha } from 'viem/chains';

// Individual mainnet networks - Hub networks first, then parachains
// NOTE: kusamaHubMainnet temporarily disabled - RPC DNS not resolving
export { polkadotHubMainnet, moonbeamMainnet, moonriverMainnet } from './mainnet';
export { kusamaHubMainnet, polkadotHubMainnet, moonbeamMainnet, moonriverMainnet } from './mainnet';

// Individual testnet networks - Hub networks first, then parachains
export { polkadotHubTestnet, moonbaseAlphaTestnet } from './testnet';
Expand Down
59 changes: 26 additions & 33 deletions packages/adapter-polkadot/src/networks/mainnet.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { NetworkMoonbeam, NetworkPolkadot } from '@web3icons/react';
import { moonbeam, moonriver } from 'viem/chains';

import type { TypedPolkadotNetworkConfig } from '../types';
import { polkadotHub } from './chains';
import { kusamaHub, polkadotHub } from './chains';

/**
* Polkadot Hub mainnet configuration.
Expand Down Expand Up @@ -40,36 +40,31 @@ export const polkadotHubMainnet: TypedPolkadotNetworkConfig = {
/**
* Kusama Hub mainnet configuration.
* Chain ID: 420420418, Currency: KSM, Explorer: Blockscout
*
* NOTE: Temporarily disabled - The official RPC endpoint DNS
* (kusama-asset-hub-eth-rpc.polkadot.io) does not resolve as of Jan 2026.
* Re-enable once the Kusama Hub EVM RPC service is publicly available.
* @see https://kusama.network/smart-contracts for updates
*/
// export const kusamaHubMainnet: TypedPolkadotNetworkConfig = {
// id: 'kusama-hub',
// name: 'Kusama Hub',
// exportConstName: 'kusamaHubMainnet',
// ecosystem: 'polkadot',
// network: 'kusama-hub',
// type: 'mainnet',
// isTestnet: false,
// chainId: 420420418,
// rpcUrl: 'https://kusama-asset-hub-eth-rpc.polkadot.io',
// explorerUrl: 'https://blockscout-kusama-asset-hub.parity-chains-scw.parity.io',
// apiUrl: 'https://blockscout-kusama-asset-hub.parity-chains-scw.parity.io/api',
// supportsEtherscanV2: false,
// iconComponent: NetworkPolkadot, // Kusama uses Polkadot icon as fallback (canary network)
// nativeCurrency: {
// name: 'Kusama',
// symbol: 'KSM',
// decimals: 18,
// },
// viemChain: kusamaHub,
// executionType: 'evm',
// networkCategory: 'hub',
// relayChain: 'kusama',
// };
export const kusamaHubMainnet: TypedPolkadotNetworkConfig = {
id: 'kusama-hub',
name: 'Kusama Hub',
exportConstName: 'kusamaHubMainnet',
ecosystem: 'polkadot',
network: 'kusama-hub',
type: 'mainnet',
isTestnet: false,
chainId: 420420418,
rpcUrl: 'https://kusama-asset-hub-eth-rpc.polkadot.io',
explorerUrl: 'https://blockscout-kusama-asset-hub.parity-chains-scw.parity.io',
apiUrl: 'https://blockscout-kusama-asset-hub.parity-chains-scw.parity.io/api',
supportsEtherscanV2: false,
iconComponent: NetworkPolkadot, // Kusama uses Polkadot icon as fallback (canary network)
nativeCurrency: {
name: 'Kusama',
symbol: 'KSM',
decimals: 18,
},
viemChain: kusamaHub,
executionType: 'evm',
networkCategory: 'hub',
relayChain: 'kusama',
};

// ============================================================================
// PARACHAIN NETWORKS (P2)
Expand Down Expand Up @@ -138,12 +133,10 @@ export const moonriverMainnet: TypedPolkadotNetworkConfig = {
/**
* All mainnet network configurations in priority order.
* Hub networks first (P1), then parachains (P2).
*
* NOTE: kusamaHubMainnet temporarily excluded - RPC not available yet.
*/
export const mainnetNetworks = [
polkadotHubMainnet,
// kusamaHubMainnet, // Temporarily disabled - RPC DNS not resolving
kusamaHubMainnet,
moonbeamMainnet,
moonriverMainnet,
] as const;
7 changes: 3 additions & 4 deletions packages/adapter-polkadot/src/wallet/chains.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,18 @@
import type { Chain } from 'viem';

import { moonbaseAlpha, moonbeam, moonriver } from '../networks';
// NOTE: kusamaHub temporarily disabled - RPC DNS not resolving
import { polkadotHub, polkadotHubTestNet } from '../networks/chains';
import { kusamaHub, polkadotHub, polkadotHubTestNet } from '../networks/chains';

/**
* All Polkadot ecosystem chains for wagmi configuration.
*
* Includes Hub networks (P1) followed by parachain networks (P2):
* - Hub: Polkadot Hub, Polkadot Hub TestNet (Kusama Hub temporarily disabled)
* - Hub: Polkadot Hub, Kusama Hub, Polkadot Hub TestNet
* - Parachains: Moonbeam, Moonriver, Moonbase Alpha
*/
export const polkadotChains: readonly [Chain, ...Chain[]] = [
polkadotHub,
// kusamaHub, // Temporarily disabled - RPC DNS not resolving
kusamaHub,
polkadotHubTestNet,
moonbeam,
moonriver,
Expand Down
Loading