Docs
Supported ChainsXDC NetworkJSON-RPC APITransaction Methods

eth_estimateGas - XDC Network RPC Method

Estimate gas required for transactions on XDC Network. Essential for optimizing transaction costs for tokenized trade finance (Letters of Credit, Bills of Lading), cross-border payments, and real-world asset tokenization.

Estimates the gas necessary to execute a transaction on XDC Network.

Why XDC Network? Build on the enterprise-grade blockchain for trade finance with 2-second finality and ISO 20022 compliance with ISO 20022 messaging, ITFA membership, Contour Network acquisition, 801M+ transactions, and partnerships with Circle and Deutsche Telekom.

Use Cases

The eth_estimateGas method is essential for:

  • Transaction preparation - Set appropriate gas limits
  • Cost estimation - Calculate transaction costs before sending
  • Error detection - Identify reverts before spending gas
  • DeFi operations - Estimate costs for tokenized trade finance (Letters of Credit, Bills of Lading), cross-border payments, and real-world asset tokenization

Request Parameters

Request
fromDATA

Sender address

toDATA

Recipient address

gasQUANTITY

Gas limit

gasPriceQUANTITY

Gas price

valueQUANTITY

Value in wei

dataDATA

Transaction data

Response Body

Response
resultQUANTITY

Estimated gas amount in hexadecimal

Code Examples

Bash
curl -X POST https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_estimateGas",
    "params": [{
      "from": "0x951857744785E80e2De051c32EE7b25f9c458C42",
      "to": "0x951857744785E80e2De051c32EE7b25f9c458C42",
      "value": "0x1"
    }],
    "id": 1
  }'
JavaScript
import { JsonRpcProvider, parseEther } from 'ethers';

const provider = new JsonRpcProvider('https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY');

// Estimate simple transfer
async function estimateTransfer(to, value) {
  const gasEstimate = await provider.estimateGas({
    to: to,
    value: parseEther(value)
  });

  console.log('Estimated gas:', gasEstimate.toString());
  return gasEstimate;
}

// Estimate contract call
async function estimateContractCall(contract, method, args) {
  const gasEstimate = await contract[method].estimateGas(...args);
  console.log('Estimated gas:', gasEstimate.toString());

  // Add 20% buffer for safety
  return gasEstimate * 120n / 100n;
}
Python
from web3 import Web3

w3 = Web3(Web3.HTTPProvider('https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY'))

def estimate_transfer(to, value_in_ether):
    gas_estimate = w3.eth.estimate_gas({
        'to': to,
        'value': w3.to_wei(value_in_ether, 'ether')
    })

    print(f'Estimated gas: {gas_estimate}')
    return gas_estimate

def estimate_contract_call(contract, method, args):
    func = getattr(contract.functions, method)
    gas_estimate = func(*args).estimate_gas()

    # Add 20% buffer
    return int(gas_estimate * 1.2)

# Estimate simple transfer
gas = estimate_transfer('0x951857744785E80e2De051c32EE7b25f9c458C42', 0.1)
Go
package main

import (
    "context"
    "fmt"
    "log"
    "math/big"

    "github.com/ethereum/go-ethereum"
    "github.com/ethereum/go-ethereum/common"
    "github.com/ethereum/go-ethereum/ethclient"
)

func main() {
    client, err := ethclient.Dial("https://api-xdc-mainnet.n.dwellir.com/YOUR_API_KEY")
    if err != nil {
        log.Fatal(err)
    }

    toAddress := common.HexToAddress("0x951857744785E80e2De051c32EE7b25f9c458C42")
    msg := ethereum.CallMsg{
        To:    &toAddress,
        Value: big.NewInt(1000000000000000000),
    }

    gasLimit, err := client.EstimateGas(context.Background(), msg)
    if err != nil {
        log.Fatal(err)
    }

    fmt.Printf("Estimated gas: %d\n", gasLimit)
}

Error Handling

Error CodeMessageDescription
-32000Execution revertedTransaction would fail
-32602Invalid paramsInvalid transaction parameters

Tip: If estimation fails, the transaction would likely revert if sent.