Blockchain
如何獲取安全帽網路中已部署合約的地址?
我正在使用hardhat的本地網路,我想獲取已部署合約的地址,我想避免再次部署合約只是為了獲取新地址,我想訪問現有合約地址,然後與它(所以基本上我有一個腳本來部署它,另一個腳本與之互動)。
在 Truffle 中,工件包含此合約地址欄位,但在安全帽中不包含。我手動查看了交易(使用
eth_getTransactionByHash
andeth_getBlockByNumber
),但我得到了除了契約地址之外的所有資訊……不應該以某種方式得到它嗎?
我不知道你以後怎麼能得到它。
我在我的 depoyment 腳本中所做的是將地址保存到 JSON 文件以供前端使用。我的(有點清理)是這樣的:
async function saveFrontendFiles(tokenAddr: string) { const contractsDir = __dirname + "/../website/src/contracts"; if (!fs.existsSync(contractsDir)) { fs.mkdirSync(contractsDir); } fs.writeFileSync( contractsDir + "/contract-address.json", JSON.stringify( { Token: tokenAddr }, undefined, 2 ) ); const TokenArtifact = artifacts.readArtifactSync("MyTokenMock"); fs.writeFileSync( contractsDir + "/Token.json", JSON.stringify(TokenArtifact, null, 2) ); }
我遇到了同樣的問題。現在可以開箱即用。(據我所知)
在編寫自定義解決方案時,我會將已部署合約的地址儲存在 .json 文件中(如在 Truffle 中),我發現有一個名為的外掛
hardhat-deploy
可以做到這一點。