1 私有链的搭建(Linux系统)
(1)为什么需要私有链?
定制:调整挖矿难度,区块大小,预分配以太币
(2)初始创世纪块
可以使用工具puppeth初始化创世纪块
(3)定义初始化创世纪块
{
"config": {
"chainId": 0,
"homesteadBlock": 0,
"eip155Block": 0,
"eip158Block": 0
},
"alloc" : {},//配置默认账号的默认金额
"coinbase" : "0x0000000000000000000000000000000000000000",
"difficulty" : "0x20000",//挖矿的难度
"extraData" : "",
"gasLimit" : "0x2fefd8",//控制区块gas的限制,值越大区块包含的交易越多
"nonce" : "0x0000000000000042",
"mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000",
"timestamp" : "0x00"
}
(4)开始搭建私有链
>mkdir privatechain //为私有链创建目录
>cd privatechain //进入目录
>touch init.json //创建配置文件
>atom init.json //用atom打开文件
对文件进行修改,修改后的init.json文件如下图所示
上图中“alloc”中的账号是使用geth生成的
命令如下所示
>geth –datadir . account new
上图中alloc中的账号就是通过该命令行生成的,在生成账号过程中需要重复输入密码。生成的账号是保存在当前的目录下。
>geth init init.json –datadir . //初始化该私有链
>geth –datadir . console //启动创建好的私有链
>eth.accounts //查看一下账号的情况,账号是否是上述生成的账号
>eth.getBalance(“账户地址”) //查看余额
至此,私有链已经搭建好
>exit//退出控制台
2.geth搭建节点集群-多节点共享数据
(1)开启多个节点
本地测试注意点:
1. 每个节点都有不同的--datadir
2. 每个节点都要运行在不同的端口,使用--port及--rpcport控制
3. 每个节点ipc唯一或者禁用ipc,使用参数—ipcpath或者—ipcdisable
(2)多节点建立连接
Admin.addPeer
(3)搭建两个节点的数据共享
需要打开两个控制台终端,在上述基础之上,重新打开新的终端。
现在设置两个节点,那么两个节点的初始状态应该是一样的。使用私有链的创世纪块初始化第二个节点。
>mkdir private2 //为第二个节点建立目录
>cd private2 //打开第二个目录
>cp ../privatechain/init.json . //将创世纪块的文件拷贝到当前的private2中
>geth init init.json –datadir . //初始化第二个节点,初始化之后两个节点的初始状态都是一样
接下来要启动两个节点,先把第一个节点启动
>geth –datadir .console
接着启动第二个节点,这里应该注意两个节点的端口应该是不同的,第一个节点占用的是端口30303,所以第二个节点要换端口,使用30302端口
>>geth –datadir . –port 30302 console
至此,两个节点已经启动,但是两个节点都是各自工作的。
>net.peerCount //查看两个节点的连接状态,这时候两个节点都会显示0。
>admin.nodeInfo.enode//查看两个节点的节点信息
上图admin.nodeInfo.enode之后显示的是第二个节点的节点信息
>admin.addpeer(“enode://……”) //在第一个节点的控制台中添加第二个节点的节点信息
添加后如上图所示,这时候使用net.peerCount命令之后就会显示该节点与邻居节点进行连接。
两个节点如何同步区块
>miner.strat() //第一个节点开启挖矿
当第一个节点进行挖矿的时候,第二个节点会不断更新区块的信息,说明节点的集群搭建是成功的。
注:学习课程——《区块链实战篇-以太坊DAPP开发实践》 讲师:Tiny熊