The Trace API offers transaction data from the Ethereum Execution Layer to provide developers deeper insights from transactions to optimize devops.
We are excited to announce the launch of Infura's newest product release, Trace API, now available in open beta to all paid Infura users as of today.
The Trace API is an essential tool for Ethereum developers that provides the ability to gain deeper insights into the execution of smart contracts and transactions on Ethereum.
Developers can retrieve details from transaction data not logged on the blockchain, enabling them to debug, analyze, and perform other tasks and smart contract functions that require a granular understanding of transaction execution on Ethereum.
Learn more using the Trace API documentation here.
Common Uses Cases for Trace API to Improve Devops
The Trace API offers a comprehensive set of methods that allow developers to analyze and extract data from transactions, blocks, and smart contract interactions on Ethereum.
Using the Trace API, developers can access valuable data for various use cases to improve their dapp development and operations such as:
- Deeper insight and visibility into smart contract interactions by analyzing internal transactions and execution steps.
- Analyze and optimize the performance of applications.
- Investigate potential security vulnerabilities and attack vectors.
- Track the flow of Ether and tokens between addresses for auditing or monitoring purposes.
- Gather historical data for building analytics tools or conducting research.
Benefits of Using the Trace API for Developers
Users who choose to participate in the open beta will have access to five trace_ JSON RPC methods on the existing Infura Ethereum endpoints for mainnet, Goerli, and Sepolia. Each of these methods and the data they provide are detailed below.
- Trace_call: This call simulates the execution of a specific transaction on the Ethereum network. By providing the transaction parameters, such as the sender, recipient, and contract function to call, you can retrieve detailed information about the execution, including the state changes and logs generated during the process.
- Trace_callMany: This call efficiently simulates the execution of multiple transactions in a single request, which enables developers to analyze the interactions between different transactions and contracts. This call provides insights into the state changes and events that occur during their execution.
- Trace_block: This call provides the details of a specific block on the Ethereum blockchain. By specifying the block number or block hash, you can retrieve a comprehensive trace of all transactions within the block, including the input/output of each transaction, the state changes, and the events emitted during their execution.
- Trace_transaction: Similar to Trace_call, this call also traces the execution of a specific transaction on the Ethereum network. By providing the transaction hash, you can obtain a detailed analysis of the transaction, including the input/output values, the contract calls made, the events emitted, and the state changes that occurred during the transaction's execution.
- Trace_filter: This call is used to set up a custom filter to capture specific events or contract interactions on the Ethereum network. By specifying criteria such as contract addresses, function signatures, or specific event types, you can retrieve a filtered trace of transactions and events that match your criteria, providing valuable insights into the interactions occurring within the Ethereum ecosystem.
Start Using the Trace API Today
By combining Trace API with other smart contract testing tools like Truffle Debugger and Diligence Fuzzing - developers can gain a comprehensive understanding of their smart contracts' execution to address bugs quickly and effectively.
We built the Trace API to enhance the development experience for Ethereum developers, enabling them to create more secure, efficient, and reliable applications.
Trace API is available to paid Infura customers only. Need to update your plan? It's easily done here.