Hardhat-deploy: Berlian tidak berfungsi sebagaimana dimaksud saat menerapkan faset secara manual

Dibuat pada 17 Feb 2021  ·  5Komentar  ·  Sumber: wighawag/hardhat-deploy

Saya perhatikan bahwa plugin ini, meskipun menawarkan dukungan asli untuk kontrak yang sesuai dengan Standar Diamond, tampaknya tidak memungkinkan penerapan dan pengaturan manual Diamond dan Facet-nya. Lebih tepatnya, dengan kode berikut: https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58/protocol/deploy/governance/02_kingmaker_governance_facet.ts#L16 -L56 Saya akan mendapatkan kesalahan berikut:
image

Namun, jika saya menggunakan pendekatan yang didukung untuk menyebarkan Berlian dengan Faucet maka plugin dapat berinteraksi dengan benar dengan mereka dengan read() / execute() (mis. https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58 /protocol/deploy/01B_kingmaker_cowl.ts#L19). Bisakah Anda menunjukkan perilaku ini dalam kode Anda?

Alasan pendekatan saya adalah keinginan untuk tidak terikat untuk melacak aspek yang ada dan tidak dipaksa untuk menggunakan kembali Diamond baru dengan aspek yang berbeda, dilihat dari kode Diamantaire dan API plugin (mis.

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

Komentar yang paling membantu

hardhat-deploy terbaru telah mengubah dukungan berlian. buka kembali jika ada masalah

Semua 5 komentar

Hai @lepidotteri perhatikan bahwa pengerjaan Diamond masih dalam versi beta dan saya tidak punya waktu untuk mengurusnya sejak beberapa waktu. Sepertinya saya tidak akan memiliki sumber daya untuk melihatnya segera. Saya berencana untuk menghapusnya dari dokumentasi untuk menghindari kebingungan.

Mengenai masalah Anda, implementasi Diamond mana yang Anda gunakan?

Hai @lepidotteri perhatikan bahwa pengerjaan Diamond masih dalam versi beta dan saya tidak punya waktu untuk mengurusnya sejak beberapa waktu. Sepertinya saya tidak akan memiliki sumber daya untuk melihatnya segera. Saya berencana untuk menghapusnya dari dokumentasi untuk menghindari kebingungan.

Hai, terima kasih atas klarifikasinya, plugin Anda terlalu berharga untuk tidak dapat diandalkan, jadi jika Anda setuju, saya akan melanjutkan dan membayarnya untuk organisasi kami sendiri, dengan satu-satunya tujuan untuk memperbarui dan meningkatkan dukungan Diamond Standard saat ini

Mengenai masalah Anda, implementasi Diamond mana yang Anda gunakan?

Saya menggunakan yang ke-3 di sini: https://github.com/mudgen/diamond-3. Namun, perhatikan bahwa implementasi itu sendiri bukanlah masalahnya, melainkan masalahnya terletak pada cara plugin Anda berinteraksi dengan Berlian "kustom" yang tidak dapat berinteraksi dengan benar (mis. https://github.com/ARM -Finance/kingmaker/blob/59dac1fb94f6aa3cb84dc4d84a536c9acedfe9ea/protocol/deploy/governance/02_kingmaker_governance_facet.ts#L32 execute() gagal di sini karena, saya curiga, plugin menggunakan vanilla ethers.js untuk mencari 'diamondCut metode Facet ini ', melawan "kebiasaan" Diamond ABI).

Juga, terima kasih telah kembali kepada saya dengan sangat cepat, sangat dihargai

Jadi begitulah cara Anda menghindari eters.js memunculkan masalah saat melakukan pemeriksaan pada ABI? https://github.com/wighawag/hardhat-deploy/blob/a842674b5a5a47ad2ee5b91c2fae1d3e1840e9b6/src/helpers.ts#L48 -L56

@lepidotteri ya, jadi tidak yakin mengapa itu tidak berhasil dalam kasus Anda, karena seperti yang Anda lihat, termasuk diamondCutFact di ABI

Anda akan melihatnya di file deployments/<network name>/Crown.json

Soal forking, alangkah baiknya jika membuat PR. Saya akan dengan senang hati meninjaunya dengan tujuan disertakan kembali.
Terima kasih

hardhat-deploy terbaru telah mengubah dukungan berlian. buka kembali jika ada masalah

Apakah halaman ini membantu?
0 / 5 - 0 peringkat