@cowprotocol/contracts

中文文档
1.8.0发布于 2025/05/13LGPL-3.0-or-laterTypeScriptESM + CJS零依赖近 30 天下载 3.5万

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

中文使用文档
文档目录17 节
  1. 开始
  2. 项目建设
  3. 运行测试
  4. 天然气记者
  5. 基准制定
  6. 部署
  7. 部署合同
  8. 核查已部署的合同
  9. 已部署的合同地址
  10. 测试覆盖率
  11. 已知问题
  12. 帮助脚本
  13. 解析验证
  14. 转让所有权
  15. 退费
  16. 解码和解调用数据
  17. 释放

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

COW 议定书

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

关于协议如何在智能合同层面运作的更多文件,见 文件页数。 。 。 .

开始

项目建设

yarn
yarn build

运行测试

yarn test

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

DEBUG=* yarn test

天然气记者

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

REPORT_GAS=1 yarn test

基准制定

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

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

yarn bench

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

yarn bench:compare [<ref>]

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

yarn bench:trace

部署

部署合同

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

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

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

核查已部署的合同

以太斯堪语Name

核查所有已部署的合同:

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

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

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

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

温柔

核查所有已部署的合同:

yarn verify:tenderly --network $NETWORK

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

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

已部署的合同地址

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

测试覆盖率 Coverage Status

测试覆盖可使用命令检查

yarn coverage

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

已知问题

如果用户以 :

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

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

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

帮助脚本

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

解析验证

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

剧本有:

yarn solvers command [arg ...]

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

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

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

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

转让所有权

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

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

yarn hardhat transfer-ownership --help

退费

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

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

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

解码和解调用数据

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

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

  1. 通过指定现有结算交易的散列交易 --txhash 0x...
npx hardhat decode --txhash 0xc12e5bc2ef9c116932301495738d555ea1d658977dacd6c7989a6d77125a17d2 --network mainnet
  1. 否时 txhash 通过从 stdin 读取调用数据来指定(< calldata.txt) (中文(简体) ). 如果stdin是终端,则会促使用户将调用数据粘贴入终端.
> npx hardhat decode --network mainnet
# Paste in the calldata to decode

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

释放

国家防范机制上公布的回函内容如下: @cowprotocol/contracts。 。 。 .

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

  1. 更新软件包版本编号 ./package.json 树枝 main。 。 。 .

  2. 在GitHub上,访问"Actions"分页,"Publish package to NPU","Run工作流程"与"M main 作为目标分支.

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

版本与发布记录

@cowprotocol/contracts 共发布 11 个版本,首次发布于 2022/04/04;过去 12 个月发布了 0 个版本。

版本发布日期距今
1.8.0latest2025/05/131.5 年前
1.7.02024/12/061.9 年前
1.6.02024/04/302 年前
1.5.02024/01/022 年前
1.4.02023/03/243 年前
1.3.22023/02/033 年前

关于 @cowprotocol/contracts 的常见问题

@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 和提交记录判断。