Hardhat-deploy: Os diamantes não funcionam como pretendido ao implantar manualmente as facetas

Criado em 17 fev. 2021  ·  5Comentários  ·  Fonte: wighawag/hardhat-deploy

Notei que este plugin, embora ofereça suporte nativo para contratos em conformidade com o Diamond Standard, não parece permitir a implantação e configuração manual do Diamond e suas facetas. Mais precisamente, com o seguinte código: https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58/protocol/deploy/governance/02_kingmaker_governance_facet.ts#L16 -L56 Receberei o seguinte erro:
image

No entanto, se eu usar a abordagem com suporte para implantar Diamonds com Faucets, o plug-in é capaz de interagir corretamente com eles com read () / execute () (por exemplo, https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58 /protocol/deploy/01B_kingmaker_cowl.ts#L19). Você pode apontar esse comportamento em seu código?

A justificativa para minha abordagem é o desejo de não ser obrigado a acompanhar as facetas existentes e não ser forçado a aparentemente reimplantar um novo Diamond com facetas diferentes, a julgar pelo código do Diamantaire e pela API do plugin (por exemplo

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'],
 });

Comentários muito úteis

A implantação do capacete de segurança mais recente renovou o suporte de diamante. reabra se houver algum problema

Todos 5 comentários

Olá @lepidotteri, note que o trabalho no Diamond ainda está em beta e eu não tive tempo de cuidar dele há algum tempo. É improvável que terei recursos para examiná-lo em breve. Pretendo removê-lo da documentação nesse meio tempo para evitar confusão.

Porém, em relação ao seu problema, qual implementação do Diamond você está usando?

Olá @lepidotteri, note que o trabalho no Diamond ainda está em beta e eu não tive tempo de cuidar dele há algum tempo. É improvável que terei recursos para examiná-lo em breve. Pretendo removê-lo da documentação nesse meio tempo para evitar confusão.

Olá, obrigado pelos esclarecimentos, seu plug-in é muito valioso para não ser confiável, então, se você concordar, eu simplesmente iria em frente e bifurcaria para nossa própria organização, com a única intenção de atualizar e melhorar seu suporte atual do Diamond Standard

Porém, em relação ao seu problema, qual implementação do Diamond você está usando?

Estou usando o terceiro aqui: https://github.com/mudgen/diamond-3. No entanto, observe que a implementação em si não é o problema, em vez disso, o problema deve estar na maneira como seu plug-in interage com os Diamonds "personalizados" que não são capazes de interagir corretamente (por exemplo, https://github.com/ARM -Finance / kingmaker / blob / 59dac1fb94f6aa3cb84dc4d84a536c9acedfe9ea / protocol / deploy / governança / 02_kingmaker_governance_facet.ts # L32 execute () falha aqui porque, eu suspeito, o plug-in usa o vanilla ethers.js para pesquisar o método Facet 'ABIC, neste caso ', contra o Diamond ABI "personalizado").

Além disso, obrigado por responder tão rapidamente, muito apreciado

Então é assim que você evita que o ethers.js levante problemas ao realizar verificações em ABIs? https://github.com/wighawag/hardhat-deploy/blob/a842674b5a5a47ad2ee5b91c2fae1d3e1840e9b6/src/helpers.ts#L48 -L56

@lepidotteri sim, então não sei por que não funciona no seu caso, já que, como você vê, inclua o diamondCutFact na ABI

Você deve vê-lo no arquivo deployments/<network name>/Crown.json

Em relação à bifurcação, seria ótimo se você fizesse um PR. Eu ficaria feliz em revisá-lo com o objetivo de ser incluído de volta.
Obrigado

A implantação do capacete de segurança mais recente renovou o suporte de diamante. reabra se houver algum problema

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

lcswillems picture lcswillems  ·  14Comentários

smartcontracts picture smartcontracts  ·  20Comentários

freebyte picture freebyte  ·  9Comentários

tennox picture tennox  ·  4Comentários

gitpusha picture gitpusha  ·  6Comentários