⚠️Blast API (blastapi.io) ends Oct 31. Migrate to Dwellir and skip Alchemy's expensive compute units.
Switch Today →
Skip to main content

web3_clientVersion

The web3_clientVersion method returns detailed version information about the XDC node client software currently running. This method provides essential metadata for compatibility verification, debugging, security auditing, and ensuring your applications interact with properly configured and up-to-date node infrastructure.

The version string typically includes the client name (such as XDC or Geth-based clients), version number, operating system, and build information. This comprehensive identification helps developers ensure they're connecting to compatible nodes and assists infrastructure teams in maintaining consistent deployment standards across their node fleet.

Understanding client versions is critical for XDC Network development because different client versions may support different features, have varying performance characteristics, or include important security patches. Regularly checking client versions helps maintain secure and efficient blockchain operations.

Parameters

No parameters required. This is a read-only informational method.

{
"jsonrpc": "2.0",
"method": "web3_clientVersion",
"params": [],
"id": 1
}

Returns

String - A string containing the client name, version number, operating system, and build information. Format varies by client implementation.

Example return values:

  • XDC/v1.4.5-stable/linux-amd64/go1.19.5
  • Geth/v1.10.26-xdc/linux-amd64/go1.18.1

Use Cases

  1. Compatibility Verification: Ensure your dApp is connecting to nodes running compatible client versions
  2. Security Auditing: Identify nodes running outdated versions with known vulnerabilities
  3. Version Tracking: Maintain inventory of client versions across your node infrastructure
  4. Support Diagnostics: Collect version information when troubleshooting issues or reporting bugs
  5. Feature Detection: Determine whether connected nodes support specific RPC methods or features
  6. Compliance Monitoring: Verify that nodes meet organizational standards for client versions

Best Practices for Production

  • Log client versions during application startup for debugging and audit trails
  • Implement version compatibility checks to warn users about unsupported client versions
  • Monitor client version distribution across your node pool for upgrade planning
  • Set up alerts for nodes running significantly outdated versions
  • Document minimum supported client versions in your application requirements
  • Use version information in error reports to help diagnose version-specific issues
  • Consider client diversity in production environments to enhance network resilience

Integration with Web3 Libraries

Using ethers.js

import { JsonRpcProvider } from 'ethers';

const provider = new JsonRpcProvider('https://xdc-rpc.dwellir.com');

async function checkClientCompatibility() {
try {
const version = await provider.send('web3_clientVersion', []);
console.log('Connected to:', version);

// Parse version for compatibility checks
const versionMatch = version.match(/v(\d+)\.(\d+)\.(\d+)/);

if (versionMatch) {
const [, major, minor, patch] = versionMatch;
console.log(`Version: ${major}.${minor}.${patch}`);

// Example: Check minimum version requirement
if (parseInt(major) < 1 || (parseInt(major) === 1 && parseInt(minor) < 4)) {
console.warn('Client version may be outdated. Consider upgrading.');
}
}

return version;
} catch (error) {
console.error('Failed to retrieve client version:', error);
return null;
}
}

// Use during initialization
async function initializeApp() {
const version = await checkClientCompatibility();

if (version) {
console.log('Application initialized with compatible client');
} else {
console.error('Failed to verify client compatibility');
}
}

Using web3.js

import Web3 from 'web3';

const web3 = new Web3('https://xdc-rpc.dwellir.com');

async function getNodeInfo() {
try {
const [version, networkId, listening, peerCount] = await Promise.all([
web3.eth.getNodeInfo(),
web3.eth.net.getId(),
web3.eth.net.isListening(),
web3.eth.net.getPeerCount()
]);

const nodeInfo = {
clientVersion: version,
networkId,
listening,
peers: peerCount,
timestamp: new Date().toISOString()
};

console.log('Node Information:', nodeInfo);
return nodeInfo;
} catch (error) {
console.error('Failed to retrieve node information:', error);
throw error;
}
}

Example Response

{
"jsonrpc": "2.0",
"id": 1,
"result": "XDC/v1.4.5-stable/linux-amd64/go1.19.5"
}

The response indicates:

  • Client: XDC
  • Version: 1.4.5 (stable release)
  • Platform: Linux AMD64
  • Go version: 1.19.5