Hardhat-deploy: 手动部署 facet 时,菱形无法按预期工作

创建于 2021-02-17  ·  5评论  ·  资料来源: wighawag/hardhat-deploy

我注意到这个插件虽然为符合 Diamond 标准的合约提供本地支持,但似乎不允许手动部署和设置 Diamond 及其 Facet。 更准确地说,使用以下代码: https :
image

但是,如果我使用受支持的方法来部署带有水龙头的钻石,那么该插件能够通过 read() / execute() 与它们正确交互(例如 https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58 /protocol/deploy/01B_kingmaker_cowl.ts#L19)。 你能在你的代码中指出这种行为吗?

我的方法的基本原理是希望不受约束地跟踪现有方面,也不想被迫看似重新部署具有不同方面的新 Diamond,从 Diamantaire 代码和插件 API(例如

await diamond.deploy('ADiamondContract', {
    from: deployer,
    owner: diamondAdmin,
    facets: ['Facet1', 'Facet2', 'Facet3'],
  });

 await diamond.deploy('ADiamondContract', {
    from: diamondAdmin, // this need to be the diamondAdmin for upgrade
    owner: diamondAdmin,
    facets: ['NewFacet', 'Facet2', 'Facet3'],
 });

最有用的评论

最新的安全帽部署改进了钻石支持。 如果有任何问题,请重新打开

所有5条评论

@lepidotteri请注意,Diamond 的工作仍处于测试阶段,一段时间以来我没有时间照顾它。 我不太可能很快就有资源来查看它。 我计划同时将其从文档中删除以避免混淆。

不过,关于您的问题,您使用的是 Diamond 的哪种实现?

@lepidotteri请注意,Diamond 的工作仍处于测试阶段,一段时间以来我没有时间照顾它。 我不太可能很快就有资源来查看它。 我计划同时将其从文档中删除以避免混淆。

嗨,谢谢你的澄清,你的插件太有价值了,不能依赖,所以如果你同意,我会继续为我们自己的组织分叉它,唯一的目的是更新和改进其当前的钻石标准支持

不过,关于您的问题,您使用的是 Diamond 的哪种实现?

我在这里使用第三个: https : https://github.com/ARM -Finance/kingmaker/blob/59dac1fb94f6aa3cb84dc4d84a536c9acedfe9ea/protocol/deploy/governance/02_kingmaker_governance_facet.ts#L32 execute() 在这里失败是因为,我怀疑,该插件使用 vanilla ethers, FacetC 的方法来查看此情况下的方法。 ',反对“自定义”Diamond ABI)。

另外,谢谢你这么快回复我,非常感谢

那么这就是在执行 ABI 检查时避免 ethers.js 引发问题的方法? https://github.com/wighawag/hardhat-deploy/blob/a842674b5a5a47ad2ee5b91c2fae1d3e1840e9b6/src/helpers.ts#L48 -L56

@lepidotteri是的,所以不确定为什么它在您的情况下不起作用,因为正如您所见,它在 ABI 中包含了 diamondCutFact

您应该在deployments/<network name>/Crown.json文件中看到它

关于分叉,如果你做个 PR 就好了。 我很乐意以重新纳入的目标对其进行审查。
谢谢

最新的安全帽部署改进了钻石支持。 如果有任何问题,请重新打开

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

tennox picture tennox  ·  4评论

smartcontracts picture smartcontracts  ·  20评论

freebyte picture freebyte  ·  9评论

jaypaik picture jaypaik  ·  13评论

gitpusha picture gitpusha  ·  6评论