Skip to content

lifinance/tenderly-sim

Repository files navigation

Tenderly simulations

This package makes it easier to interact with Tenderly API for simulating transactions. It exposes functions to gather transaction information, simulate transactions and apply overrides such as faking approvals and token balances.

Integration

In order to use this package you will need to add this line in your package.json using the npm github syntax as follows:

     "@lifi/tenderlysim": "git@github.com:lifinance/tenderly-sim"

Example usage - Simulate a diamond call

  const quote = await http()
    .get<LiFiStep>(
      'https://li.quest/v1/quote?fromChain=POL&fromAmount=1000000&fromToken=USDC&fromAddress=0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0&toChain=POL&toToken=DAI&integrator=postman&slippage=0.03'
    )
    .then((q) => q.data)

  const config: TenderlyConfig = {
    accessKey: '---',
    user: 'LiFi',
    project: 'simulate',
  }

  logger().info(quote)
  const sim = await simulate(config)(
    {
      fromToken: quote.action.fromToken.address,
      toToken: quote.action.toToken.address,
      fromChain: quote.action.fromChainId,
      fromAmount: BigInt(quote.action.fromAmount),
      transactionRequest: quote.transactionRequest!,
    },
    {
      senderTokenBalanceAndApproval: true,
      senderNativeBalance: false,
    }
  )

which results in the following response:

{
  "result": "WORKED",
  "simulation": {
    "id": "191d2b0b-e92f-46fc-809a-3edb089a3dc8",
    "project_id": "f7c3f141-bf2e-4e27-bb24-d4f5c355455a",
    "owner_id": "367f1f0a-a61e-4397-b4d1-1222ffa42777",
    "network_id": "137",
    "block_number": 60500475,
    "transaction_index": 0,
    "from": "0x552008c0f6870c2f77e5cC1d2eb9bdff03e30Ea0",
    "to": "0x1231DEB6f5749EF6cE6943a275A1D3E7486F4EaE",
    "input": "0x4666fc809022dcd5929a421d9df95e5be8c5a00fa845c320b876f6f58ff76398626e8b9700000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000100000000000000000000000000552008c0f6870c2f77e5cc1d2eb9bdff03e30ea00000000000000000000000000000000000000000000000000d76664c066ba77a00000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000007706f73746d616e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002a3078303030303030303030303030303030303030303030303030303030303030303030303030303030300000000000000000000000000000000000000000000000000000000000000000000046b3fdf7b5cde91ac049936bf0bdb12c5d22202e00000000000000000000000046b3fdf7b5cde91ac049936bf0bdb12c5d22202e0000000000000000000000003c499c542cef5e3811e1192ce70d8cc03d5c33590000000000000000000000008f3cf7ad23cd3cadbd9735aff958023239c6a06300000000000000000000000000000000000000000000000000000000000f424000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000001442646478b0000000000000000000000003c499c542cef5e3811e1192ce70d8cc03d5c335900000000000000000000000000000000000000000000000000000000000f42400000000000000000000000008f3cf7ad23cd3cadbd9735aff958023239c6a0630000000000000000000000000000000000000000000000000d76664c066ba77a0000000000000000000000001231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000042023c499c542cef5e3811e1192ce70d8cc03d5c335901ffff01bc8f3da0bd42e1f2509cd8671ce7c7e5f7fd39c8011231deb6f5749ef6ce6943a275a1d3e7486f4eae00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
    "gas": 640103,
    "gas_price": "33000000036",
    "gas_used": 368375,
    "value": "0",
    "method": "swapTokensSingleV3ERC20ToERC20",
    "status": true,
    "access_list": null,
    "queue_origin": "",
    "block_header": {
      "number": "0x39b29fb",
      "hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "stateRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "parentHash": "0x5a70a6bf770a0c8cdfb96bd5f0555e9f98a33e73afaeb3d36415b7c995392c62",
      "sha3Uncles": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "transactionsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "receiptsRoot": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
      "timestamp": "0x66ba08fc",
      "difficulty": "0x17",
      "gasLimit": "0x1c78737",
      "gasUsed": "0x79aa04",
      "miner": "0x0000000000000000000000000000000000000000",
      "extraData": "0xd78301030683626f7288676f312e32322e36856c696e75780000000000000000f87580f872c0c0c0c0c0c0c103c0c0c108c180c0c0c0c0c10cc101c110c0c111c0c0c115c116c113c117c119c11ac11bc11cc11dc118c11fc120c121c0c123c10fc0c122c127c0c129c0c101c0c12dc12ec0c128c131c0c133c20a34c0c0c137c138c0c0c0c0c125c135c13fc0c0c20c35c0c0c0c132c0fefbb33b097ed70b4eb69b2c51eac3273421ffb0892e7a746ea24b1a350da78348db1d29b0371bec11071dcda93d033d27a7aed08e2d5900d6a0d0b0729fc3bf00",
      "mixHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
      "nonce": "0x0000000000000000",
      "baseFeePerGas": "0x1",
      "size": "0x0",
      "totalDifficulty": "0x0",
      "uncles": null,
      "transactions": null
    },
    "state_overrides": {
      "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359": {
        "storage": {
          "0x1b97ad081d0128f22397aee12eada728ac24d30fb68803f99829a39e3486bf47": "0x00000000000000000000000000000000000000000000000000000000000f4240",
          "0xb26e7f10e47fab21d4150c3b04278a58e182f70019f420f00f371a8fb881fe15": "0x00000000000000000000000000000000000000000000000000000000000f4240"
        }
      }
    },
    "deposit_tx": false,
    "system_tx": false,
    "nonce": 4852,
    "addresses": [
      "0x552008c0f6870c2f77e5cc1d2eb9bdff03e30ea0",
      "0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae",
      "0x31a9b1835864706af10103b31ea2b79bdb995f5f",
      "0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
      "0x235ae97b28466db30469b89a9fe4cff0659f82cb",
      "0x46b3fdf7b5cde91ac049936bf0bdb12c5d22202e",
      "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",
      "0x490e379c9cff64944be82b849f8fd5972c7999a7",
      "0xbc8f3da0bd42e1f2509cd8671ce7c7e5f7fd39c8",
      "0x6394c365fd17fb316c34ba60610067abdf88a7b1",
      "0x411b0facc3489691f28ad58c47006af5e3ab3a28"
    ],
    "contract_ids": [
      "eth:137:0x552008c0f6870c2f77e5cc1d2eb9bdff03e30ea0",
      "eth:137:0x1231deb6f5749ef6ce6943a275a1d3e7486f4eae",
      "eth:137:0x31a9b1835864706af10103b31ea2b79bdb995f5f",
      "eth:137:0x3c499c542cef5e3811e1192ce70d8cc03d5c3359",
      "eth:137:0x235ae97b28466db30469b89a9fe4cff0659f82cb",
      "eth:137:0x46b3fdf7b5cde91ac049936bf0bdb12c5d22202e",
      "eth:137:0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",
      "eth:137:0x490e379c9cff64944be82b849f8fd5972c7999a7",
      "eth:137:0xbc8f3da0bd42e1f2509cd8671ce7c7e5f7fd39c8",
      "eth:137:0x6394c365fd17fb316c34ba60610067abdf88a7b1",
      "eth:137:0x411b0facc3489691f28ad58c47006af5e3ab3a28"
    ],
    "shared": false,
    "created_at": "2024-08-12T13:07:09.414383789Z"
  },
  "link": "https://dashboard.tenderly.co/LiFi/simulate/simulator/191d2b0b-e92f-46fc-809a-3edb089a3dc8"
}

Development

Update supported Chains

The supported chains have to be matched between the chains Tenderly supports and the chain LI.FI has types for.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published