VeChain Docs
  • Welcome to VeChain
  • Blockchain Basics
    • Introduction to blockchain
    • Introduction to digital property
    • The evolution of the internet
  • Introduction to VeChain
    • About the VeChain blockchain
      • Consensus Deep Dive
      • Governance
    • Dual-Token Economic Model
      • VeChain (VET)
      • VeThor (VTHO)
    • Acquire VeChain Assets
    • Sustainability
  • Core Concepts
    • Networks
      • Thor Solo Node
      • Testnet
      • Mainnet
    • Nodes
      • Node Rewards Programme
    • Blocks
      • Block Model
    • Transactions
      • Transaction Model
      • Transaction Fees
      • Transaction Calculation
      • Meta Transaction Features
        • Transaction Uniqueness
        • Controllable Transaction Lifecycle
        • Clauses (Multi-Task Transaction)
        • Fee Delegation
          • Multi-Party Payment (MPP)
          • Designated Gas Payer (VIP-191)
        • Transaction Dependency
    • Block Explorers
    • Wallets
      • VeWorld
        • User Guide
          • Setup
          • Wallet
          • Signing
          • Activities
          • Settings
        • FAQ
      • Sync2
        • User Guide
          • Setup
          • Wallet
          • Signing
          • Activities
          • Settings
        • FAQ
      • Sync
        • User Guide
          • Wallet
          • Ledger Device
          • Browser dApps and web
          • Interact with dApps
          • Activities
          • Settings
          • Report an Issue
          • Contributing
        • FAQ
    • EVM Compatibility
      • VeChain Modifications
      • Methodology
      • Test Coverage
        • Gas model
        • Raw transaction
        • hardhat specific
          • Ganache failures
          • evm_increaseTime
        • Failures in constructor
        • eth_sign
        • Contract address prediction
        • BadBeacon proxy address at 0x1
      • How to Recreate
      • Additional Information
        • Using Governance Contracts
        • ERC1820/ERC777 Testnet
        • Delegate Options
    • Account Abstraction
      • UserOperation
      • Bundler
      • EntryPoint Contract
      • Account Factory Contract
      • Paymaster Contract
    • Token Bound Accounts
  • How to run a node
    • Nodes
    • How to run a Thor Solo Node
    • Custom Network
    • Connect Sync2 to a Thor Solo Node
  • Developer Resources
    • Getting Started
    • How to build on VeChain
      • Connect to the Network
      • Read Data
        • Read Blocks
        • Read Transactions
        • Read Accounts
        • States & Views
        • Events & Logs
        • VET Transfers
      • Write Data
        • Transactions
        • Fee Delegation
      • Listen to Changes
        • Events
        • VET Transfers
        • Transactions
        • Blocks
        • Beats
      • Build with Hardhat
      • Utilities
        • BigInt and Unit-Handling
        • Name Service Lookups
    • Example dApps
      • Buy me a Coffee
      • Token Bound Accounts
      • PWA with Privy and Account Abstraction
    • EVM Compatibility for Developers
      • Key Architectural Differences and Optimizations
      • Practical Implications for Developers: Key Considerations
      • RPC Methods (Detailed Breakdown)
      • Frequently Asked Questions (FAQs)
      • VeChain Blockchain Specifications
      • Key Differences Between VeChain and Ethereum (Summary)
      • Best Practices for Developing on VeChainThor
    • How to verify Address-Ownership
      • Next.js Session Verification
    • Debug Reverted Transactions
    • Account Abstraction
    • VIP-191: Designated Gas Payer
      • How to Integrate VIP-191 (I)
      • How to Integrate VIP-191 (II)
      • How to Integrate VIP-191 (III)
    • Index with Graph Node
      • Setup with Docker
      • Index with OpenZeppelin
        • Create Subgraph Project
        • Configure Contracts
        • Deploy Subgraph and start Indexing
        • Track Subgraph Indexing
        • Access Subgraph
        • Update Subgraph
    • SDKs & Providers
      • SDK
        • Architecture
        • Accounts
        • Bloom Filter
        • Certificates
        • Contracts
        • Cryptography
        • Debug
        • Encoding
        • Polls
        • Subscriptions
        • Thor Client
        • Transactions
      • Thor DevKit
        • Installation
        • Usage
          • Cryptography
          • Accounts
          • Encoding
          • Transactions
          • Certificates
          • Bloom Filter
      • DApp Kit
        • v2
          • Installation
          • React
            • Installation
            • Usage
          • Vanilla JS
            • Installation
            • Usage
          • Core
            • Installation
            • Usage
          • Theme Variables
          • i18n
        • v1
          • Installation
          • React
            • Installation
            • Usage
          • Vanilla JS
            • Installation
            • Usage
          • Core
            • Installation
            • Usage
          • Theme Variables
          • i18n
          • Node Polyfills
          • V0 to V1
        • v0
          • Installation
          • Usage
          • React
            • Installation
            • Usage
          • Vanilla (UI)
            • Installation
            • Usage
          • Styles (UI)
          • i18n
      • DevPal
      • Web3-Providers-Connex
        • Installation
        • Usage
      • Connex
        • Installation
        • API Specification
    • Frameworks & IDEs
      • Hardhat
      • Remix
    • Built-in Contracts
    • VORJ
    • Useful Links
  • How to contribute
Powered by GitBook
On this page

Was this helpful?

  1. Developer Resources
  2. EVM Compatibility for Developers

RPC Methods (Detailed Breakdown)

PreviousPractical Implications for Developers: Key ConsiderationsNextFrequently Asked Questions (FAQs)

Last updated 1 month ago

Was this helpful?

This section provides a detailed breakdown of Ethereum RPC method support via VeChainThor's SDK RPC Proxy, available at . This is critical for developers.

JSON RPC Method
Support Status
Comments

debug_traceBlockByHash

Fully Supported

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.

debug_traceBlockByNumber

Fully Supported

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.

debug_traceCall

Fully Supported

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.

debug_traceTransaction

Fully Supported

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.

eth_accounts

Fully Supported

Requests that the user provides an Ethereum address to be used by your dApp. Commonly intercepted by wallets like MetaMask.

For security reasons, this is not recommended and is typically blocked on public nodes.

Returns the configured signer addresses on the RPC Proxy instance which are only useful when the service is self-hosted.

eth_blockNumber

Fully Supported

Returns the latest block number. Equivalent to the latest finalized block on VeChainThor. Returns the latest "best" VeChainThor block number.

eth_call

Partially Supported

Simulates a contract call without 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.

eth_chainId

Fully Supported

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.

eth_coinbase

Not Supported

VeChainThor's Proof of Authority consensus does not have a "coinbase" address in the same way as Ethereum's Proof of Work.

eth_createAccessList

Not Supported

VeChainThor does not support access lists in the same way as Ethereum.

eth_estimateGas

Partially Supported

Estimates the VTHO required to execute a transaction.

At the moment, the method requires to pass a dummy value for both gas and gasPrice.

Crucially, this method only works reliably for single-clause transactions. It will likely fail 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.

eth_gasPrice

Fully Supported

Returns the current VTHO gas price. This is not 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.

eth_getBalance

Fully Supported

Returns the VET balance of a given address. Important: This method only returns the VET balance. To retrieve the VTHO balance, you must use VeChainThor-specific APIs (e.g., the RESTful API) or call the VTHO contract's balanceOf function directly. Do not assume this method returns VTHO.

eth_getBlockByHash

Partially Supported

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.

eth_getBlockByNumber

Partially Supported

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.

eth_getBlockReceipts

Fully Supported

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.

eth_getBlockTransactionCountByHash

Fully Supported

Returns the number of transactions in a block, identified by the block's hash. The block hash is a VeChainThor block ID.

eth_getBlockTransactionCountByNumber

Fully Supported

Returns the number of transactions in a block, identified by the block's number. The block number is in Hex format.

eth_getCode

Fully Supported

Returns the bytecode of the smart contract deployed at a given address. This is useful for verifying contract code.

eth_getLogs

Partially Supported

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.

eth_getStorageAt

Fully Supported

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.

eth_getTransactionByBlockHashAndIndex

Fully Supported

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.

eth_getTransactionByBlockNumberAndIndex

Fully Supported

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.

eth_getTransactionByHash

Fully Supported

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.

eth_getTransactionCount

Full Supported*

Returns a number that can be used as nonce for the next transaction. Functionally Different: In Ethereum, this returns the number of transactions sent from 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 does not represent the transaction count.

eth_getTransactionReceipt

Fully Supported

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.

eth_getUncleByBlockHashAndIndex

Fully Supported

Returns null as VeChainThor has no "uncles" concept.

eth_getUncleByBlockNumberAndIndex

Fully Supported

Returns null as VeChainThor has no "uncles" concept.

eth_getUncleCountByBlockHash

Fully Supported

Returns 0 as VeChainThor has no "uncles" concept.

eth_getUncleCountByBlockNumber

Fully Supported

Returns 0 as VeChainThor has no "uncles" concept.

eth_requestAccounts

Fully Supported

Requests that the user provides an Ethereum address to be used by your dApp. Commonly intercepted by wallets like MetaMask.

For security reasons, this is not recommended and is typically blocked on public nodes.

Returns the configured signer addresses on the RPC Proxy instance which are only useful when the service is self-hosted.

eth_sendRawTransaction

Fully Supported

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.

eth_sendTransaction

Fully Supported

Deprecated for public nodes: This method requires signing the transaction with a private key within the client application. For security reasons, this is not recommended and is typically blocked on public nodes. Use eth_sendRawTransaction instead, where the transaction is signed before being sent. Only supported if signer addresses are configured.

eth_signTransaction

Not Supported

VeChainThor does not support this Ethereum method for signing transactions. Use VeChainThor-specific libraries and eth_sendRawTransaction.

eth_signTypedData_v4

Fully Supported

Supports signing typed data according to EIP-712. The signer must be configured within the RPC Proxy.

eth_subscribe

Fully Supported

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.

eth_syncing

Partially Supported

Returns an object indicating the node's synchronization status. Note: The startingBlock field, often present in Ethereum, is not supported in VeChainThor's implementation. Returns false if the best block is older than 11 seconds. Other fields may have VeChainThor-specific values.

eth_unsubscribe

Fully Supported

Unsubscribes from a previously created subscription.

evm_mine

Fully Supported

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.

net_listening

Fully Supported

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.

net_peerCount

Fully Supported

Returns the number of peers currently connected to the node. This can be used to monitor network connectivity.

net_version

Fully Supported

Returns the network ID (Mainnet: 100009 (0x186a9), Testnet: 100010), which is distinct from the chain ID. Returns 0x186a9 for VeChain mainnet.

txpool_content

Not Supported

VeChainThor does not expose transaction pool content in the same way as Ethereum. Returns null.

txpool_contentFrom

Not Supported

VeChainThor does not expose transaction pool content in the same way as Ethereum. Returns null.

txpool_inspect

Not Supported

VeChainThor does not expose transaction pool content in the same way as Ethereum. Returns null.

txpool_status

Not Supported

VeChainThor does not expose transaction pool status in the same way as Ethereum. Returns null.

web3_clientVersion

Fully Supported

Returns the version of the client software (e.g., the SDK RPC Proxy version). Returns thor.

web3_sha3

Fully Supported

Returns the Keccak256 hash of the provided data. No difference in behavior from Ethereum.

eth_newFilter

Not Supported

eth_newBlockFilter

Not Supported

eth_newPendingTransactionFilter

Not Supported

eth_uninstallFilter

Not Supported

eth_getFilterChanges

Not Supported

eth_getFilterLogs

Not Supported

eth_getProof

Not Supported

https://rpc-mainnet.vechain.energy