Hardhat
Hardhat - 本地網路在同一地址部署合約
當我嘗試在安全帽 localhost 上部署契約並部署兩個契約時,他們最終獲得了相同的地址
這就是我執行安全帽的方式
test@test:~/test$ npx hardhat node Started HTTP and WebSocket JSON-RPC server at http://127.0.0.1:8545/
這就是我部署的方式
test@test:~/test$ npx hardhat run scripts/First/local/deploy.js Contract successfully deployed. Contract address 0x5FbDB2315678afecb367f032d93F642f64180aa3 test@test:~/test$ npx hardhat run scripts/Second/local/deploy.js Contract successfully deployed. Contract address 0x5FbDB2315678afecb367f032d93F642f64180aa3
這是部署腳本(兩個合約都相似)
const { ethers } = require("hardhat") async function main() { [owner] = await hre.ethers.getSigners() const TestNFT = await ethers.getContractFactory("TestNFT", owner) const testNFT = await TestNFT.deploy("TestNFT", "TNFT") await TestNFT.deployed() console.log( `Contract successfully deployed. Contract address ${testNFT.address}` ) } main() .then(() => process.exit(0)) .catch((error) => { console.error(error) process.exit(1) })
不知道為什麼會這樣,但每個契約應該有不同的地址……對吧?
因此,您正在嘗試使用 執行 Hardhat 區塊鏈
npx hardhat node
,連接到它並向其部署兩個合約。這取決於您的 Hardhat 網路配置,但我的猜測是部署根本沒有使用您正在執行的節點。檢查它是否在這些發生時列出了部署。我的猜測是您使用的是安全帽區塊鏈,該區塊鏈僅為部署而啟動,然後立即終止。而且由於它是重新啟動的,它以相同的設置開始並為您提供相同的第一個合約地址(從區塊鏈的角度來看,兩個合約都是新的,因為它已重新啟動)。
我想您應該能夠簡單地使用
--network localhost
設置來定位正在執行的節點,如下所述:https ://hardhat.org/guides/deploying