以太坊区块链私网环境搭建

Posted falsh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以太坊区块链私网环境搭建相关的知识,希望对你有一定的参考价值。

1、从网站https://github.com/ethereum/go-ethereum/releases/下载最新版本

#tar -zxvf geth.tar.gz

#cd geth

#创建init.json的文本文件,内容如下:

{

"nonce": "0x0000000000000042",

"config": { "chainId": 15, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 },

"difficulty": "0x4000",

"alloc": {

"e0953e0a2ae54cfa0e72426de4ad654af5fd3669": {

"balance": "20000009800000000000000000000"

}

},

"mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",

"coinbase": "0x0000000000000000000000000000000000000000",

"timestamp": "0x00",

"parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",

"extraData": "0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa",

"gasLimit": "0xb2d05e00"

}

参数描述

mixhash 与nonce配合用于挖矿,由上一个区块的一部分生成的hash。注意他和nonce的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity,。

nonce nonce就是一个64位随机数,用于挖矿,注意他和mixhash的设置需要满足以太坊的Yellow paper, 4.3.4. Block Header Validity, (44)章节所描述的条件。

difficulty 设置当前区块的难度,如果难度过大,cpu挖矿就很难,这里设置较小难度

alloc 用来预置账号以及账号的以太币数量,因为私有链挖矿比较容易,所以我们不需要预置有币的账号,需要的时候自己创建即可以。

coinbase 矿工的账号,随便填

timestamp 设置创世块的时间戳

parentHash 上一个区块的hash值,因为是创世块,所以这个值是0

extraData 附加信息,随便填,可以填你的个性信息

gasLimit 该值设置对GAS的消耗总量限制,用来限制区块能包含的交易信息总和,因为我们是私有链,所以填最大。

 

2、创世区块初始化

#geth  --datadir "./app/" init init.json  初始化

注意:上面命令中--datadir后面的 /app/chain可以任意指定并且目录不用提前创建,但是一定要保证有足够的磁盘空间,init.json是我们在上一步创建的创世区块文件

 

3、启动以太坊

#nohup ./geth --identity "dapp" --rpc --rpcport "8545" --rpccorsdomain "*" --rpcaddr "0.0.0.0" --datadir "app" --port "30303" --nodiscover --rpcapi "db,eth,net,web3,personal,admin" --networkid 95518 --nat "any" 2>log.txt&

#./geth attach ipc:./app/geth.ipc  以ipc方式调用console控制台

#./geth attach http://127.0.0.1:8545 以rpc方式调用console控制台

参数描述

identity 区块链的标示,随便填写,用于标示目前网络的名字

init 指定创世块文件的位置,并创建初始块

datadir 设置当前区块链网络数据存放的位置

port 网络监听端口

rpc 启动rpc通信,可以进行智能合约的部署和调试

rpcapi 设置允许连接的rpc的客户端,一般为db,eth,net,web3

networkid 设置当前区块链的网络ID,用于区分不同的网络,是一个数字

console 启动命令行模式,可以在Geth中执行命令

nodiscover 禁止被网络中其它节点发现,需要手动添加该节点到网络

verbosity 打印详细的日志信息

 

4、创建主账户,挖矿,转账,组网

>personal.newAccount(“111111”)

>personal.listAccounts 查看主账户

>web3.fromWei(eth.getBalance(eth.coinbase), "ether") 查询默认帐号余额

>miner.start(1) 挖矿,当出现mined block时,只有挖到矿了才可以转账

>miner.stop() 停止探矿

>personal.unlockAccount("0x5a5116d5b2c27d77214134c81593974bc5abd6f9","111111",3600) 解锁

> eth.sendTransaction({from: ‘0x325d05e04c7f62fbaaee83745e90a9b90bdbd089‘, to: ‘0xd841a08defddc93285b45ed4187d791170168daf‘, value:web3.toWei(1,"ether")}) 转账

> web3.fromWei(eth.getBalance(eth.accounts[1]), "ether")  其他帐号

> txpool.status 查看交易状态

组网建立区块链,组网有二个要求:

>>>创世块文件要一样

>>>geth启动时的networkid要一样,即启动中的--networkid 95518 这个参数值要一样

在二台不同机器上搭建二个以太坊私有链,然后执行以下命令

>admin.nodeInfo 查看当前节点的peer信息

然后把另外1台上面的节点信息复制下来执行admin.addPeer即可,小括号里面的enode信息为另外1台机器的信息

> admin.addPeer("enode://505b0b845e48d17db5bc8e7a5d8a8743a64007b36028907bb5bb6d24575265ce2[email protected]192.168.37.40:30303")

查看组网是否成功

> admin.peers

 

5、Mist 连接到搭建好的私网

Mist.exe . --rpc "http://192.168.37.40:8545"  --node-networkid 95518  --swarmurl "null"

以上是关于以太坊区块链私网环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

搭建以太坊智能合约开发环境

区块链以太坊环境搭建(详细篇)

第一行代码:以太坊-创建自己的私有区块链

第一行代码:以太坊-创建自己的私有区块链

区块链开发Windows平台搭建基于以太坊的区块链开发环境

区块链2.0以太坊环境搭建