区块链开发(九) 以太坊 truffle 项目部署在 geth创建的私有链方法

上篇文章,我已经讲过了,如何安装truffle框架,开始我们探索之旅,但是上篇文章是在开发环境下(执行testrpc)部署测试合约,这次我们将项目部署在 geth创建的私有链上。

今天我们接着上次的项目继续进行。

需要启动geth 创建的私有链。在这里需要定义好几个参数。

  • 1) geth启动节点的时候,必须带有--rpcapi选项,并且选项的值必须包含有:"web3", "net", "eth"这3个设置,另外为了保证rpc为启用,还应该带有"--rpc"等一系列相关的参数。
  •  2) 注意truffleproject项目目录中:truffleproject/truffle.js(项目的配置文件),关于"rpcport"的配置必须要与启动节点时,设置的端口号一致。

经过几天的反复在坑里爬,翻阅大量资料,最后使用这样的命名创建私有链:

geth  --rpc  --rpccorsdomain "*" --datadir "./" --port 30303 --rpcapi "db,eth,net,web3,personal,web3" --networkid 1234 --rpcport 8545 --rpcaddr "192.168.1.103" console 2>>geth.log
 

我对命令做一些解释:

我要部署的主机位 192.168.1.103 ,所以需要定义rpcadddr '192.168.1.103'   rpcport 8545

启动私有链后,我们需要解锁account[0]  账户,因为部署合约需要在account[0]解锁情况下进行。

我们默认打开20分钟有效,如下面命令:

personal.unlockAccount(eth.accounts[0],"password", 1000*60*20)

打开挖矿,否则部署合约的时候,无法被网络确认

miner.start()
 

我们需要对truffle.js配置一下

我们需要修改truffle.js,针对启动的链做一些配置:

require('babel-register')

module.exports = {
  networks: {
    development: {
      //host: '192.168.1.103',
      host: 'localhost',
      port: 8545,
      network_id: '*' // Match any network id
      //network_id: '1234' // Setting network id is 1234
    },
    live:{
      host: '192.168.1.103',
      port: 8545,
      network_id: '1234'
    }
  }
}

live:{
      host: '192.168.1.103',
      port: 8545,
      network_id: '1234'
    }

红色字体为新增部分,定义必须与启动geth私有链配置一致。

配置完成后,进入创建truffle项目的文件夹中。

开始编译合约

sudo truffle complie --complie-all

增加参数 --complie-all 是每次全部编译合约

开始部署合约

sudo truffle migrate --network live --reset

我们对部署合约参数做一些解释:

--network live,我们针对定义的这个网络进行部署。

--reset ,需要重新部署合约。

合约部署成功后,见下图

区块链开发(九) 以太坊 truffle 项目部署在 geth创建的私有链方法_第1张图片

恭喜你,合约部署成功


开启服务,执行下面命令

开启服务之前,需要先启动如下命令:

sudo npm run build

执行成功后,如下如:
区块链开发(九) 以太坊 truffle 项目部署在 geth创建的私有链方法_第2张图片

sudo truffle serve

服务启动成功后,我们在浏览器中输入 http://192.168.1.103:8080

 要想修改 访问Port,请修改usr/lib/node_mondu/truffle/lib/serve.js这个文件

现在你已经成功将truffle项目部署在geth创建的私有链上了。



2017-12-10 写于深圳





你可能感兴趣的:(区块链,技术篇,区块链开发)