Skip to content
This repository was archived by the owner on Feb 7, 2025. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ Clicking on the button to the right will open up the Webhook overview page. This

<figure><img src="../../.gitbook/assets/image (20).png" alt=""><figcaption><p>Webhook Page</p></figcaption></figure>

You also perform other actions on your webhooks, such as enabling/disabling a webhook, or make changes to the existing configuration.&#x20;
You also perform other actions on your webhooks, such as enabling/disabling a webhook, or making changes to the existing configuration.&#x20;

**Enable/Disable Webhook:** Toggle the status of a webhook between active and inactive.&#x20;

Expand Down
2 changes: 1 addition & 1 deletion debugger/exporting-a-local-transaction.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ Please reach out via Intercom if you need any help or have some feature requests
{% endhint %}

{% hint style="info" %}
We will be showing the example on how to export a local transaction for the purposes of debugging on Tenderly via Tenderly CLI.
We will be showing the example of how to export a local transaction for the purposes of debugging on Tenderly via Tenderly CLI.
{% endhint %}

Whether you already have an existing project or you are creating a new one, you will be able to export local transactions to your Tenderly dashboard in order to debug them properly.
Expand Down
6 changes: 3 additions & 3 deletions debugger/how-to-use-tenderly-debugger/README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# How to use Tenderly Debugger

The Visual Debugger is one of the tools people love the most. Instead of wasting countless hours debugging transactions, you can use the Visual Debugger so you can focus more on buidling and less on scratching your head.
The Visual Debugger is one of the tools people love the most. Instead of wasting countless hours debugging transactions, you can use the Visual Debugger so you can focus more on building and less on scratching your head.

**The level of detail present here doesn't exist anywhere else and reduces development time by orders of magnitude**.

Expand All @@ -26,7 +26,7 @@ On the top right you will see the code that was executed, below are the listed p

Execution Trace has two modes you can use - Function Trace and Call Trace.

By default it is set to **Function Trace**, which means it will show all external and internal calls that happened in this transaction.&#x20;
By default, it is set to **Function Trace**, which means it will show all external and internal calls that happened in this transaction.&#x20;

![](<../../.gitbook/assets/Screenshot 2021-12-22 at 10.46.31.png>)

Expand All @@ -46,7 +46,7 @@ For example the function `multicall` has a single input labeled `data` which is

![](<../../.gitbook/assets/Screenshot 2021-10-14 at 14.29.15.png>)

On the left you will see a list of all the function that were called in this transaction which are further broken down in the order of execution in the **Stack Trace**:
On the left you will see a list of all the functions that were called in this transaction which is further broken down in the order of execution in the **Stack Trace**:

![](<../../.gitbook/assets/Screenshot 2021-10-14 at 14.30.15.png>)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Because the transactions are bundled in this way, it is even more important to b

#### Transaction Intro

The user wanted to repay the DAI debt on AAVE, but only had WMATIC at hand - check out the [Decombo breakdown here](https://furucombo.app/decombo?chainId=137\&txHash=0xbcd377e337ce8e9fc391888a8bb95883923e4385fa548fe230ef0b7c8c56e578) to see what actions does this transaction include.
The user wanted to repay the DAI debt on AAVE, but only had WMATIC at hand - check out the [Decombo breakdown here](https://furucombo.app/decombo?chainId=137\&txHash=0xbcd377e337ce8e9fc391888a8bb95883923e4385fa548fe230ef0b7c8c56e578) to see what actions this transaction includes.

![](https://lh4.googleusercontent.com/ah\_vAF4pSa0M60hGLLgTpcFTauo7c0XDi6BSHHjgG0vdZIiFoLA05XtLf8lxOMbBy55c0Phl2A94R3lk2fVaESRENY-Hr1ercrEgnDvfBh3zoBj2e6-1VAh9Zb1rCd86mLkXhZ3W)

Expand All @@ -30,7 +30,7 @@ The [transaction failed](https://dashboard.tenderly.co/tx/polygon/0xbcd377e337ce

#### Solution

As a way to avoid these issues in the future, we could lower the amount between `swap` and `repay` steps to allow for price slippage (\~0.3%). Alternatively, by using the `previous output` feature when inputing the amount for the second cube we will ensure sending the exact and expected amount from the first cube.
As a way to avoid these issues in the future, we could lower the amount between `swap` and `repay` steps to allow for price slippage (\~0.3%). Alternatively, by using the `previous output` feature when inputting the amount for the second cube we will ensure sending the exact and expected amount from the first cube.

{% hint style="success" %}
You can **comment and prioritize any trace you want**, either for yourself or to make collaboration in the project easier. You can [**read more about it here**](../../monitoring/contracts/commenting-and-prioritizing-traces.md).
Expand Down
8 changes: 4 additions & 4 deletions debugger/how-to-use-tenderly-debugger/transaction-overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ As you can see, Tenderly directly display us the correct reason on why the trans
require(returnAmount >= minReturn, “OneSplit: actual return amount is less than minReturn”);
```

We know that when you call 1inch you need to provide the token you want to swap and the amount, the token you want to get and the minimum amount of return you want want to get and the distribution of DEXs that will be used by the swap. In this case we can conclude that the transaction failed because the amount of token returned by the swap is less than the amount of token the transaction specified.
We know that when you call 1inch you need to provide the token you want to swap and the amount, the token you want to get and the minimum amount of return you want to get and the distribution of DEXs that will be used by the swap. In this case we can conclude that the transaction failed because the amount of token returned by the swap is less than the amount of token the transaction specified.

Fortunately, the debugging tool enable us to go deeper to understand how the transaction went step by step before it failed. Let’s look at the first part of the transaction. It describes every calls to different smart contract that were made during the transaction:
Fortunately, the debugging tool enable us to go deeper to understand how the transaction went step by step before it failed. Let’s look at the first part of the transaction. It describes every call to different smart contracts that were made during the transaction:

![](<../../.gitbook/assets/image (18).png>)

Expand All @@ -32,7 +32,7 @@ If you overlay a function you’ll have the option to move to the debugger view

![](<../../.gitbook/assets/image (38).png>)

You can see that once the transaction did the flash loan it first tried to swap the tokens using 1inch. The from token is USDT, the toToken is wrapped Ether: WETH. The smart contract asks to swap 4234.575953 USDT to at least 19 Ether. As you can see Tenderly enable us to decode every parameter of internal calls even if the transaction failed. If you’re interacting with known contract the tool will directly decode the parameters for you otherwise you can upload your own smart contracts to the platform.&#x20;
You can see that once the transaction did the flash loan it first tried to swap the tokens using 1inch. The from token is USDT, the toToken is wrapped Ether: WETH. The smart contract asks to swap 4234.575953 USDT to at least 19 Ether. As you can see Tenderly enables us to decode every parameter of internal calls even if the transaction failed. If you’re interacting with a known contract the tool will directly decode the parameters for you otherwise you can upload your own smart contracts to the platform.&#x20;

If we scroll down enough until the place where the transaction was reverted at the end of the swap call:

Expand All @@ -42,7 +42,7 @@ If we go in the debugger view of this call we’ll be able to get details:

![](<../../.gitbook/assets/image (11).png>)

Thanks to the previous/next button you’ll be able to navigate each steps of the transaction and see that the return amount (one step before) was - 18.953135705079702716:
Thanks to the previous/next button you’ll be able to navigate each step of the transaction and see that the return amount (one step before) was - 18.953135705079702716:

![](<../../.gitbook/assets/image (14) (1).png>)

Expand Down
2 changes: 1 addition & 1 deletion debugger/tenderly-debugger-extension.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ This Chrome (and Brave) extension allows you to open/view transactions from any

\- [Execution Trace](https://docs.tenderly.co/debugger/how-to-use-tenderly-debugger#execution-trace) (Call and Function Traces), with [commenting and prioritization of traces](https://docs.tenderly.co/monitoring/contracts/commenting-and-prioritizing-traces) for easier collaboration.

\- Detailed [Gas Profiler](https://docs.tenderly.co/monitoring/contracts/execution-overview#gas-profiler) with granular breakdown of gas spending down to a single call.
\- Detailed [Gas Profiler](https://docs.tenderly.co/monitoring/contracts/execution-overview#gas-profiler) with a granular breakdown of gas spending down to a single call.

\- [Advanced Search](https://docs.tenderly.co/monitoring/contracts#advanced-trace-search) with filtering across types (Op Code, Function, Variable…).

Expand Down
6 changes: 3 additions & 3 deletions debugger/war-room-aid-kit.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,16 @@ Diagnosing Web3 errors is complex and hard, that’s why development teams have

**Detect issues faster**

If the number of contracts in the transaction is greater than 30 then **Call Trace** will be automatically triggered. You can switch it yourself if you’re only interested in seeing external calls that are usually crucial for the attack. Use **Expression Evaluation** to better understand the whole context of the transaction and simplify debugging process.
If the number of contracts in the transaction is greater than 30 then **Call Trace** will be automatically triggered. You can switch it yourself if you’re only interested in seeing external calls that are usually crucial for the attack. Use **Expression Evaluation** to better understand the whole context of the transaction and simplify the debugging process.

\
**Collaborate and prioritize**

With the new annotation system, you can leave comments on the exact line of code you think caused the issue. Annotations can be used to make team collaboration more efficient or to leave a note for yourself so you don’t forget it later. You can also set a priority for traces you want inspected first.
With the new annotation system, you can leave comments on the exact line of code you think caused the issue. Annotations can be used to make team collaboration more efficient or to leave a note for yourself so you don’t forget it later. You can also set a priority for traces you want to be inspected first.

### Tenderly in War Rooms

Get familiar with the features that can help you go understand and debug you code faster and collaborate with your team:
Get familiar with the features that can help you go understand and debug your code faster and collaborate with your team:

{% embed url="https://blog.tenderly.co/tenderly-war-rooms-the-aid-kit-you-need-in-time-sensitive-scenarios/" %}

Expand Down
4 changes: 2 additions & 2 deletions monitoring/contracts/commenting-and-prioritizing-traces.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# Commenting & Prioritizing Traces

Collaboration can be complex and time-consuming when you go through various contracts and Execution Traces ([**Function Trace and Call Trace**](execution-overview.md)). That is why you can comment on any trace, as well as set priorities.
Collaboration can be complex and time-consuming when you go through various contracts and Execution Traces ([**Function Trace and Call Trace**](execution-overview.md#call-and-function-trace)). That is why you can comment on any trace, as well as set priorities.

When you click on any trace, you will have the comment bar on the bottom of the trace window, which you can open and again collapse on a click, regardless if you are posting the first comment or not. The number of comments on each trace are clearly displayed so you can easily see where the discussions are happening.
When you click on any trace, you will have the comment bar on the bottom of the trace window, which you can open and again collapse on a click, regardless if you are posting the first comment or not. The number of comments on each trace is clearly displayed so you can easily see where the discussions are happening.

![](<../../.gitbook/assets/Screenshot 2022-01-17 at 15.14.56.png>)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

### Exploring Mempool and Filtering Pending Transactions

When exploring the transaction list in the **Transactions** tab (on the left), you can filter the default view and see **Pending Transactions** from the **mempool** as well - either by clicking the checkbox at the top or by clicking on Filter Transactions button in the top right.
When exploring the transaction list in the **Transactions** tab (on the left), you can filter the default view and see **Pending Transactions** from the **mempool** as well - either by clicking the checkbox at the top or by clicking on the Filter Transactions button in the top right.

![](<../../.gitbook/assets/Screenshot 2022-01-25 at 12.21.02.png>)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,7 @@ Simulation: 180.699ms

For additional information, explore:&#x20;

* [Simulation Bundles](simulation-bundles.md) that allow you to simulate several transactions in a bundle such as a sequence of one `approve` and one `transferFrom` transactions.
* [Simulation Bundles](simulation-bundles.md) allow you to simulate several transactions in a bundle such as a sequence of one `approve` and one `transferFrom` transactions.
* [Overriding contract state variables](simulation-api-with-state-overrides.md) showing how to run simulations while overriding contracts' storage slots.
* Advanced usage of Simulation API showing how to simulate on a historical block and extract various portions of simulation results.
* [Using Simulation RPC in dapp UI](../integration-guides/using-simulation-rpc-in-dapp-ui.md) to learn how to display a transaction preview in dapp UI before the user signs it.
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ Whenever the [`createPair` function](https://docs.uniswap.org/contracts/v2/refer
* A new [UniswapV2Pair](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/pair) contract gets created for the token pair (if one doesn’t already exist)
* A [`PairCreated`](https://docs.uniswap.org/contracts/v2/reference/smart-contracts/factory#paircreated) event gets emitted

We can define the trigger to run a Web3 Action each time a transaction hitting a contract calls a function that emits a specific event.
We can define the trigger to run a Web3 Action each time a transaction hits a contract that calls a function that emits a specific event.

In our case, we’ll write the trigger that fires each time a `UniswapV2Factory` contract emits a `PairCreated` event. In other words, whenever a new `UniswapV2Pair` contract is deployed.

Expand Down
4 changes: 2 additions & 2 deletions web3-gateway/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ Using Tenderly Web3 Gateway enables you to modify, consume, and analyze blockcha

The same infrastructure powering the Tenderly development platform and handling demanding read-intensive workloads is available as a plug-and-play service. This infrastructure is powered by custom and innovative architecture: we have deconstructed the monolithic general-purpose node and created a layered Web3 Gateway, providing scalability, high read throughput, and data consistency and availability by design.

The all-in-one Tenderly platform supports [engineering and UX practices](../ethereum-development-workflow.md) throughout the Ethereum dapp development process. It allows developers to accelerate smart contract development by combining debugging tools with observability and infrastructure.
The all-in-one Tenderly platform supports [engineering and UX practices](../ethereum-development-workflow.md) throughout the Ethereum dapp development process. It allows developers to accelerate smart contract development by combining debugging tools with observability and infrastructure.

## Guides and References

Expand All @@ -25,7 +25,7 @@ The RPC URL contains your private access key. You must securely manage the URL a
Here are useful guides to help you get started with Tenderly Web3 Gateway:

* [Quickstart by querying blockchain data through Web3 Gateway](quickstart-query-blockchain.md), using a visual request builder in the Tenderly Dashboard or copying the request as runnable code.
* [Get started with using Simulation RPC](../simulations-and-forks/simulation-rpc.md) capabilities of Web3 Gateway, allowing you to dry-run transaction before sending them on chain.
* [Get started with using Simulation RPC](../simulations-and-forks/simulation-rpc.md) capabilities of Web3 Gateway, allowing you to dry-run transactions before sending them on the chain.
* Browse [brief reference of supported JSON RPC endpoints](references/brief-json-rpc.md), with examples and method invocation scripts.
* Browse [detailed reference of standard JSON RPC endpoints](references/detailed-json-rpc.md) supported by Web3 Gateway, drilling into the structure of request and response objects.
* Browse custom [Tenderly JSON RPC endpoints](references/simulate-json-rpc.md). The custom calls extend the standard Ethereum node functionality, and are found in the `tenderly_` namespace.
Expand Down
2 changes: 1 addition & 1 deletion web3-gateway/pricing.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: >-

# Pricing and usage limits

Web3 Gateway usage is measured with respect to requests your dapp makes to the Web3 Gateway JSON RPC. The requests are divided into three categories, each having different usage footprint, measured in **Tenderly Units** (**TU**): **Read (1 TU)**, **Write (20 TU)**, **Compute (4 TU)** and **Advanced** **Compute (40 TU)**,
Web3 Gateway usage is measured with respect to requests your dapp makes to the Web3 Gateway JSON RPC. The requests are divided into three categories, each having a different usage footprint, measured in **Tenderly Units** (**TU**): **Read (1 TU)**, **Write (20 TU)**, **Compute (4 TU)** and **Advanced** **Compute (40 TU)**,

To calculate the usage over a period of time, you need to multiply the number of requests by the usage footprint of the request category. For example, if your dapp makes 1000 read requests and 100 write requests, the usage is:

Expand Down