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

xiaoxiao2021-02-28  4

上篇文章,我已经讲过了,如何安装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 ,需要重新部署合约。

合约部署成功后,见下图

恭喜你,合约部署成功

开启服务,执行下面命令

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

sudo npm run build 执行成功后,如下如:

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

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

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

2017-12-10 写于深圳

转载请注明原文地址: https://www.6miu.com/read-1400189.html

最新回复(0)