Noté que este complemento, aunque ofrece soporte nativo para contratos que cumplen con Diamond Standard, no parece permitir la implementación y configuración manual de Diamond y sus facetas. Más precisamente, con el siguiente código: https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58/protocol/deploy/governance/02_kingmaker_governance_facet.ts#L16 -L56 Obtendré el siguiente error:
Sin embargo, si utilizo el enfoque admitido para implementar Diamonds with Faucets, el complemento puede interactuar correctamente con ellos con read () / execute () (por ejemplo, https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58 /protocol/deploy/01B_kingmaker_cowl.ts#L19). ¿Puedes señalar este comportamiento en tu código?
La razón de mi enfoque es el deseo de no estar obligado a realizar un seguimiento de las facetas existentes y no verse obligado a volver a implementar aparentemente un nuevo Diamond con diferentes facetas, a juzgar por el código de Diamantaire y la API del complemento (p. Ej.
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'],
});
Hola @lepidotteri ,
Sin embargo, con respecto a su problema, ¿qué implementación de Diamond está utilizando?
Hola @lepidotteri ,
Hola, gracias por las aclaraciones, su complemento es demasiado valioso como para no confiar en él, así que si está de acuerdo, seguiré adelante y lo bifurcaré para nuestra propia organización, con la única intención de actualizar y mejorar su soporte actual de Diamond Standard.
Sin embargo, con respecto a su problema, ¿qué implementación de Diamond está utilizando?
Estoy usando el tercero aquí: https://github.com/mudgen/diamond-3. Sin embargo, tenga en cuenta que la implementación en sí no es el problema, sino que se supone que el problema radica en la forma en que su complemento interactúa con los Diamantes "personalizados" con los que no puede interactuar correctamente (por ejemplo, https://github.com/ARM -Finance / kingmaker / blob / 59dac1fb94f6aa3cb84dc4d84a536c9acedfe9ea / protocol / deploy / Governance / 02_kingmaker_governance_facet.ts # L32 execute () falla aquí porque, sospecho, el complemento usa el vanilla ethers.js para buscar el método ABI de Facet, en el caso de diamante, ', contra el ABI Diamante "personalizado").
Además, gracias por responderme tan rápido, muy apreciado.
¿Así es como evita que ethers.js genere problemas al realizar comprobaciones en ABI? https://github.com/wighawag/hardhat-deploy/blob/a842674b5a5a47ad2ee5b91c2fae1d3e1840e9b6/src/helpers.ts#L48 -L56
@lepidotteri sí, así que no estoy seguro de por qué no funciona en tu caso, ya que como lo ves incluye el diamondCutFact en el ABI
Debería verlo en el archivo deployments/<network name>/Crown.json
Con respecto a la bifurcación, sería genial si hiciera un PR. Estaría feliz de revisarlo con el objetivo de volver a incluirlo.
Gracias
El último despliegue de casco ha renovado el soporte de diamantes. reabrir si hay algún problema
Comentario más útil
El último despliegue de casco ha renovado el soporte de diamantes. reabrir si hay algún problema