У меня проблема с подключением внешних артефактов.
В Project AI есть папки deploy
и artifacts
которых я храню все файлы развертывания hardhat и артефакты, созданные после первого развертывания.
В Project B я повторно использую эти вещи, помещая это в конфигурацию hardhat:
external: {
contracts: [
{
artifacts: '/contracts/artifacts',
deploy: '/contracts/deploy',
},
],
},
Теперь я запускаю npx hardhat deploy
из проекта B и вижу, что все контракты успешно развернуты.
Но когда я пытаюсь взаимодействовать с любым из развернутых контрактов, я вижу в консоли: Contract call: <UnrecognizedContract>
.
То же самое происходит, если я сначала отдельно запускаю узел hardhat, а затем развертываю контракты. Для каждого развертывания я вижу в журналах <UnrecognizedContract>
.
Как правильно подключить внешний проект hardhat, чтобы узел hardhat мог понять, какие контракты были развернуты?
В настоящее время это не поддерживается, и это также может зависеть от формата артефактов.
Я хотел бы сделать это возможным в большинстве случаев с помощью https://github.com/nomiclabs/hardhat/blob/8118d0e3649ed87b247ef02830feb6aad5a78682/packages/hardhat-core/src/internal/hardhat-network/provider/modules/hardhat.ts # L37
Если это помогает, я заметил ту же проблему, когда вы просто запускаете узел hardhat в одном проекте и развертываете контракты в другом.
Я не уверен, можно ли вручную подключить к хардхату «артефакты» или результаты компиляции, чтобы узел мог начать распознавать контракты.
Вот проблема, которая может помочь: https://github.com/nomiclabs/hardhat/issues/1040
Самый полезный комментарий
Если это помогает, я заметил ту же проблему, когда вы просто запускаете узел hardhat в одном проекте и развертываете контракты в другом.
Я не уверен, можно ли вручную подключить к хардхату «артефакты» или результаты компиляции, чтобы узел мог начать распознавать контракты.