# @cowprotocol/contracts 中文文档

规范地址：https://npmcn.com/package/%40cowprotocol/contracts/

版本：1\.8\.0
npm 元数据更新时间：2025-05-13T08:55:26.387Z
中文译文更新时间：2026-11-10T21:07:50.546Z
软件包许可：LGPL-3\.0-or-later

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

原始 npm 页面：https://www.npmjs.com/package/%40cowprotocol/contracts
原文对照：https://npmcn.com/package/%40cowprotocol/contracts/?lang=original
源码仓库：https://github.com/cowprotocol/contracts

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

- 包体积（解压后）：4.5 MB，291 个文件
- 模块格式：ESM + CJS
- TypeScript 类型：包内自带
- 运行依赖：0 个
- peer 依赖：ethers ^5\.4\.0
- 首次发布：2022-04-04T11:30:17.704Z
- 最新版本发布：2025-05-13T08:55:26.149Z
- 近 30 天下载量：34680（2026-10-11 至 2026-11-09，npm 官方下载统计）
- 已发布版本数：11（近 12 个月 0 个）

## 中文简介

这个寄存器中包含Solity智能合同代码 **COW 议定书** (原称: **克诺斯协议**) (中文(简体) ).

## 安装

```sh
npm install @cowprotocol/contracts
```

也可以使用：`pnpm add @cowprotocol/contracts`、`yarn add @cowprotocol/contracts`、`bun add @cowprotocol/contracts`

## README

> \[大 这一国家防范机制一揽子计划处于维持状态,预计今后将贬值. 如果您正在寻找 JavaScript 库与 CoW 协议互动, 请考虑 [@cowprotocol/cow-sdk (英语)](https://www.npmjs.com/package/@cowprotocol/cow-sdk)。 。 。 .

# COW 议定书

这个寄存器中包含Solity智能合同代码 **COW 议定书** (原称: **克诺斯协议**) (中文(简体) ).

关于协议如何在智能合同层面运作的更多文件,见 [文件页数](https://npmcn.com/package/%40cowprotocol/contracts/docs/index.md)。 。 。 .

## 开始

### 项目建设

```sh
yarn
yarn build
```

### 运行测试

```sh
yarn test
```

测试可在"调试模式"中运行如下:

```sh
DEBUG=* yarn test
```

### 天然气记者

气体消耗量可通过设定 `REPORT_GAS` 运行测试时的旗帜为

```sh
REPORT_GAS=1 yarn test
```

### 基准制定

该储存库还包括气体基准和追踪工具.

为了运行一个气体基准 一大堆结算情景:

```sh
yarn bench
```

这些气体基准可以比作任何其他基特参考,如果省略,则默认为合并基:

```sh
yarn bench:compare [<ref>]
```

为了详细追踪结算情况,确定在下列地点消耗了多少气体:

```sh
yarn bench:trace
```

## 部署

### 部署合同

选择wei中的网络和气价用于部署. 替换这些值后, 运行 :

```sh
NETWORK='rinkeby'
GAS_PRICE_WEI='1000000000'
yarn deploy --network $NETWORK --gasprice $GAS_PRICE_WEI
```

将在 `deployment` 文件夹. 这些文件应该被输入到这个寄存器中.

### 核查已部署的合同

#### 以太斯堪语Name

核查所有已部署的合同:

```sh
export ETHERSCAN_API_KEY=<Your Key>
yarn verify:etherscan --network $NETWORK
```

单一合同也可以核实,但必须明确向指挥部说明建筑师的论点. 一个常见的例子是金库中继器合同,它不会自动与上面的指令进行验证,因为它只在初始化期间间接部署. 本合同可采用下列方式进行人工核查:

```sh
npx hardhat verify --network $NETWORK 0xC92E8bdf79f0507f65a392b0ab4667716BFE0110  0xBA12222222228d8Ba445958a75a0704d566BF2C8
```

第一个地址是金库中继器地址,第二个地址是部署输入(通常是"平衡器"金库).

#### 温柔

核查所有已部署的合同:

```sh
yarn verify:tenderly --network $NETWORK
```

单项合同名称 `GPv2Contract` 并位于地址 `0xFeDbc87123caF3925145e1bD1Be844c03b36722f` 实例中:

```sh
npx hardhat tenderly:verify --network $NETWORK GPv2Contract=0xFeDbc87123caF3925145e1bD1Be844c03b36722f
```

## 已部署的合同地址

此套件还包含 `networks.json` 将每个已部署合同的地址以及用于创建合同的Ethereum交易的散列放在根上.

## 测试覆盖率 [![Coverage Status](https://coveralls.io/repos/github/gnosis/gp-v2-contracts/badge.svg?branch=main)](https://coveralls.io/github/gnosis/gp-v2-contracts?branch=main)

测试覆盖可使用命令检查

```sh
yarn coverage
```

报道结果摘要被打印到控制台。 生成的文件中有更详细的信息 `coverage/index.html`。 。 。 .

## 已知问题

如果用户以 :

-   零销售额
-   零购买量
-   可部分填充套装为假

然后这个命令可以被任意执行一次,而不是一次. 这意味着,任何解决者都可以从用户中抽出费用数额,直到不再有足够的资金.

我们建议永远不要签署这种形式的订单,如果拟订一份代表其他用户订立订单的合同,确保在合同一级不能订立这种订单.

## 帮助脚本

与企业交换合同互动的工具集.

### 解析验证

这个repo包含脚本,用于管理合同已经部署的所有网络中认证的解析器列表.

剧本有:

```sh
yarn solvers command [arg ...]
```

以下是可用的命令列表 . 标有\[\*\*\]的命令要求出口认证合同所有者的私人钥匙,而标有\[\*\]的命令则要求拥有人或管理人员的地址. 私有密钥可以导出 `export PK=<private key>`。 。 。 .

1.  `add $ADDRESS` \[\*\]. 将地址添加到已注册的解析器列表中.
2.  `remove $ADDRESS` \[\*\]. 从已注册解析器列表中删除地址.
3.  `check $ADDRESS`。检查给定地址是否在已注册的解析器列表中.
4.  `list`。列出所有已注册的解析器.
5.  `setManager $ADDRESS` \[\*\*\]. 设置认证器的管理器到输入地址.

例如,添加地址 `0x0000000000000000000000000000000000000042` 到解析器列表 :

```sh
export PK=<private key>
yarn solvers add 0x0000000000000000000000000000000000000042
```

### 转让所有权

有专门的脚本可以更改认证代理的拥有者.

用法和参数可以通过运行看到:

```sh
yarn hardhat transfer-ownership --help
```

### 退费

提取结算合同全部余额的脚本. 允许规定合同必须具有什么最低价值才能考虑一个令牌(面包屑可能不值天然气成本),以及合同中应留下多少剩余价值(例如,喂食令牌缓冲器).

如果所有交易的令牌余额没有传递任何令牌列表, 将会从链中获取( 需要很长时间 . )

```sh
export PK=<private key>
yarn hardhat withdraw --receiver 0x6C2999B6B1fAD608ECEA71B926D68Ee6c62BeEf8 --min-value 10000 --leftover 500 0x038a68ff68c393373ec894015816e33ad41bd564 0x913d8adf7ce6986a8cbfee5a54725d9eea4f0729
```

### 解码和解调用数据

这个项目暴露出一些用于将和解调用数据解析成人可读格式的手动脚本.

这个 `decode` 脚本可以用两种方式:

1.  通过指定现有结算交易的散列交易 `--txhash 0x...`

```sh
npx hardhat decode --txhash 0xc12e5bc2ef9c116932301495738d555ea1d658977dacd6c7989a6d77125a17d2 --network mainnet
```

2.  否时 `txhash` 通过从 stdin 读取调用数据来指定(`< calldata.txt`) (中文(简体) ). 如果stdin是终端,则会促使用户将调用数据粘贴入终端.

```sh
> npx hardhat decode --network mainnet
# Paste in the calldata to decode
```

请注意,你将会得到你的 `INFURA_KEY` 导出到环境变量.

## 释放

国家防范机制上公布的回函内容如下: [`@cowprotocol/contracts`](https://www.npmjs.com/package/@cowprotocol/contracts)。 。 。 .

维护者 此寄存器可手动触发新发布 。 这些步骤如下:

1.  更新软件包版本编号 `./package.json` 树枝 `main`。 。 。 .
    
2.  在GitHub上,访问"Actions"分页,"Publish package to NPU","Run工作流程"与"M `main` 作为目标分支.
    

一旦成功执行工作流程,就应提供新的国家预防机制软件包,以及以发布版本命名的新的git标签.

## 常见问题

### @cowprotocol/contracts 是什么？

这个寄存器中包含Solity智能合同代码 COW 议定书 \(原称: 克诺斯协议\) \(中文\(简体\) \)\.

### 如何安装 @cowprotocol/contracts？

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

### @cowprotocol/contracts 支持 TypeScript 吗？

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

### @cowprotocol/contracts 支持 ESM 还是 CommonJS？

同时提供 ES Module 与 CommonJS 入口，import 和 require\(\) 都可以使用，打包工具会自动选择合适的版本。

### @cowprotocol/contracts 可以商用吗？

@cowprotocol/contracts 使用 LGPL-3\.0-or-later 许可。弱 Copyleft：作为库被调用时通常不要求开源你自己的代码，但修改库本身需以 LGPL 开源；前端打包合并后的适用边界存在不同理解。以上为概括，不构成法律意见，请以许可原文为准。

### @cowprotocol/contracts 的下载量有多少？

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

### @cowprotocol/contracts 还在维护吗？

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

