Truffle

如何確定 truffle exec 腳本中的網路?

  • September 10, 2021

我正在編寫一個要執行的腳本,truffle exec我需要在我們呼叫的網路上添加一些邏輯條件truffle exec

這(大致)是我在腳本中想要的:

const contract = artifacts.require("./MyContract.sol");
module.exports = function(callback) {
 // TODO: Do some conditional thing based on network!

 contract.callMethod();
}

我希望通過以下方式呼叫此腳本:

truffle exec script.js --network ropsten

不確定這是否是最好的方法,但您傳遞給 的參數truffle(包括網路)在process.argv.

腳本.js

process.argv.forEach(function (val, index, array) {
 console.log(index + ': ' + val);
});

然後:

> truffle exec script.js --network development
Using network 'development'.

0: /usr/bin/node
1: /usr/bin/truffle
2: exec
3: foo.js
4: --network
5: development

因此,在網路名稱的相關索引處訪問該數組。

您可以使用web3.eth.network api。

'use strict';

global.artifacts = artifacts;
global.web3 = web3;

async function main(){
   const newtworkType = await web3.eth.net.getNetworkType();
   const networkId = await web3.eth.net.getId();
   console.log("network type:"+newtworkType);
   console.log("network id:"+networkId);
}

// For truffle exec
module.exports = function(callback) {
   main().then(() => callback()).catch(err => callback(err))
};

我希望它有用:)

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