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