> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Smart Contracts

> Add smart contracts to a Tenderly project, inspect their source, transactions, and state, look up verified contracts, and detect proxies automatically.

Learn how to add a smart contract to a project and keep track of its transactions in the Dashboard. When you add a contract, you'll see a list of all historical transactions (direct and internal) linked to that contract.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-regular-header-info.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=edd72fada27905ddc21577b9e46d22fc" alt="Contract page header info and tabs" width="1394" height="1540" data-path="images/developer-explorer/contracts/contract-regular-header-info.webp" />

## How to add a contract to a project

1. Navigate to **Contracts** in the side menu.
2. Click **Add Contract**.
3. Enter the contract address, select its deployment network, assign a name, and click **Add Contract**.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/add-contract.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=4fa55c8ce085d8352c16a9338d938481" alt="Adding a contract" width="600" height="520" data-path="images/developer-explorer/contracts/add-contract.webp" />

Try adding one of these contracts to your project to get started. Open the contract in Tenderly, click the **Add to Project** button and add it to an existing project. Learn [how to create projects in Tenderly here](/platform/account/projects/overview).

* [Uniswap Router](https://www.tdly.co/contract/1/0x1cf9cbe70a84137c696f98587a9b06f7fa2b71b4): `0x1cf9cbe70a84137c696f98587a9b06f7fa2b71b4`
* [veCurveVault proxy](https://www.tdly.co/contract/1/0xc5bddf9843308380375a611c18b50fb9341f502a): `0xc5bddf9843308380375a611c18b50fb9341f502a`

## Looking up any verified contract

The Dashboard's search functionality allows you to locate any verified contract deployed on any of the [98 supported networks](/platform/supported-networks), whether or not it's in one of your projects.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/search-contract.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=fabfbfb39d3ed21ea7532d143a3b1b57" alt="Searching for a contract" width="640" height="300" data-path="images/developer-explorer/contracts/search-contract.webp" />

1. Paste the contract's address or name in the top menu search bar.
2. Select the contract from the search results.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-public-search-results.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=977a9696eec549d54b97414c8bb3d9ab" alt="Search results dropdown" width="640" height="592" data-path="images/developer-explorer/contracts/contract-public-search-results.webp" />

This opens the same contract details page described below, reached via a `/contract/<network>/<address>` URL instead of a project path. A handful of project-only elements are missing since the contract isn't in a project yet: there's no **Tags** field, the `...` menu only has **View in Public Explorer**, and the header shows **Add to Project** instead of **Convert to Proxy**.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-public-lookup-header.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=2003d178a2cd40cd67e99438511c1283" alt="Public contract lookup header" width="1594" height="948" data-path="images/developer-explorer/contracts/contract-public-lookup-header.webp" />

To add the contract to a project, click **Add to Project** and choose your target project.

## Contract details

Opening a contract, whether from your project's **Contracts** page or from a lookup, shows a header info panel followed by six tabs: **Transactions**, **Simulations**, **Source code**, **Read/Write**, **Events**, and **Multichain assets**.

The header info panel shows the network, contract type (`Contract` or `Proxy Contract`), ETH balance and value, deployment address and transaction, deployment timestamp, tags, verification status and type, optimizations and optimization runs, Solidity version, compiler, and EVM version. The `...` menu next to the contract name has **View in Public Explorer**, [**Hide from transaction listing**](#hide-a-contract-from-the-transaction-listing), and **Remove contract**.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-header-menu.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=c7a73aba180f5be859f2253150928da3" alt="Contract header menu" width="1600" height="1000" data-path="images/developer-explorer/contracts/contract-header-menu.webp" />

### Transactions

Lists every direct and internal transaction involving the contract, with the same filters as a wallet's transaction list: **All**, **Direct**, **Internal**, **Token asset transfers**, and **NFT asset transfers**, plus Columns and Filters controls.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-transactions-filters.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=e4b40333b24d17f9ea986ecc1a68bc8a" alt="Transactions tab with filters" width="1346" height="36" data-path="images/developer-explorer/contracts/contract-transactions-filters.webp" />

### Simulations

Shows the contract's simulated transaction history, and lets you launch a new [simulation](/simulator-ui/overview) directly against the contract.

### Source code

Shows the verified source across six sub-tabs: **Source Code**, **Compiler Settings**, **Contract ABI**, **Contract Creation Code**, **Deployed Bytecode**, and **Contract Source Map**.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-source-code-tabs.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=707906246c7f70b32702992075f9bacf" alt="Source code tab with sub-tabs" width="1346" height="543" data-path="images/developer-explorer/contracts/contract-source-code-tabs.webp" />

### Read/Write

Lists every contract function, grouped into **Read** and **Write** sub-tabs, with a Connect Wallet button, a function search box, and per-function actions: run it, copy as cURL, read at a specific block, open in Simulator, share, or view in source.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-regular-read-write-tab.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=f63307b24fed285c4a8186446a767315" alt="Read/Write tab" width="1346" height="1374" data-path="images/developer-explorer/contracts/contract-regular-read-write-tab.webp" />

Proxy contracts get two additional sub-tabs, **Read as Proxy** and **Write as Proxy**, which call the functions through the proxy's delegated implementation. See [Proxy contracts](#proxy-contracts) below.

### Events

Lists decoded events emitted by the contract, with an event type filter, a block range filter, a "Hide zero values" switch, and an expand-all option.

### Multichain assets

Shows the contract's token and NFT balances across networks, with Token/NFT sub-tabs, a group-by option, a "Hide zero balances" switch, and a search box.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-multichain-assets-tab.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=c535daf30cfd1e65760a9cdb0ad3aacd" alt="Multichain assets tab" width="1346" height="1193" data-path="images/developer-explorer/contracts/contract-multichain-assets-tab.webp" />

## Adding tags to contracts

When working with multiple contracts, you need a way to keep them organized. This is where tags come in handy. You can add a tag to a contract by clicking the **Add Tag** link.

Tags also enable you to monitor multiple contracts or wallets grouped under a single tag using Alerts.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/tag-contract.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=35306b4c867042f3890955ced7ca0bdc" alt="Tagging contracts" width="600" height="265" data-path="images/developer-explorer/contracts/tag-contract.webp" />

## Monitoring contracts with Alerts

Click **Create Alert** from a contract's page to set up an [Alert](/monitoring/alerts/introduction) for it. See the [Alerting Quickstart Guide](/monitoring/alerts/tutorials/quickstart) for the full setup flow and [Alert Types, Targets, and Parameters](/monitoring/alerts/types) for the available triggers.

Alerts are evaluated only for transactions involving your project's contracts and wallets, so the address an Alert targets must be added to the project first.

## Hide a contract from the transaction listing

Every contract you add to a project has its transactions included in the project-wide [Transactions view](/developer-explorer/transaction-listing). For high-traffic contracts added only as Alert targets, such as an ERC-20 token contract you monitor for transfers, this can make the Transactions view noisy.

To exclude a contract's transactions from the project-wide view, open the contract, click the `...` menu in the upper right corner, and select **Hide from transaction listing**. To include it again, select **Show in transaction listing** from the same menu. You can also hide or show multiple contracts at once by selecting them on the project's **Contracts** page and using the **Disable transaction listing** and **Enable transaction listing** toolbar actions.

Hiding a contract only affects the project-wide Transactions view:

* The contract's own **Transactions** tab still lists all of its transactions.
* [Alerts](/monitoring/alerts/introduction) and [Web3 Actions](/monitoring/web3-actions/introduction) targeting the contract keep working; hiding has no effect on monitoring.

Wallets have the same option, labeled **Hide Wallet** in the wallet's `...` menu (see [Wallets](/developer-explorer/wallets)).

## Proxy contracts

Tenderly detects [EIP-1967](https://eips.ethereum.org/EIPS/eip-1967) and [EIP-1167](https://eips.ethereum.org/EIPS/eip-1167) proxies automatically. A detected proxy shows `Type: Proxy Contract` and an **Implementation** field with the current delegate address.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-proxy-header-single-implementation.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=759127492935bd9424d5fccf0b97a9e9" alt="Proxy contract header, single implementation" width="1394" height="1568" data-path="images/developer-explorer/contracts/contract-proxy-header-single-implementation.webp" />

When Tenderly has recorded more than one implementation address over time, an icon next to the Implementation field opens a **Proxy Contract Implementations** dialog listing the current implementation followed by prior ones, most recent first.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-proxy-header-multi-implementation.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=d9b52252a13c31b5814900546a7e6ab6" alt="Proxy contract header with implementation history icon" width="1394" height="1568" data-path="images/developer-explorer/contracts/contract-proxy-header-multi-implementation.webp" />

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-proxy-implementation-history.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=321dd0cced573a707fbe333a59f81658" alt="Proxy Contract Implementations dialog" width="600" height="114" data-path="images/developer-explorer/contracts/contract-proxy-implementation-history.webp" />

Proxy contracts also get **Read as Proxy** and **Write as Proxy** sub-tabs on the Read/Write tab, calling functions through the delegated implementation instead of the proxy itself.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-proxy-read-write-tab.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=66aecefda47ab403ed934eb7ea008bf2" alt="Read as Proxy / Write as Proxy tabs" width="1346" height="948" data-path="images/developer-explorer/contracts/contract-proxy-read-write-tab.webp" />

### Non-standard proxy implementations

For non-standard solutions, you'll need to manually convert the contract to a proxy.

Click the **Convert to Proxy** button on the top right of the contract's page.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-proxy-button.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=1c21f6b8954ec3d8d08bfe99812c353f" alt="Contract proxy button" width="1375" height="45" data-path="images/developer-explorer/contracts/contract-proxy-button.webp" />

**Set the storage slot** containing the implementation address, or **pick a view function** that returns the implementation address.

<img src="https://mintcdn.com/tenderly/czz1ot21Icudd1fI/images/developer-explorer/contracts/contract-proxy-modal.webp?fit=max&auto=format&n=czz1ot21Icudd1fI&q=85&s=0bf80c3b2659edde429a8deef092a438" alt="Contract proxy modal" width="600" height="480" data-path="images/developer-explorer/contracts/contract-proxy-modal.webp" />


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.