Hardhat-deploy: Los diamantes no funcionan como se esperaba al desplegar facetas manualmente

Creado en 17 feb. 2021  ·  5Comentarios  ·  Fuente: wighawag/hardhat-deploy

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:
image

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

Comentario más útil

El último despliegue de casco ha renovado el soporte de diamantes. reabrir si hay algún problema

Todos 5 comentarios

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

¿Fue útil esta página
0 / 5 - 0 calificaciones