# @flashbots/mev-share-client 中文文档

规范地址：https://npmcn.com/package/%40flashbots/mev-share-client/

版本：0\.7\.13
npm 元数据更新时间：2024-05-08T19:11:22.749Z
中文译文更新时间：2026-11-14T21:42:02.629Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40flashbots/mev-share-client
原文对照：https://npmcn.com/package/%40flashbots/mev-share-client/?lang=original
项目主页：https://github.com/flashbots/mev-share-client-ts#readme
源码仓库：https://github.com/flashbots/mev-share-client-ts

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：173 kB，89 个文件
- 模块格式：CommonJS
- TypeScript 类型：包内自带
- 运行依赖：3 个
- peer 依赖：ethers ^6\.5\.1
- 首次发布：2023-07-08T22:24:08.080Z
- 最新版本发布：2024-05-08T19:11:22.478Z
- 近 30 天下载量：2792（2026-10-15 至 2026-11-13，npm 官方下载统计）
- 已发布版本数：8（近 12 个月 0 个）

## 中文简介

Flashbots mev-share的MEV-Share客户端库.

## 安装

```sh
npm install @flashbots/mev-share-client
```

也可以使用：`pnpm add @flashbots/mev-share-client`、`yarn add @flashbots/mev-share-client`、`bun add @flashbots/mev-share-client`

## README

# Flashbots MEV - 共享客户端

用 Typescript 书写的 MEV-Share 客户端库 .

依据 [MEV- 共享光谱](https://github.com/flashbots/mev-share)。 。 。 .

## 快速启动

从 npm 安装 :

```sh
yarn add @flashbots/mev-share-client
# or
npm i @flashbots/mev-share-client
```

或者,从源头复制库并构建:

```sh
git clone https://github.com/flashbots/mev-share-client-ts
cd mev-share-client-ts
yarn install && yarn build
```

```sh
# in your project, assuming it has the same parent directory as mev-share-client-ts
yarn add ../mev-share-client-ts
```

### 在您的项目中使用 mev- share- 客户端

> :警告:变量表示于 `ALL_CAPS` 是占位符;代码不编译. [实例/](https://npmcn.com/package/%40flashbots/mev-share-client/#readme-examples) 包含可编译的演示.

在你的项目中:

```typescript
import { Wallet, JsonRpcProvider } from "ethers"
import MevShareClient, {
    BundleParams,
    HintPreferences,
    IPendingBundle,
    IPendingTransaction,
    TransactionOptions
} from "@flashbots/mev-share-client"

const provider = new JsonRpcProvider(RPC_URL)
const authSigner = new Wallet(FB_REPUTATION_PRIVATE_KEY, provider)
```

这个 `MevShareClient` 类有Flashbots支持的网络的内置初始化器.

#### 连接到 Ethereum 主网

```typescript
const mevshare = MevShareClient.useEthereumMainnet(authSigner)
```

#### 连接到 Etheryum Goerli

```typescript
const mevshare = MevShareClient.useEthereumGoerli(authSigner)
```

#### 连接到以太提供者或链式ID

Flashbot支持的网络有内置预设. 如果更方便的话,你可以使用一个 `chainId` (或乙醚.js) `Network` 对象,该对象有一个 `chainId` (第1款).

```typescript
import { JsonRpcProvider, Wallet } from "ethers" // ethers v6

/** connects to Flashbots MEV-Share node on goerli */
const provider = new JsonRpcProvider("http://localhost:8545", {chainId: 5, name: "goerli"})
const authSigner = new Wallet("0xac0974bec39a17e36ba4a6b4d238ff944bacb478cbed5efcae784d7bf4f2ff80")
    .connect(provider)

const mevshare = MevShareClient.fromNetwork(authSigner, provider._network)

// manually with a chainId:
const mevshare = MevShareClient.fromNetwork(authSigner, {chainId: 5})
```

#### 连接到自定义网络

要使用自定义网络参数, 您可以即时切换新参数 `MevShareClient` 直接出现。 这个例子是客户端用来连接主网的:

```typescript
const mevshare = new MevShareClient(authSigner, {
    name: "mainnet",
    chainId: 1,
    streamUrl: "https://mev-share.flashbots.net",
    apiUrl: "https://relay.flashbots.net"
})
```

见 `MevShareNetwork` 内 [src/ api/ 接口](https://npmcn.com/src/api/interfaces.ts) 更多细节.

### 实例

_[源代码](https://npmcn.com/package/%40flashbots/mev-share-client/src/examples/)_

> : 信息 来源:实例要求a `.env` 文件(或您直接用相应的变量填充环境).

```sh
cd src/examples
cp .env.example .env
vim .env
```

#### 发送带有提示的 tx

此示例从 SENDER PRIVATE KEY 指定的账户中向 Goerli 上的 Flashbots MEV-Share 节点发送交易,并以六进制字符串作为调用数据 .

```sh
yarn example.tx
```

#### 返回运行待决 tx

这个例子观察了 mev-share 流端待处理的 mev-share 交易,并试图备份全部交易. 此示例一直运行到一个后运行被包含在链上.

```sh
yarn example.backrun
```

#### 查询事件历史

这个示例查询事件历史,从开始,直到找到共享交易和日志的事件.

```sh
yarn example.history
```

## 使用量

见 [src/api/interfaces.ts (中文(简体) )](https://npmcn.com/package/%40flashbots/mev-share-client/src/api/interfaces.ts) 用于界面定义.

### `on`

使用 `on` 开始听关于Mev-share的事件。 函数登记在检测出新事件时调用提供的回调 .

```typescript
const handler = mevshare.on("transaction", (tx: IPendingTransaction) => {
    // handle pending tx
})

// ... before terminating program
handler.close()
```

### `sendTransaction`

向 Flashbots MEV-Share 节点发送带有指定提示参数的私人交易.

```typescript
const wallet = new Wallet(PRIVATE_KEY)
const tx = {
    to: "0xfb000000387627910184cc42fc92995913806333",
    value: BigInt(1e13 * 275), // price of a beer if ETH is $2000
    data: "0x646f637320626179626565652121",
    gasLimit: 42000,
    maxFeePerGas: BigInt(1e9) * BigInt(42), // 42 gwei / gas
    maxPriorityFeePerGas: BigInt(1e9) * BigInt(2), // 2 gwei / gas
    chainId: 5,
    type: 2,
}

// privacy & inclusion settings
const shareTxParams: TransactionOptions = {
    hints: {
        logs: true,
        calldata: false,
        functionSelector: true,
        contractAddress: true,
    },
    maxBlockNumber: undefined,
    builders: ["flashbots"]
}

const signedTx = await wallet.signTransaction(tx)
await mevshare.sendTransaction(SIGNED_TX, shareTxParams)
```

### `sendBundle`

发送捆绑; 一系列带有参数的交易来指定包含条件和MEV回扣. 交易放在 `body` 带有折叠符的参数,以表示它们是新签的交易还是事件流的待决交易.

见 [MEV - 共享文档](https://github.com/flashbots/mev-share/blob/main/specs/bundles/v0.1.md) 用于详细描述这些参数.

```typescript
const targetBlock = 1 + await provider.getBlockNumber()
const bundleParams: BundleParams = {
    inclusion: {
        block: targetBlock,
    },
    body: [
        {hash: TX_HASH_FROM_EVENT_STREAM},
        {tx: SIGNED_TX, canRevert: false},
    ],
}
await mevshare.sendBundle(bundleParams)
```

包起来 _仅限_ 包含签名交易的提示, 通过设置 `privacy` 参数 :

```typescript
const targetBlock = 1 + await provider.getBlockNumber()
const bundleParams: BundleParams = {
    inclusion: {
        block: targetBlock,
        maxBlock: targetBlock + 5, // allow bundle to land in next 5 blocks
    },
    body: [
        {tx: await wallet.signTransaction(TX1), canRevert: false},
        {tx: await wallet.signTransaction(TX2), canRevert: false},
    ],
    privacy: {
        hints: {
            txHash: true,
            calldata: true,
            logs: true,
            functionSelector: true,
            contractAddress: true,
        },
    }
}
const backrunResult = await mevshare.sendBundle(bundleParams)
```

### `simulateBundle`

模拟一捆. 接受修改块头以进行模拟的选项.

```typescript
const bundle: BundleParams = {
    inclusion: {
        block: TARGET_BLOCK,
        maxBlock: TARGET_BLOCK + 3,
    },
    body: [
        {hash: "0xTARGET_TX_HASH"},
        {tx: "0xSIGNED_BACKRUN_TX", canRevert: false}
    ],
    // ...
}

// ...
// assume you sent the bundle and it didn't land, and you want to see if it would have landed in the previous block, but need the tx to think it's in the target block

const simBundleOptions: SimBundleOptions = {
    parentBlock: TARGET_BLOCK - 1,
    blockNumber: TARGET_BLOCK,
    /*
    Set any of these (block header) fields to override their respective values in the simulation context: 
    */
    // coinbase: string,
    // timestamp: number,
    // gasLimit: number,
    // baseFee: bigint,
    // timeout: number,
}

const simResult = await mevshare.simulateBundle(bundle, simBundleOptions)
```

此示例使用 `parentBlock`,但压倒了该州的 `blockNumber` 数值。 设置更多字段 `SimBundleOptions` 当测试有特定标准必须达到的智能合同时,例如块是一定数量,或者某个特定的时标已经通过,这些合同是有用的.

### `getEventHistoryInfo`

获取关于事件历史终点的信息以用于 [`getEventHistory`](https://npmcn.com/package/%40flashbots/mev-share-client/#readme-geteventhistory)。 。 。 .

示例

```typescript
const info = await mevshare.getEventHistoryInfo()
console.log(info)
```

返回这样的东西 :

```txt
{
  count: 56934,
  minBlock: 9091377,
  maxBlock: 9190024,
  minTimestamp: 1685452445,
  maxTimestamp: 1686943324,
  maxLimit: 500
}
```

### `getEventHistory`

获取历史事件流数据.

利用我们的数据 [`getEventHistoryInfo`](https://npmcn.com/package/%40flashbots/mev-share-client/#readme-geteventhistoryinfo) 我们可以从头看事情 数据是被标注的,所以要读出所有的数据,你就必须通过它多次拨打来进行去除.

```typescript
const info = await mevshare.getEventHistoryInfo()

// read every event
for (let i = 0; i < Math.ceil(info.count / info.maxLimit); i++) {
    const events = await mevshare.getEventHistory({
        limit: info.maxLimit,
        offset: i * info.maxLimit,
        blockStart: info.minBlock,
    })
    console.log(events)
}
```

您也可以通过时间戳过滤事件 :

```typescript
const events = await mevshare.getEventHistory({
    limit: info.maxLimit,
    offset: i * info.maxLimit,
    timestampStart: 1686942023,
})
```

## 常见问题

### @flashbots/mev-share-client 是什么？

Flashbots mev-share的MEV-Share客户端库\.

### 如何安装 @flashbots/mev-share-client？

在项目目录运行 npm install @flashbots/mev-share-client，或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖：ethers（^6\.5\.1）。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖，Yarn 需要手动安装。

### @flashbots/mev-share-client 支持 TypeScript 吗？

支持。包内自带 TypeScript 类型声明（package\.json 声明了 types 入口），安装后即可获得类型提示，无需再安装 @types 包。

### @flashbots/mev-share-client 支持 ESM 还是 CommonJS？

以 CommonJS 形式发布，可以直接 require\(\)；在 ES Module 项目中也可以用 import 引入（Node\.js 会把 module\.exports 作为默认导出）。

### @flashbots/mev-share-client 可以商用吗？

@flashbots/mev-share-client 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @flashbots/mev-share-client 的下载量有多少？

根据 npm 官方下载统计，@flashbots/mev-share-client 在 2026/10/15 – 2026/11/13 这 30 天内被下载 2,792 次，日均约 93 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入，适合横向比较热度，不能直接等同于使用人数。

### @flashbots/mev-share-client 还在维护吗？

最新版本 0\.7\.13 发布于 2024/05/09（2 年前）；至今共发布 8 个版本，其中过去 12 个月发布了 0 个；首次发布于 2023/07/09。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

