Web3js

如何知道 truffle 部署的合約地址

  • January 12, 2022

我在用

truffle migrate --reset --compile-all

將合約部署到本地網路

但為了使用new web3.eth.Contract(jsonInterface$$ , address $$$$ , options $$),我應該能夠知道合約地址,

那麼如何知道 truffle 正在部署的地址呢?

有幾種方法可以做到這一點:

  1. 在您的區塊鏈節點(testrpc|ganache 或您的測試/實時網路與 geth/parity)中,將記錄合約部署,您可以看到創建的地址
Transaction: 0xc2471aa6d1e020921d41247ac2a86eb5ad2447e93450347365a25f8d632e34bd
Contract created: 0x98445ab3eaafdd2293981525631730c64adec41a // <--- contract address
Gas usage: 245439
Block Number: 20
Block Time: Thu Dec 28 2017 19:43:44 GMT+0800 (+08)

2 & 3) 部署合約後,您可以通過工件獲取地址,可以直接從工件獲取地址,也可以使用工件並獲取合約實例。

範例:來自部署文件的日誌:(migrations/2_deploy_contracts.js)

(注意:我以部署文件為例,但您可以從您已導入並提供工件的任何 javascript 文件中檢索地址)

var SimpleStorage = artifacts.require("./SimpleStorage.sol");

module.exports = function(deployer) {
 deployer.deploy(SimpleStorage)

   // Option 2) Console log the address:
   .then(() => console.log(SimpleStorage.address))

   // Option 3) Retrieve the contract instance and get the address from that:
   .then(() => SimpleStorage.deployed())
   .then(_instance => console.log(_instance.address));
};

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