system_version - Astar RPC Method
Get the node implementation version on Astar. Essential for compatibility checking, runtime upgrades, and monitoring node deployments across the Polkadot's leading dApp hub supporting EVM, WASM, and upcoming PolkaVM environments network.
Returns the node implementation version string on Astar. This version reflects the client software version (e.g., 0.9.43-ba6af1743a0), not the on-chain runtime version.
Why Astar? Build on Polkadot's leading dApp hub supporting EVM, WASM, and upcoming PolkaVM environments with EVM + WASM + PolkaVM support, Build2Earn developer rewards, dApp Staking, and Soneium cross-layer integration.
When to Use This Method
system_version is essential for multi-chain dApp developers, DeFi builders, and teams leveraging Polkadot + Ethereum ecosystems:
- Compatibility Checking -- Verify the node client version supports the features your application requires on Astar
- Upgrade Monitoring -- Track node software versions across your validator or collator fleet after runtime upgrades
- Diagnostics and Debugging -- Include version information in bug reports and support requests for cross-chain DeFi, multi-VM smart contracts, and XCM-enabled interoperability with Ethereum and Cosmos
- Multi-Node Management -- Ensure all nodes in your infrastructure are running consistent versions
Code Examples
Common Use Cases
1. Node Fleet Version Monitoring
Track version consistency across multiple Astar nodes:
import { ApiPromise, WsProvider } from '@polkadot/api';
async function checkFleetVersions(endpoints) {
const versions = await Promise.all(
endpoints.map(async (endpoint) => {
const provider = new WsProvider(endpoint);
const api = await ApiPromise.create({ provider });
const version = await api.rpc.system.version();
const name = await api.rpc.system.name();
await api.disconnect();
return { endpoint, version: version.toString(), name: name.toString() };
})
);
const unique = new Set(versions.map((v) => v.version));
if (unique.size > 1) {
console.warn('Version mismatch detected across fleet!');
}
versions.forEach((v) => {
console.log(`${v.endpoint}: ${v.name} v${v.version}`);
});
}2. Pre-Upgrade Compatibility Check
Verify node version before executing operations:
async function ensureMinVersion(api, minVersion) {
const version = await api.rpc.system.version();
const versionStr = version.toString();
const [major, minor, patch] = versionStr.split('-')[0].split('.').map(Number);
const [minMajor, minMinor, minPatch] = minVersion.split('.').map(Number);
if (
major < minMajor ||
(major === minMajor && minor < minMinor) ||
(major === minMajor && minor === minMinor && patch < minPatch)
) {
throw new Error(
`Node version ${versionStr} is below minimum ${minVersion}`
);
}
console.log(`Node version ${versionStr} meets minimum ${minVersion}`);
return true;
}3. Node Identity Dashboard
Gather full node identity information:
async function getNodeIdentity(api) {
const [version, name, chain, properties] = await Promise.all([
api.rpc.system.version(),
api.rpc.system.name(),
api.rpc.system.chain(),
api.rpc.system.properties()
]);
return {
client: name.toString(),
version: version.toString(),
chain: chain.toString(),
tokenSymbol: properties.tokenSymbol.toString(),
ss58Format: properties.ss58Format.toString()
};
}Error Handling
Common errors and solutions:
| Error Code | Description | Solution |
|---|---|---|
| -32603 | Internal error | Node may be starting up -- retry after delay |
| -32005 | Rate limit exceeded | Reduce request frequency or implement client-side rate limiting |
| Connection refused | Node unreachable | Verify the RPC endpoint URL and that the node is running |
Related Methods
system_chain-- Get the chain namesystem_name-- Get the node implementation namesystem_properties-- Get chain properties (token symbol, decimals, SS58 format)state_getRuntimeVersion-- Get the on-chain runtime version (spec version, impl version)rpc_methods-- List all available RPC methods
system_chain
Get the chain name on Astar. Essential for network identification, multi-chain applications, and verifying the correct network connection.
system_name
Get the node implementation name on Astar. Identify the client software powering your node for diagnostics, compatibility checks, and infrastructure management.