Docs
Supported ChainsCronosJSON-RPC APINetwork Methods

web3_clientVersion - Cronos RPC Method

Get the client software version of your Cronos node. Essential for compatibility checks, fleet monitoring, and debugging client-specific behavior.

Returns the current client software version string for your Cronos node, including the client name, version number, OS, and runtime.

Why Cronos? Build on the EVM-compatible Crypto.com blockchain with fast finality and deep Crypto.com ecosystem integration.

When to Use This Method

web3_clientVersion is valuable for Cronos developers building DeFi and payment applications:

  • Client Compatibility Checks — Verify the node runs a client version that supports the RPC methods your application needs
  • Fleet Version Monitoring — Track client versions across a multi-node infrastructure to coordinate upgrades
  • Debugging Client-Specific Behavior — Identify which client (Geth, Erigon, Nethermind, Besu, etc.) is serving requests when behavior differs
  • Security Auditing — Detect nodes running outdated versions with known vulnerabilities

Request Parameters

Request

This method accepts no parameters.

Response Body

Response
resultString

Client version string, typically in the format ClientName/vX.Y.Z/OS/Runtime

Error Responses

Errors
Error Response-32603

Code Examples

Bash
curl -X POST https://api-cronos-mainnet-archive.n.dwellir.com/YOUR_API_KEY \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "web3_clientVersion",
    "params": [],
    "id": 1
  }'

Common Use Cases

1. Client Version Parser

Parse the version string to extract structured information:

JavaScript
function parseClientVersion(versionString) {
  const parts = versionString.split('/');

  return {
    client: parts[0],
    version: parts[1] || 'unknown',
    os: parts[2] || 'unknown',
    runtime: parts[3] || 'unknown'
  };
}

async function getNodeInfo(provider) {
  const version = await provider.send('web3_clientVersion', []);
  const parsed = parseClientVersion(version);

  console.log(`Client: ${parsed.client}`);
  console.log(`Version: ${parsed.version}`);
  console.log(`OS: ${parsed.os}`);
  console.log(`Runtime: ${parsed.runtime}`);

  return parsed;
}

2. Fleet Version Audit

Check all nodes in a fleet and report version inconsistencies:

Python
import requests

def audit_fleet_versions(endpoints):
    versions = {}
    for endpoint in endpoints:
        try:
            response = requests.post(
                endpoint,
                json={'jsonrpc': '2.0', 'method': 'web3_clientVersion', 'params': [], 'id': 1},
                timeout=5
            )
            version = response.json()['result']
            versions[endpoint] = version
        except Exception as e:
            versions[endpoint] = f'ERROR: {e}'

    # Group by client version
    grouped = {}
    for endpoint, version in versions.items():
        grouped.setdefault(version, []).append(endpoint)

    for version, nodes in grouped.items():
        print(f'{version}: {len(nodes)} node(s)')

    if len(grouped) > 1:
        print('WARNING: Inconsistent versions detected across fleet')

    return versions

3. Feature Detection by Client

Adjust RPC behavior based on the detected client type:

JavaScript
async function detectClientCapabilities(provider) {
  const version = await provider.send('web3_clientVersion', []);
  const client = version.split('/')[0].toLowerCase();

  const capabilities = {
    supportsDebugTrace: ['geth', 'erigon'].includes(client),
    supportsParityTrace: ['openethereum', 'nethermind', 'erigon'].includes(client),
    supportsEthSubscribe: true, // all modern clients
  };

  console.log(`Client "${client}" capabilities:`, capabilities);
  return capabilities;
}

Error Handling

Error CodeDescriptionSolution
-32603Internal errorNode may be starting up — retry after delay
-32005Rate limit exceededReduce polling frequency or implement backoff
-32601Method not foundThe web3 namespace may be disabled — check node startup flags