Intro to Tenderly SDK
With the Tenderly SDK, you can simulate individual transactions or bundles of transactions, manage contracts and wallets, and verify contracts from your code.
The Tenderly SDK is a TypeScript library that provides a set of useful utilities, enabling you to move faster through the different development stages using Tenderly.
It allows you to simulate transactions, simulate transaction bundles, manage contracts and wallets, and verify smart contracts from your code. The SDK is particularly useful for blockchain developers who want to integrate Tenderly's powerful tools into their dapp or development workflow.
The Tenderly SDK provides an easy-to-use interface for interacting with the Tenderly platform via API.
Key features of the SDK include:
The Tenderly SDK is available as an npm package. Install it by running the following command in your project directory:
npm
npm install @tenderly/sdk
yarn
yarn add @tenderly/sdk
pnpm
pnpm add @tenderly/sdk
The example below shows you how to do a simple simulation in less than 5 minutes. To learn more about the concepts behind the SDK, see Tenderly SDK FAQs.
To use the Tenderly SDK, you must first import the necessary libraries and create a new instance of the
Tenderly
class. This is where you pass in your Tenderly configuration details.The configuration object should include your account name, project name, access key, and network.
import { Tenderly, Network } from "@tenderly/sdk";
const tenderlyInstance = new TenderlyInstance({
accountName: "my-account",
projectName: "my-project",
accessKey: "my-access-key",
network: Network.MAINNET, // Replace with the appropriate network
});
If you don’t want to hardcode sensitive information like API keys, you can use environment variables to store this information, like so:
import { Tenderly, Network } from '@tenderly/sdk';
const tenderlyInstance = new TenderlyInstance({
accountName: process.env.TENDERLY_ACCOUNT_NAME,
projectName: process.env.TENDERLY_PROJECT_NAME,
accessKey: process.env.TENDERLY_ACCESS_KEY,
network: Network.MAINNET, // Replace with the appropriate network
});
Follow these step-by-step guides to obtain the necessary configuration details:
The SDK provides a
Simulator
class for simulating transactions. To run a simulation, call the simulateTransaction
method in the simulator
namespace on the Tenderly instance:const transaction = await tenderly.simulator.simulateTransaction({
transaction: {
from: callerAddress,
to: counterContract,
gas: 20000000,
gas_price: '19419609232',
value: 0,
input: counterContractAbiInterface.encodeFunctionData('inc', []),
},
blockNumber: 3237677,
});
The code above produces the following result:
{
status: true,
gasUsed: '46838',
cumulativeGasUsed: undefined,
blockNumber: '3237677',
type: undefined,
logsBloom: 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAA==',
logs: [ { raw: [Object] } ],
trace: [
{
type: 'CALL',
from: '0xDBcB6Db1FFEaA10cd157F985a8543261250eFA46',
to: '0x93Cc0A80DE37EC4A4F97240B9807CDdfB4a19fB1',
gas: '19978936',
gas_used: '25774',
value: '0',
input: '0x371303c0',
trace_address: [Array]
}
]
}
For more guidance on running simulations with the Tenderly SDK, give these tutorials a go and learn how to simulate both individual and bundled transactions.
And as you continue learning how the Tenderly SDK works, we recommend taking at look at these helpful resources:
Last modified 1mo ago