用truffle部署智能合约到以太坊网络(truffle+infura)的简易方法

1.登录infura官网注册,获取API-KEY
Infura是一个托管的以太坊节点集群,可以将你编写的以太坊智能合约部署到infura提供的节点上,而无需自己搭建以太坊节点。

https://infura.io/

2.安装HDWalletProvider
Infura的HDWalletProvider是一个独立的npm软件包,切换到truffle工程目录使用如下命令安装

npm install truffle-hdwallet-provider

然后修改truffle.js或truffle-config.js文件内容如下:

// 定义HDWalletProvider对象
var HDWalletProvider = require("truffle-hdwallet-provider");
// 提供助记词(mnemonic)或私钥 来导入你的账户
var mnemonic = "topic foster find apple famous have bonus month remain middle funny smart";
// 添加Ropsten测试网络定义
module.exports = {
  networks: {
    ropsten: {
      provider: function() {
      // 定义以太坊节点 https://ropsten.infura.io/your-api-key
       return new HDWalletProvider(mnemonic, "https://ropsten.infura.io/503fc5af65d64cdaa090d2873201bc5a")
      },
      network_id: 3
    }
  }
};

3.  增加配置文件.env
Dotenv是一个零依赖模块,用于从".env"文件中导入环境变量到 process.env,对DAPP来说,这样就可以不用上传钱包助记词等核心机密到GITHUB,便于资产安全。

.env file

mnemonic=topic foster find apple famous have bonus month remain middle funny smart
infurakey=xxxxxxxxxxxxxxxxxxxxxxxxxx
prakey=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

这样上面代码如下:

// 定义HDWalletProvider对象
var HDWalletProvider = require("truffle-hdwallet-provider");
const reselt=require('dotenv').config(); // 默认读取项目根目录下的.env文件,用process.env.调用
if (result.error) {
  throw result.error;
}
console.log(result.parsed);

module.exports = {
  networks: {
    ropsten: {
      provider: function() {
      // 定义以太坊节点 https://ropsten.infura.io/your-api-key
       return new HDWalletProvider(process.env.mnemonic, "https://ropsten.infura.io/"+ process.env.infurakey);
      },
      network_id: 3
    }
  }
};

4.部署到以太坊网络
执行如下命令,部署到以太坊测试网络ropsten

truffle migrate --network ropsten

若部署时出现 network up to date 原因由于合约移植是懒编译的,如果发现已经发布过,且发布的版本号没有变化就不会再发布,所以使用--reset。使用truffle migrate --reset来强制重编译并发布所有合约.

若部署时候出现类似 node_modules\node-sss\ventor not found 等出错信息 首先安装 npm install node-sss --save ,如果还是出现 用npm rebuild node-sass --save 重建生成即可。

猜你喜欢

转载自blog.csdn.net/jamesdodo/article/details/108445967