[大 这一国家防范机制一揽子计划处于维持状态,预计今后将贬值. 如果您正在寻找 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交易的散列放在根上.
测试覆盖率 
测试覆盖可使用命令检查
yarn coverage
报道结果摘要被打印到控制台。 生成的文件中有更详细的信息 coverage/index.html。 。 。 .
已知问题
如果用户以 :
- 零销售额
- 零购买量
- 可部分填充套装为假
然后这个命令可以被任意执行一次,而不是一次. 这意味着,任何解决者都可以从用户中抽出费用数额,直到不再有足够的资金.
我们建议永远不要签署这种形式的订单,如果拟订一份代表其他用户订立订单的合同,确保在合同一级不能订立这种订单.
帮助脚本
与企业交换合同互动的工具集.
解析验证
这个repo包含脚本,用于管理合同已经部署的所有网络中认证的解析器列表.
剧本有:
yarn solvers command [arg ...]
以下是可用的命令列表 .
标有[**]的命令要求出口认证合同所有者的私人钥匙,而标有[*]的命令则要求拥有人或管理人员的地址.
私有密钥可以导出 export PK=<private key>。 。 。 .
add $ADDRESS[*]. 将地址添加到已注册的解析器列表中.remove $ADDRESS[*]. 从已注册解析器列表中删除地址.check $ADDRESS。检查给定地址是否在已注册的解析器列表中.list。列出所有已注册的解析器.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 脚本可以用两种方式:
- 通过指定现有结算交易的散列交易
--txhash 0x...
npx hardhat decode --txhash 0xc12e5bc2ef9c116932301495738d555ea1d658977dacd6c7989a6d77125a17d2 --network mainnet
- 否时
txhash通过从 stdin 读取调用数据来指定(< calldata.txt) (中文(简体) ). 如果stdin是终端,则会促使用户将调用数据粘贴入终端.
> npx hardhat decode --network mainnet
# Paste in the calldata to decode
请注意,你将会得到你的 INFURA_KEY 导出到环境变量.
释放
国家防范机制上公布的回函内容如下: @cowprotocol/contracts。 。 。 .
维护者 此寄存器可手动触发新发布 。 这些步骤如下:
-
更新软件包版本编号
./package.json树枝main。 。 。 . -
在GitHub上,访问"Actions"分页,"Publish package to NPU","Run工作流程"与"M
main作为目标分支.
一旦成功执行工作流程,就应提供新的国家预防机制软件包,以及以发布版本命名的新的git标签.