Hardhat
使用安全帽部署時,如果有相同的合約名稱,我應該如何將參數放入getContractFactory?
我目前正在嘗試使用 OpenZeppelin 的升級外掛。我正在更改一個邏輯合約,但它與之前的合約同名。
這是部署 UUTP 程式碼
import { ethers, upgrades } from "hardhat"; async function main() { const _ERC721 = await ethers.getContractFactory("ERC721"); console.log("Deploying Box..."); const ERC721 = await upgrades.deployProxy(_ERC721,{kind:'uups'}) await ERC721.deployed(); console.log("Box deployed to:", ERC721.address); }
這是升級邏輯合約程式碼
async function main() { // Here ERC721 is the name of the contract being updated. const _ERC721 = await ethers.getContractFactory("ERC721"); console.log("Upgrading Box..."); await upgrades.upgradeProxy(PROXY, _ERC721); console.log("_MyERC721V2 upgraded"); }
查看兩個程式碼中的 getContractFactory() 參數,合約具有相同的名稱“ERC721”。但是 Solidity 文件不同。我應該如何區分它們?
您可以在兩者中加入相同的參數
getContractFactory()
,但它不允許輕鬆重現升級過程。我建議使用不同版本的契約名稱,例如ERC721V2
.