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:
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'],
});
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
Comentários muito úteis
A implantação do capacete de segurança mais recente renovou o suporte de diamante. reabra se houver algum problema