Hardhat-deploy: запрос функции: разрешить развертывание из основной сети на каске в режиме разветвления

Созданный на 19 нояб. 2020  ·  10Комментарии  ·  Источник: wighawag/hardhat-deploy

Было бы здорово, если бы await ethers.getContract ("Bar") при запуске в режиме разветвления hardhat позволил бы hardhat-deploy знать, что --network hardhat на самом деле также может учитывать развертывания / из любой сети, настроенной в разветвлении

Ссылка на эту проблему https://github.com/wighawag/hardhat-deploy-ethers/issues/6

enhancement

Все 10 Комментарий

реализовано в 0.7.0-beta.29
через hardhat node --fork ... --fork-deployments <networkName>

Копирование из нашего чата для справки:

Является ли он эксклюзивным для сети, которую вы передаете с помощью --fork-deployments? В идеале для меня это было бы так:

  1. Сначала загляните в папку развертываний --fork-deployments - если там нет контракта.
  2. Загляните в папку "Сетевые развертывания", вторая

Таким образом, тесты могут смешивать экземпляры разветвленных контрактов из основной сети + имитирующие, которые вы, возможно, захотите развернуть только в жесткой сети.

он работает путем копирования развертываний из цепочки в localhost
поэтому ваш сценарий развертывания может решить переопределить развертывание, если они пожелают

  1. ах хорошо круто. как он узнает, из какой сети копировать развертывания? Разбирает ли он forking.url ?

  2. Я использую разветвление 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

Я закрою проблему, но если у вас возникнет проблема, не стесняйтесь открывать ее снова.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги