Я заметил, что этот плагин, хотя и предлагает встроенную поддержку контрактов, совместимых со стандартом Diamond Standard, похоже, не позволяет вручную развертывать и настраивать Diamond и его Facets. Точнее, со следующим кодом: https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58/protocol/deploy/governance/02_kingmaker_governance_facet.ts#L16 -L56 Я получаю следующую ошибку:
Однако, если я использую поддерживаемый подход к развертыванию алмазов с помощью сборщиков, тогда плагин сможет правильно взаимодействовать с ними с помощью read () / execute () (например, https://github.com/ARM-Finance/kingmaker/blob/1e7bb406e99108e8a87076d6fcc33d13be59df58 /protocol/deploy/01B_kingmaker_cowl.ts#L19). Можете ли вы указать на такое поведение в своем коде?
Обоснованием моего подхода является желание не быть привязанным к отслеживанию существующих аспектов и не быть принужденным к повторному развертыванию нового Diamond с другими аспектами, судя по коду Diamantaire и API плагина (например,
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'],
});
Привет, @lepidotteri, обратите внимание, что работа над Diamond все еще находится в стадии бета-тестирования, и у меня не было времени заняться этим с некоторого времени. Маловероятно, что у меня скоро появятся ресурсы, чтобы посмотреть на него. Я планирую тем временем удалить его из документации, чтобы избежать путаницы.
Что касается вашей проблемы, какую реализацию Diamond вы используете?
Привет, @lepidotteri, обратите внимание, что работа над Diamond все еще находится в стадии бета-тестирования, и у меня не было времени заняться этим с некоторого времени. Маловероятно, что у меня скоро появятся ресурсы, чтобы посмотреть на него. Я планирую тем временем удалить его из документации, чтобы избежать путаницы.
Привет, спасибо за разъяснения, ваш плагин слишком ценен, чтобы на него нельзя было полагаться, поэтому, если вы согласны, я бы просто пошел дальше и форкнул его для нашей собственной организации с единственной целью обновить и улучшить его текущую поддержку Diamond Standard.
Что касается вашей проблемы, какую реализацию Diamond вы используете?
Здесь я использую третий: https://github.com/mudgen/diamond-3. Однако обратите внимание, что сама реализация не является проблемой, скорее проблема должна заключаться в том, как ваш плагин взаимодействует с «пользовательскими» бриллиантами, которые не могут правильно взаимодействовать с (например, https://github.com/ARM -Finance / kingmaker / blob / 59dac1fb94f6aa3cb84dc4d84a536c9acedfe9ea / protocol / deploy / Governance / 02_kingmaker_governance_facet.ts # L32 execute () здесь не работает, потому что, как я подозреваю, плагин использует vanilla ethers.js для поиска этого метода DiamondC в Facet в Facet. ', против "кастомного" Diamond ABI).
Кроме того, спасибо, что ответили мне так быстро, очень признательны
Так вот как избежать проблем, возникающих у ethers.js при проверке ABI? https://github.com/wighawag/hardhat-deploy/blob/a842674b5a5a47ad2ee5b91c2fae1d3e1840e9b6/src/helpers.ts#L48 -L56
@lepidotteri да, поэтому не уверен, почему он не работает в вашем случае, поскольку, как вы видите, он включает diamondCutFact в ABI
Вы должны увидеть это в файле deployments/<network name>/Crown.json
Что касается разветвления, было бы здорово, если бы вы устроили пиар. Я был бы рад просмотреть его, чтобы вернуть обратно.
Спасибо
Последняя версия hardhat-deploy обновила поддержку алмазов. повторно открыть, если есть какие-либо проблемы
Самый полезный комментарий
Последняя версия hardhat-deploy обновила поддержку алмазов. повторно открыть, если есть какие-либо проблемы