Intro to Tenderly SDK
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.
Introduction
The Tenderly SDK provides an easy-to-use interface for interacting with the Tenderly platform via API.
Key features of the SDK include:
Installation
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
Quickstart
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.
Initializing the SDK
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 Tenderly({
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 Tenderly({
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
});
The list of supported networks can be found here.
How to get the account name, project slug, and secret key
Follow these step-by-step guides to obtain the necessary configuration details:
- How to obtain the account name
- How to obtain the organization name
- How to obtain the project slug/name
- How to find, create, and manage API keys
Example transaction simulation
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]
}
]
}
Next steps
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: