Было бы здорово, если бы await ethers.getContract ("Bar") при запуске в режиме разветвления hardhat позволил бы hardhat-deploy знать, что --network hardhat на самом деле также может учитывать развертывания / из любой сети, настроенной в разветвлении
Ссылка на эту проблему https://github.com/wighawag/hardhat-deploy-ethers/issues/6
реализовано в 0.7.0-beta.29
через hardhat node --fork ... --fork-deployments <networkName>
Копирование из нашего чата для справки:
Является ли он эксклюзивным для сети, которую вы передаете с помощью --fork-deployments? В идеале для меня это было бы так:
Таким образом, тесты могут смешивать экземпляры разветвленных контрактов из основной сети + имитирующие, которые вы, возможно, захотите развернуть только в жесткой сети.
он работает путем копирования развертываний из цепочки в localhost
поэтому ваш сценарий развертывания может решить переопределить развертывание, если они пожелают
ах хорошо круто. как он узнает, из какой сети копировать развертывания? Разбирает ли он forking.url
?
Я использую разветвление hardhat network
в памяти, и у меня нет экземпляра hardhat node
запущенного во время моих тестов. Работает ли это также для тестов, использующих разветвление в жесткой сети в оперативной памяти?
Ха, нет, хороший момент, это всего лишь параметр для задачи узла.
Я смогу добавить его в тестовую задачу. повторное открытие
re 1.: аргумент параметра - это имя сети, из которой нужно копировать
На самом деле @gitpusha у вас есть пример репо о том, как это настроено, потому что для размышления об этом могут потребоваться некоторые изменения в том, как все обрабатывается.
в настоящее время с сетью в памяти нет возможности иметь предварительно развернутую информацию о контракте
Я мог бы добавить аналогичный параметр, но мне нужно подумать больше
на самом деле вы должны иметь возможность использовать конфигурацию внешнего развертывания:
что-то вроде :
hardhat.config.js
module.exports = {
...
external: {
deployments: {
hardhat: ['deployments/mainnet'],
},
},
}
на самом деле вы должны иметь возможность использовать конфигурацию внешнего развертывания
Это было бы мило.
hardhat: ['deployments/mainnet']
Понимает ли инструмент, что на hardhat
in затем следует искать как deployments/mainnet
так и deployments/hardhat
? Если да, то какие развертывания имеют приоритет? Я бы хотел, чтобы deployments/mainnet
имел приоритет, если между контрактами есть перекрытия, поскольку я настроил это явно.
Кроме того, будет ли по умолчанию учитываться каталог deployments/hardhat
?
Вот пример репо .
Я не уверен, насколько полезна эта функция, поскольку вы всегда можете просто использовать
await hre.ethers.getContractAt(abi, address)
в forkmode
вместо этого для доступа к развернутым экземплярам из определенной сети.
Так что это действительно просто приятно иметь.
Я попробовал предложение, опубликованное выше, и, похоже, оно работает нормально.
Развертывания, указанные в external, не будут иметь приоритета, но это не должно быть проблемой, поскольку контракт сброса узла по умолчанию в deployments / hardhat, и поэтому, если вы не принудительно повторно развернете уже развернутый контракт, вы получите его из deployments / mainnet
Я закрою проблему, но если у вас возникнет проблема, не стесняйтесь открывать ее снова.