Tenderly Simulate Asset Changes Snap presents opportunities for wallets, DeFi projects, and DEXs to make transactions more human-readable for their users.
Introduction · Setup · Examples · Contributing
The Tenderly Simulate Asset Changes Snap is an innovative collaboration that merges the robust simulation capabilities of Tenderly with the extensive features of MetaMask Snaps. Our main objective is to augment the transparency and visibility of dApp contract calls, giving users a comprehensive overview before they confirm a transaction.
Upon setting up a transaction, the user is presented with the following data points to assist in making an informed decision:
Feature | Description |
---|---|
Link to Simulation in Tenderly Dashboard | For a more in-depth analysis, users can follow a link to view the full contract simulation on the Tenderly Dashboard. |
Link to Publicly Shared Simulation in Tenderly Dashboard | The shared resources are in read-only mode. The receiver of the URL does not need to have a Tenderly account to view the resources. |
Asset Changes with Dollar Value | To assist in understanding the financial implications of the transaction, users are shown any changes in asset quantities along with their corresponding dollar value. The most commonly used token standards are supported: ERC20 and ERC721. |
Native-asset Balance Changes | This feature enables users to track the modifications in their native-asset balance during the execution of the contract. |
Output Value | The output value provides the result of the contract call, displaying what the contract is set to return. |
Storage Changes | Users can see any alterations made to the contract's storage during execution, allowing them to understand how their contract interacts with the blockchain's state. |
Event Logs | Event logs show all the events that were emitted during the contract's execution, offering valuable insights into the contract's internal operations. |
Call Traces | Call traces provide a step-by-step breakdown of the contract execution, helping users to debug and understand the behavior of their contract. |
By providing these features, our project aims to enhance the user experience, reduce transaction risks, and increase the understanding of blockchain transactions.
Now you can publicly share transactions, simulations, as well as entire runs on DevNets and Forks. When public sharing is enabled, a unique URL is generated that can be distributed to anyone.
The shared resources are in read-only mode. The receiver of the URL does not need to have a Tenderly account to view the resources.
Access to shared resources can be enabled and revoked at any time via the Dashboard or API.
More info about asset changes can be found on our official docs:
- How to Add Transaction Preview to a MetaMask Snap Using Tenderly Simulation API - https://docs.tenderly.co/simulations-and-forks/integration-guides/how-to-add-transaction-preview-to-a-metamask-snap-using-tenderly-simulation-api
- Simulation API - https://docs.tenderly.co/simulations-and-forks/simulation-api
- Asset Changes - https://docs.tenderly.co/simulations-and-forks/asset-changes
- Public Sharing of Transactions, DevNets, Forks, and Simulations - https://blog.tenderly.co/changelog/public-sharing-of-transactions-devnets-forks-and-simulations
Welcome to the setup guide for the Tenderly Simulate Asset Changes Snap. In this tutorial, we will guide you through each step to ensure that you are set up correctly. Follow the instructions below to get started.
If you have the production version of MetaMask installed, you'll need to disable it. Navigate to chrome://extensions
in your browser. Locate MetaMask from the list of your installed extensions, and toggle it off. Alternatively, you can start a new profile in Chrome or Brave, which will allow you to use different extensions for different purposes.
The next step is to install the MetaMask Flask development plugin. This is a specific version of MetaMask designed for development purposes. You can install it from the Chrome Web Store. Simply click the link and follow the instructions to add the plugin to your browser.
To use the Tenderly MetaMask snap, you'll need a Tenderly account. If you don't have one already, visit the Tenderly website and create a new account.
Once you've logged into your Tenderly account, you will need to create an access token
. This is a unique identifier that allows the Tenderly MetaMask snap to interact with your Tenderly account. You can generate it on the following link https://dashboard.tenderly.co/account/authorization.
Now, you'll need to get the code for the app onto your local machine. You can do this by cloning this repository. If you're not sure how to do this, you can find detailed instructions in the GitHub documentation.
After you've cloned the repository, navigate to the root directory of the project in your terminal. Once you're in the correct location, run the command yarn start
. This will start the app, and it should be accessible on http://localhost:8000.
To clone the repository, use the following command:
git clone https://github.com/Tenderly/tenderly-metamask-snap-simulate-asset-changes.git
Then navigate to the root directory of the project:
cd tenderly-metamask-snap-simulate-asset-changes
Start the app with:
yarn start
With the app running, you can now install the Tenderly MetaMask snap. To do this, click on Reconnect button within the app.
Finally, you'll need to add your Tenderly credentials to the snap. Click on Add access token button within the app. You'll need to enter your credentials in the following format: {account_id}@{project_id}@{access_token}
.
That's it! You've successfully set up the Tenderly MetaMask snap. If you encounter any issues during the setup process, don't hesitate to reach out to our support team at [email protected]. We're here to help! 💜
In this section, we provide examples of how the Tenderly MetaMask snap works with both successful and failed transactions. These examples include ERC20 and NFT transfers.
The images below show a successful ERC20 token transfer of 1 USDC to demo.eth
. The first image shows the asset changes, while the second image provides a detailed breakdown of the transaction.
The images below show a successful ERC721 (NFT) token transfer of 1 Crypto Bull to other address. The first image shows the asset changes, while the second image provides a detailed breakdown of the transaction.
The image below shows a failed ERC20 token transfer of 1,000,000 USDC to demo.eth
.
We love our contributors! Here's how you can contribute:
- Open an issue if you believe you've encountered a bug.
- Make a pull request to add new features/make quality-of-life improvements/fix bugs.
- Vanja Paunović (@dzimiks)
The repo is made using @metamask/template-snap-monorepo.