truffle部署合约到远程私有链

首先安装了truffle和truffle-hdwallet-provider

npm install truffle -g
npm install truffle-hdwallet-provider

安装truffle卡住的同学请在truffle后面加上@5.0.1指定版本

修改truffle配置文件

var HDWalletProvider = require("truffle-hdwallet-provider");  // 导入模块
var mnemonic = "你的助记词";  //MetaMask的助记词。

module.exports = {

  networks: {
    development: {
      network_id: "*",       // Any network (default: none)
      provider: function () {
        // mnemonic表示MetaMask的助记词。 "ropsten.infura.io/v3/33..."表示Infura上的项目id
        return new HDWalletProvider(mnemonic, "http://ip:port", 0);   // 1表示第二个账户(从0开始)
      }
    },
  },

  // Set default mocha options here, use special reporters etc.
  mocha: {
    // timeout: 100000
  },

  // Configure your compilers
  compilers: {
    solc: {
      // version: "0.5.0",    // Fetch exact version from solc-bin (default: truffle's version)
      // docker: true,        // Use "0.5.1" you've installed locally with docker (default: false)
      // settings: {          // See the solidity docs for advice about optimization and evmVersion
      //  optimizer: {
      //    enabled: false,
      //    runs: 200
      //  },
      //  evmVersion: "byzantium"
      // }
    }
  }
}

上面的 new HDWalletProvider 让我非常迷,我在metamask导入了一个有余额的账户,按理说是1,但是指定1部署的时候用的不是这个账户,所以我就给0账户转了点钱,依旧指定0账户

最后在终端执行部署命令

truffle migrate

注意,不要忘记把挖矿开起来,不然合约不会部署上去