Blockchain

如何獲取安全帽網路中已部署合約的地址?

  • January 31, 2022

我正在使用hardhat的本地網路,我想獲取已部署合約的地址,我想避免再次部署合約只是為了獲取新地址,我想訪問現有合約地址,然後與它(所以基本上我有一個腳本來部署它,另一個腳本與之互動)。

在 Truffle 中,工件包含此合約地址欄位,但在安全帽中不包含。我手動查看了交易(使用eth_getTransactionByHashand eth_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可以做到這一點。

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