> ## 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.

# Ethers.js v6 and v5 - Node RPC Integration

> Connect ethers v6 or v5 to Tenderly Node RPC with JsonRpcProvider over HTTPS or WebSockets to query, trace, and simulate transactions on EVM networks.

[Ethers.js](https://docs.ethers.org/v5/) is a standalone TypeScript/JavaScript library for interacting with the Ethereum blockchain and its ecosystem.

To connect to a network through Node RPC using ethers v6 or v5, use the JSON-RPC provider backed by HTTPS or WebSockets.

## Using JsonRpcProvider (ethers v6 and v5)

<Tabs>
  <Tab title="Ethers 6">
    ```js title="ethers-6/json-rpc-provider.ts" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    // Installation Instructions: https://docs.ethers.io/v6/getting-started
    import { ethers } from "ethers";

    const RPC_URL = `https://mainnet.gateway.tenderly.co/${process.env.TENDERLY_NODE_ACCESS_KEY}`

    async function executeMethod() {
      // Initialize an ethers provider instance
      const provider = new ethers.JsonRpcProvider(RPC_URL);

      const blockNumber = await provider.getBlockNumber();

      console.log(blockNumber);
    }

    await executeMethod();
    ```
  </Tab>

  <Tab title="Ethers 5">
    ```js title="ethers-5/json-rpc-provider.ts" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    // Installation Instructions: https://docs.ethers.io/v5/getting-started
    import { ethers } from "ethers";

    const RPC_URL = `https://mainnet.gateway.tenderly.co/${process.env.TENDERLY_NODE_ACCESS_KEY}`

    async function executeMethod() {
      // Initialize an ethers provider instance
      const provider = new ethers.providers.JsonRpcProvider(RPC_URL);

      const blockNumber = await provider.getBlockNumber();

      console.log(blockNumber);
    }

    await executeMethod();
    ```
  </Tab>
</Tabs>

Once connected, call any standard `eth_*` method or a Tenderly extension like `tenderly_simulateTransaction` through the provider. See the full [JSON-RPC reference](/node-rpc/rpc-reference) for every supported method and network.

## Using WebSocket provider

<Tabs>
  <Tab title="Ethers 6">
    ```js title="ethers-6/wss-provider.ts" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    // Installation Instructions: https://docs.ethers.io/v6/getting-started
    import { ethers } from "ethers";

    const RPC_URL_WSS = `wss://mainnet.gateway.tenderly.co/${process.env.TENDERLY_NODE_ACCESS_KEY}`

    async function executeMethod() {
      // Initialize an ethers provider instance
      const provider = new ethers.WebSocketProvider(RPC_URL_WSS);

      const blockNumber = await provider.getBlockNumber();

      console.log(blockNumber);
    }

    await executeMethod();
    ```
  </Tab>

  <Tab title="Ethers 5">
    ```js title="ethers-5/wss-provider.ts" showLineNumbers theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    // Installation Instructions: https://docs.ethers.io/v5/getting-started
    import { ethers } from "ethers";

    const RPC_URL_WSS = `wss://mainnet.gateway.tenderly.co/${process.env.TENDERLY_NODE_ACCESS_KEY}`

    async function executeMethod() {
      // Initialize an ethers provider instance
      const provider = new ethers.providers.WebSocketProvider(RPC_URL_WSS);

      const blockNumber = await provider.getBlockNumber();

      console.log(blockNumber);
    }

    await executeMethod();
    ```
  </Tab>
</Tabs>
