Hardhat

如何使用 Hardhat 重用之前部署的合約?

  • March 19, 2022

有一種非常方便的語法可以避免在brownie鏈上多次部署相同的合約,同時快速開發和迭代:

MyContract.deploy()


# somewhere else, sometime later:

MyContract[-1]  # last known address of YourContract deployed

通過這種方式,很容易檢查是否已經部署了合約的版本,如果有,您只需重新使用它而不是再次進行部署。例如,這對 Mocks 尤其有用,因為它們幾乎不會發生任何變化,而且每次執行都重新部署它們只是浪費時間(和氣體……即使在測試網上)。

Hardhat 中是否有類似的行為?或者我需要在部署合約地址時手動跟踪它們,並在以後的執行中重新實例化對象?

const contractAddress = "0x...";  // do I have to manually keep track of this address?
const myContract = await ethers.getContractAt("MyContract", contractAddress);

原來答案是安全帽外掛hardhat-deploy,可在此處獲得。

這個安全帽外掛添加了一種將合約部署到任何網路的機制,跟踪它們並複制相同的環境進行測試。

引用自:https://ethereum.stackexchange.com/questions/123883