system_chain - JSON-RPC Method
Description#
Returns the name of the chain the node is connected to. This JSON-RPC method is useful for identifying which Polkadot network (mainnet, testnet, or custom chain) the node is operating on.
Parameters#
This method does not require any parameters.
Returns#
| Field | Type | Description |
|---|---|---|
result | string | The name of the chain |
Request Example#
{
"jsonrpc": "2.0",
"method": "system_chain",
"params": [],
"id": 1
}
Response Example#
{
"jsonrpc": "2.0",
"result": "Polkadot",
"id": 1
}
Code Examples#
- cURL
- Python
- JavaScript
curl https://api-asset-hub-polkadot.n.dwellir.com/YOUR_API_KEY \
-X POST \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "system_chain",
"params": [],
"id": 1
}'
import requests
import json
def get_chain_name():
url = "https://api-asset-hub-polkadot.n.dwellir.com"
headers = {
"Content-Type": "application/json"
}
payload = {
"jsonrpc": "2.0",
"method": "system_chain",
"params": [],
"id": 1
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
if "error" in data:
raise Exception(f"RPC Error: {data['error']}")
return data["result"]
# Network detection
chain = get_chain_name()
print(f"Connected to: {chain}")
# Configure based on network
if chain == "Polkadot":
token_decimals = 10
token_symbol = "DOT"
elif chain == "Kusama":
token_decimals = 12
token_symbol = "KSM"
elif chain == "Westend":
token_decimals = 12
token_symbol = "WND"
const getChainName = async () => {
const response = await fetch('https://api-asset-hub-polkadot.n.dwellir.com', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
jsonrpc: '2.0',
method: 'system_chain',
params: [],
id: 1
})
});
const data = await response.json();
return data.result;
};
// Verify correct network
const chain = await getChainName();
console.log(`Connected to: ${chain}`);
if (chain !== 'Polkadot') {
console.warn('Warning: Not connected to Polkadot mainnet!');
}
Common Chain Names#
| Chain Name | Network Type | Description |
|---|---|---|
Polkadot | Mainnet | Production network |
Kusama | Canary | Experimental network |
Westend | Testnet | Test network |
Rococo | Testnet | Parachain test network |
| Custom names | Local/Dev | Development chains |
Use Cases#
- Network Verification: Ensure connected to correct network
- Configuration Loading: Load network-specific settings
- Multi-chain Support: Handle different networks dynamically
- Error Prevention: Prevent mainnet transactions on testnet
- UI Adaptation: Display network-specific information
Network Detection Pattern#
class NetworkManager {
constructor() {
this.networks = {
'Polkadot': {
symbol: 'DOT',
decimals: 10,
explorer: 'https://polkadot.subscan.io'
},
'Kusama': {
symbol: 'KSM',
decimals: 12,
explorer: 'https://kusama.subscan.io'
},
'Westend': {
symbol: 'WND',
decimals: 12,
explorer: 'https://westend.subscan.io'
}
};
}
async detectNetwork() {
const chain = await getChainName();
const config = this.networks[chain];
if (!config) {
throw new Error(`Unknown network: ${chain}`);
}
return { chain, ...config };
}
async validateNetwork(expectedChain) {
const chain = await getChainName();
if (chain !== expectedChain) {
throw new Error(
`Wrong network! Expected ${expectedChain}, got ${chain}`
);
}
return true;
}
}
Notes#
- Chain name is configured in the chain specification
- Custom chains can have any name
- Use in combination with
system_propertiesfor full network info - Chain name doesn't change during runtime
- Case-sensitive string comparison
Related Methods#
state_getRuntimeVersion- Get runtime versionsystem_health- Get node healthrpc_methods- List available methodsstate_getMetadata- Get runtime metadata