# RPC Methods (Detailed Breakdown)

This section provides a detailed breakdown of Ethereum RPC method support via VeChainThor's SDK RPC Proxy, available at <https://rpc-mainnet.vechain.energy> . This is *critical* for developers.

<table><thead><tr><th width="200" valign="top">JSON RPC Method</th><th width="130" valign="top">Support Status</th><th valign="top">Comments</th></tr></thead><tbody><tr><td valign="top">debug_traceBlockByHash</td><td valign="top">Fully Supported</td><td valign="top">Provides detailed execution traces for all transactions within a specified block, identified by its hash. This is primarily a debugging tool and is accessed via the debug namespace. The output format will be VeChainThor-specific.</td></tr><tr><td valign="top">debug_traceBlockByNumber</td><td valign="top">Fully Supported</td><td valign="top">Provides detailed execution traces for all transactions within a specified block, identified by its number. This is primarily a debugging tool and is accessed via the debug namespace. The output format will be VeChainThor-specific.</td></tr><tr><td valign="top">debug_traceCall</td><td valign="top">Fully Supported</td><td valign="top">Similar to debug_traceTransaction, but allows tracing the execution of a call (like eth_call) without actually submitting a transaction. Useful for debugging and simulating contract calls. Returns a VeChainThor-specific trace format.</td></tr><tr><td valign="top">debug_traceTransaction</td><td valign="top">Fully Supported</td><td valign="top">Provides a detailed execution trace for a single transaction, identified by its hash. This is useful for debugging smart contract execution. Accessed via the debug namespace. Output is VeChainThor-specific.</td></tr><tr><td valign="top">eth_accounts</td><td valign="top">Fully Supported</td><td valign="top"><p>Requests that the user provides an Ethereum address to be used by your dApp. Commonly intercepted by wallets like MetaMask.</p><p>For security reasons, this is <em>not</em> recommended and is typically blocked on public nodes.</p><p>Returns the configured signer addresses on the RPC Proxy instance which are only useful when the service is self-hosted.</p></td></tr><tr><td valign="top">eth_blockNumber</td><td valign="top">Fully Supported</td><td valign="top">Returns the latest block number. Equivalent to the latest <em>finalized</em> block on VeChainThor. Returns the latest "best" VeChainThor block number.</td></tr><tr><td valign="top">eth_call</td><td valign="top">Partially Supported</td><td valign="top">Simulates a contract call <em>without</em> making any changes to the blockchain state. Useful for reading data from contracts or testing function calls. Gas is required even if it won’t be subtracted. Important: Does not support state override.</td></tr><tr><td valign="top">eth_chainId</td><td valign="top">Fully Supported</td><td valign="top">Returns the chain ID of the VeChainThor network (Mainnet: 100009 (0x186a9), Testnet: 100010). This is crucial for ensuring your application is interacting with the correct network. Returns 0x186a9 for VeChain mainnet.</td></tr><tr><td valign="top">eth_coinbase</td><td valign="top">Not Supported</td><td valign="top">VeChainThor's Proof of Authority consensus does not have a "coinbase" address in the same way as Ethereum's Proof of Work.</td></tr><tr><td valign="top">eth_createAccessList</td><td valign="top">Not Supported</td><td valign="top">VeChainThor does not support access lists in the same way as Ethereum.</td></tr><tr><td valign="top">eth_estimateGas</td><td valign="top">Partially Supported</td><td valign="top"><p>Estimates the VTHO required to execute a transaction.</p><p>At the moment, the method requires to pass a dummy value for both gas and gasPrice.</p><p>Crucially, this method <em>only</em> works reliably for single-clause transactions. It will likely <em>fail</em> or produce inaccurate results for multi-clause transactions (a core VeChainThor feature). For multi-clause transactions, use VeChainThor-specific gas estimation methods. Only supports the from, to, value, data fields.</p></td></tr><tr><td valign="top">eth_gasPrice</td><td valign="top">Fully Supported</td><td valign="top">Returns the current VTHO gas price. This is <em>not</em> directly analogous to Ethereum's gas price auction; VeChainThor's gas price is more stable, fixed at 1e+13 Wei (representing VTHO cost). It is not a direct result of an auction mechanism.</td></tr><tr><td valign="top">eth_getBalance</td><td valign="top">Fully Supported</td><td valign="top">Returns the VET balance of a given address. Important: This method <em>only</em> returns the VET balance. To retrieve the VTHO balance, you <em>must</em> use VeChainThor-specific APIs (e.g., the RESTful API) or call the VTHO contract's balanceOf function directly. Do <em>not</em> assume this method returns VTHO.</td></tr><tr><td valign="top">eth_getBlockByHash</td><td valign="top">Partially Supported</td><td valign="top">Returns information about a block, identified by its hash. Limitations: "finalized" and "safe" block tags (EIP-1898) are planned for future support but currently not supported.</td></tr><tr><td valign="top">eth_getBlockByNumber</td><td valign="top">Partially Supported</td><td valign="top">Returns information about a block, identified by its number. Limitations: "finalized" and "safe" block tags (EIP-1898) are planned for future support but currently not supported.</td></tr><tr><td valign="top">eth_getBlockReceipts</td><td valign="top">Fully Supported</td><td valign="top">Retrieves receipts for all transactions within a given block. The receipt will also show VeChainThor-specific multi-clauses, but the functionality is equivalent to Ethereum.</td></tr><tr><td valign="top">eth_getBlockTransactionCountByHash</td><td valign="top">Fully Supported</td><td valign="top">Returns the number of transactions in a block, identified by the block's hash. The block hash is a VeChainThor block ID.</td></tr><tr><td valign="top">eth_getBlockTransactionCountByNumber</td><td valign="top">Fully Supported</td><td valign="top">Returns the number of transactions in a block, identified by the block's number. The block number is in Hex format.</td></tr><tr><td valign="top">eth_getCode</td><td valign="top">Fully Supported</td><td valign="top">Returns the bytecode of the smart contract deployed at a given address. This is useful for verifying contract code.</td></tr><tr><td valign="top">eth_getLogs</td><td valign="top">Partially Supported</td><td valign="top">Retrieves event logs matching a given filter. Note: There might be practical limitations on the number of logs returned in a single call (e.g., a limit of 1000 entries). For large log queries, consider using pagination or VeChainThor's native event querying capabilities via the RESTful API. If fromBlock or toBlock is not defined then best block is assumed. Filtering by blockhash is not supported.</td></tr><tr><td valign="top">eth_getStorageAt</td><td valign="top">Fully Supported</td><td valign="top">Retrieves the value stored at a specific storage slot within a smart contract. This is a low-level method used for directly accessing contract storage.</td></tr><tr><td valign="top">eth_getTransactionByBlockHashAndIndex</td><td valign="top">Fully Supported</td><td valign="top">Returns information about a transaction, identified by the block hash and the transaction's index within that block. The block hash is a VeChainThor block ID.</td></tr><tr><td valign="top">eth_getTransactionByBlockNumberAndIndex</td><td valign="top">Fully Supported</td><td valign="top">Returns information about a transaction identified by the block number and the transaction's index within that block. The block number is in Hex format.</td></tr><tr><td valign="top">eth_getTransactionByHash</td><td valign="top">Fully Supported</td><td valign="top">Returns details for a specific transaction, identified by its hash. The returned transaction object will be in the VeChainThor format (including clauses, gasUsed, etc.). The block hash is a VeChainThor block ID.</td></tr><tr><td valign="top">eth_getTransactionCount</td><td valign="top">Full Supported*</td><td valign="top">Returns a number that can be used as nonce for the next transaction.<br>Functionally Different: In Ethereum, this returns the number of transactions sent <em>from</em> an address as to use it as nonce for the next one. In VeChainThor (via the SDK RPC Proxy), this method returns a random value that <em>does not</em> represent the transaction count.</td></tr><tr><td valign="top">eth_getTransactionReceipt</td><td valign="top">Fully Supported</td><td valign="top">Returns the transaction receipt for a given transaction hash. The receipt will contain VeChainThor-specific details, including information about individual clauses within the transaction (if applicable) and the output field, which provides details about contract calls.</td></tr><tr><td valign="top">eth_getUncleByBlockHashAndIndex</td><td valign="top">Fully Supported</td><td valign="top">Returns null as VeChainThor has no "uncles" concept.</td></tr><tr><td valign="top">eth_getUncleByBlockNumberAndIndex</td><td valign="top">Fully Supported</td><td valign="top">Returns null as VeChainThor has no "uncles" concept.</td></tr><tr><td valign="top">eth_getUncleCountByBlockHash</td><td valign="top">Fully Supported</td><td valign="top">Returns 0 as VeChainThor has no "uncles" concept.</td></tr><tr><td valign="top">eth_getUncleCountByBlockNumber</td><td valign="top">Fully Supported</td><td valign="top">Returns 0 as VeChainThor has no "uncles" concept.</td></tr><tr><td valign="top">eth_requestAccounts</td><td valign="top">Fully Supported</td><td valign="top"><p>Requests that the user provides an Ethereum address to be used by your dApp. Commonly intercepted by wallets like MetaMask.</p><p>For security reasons, this is <em>not</em> recommended and is typically blocked on public nodes.</p><p>Returns the configured signer addresses on the RPC Proxy instance which are only useful when the service is self-hosted.</p></td></tr><tr><td valign="top">eth_sendRawTransaction</td><td valign="top">Fully Supported</td><td valign="top">Recommended method for sending transactions: Accepts a pre-signed transaction (formatted for VeChainThor) and submits it to the network. This is the preferred method for sending transactions, as it keeps private keys secure. Use VeChainThor-specific libraries to create and sign the raw transaction. The raw transaction needs to be a signed, encoded VeChainThor format transaction.</td></tr><tr><td valign="top">eth_sendTransaction</td><td valign="top">Fully Supported</td><td valign="top">Deprecated for public nodes: This method requires signing the transaction with a <em>private key</em> within the client application. For security reasons, this is <em>not</em> recommended and is typically blocked on public nodes. Use eth_sendRawTransaction instead, where the transaction is signed <em>before</em> being sent. Only supported if signer addresses are configured.</td></tr><tr><td valign="top">eth_signTransaction</td><td valign="top">Not Supported</td><td valign="top">VeChainThor does not support this Ethereum method for signing transactions. Use VeChainThor-specific libraries and eth_sendRawTransaction.</td></tr><tr><td valign="top">eth_signTypedData_v4</td><td valign="top">Fully Supported</td><td valign="top">Supports signing typed data according to EIP-712. The signer must be configured within the RPC Proxy.</td></tr><tr><td valign="top">eth_subscribe</td><td valign="top">Fully Supported</td><td valign="top">Subscribes to real-time events on the blockchain (e.g., new blocks, new pending transactions, logs). Use this for building reactive applications that respond to blockchain events. newHeads and logs subscriptions are supported. Subscription IDs and event data formats are VeChainThor-specific.</td></tr><tr><td valign="top">eth_syncing</td><td valign="top">Partially Supported</td><td valign="top">Returns an object indicating the node's synchronization status. Note: The startingBlock field, often present in Ethereum, is <em>not</em> supported in VeChainThor's implementation. Returns false if the best block is older than 11 seconds. Other fields may have VeChainThor-specific values.</td></tr><tr><td valign="top">eth_unsubscribe</td><td valign="top">Fully Supported</td><td valign="top">Unsubscribes from a previously created subscription.</td></tr><tr><td valign="top">evm_mine</td><td valign="top">Fully Supported</td><td valign="top">Forces the node to mine a new block. Useful in development and testing environments. Waits for the next best block. Note eth_mining is not supported.</td></tr><tr><td valign="top">net_listening</td><td valign="top">Fully Supported</td><td valign="top">Returns true if the node is actively listening for network connections, false otherwise. This is a basic health check. Returns false if the best block is older than 30 seconds.</td></tr><tr><td valign="top">net_peerCount</td><td valign="top">Fully Supported</td><td valign="top">Returns the number of peers currently connected to the node. This can be used to monitor network connectivity.</td></tr><tr><td valign="top">net_version</td><td valign="top">Fully Supported</td><td valign="top">Returns the network ID (Mainnet: 100009 (0x186a9), Testnet: 100010), which is distinct from the chain ID. Returns 0x186a9 for VeChain mainnet.</td></tr><tr><td valign="top">txpool_content</td><td valign="top">Not Supported</td><td valign="top">VeChainThor does not expose transaction pool content in the same way as Ethereum. Returns null.</td></tr><tr><td valign="top">txpool_contentFrom</td><td valign="top">Not Supported</td><td valign="top">VeChainThor does not expose transaction pool content in the same way as Ethereum. Returns null.</td></tr><tr><td valign="top">txpool_inspect</td><td valign="top">Not Supported</td><td valign="top">VeChainThor does not expose transaction pool content in the same way as Ethereum. Returns null.</td></tr><tr><td valign="top">txpool_status</td><td valign="top">Not Supported</td><td valign="top">VeChainThor does not expose transaction pool status in the same way as Ethereum. Returns null.</td></tr><tr><td valign="top">web3_clientVersion</td><td valign="top">Fully Supported</td><td valign="top">Returns the version of the client software (e.g., the SDK RPC Proxy version). Returns thor.</td></tr><tr><td valign="top">web3_sha3</td><td valign="top">Fully Supported</td><td valign="top">Returns the Keccak256 hash of the provided data. No difference in behavior from Ethereum.</td></tr><tr><td valign="top">eth_newFilter</td><td valign="top">Not Supported</td><td valign="top"></td></tr><tr><td valign="top">eth_newBlockFilter</td><td valign="top">Not Supported</td><td valign="top"></td></tr><tr><td valign="top">eth_newPendingTransactionFilter</td><td valign="top">Not Supported</td><td valign="top"></td></tr><tr><td valign="top">eth_uninstallFilter</td><td valign="top">Not Supported</td><td valign="top"></td></tr><tr><td valign="top">eth_getFilterChanges</td><td valign="top">Not Supported</td><td valign="top"></td></tr><tr><td valign="top">eth_getFilterLogs</td><td valign="top">Not Supported</td><td valign="top"></td></tr><tr><td valign="top">eth_getProof</td><td valign="top">Not Supported</td><td valign="top"></td></tr></tbody></table>
