Hardhat-deploy: Les diamants ne fonctionnent pas comme prévu lors du déploiement manuel des facettes

Créé le 17 févr. 2021  ·  5Commentaires  ·  Source: wighawag/hardhat-deploy

J'ai remarqué que ce plugin, tout en offrant une prise en charge native des contrats conformes à la norme Diamond, ne semble pas permettre le déploiement et la configuration manuels du Diamond et de ses facettes. Plus précisément, avec le code suivant : https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58/protocol/deploy/governance/02_kingmaker_governance_facet.ts#L16 -L56 j'obtiendrai l'erreur suivante :
image

Cependant, si j'utilise l'approche prise en charge pour déployer Diamonds with Faucets, le plugin est capable d'interagir correctement avec eux avec read() / execute() (par exemple https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58 /protocol/deploy/01B_kingmaker_cowl.ts#L19). Pouvez-vous signaler ce comportement dans votre code ?

La justification de mon approche est le désir de ne pas être obligé de garder une trace des facettes existantes et de ne pas être obligé de apparemment redéployer un nouveau Diamond avec différentes facettes, à en juger par le code Diamantaire et l'API du plugin (par exemple

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

Commentaire le plus utile

le dernier hardhat-deploy a remanié la prise en charge des diamants. rouvrir en cas de problème

Tous les 5 commentaires

Hey @lepidotteri notez que le travail sur Diamond est encore en bêta et je n'ai pas eu le temps de m'en occuper depuis un certain temps. Il est peu probable que j'aie les ressources pour l'examiner bientôt. Je prévois de le supprimer de la documentation entre-temps pour éviter toute confusion.

Concernant votre problème, quelle implémentation de Diamond utilisez-vous ?

Hey @lepidotteri notez que le travail sur Diamond est encore en bêta et je n'ai pas eu le temps de m'en occuper depuis un certain temps. Il est peu probable que j'aie les ressources pour l'examiner bientôt. Je prévois de le supprimer de la documentation entre-temps pour éviter toute confusion.

Salut, merci pour les éclaircissements, votre plugin est trop précieux pour ne pas être invoqué, donc si vous êtes d'accord, je le ferais simplement pour notre propre organisation, dans le seul but de mettre à jour et d'améliorer son support actuel Diamond Standard

Concernant votre problème, quelle implémentation de Diamond utilisez-vous ?

J'utilise le 3ème ici : https://github.com/mudgen/diamond-3. Cependant, notez que l'implémentation elle-même n'est pas le problème, le problème est plutôt censé résider dans la façon dont votre plugin interagit avec les Diamonds "personnalisés" qui ne sont pas capables de s'interfacer correctement (par exemple https://github.com/ARM -Finance/kingmaker/blob/59dac1fb94f6aa3cb84dc4d84a536c9acedfe9ea/protocol/deploy/governance/02_kingmaker_governance_facet.ts#L32 execute() échoue ici car, je suppose, le plugin utilise la méthode vanilla ethers.js pour rechercher la méthode FacetdiaCut, dans le cas Facetdia ', contre l'ABI Diamond "custom").

Merci également de me répondre si rapidement, très apprécié

C'est ainsi que vous évitez que ethers.js soulève des problèmes lors de la vérification des ABI ? https://github.com/wighawag/hardhat-deploy/blob/a842674b5a5a47ad2ee5b91c2fae1d3e1840e9b6/src/helpers.ts#L48 -L56

@lepidotteri oui, donc

Vous devriez le voir dans le fichier deployments/<network name>/Crown.json

En ce qui concerne le forking, ce serait formidable si vous fassiez un PR. Je serais heureux de l'examiner dans le but d'être réintégré.
Merci

le dernier hardhat-deploy a remanié la prise en charge des diamants. rouvrir en cas de problème

Cette page vous a été utile?
0 / 5 - 0 notes