# @fireblocks/fireblocks-web3-provider

> EIP-1193 Compatible Ethereum provider for Fireblocks

Latest version **1.5.0** (published 2026-08-25) · MIT license · 0 weekly downloads

## Install

```sh
npm install @fireblocks/fireblocks-web3-provider
pnpm add @fireblocks/fireblocks-web3-provider
yarn add @fireblocks/fireblocks-web3-provider
bun add @fireblocks/fireblocks-web3-provider
```

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; no vulnerabilities; has provenance; recently updated; high maintenance score; high quality score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 1.5.0 |
| Published | 2026-08-25 |
| First published | 2022-08-06 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 7 |
| Unpacked size | 146.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 47 |
| Author | Fireblocks |
| Maintainers | iananiev-fb, dx_fireblocks, eranabir, yoavbz-fireblocks, sweintraub, reutz-fireblocks, hedi_fb |
| Keywords | ethereum, smart-contracts, wallet, fireblocks, jsonrpc, web3, crypto, cryptocurrency, dapp |

## Links

- npm: https://www.npmjs.com/package/@fireblocks/fireblocks-web3-provider
- Repository: https://github.com/fireblocks/fireblocks-web3-provider
- Homepage: https://github.com/fireblocks/fireblocks-web3-provider#readme
- Issues: https://github.com/fireblocks/fireblocks-web3-provider/issues
- npm.io page: https://npm.io/package/@fireblocks/fireblocks-web3-provider

## Dependencies (7)

- [axios](https://npm.io/package/axios.md) ^1.7.8
- [debug](https://npm.io/package/debug.md) ^4.3.7
- [ethers](https://npm.io/package/ethers.md) ^6.13.4
- [https-proxy-agent](https://npm.io/package/https-proxy-agent.md) ^7.0.5
- [@fireblocks/ts-sdk](https://npm.io/package/@fireblocks/ts-sdk.md) ^17.0.0
- [web3-providers-http](https://npm.io/package/web3-providers-http.md) 1.8.0
- [@ethersproject/units](https://npm.io/package/@ethersproject/units.md) ^5.7.0

## Alternatives

- [@mapbox/jsonlint-lines-primitives](https://npm.io/package/@mapbox/jsonlint-lines-primitives.md) — 5.3M weekly downloads
- [reftools](https://npm.io/package/reftools.md) — 3.5M weekly downloads
- [@hey-api/openapi-ts](https://npm.io/package/@hey-api/openapi-ts.md) — 3.5M weekly downloads
- [@mapbox/geojson-rewind](https://npm.io/package/@mapbox/geojson-rewind.md) — 2.4M weekly downloads
- [turbo-stream](https://npm.io/package/turbo-stream.md) — 1.7M weekly downloads

## Recent versions

- 1.5.0 (latest) — 2026-08-25
- 1.4.0 — 2026-06-02
- 1.3.19 — 2025-12-03
- 1.3.18 — 2025-09-10
- 1.3.17 — 2025-05-13
- 1.3.16 — 2025-05-07
- 1.3.15 — 2025-01-15
- 1.3.14 — 2024-12-10
- 1.3.13 — 2024-12-10
- 1.3.12 — 2024-11-12
- 1.3.11 — 2024-10-29
- 1.3.10 — 2024-10-07
- 1.3.9 — 2024-09-26
- 1.3.8 — 2024-07-29
- 1.3.7 — 2024-06-25
- … 33 more at https://npm.io/package/@fireblocks/fireblocks-web3-provider/versions

## README

<p align="center">
  <img src="./logo.svg" width="350" alt="accessibility text">
</p>
<div align="center">

  [![npm version](https://badge.fury.io/js/@fireblocks%2Ffireblocks-web3-provider.svg)](https://badge.fury.io/js/@fireblocks%2Ffireblocks-web3-provider) </br>
  [<ins>Fireblocks Web3 Provider Documentation</ins>](https://developers.fireblocks.com/docs/ethereum-development)
</div>


# Fireblocks Web3 Provider

Fireblocks [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) Compatible Ethereum JavaScript Provider

## Installation
```bash
npm install @fireblocks/fireblocks-web3-provider
```

## Setup
```js
import { FireblocksWeb3Provider, ChainId, ApiBaseUrl } from "@fireblocks/fireblocks-web3-provider";

const eip1193Provider = new FireblocksWeb3Provider({
    // apiBaseUrl: ApiBaseUrl.Sandbox // If using a sandbox workspace
    privateKey: process.env.FIREBLOCKS_API_PRIVATE_KEY_PATH,
    apiKey: process.env.FIREBLOCKS_API_KEY,
    vaultAccountIds: process.env.FIREBLOCKS_VAULT_ACCOUNT_IDS,
    chainId: ChainId.GOERLI,

    logTransactionStatusChanges: true, // Verbose logging
})
```

## Usage with ethers.js
```sh
npm install ethers
```

```js
import * as ethers from "ethers"

const provider = new ethers.BrowserProvider(eip1193Provider); 

// Or like this if you're using ethers v5:
// const provider = new ethers.providers.Web3Provider(eip1193Provider); 
```

## Usage with web3.js
```sh
npm install web3
```

```js
import Web3 from "web3";

const web3 = new Web3(eip1193Provider);
```

## API Documentation

### new FireblocksWeb3Provider(config)

- `config` [FireblocksProviderConfig](#FireblocksProviderConfig)

This class is an [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) Compatible Ethereum JavaScript Provider powered by the [Fireblocks API](https://docs.fireblocks.com/api/)

### FireblocksProviderConfig

```ts
type FireblocksProviderConfig = {
  // ------------- Mandatory fields -------------
  /** 
   * Learn more about creating API users here: 
   * https://developers.fireblocks.com/docs/quickstart#api-user-creation
   */

  /** 
   * Fireblocks API key
   */
  apiKey: string,

  /** 
   * Fireblocks API private key for signing requests
   */
  privateKey: string,

  // Either chainId or rpcUrl must be provided
  /** 
   * If not provided, it is inferred from the rpcUrl 
   */
  chainId?: ChainId,
  /** 
   * If not provided, it is inferred from the chainId 
   */
  rpcUrl?: string,

  // ------------- Optional fields --------------

  /** 
   * By default, the first 20 vault accounts are dynamically loaded from the Fireblocks API
   * It is recommended to provide the vault account ids explicitly because it helps avoid unnecessary API calls
   */
  vaultAccountIds?: number | number[] | string | string[],
  /** 
   * By default, it uses the Fireblocks API production endpoint
   * When using a sandbox workspace, you should provide the ApiBaseUrl.Sandbox value
   */
  apiBaseUrl?: ApiBaseUrl | string,
  /**
   * By default, the fallback fee level is set to FeeLevel.MEDIUM
   */
  fallbackFeeLevel?: FeeLevel,
  /**
   * By default, the note is set to "Created by Fireblocks Web3 Provider"
   */
  note?: string,
  /**
   * By default, the polling interval is set to 1000ms (1 second)
   * It is the interval in which the Fireblocks API is queried to check the status of transactions
   */
  pollingInterval?: number,
  /**
   * By default, it is assumed that one time addresses are enabled in your workspace
   * If they're not, set this to false
   */
  oneTimeAddressesEnabled?: boolean,
  /**
   * By default, no externalTxId is associated with transactions
   * If you want to set one, you can either provide a function that returns a string, or provide a string directly
   */
  externalTxId?: (() => string) | string,
  /**
   * If you want to prepend an additional product string to the User-Agent header, you can provide it here
   */
  userAgent?: string,
  /**
   * If you are using a private/custom EVM chain, you can provide its Fireblocks assetId here
   */
  assetId?: string,
  /**
   * Default: false
   * By setting to true, every transaction status change will be logged to the console
   * Same as setting env var `DEBUG=fireblocks-web3-provider:status`
   */
  logTransactionStatusChanges?: boolean,
  /**
   * Default: false
   * By setting to true, every request and response processed by the provider will be logged to the console
   * Same as setting env var `DEBUG=fireblocks-web3-provider:req_res`
   */
  logRequestsAndResponses?: boolean,
  /**
   * Default: true
   * By setting to true, every failed transaction will print additional information
   * helpful for debugging, such as a link to simulate the transaction on Tenderly
   * Same as setting env var `DEBUG=fireblocks-web3-provider:error`
   */
  enhancedErrorHandling?: boolean,
  /**
   * Proxy path in the format of `http(s)://user:pass@server`
   */
  proxyPath?: string
}
```

---
_Source: https://npm.io/package/@fireblocks/fireblocks-web3-provider · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
