搭建私有链网络

网上已经有很多关于怎样搭建私有链的文章,我只是从他们那里吸取学习,然后在工作中吸收消化,转化成自己的理解。在这里,我只是一个学习者,新手。

我是在liunx上环境上,利用geth来部署私人链网络。在部署链网络前,需要把geth安装好,这个在网络上很多。

1、首先在本地目录($home)中创建3个文件夹chain1、chain2、chain3,这里名字是任意的,这三个文件夹用于存储私有链的数据。

下面是构建目录结构:

---nodes

    ---gensis.json

    ---chain1

    ---chain2

    ---chain3

2、创建账号

    geth --datadir ./chain1 account new

    geth --datadir ./chain2 account new

    geth --datadir ./chain3 account new

3、创世纪文件gensis.json

{    
    "config":{  
        "chainId":520,  
        "homesteadBlock":0,  
        "eip155Block":0,  
        "eip158Block":0  
    }, 
   "alloc": {  
         "1dbadccda953604a05ca5ea9ee3fef10420c43fa": {"balance": "1000000000000000000"}
  "b77bfecae7c223e8285e9951f54b15c72efe6c41": {"balance": "2000000000000000000"}
  "7dead59d57d75e2b20bff1f56a127593f799e0c3": {"balance": "3000000000000000000"}   
}
    "nonce":"0x0000000000000042",  
    "mixhash":"0x0000000000000000000000000000000000000000000000000000000000000000",  
    "difficulty": "0x2000",  
    "coinbase":"0x0000000000000000000000000000000000000000",  
    "timestamp": "0x00",  
    "parentHash":"0x0000000000000000000000000000000000000000000000000000000000000000",  
    "extraData": "",  
    "gasLimit":"0xffffffff"  

}

其中,config中的内容是区块链相关的基本配置参数,最重要的是链编号chainId,它是用于标识区块链的编号。chainId有些说是networkid,至于chainId和networkid的区别,我暂时还不清楚。在后面使用中设置成一样就行。alloc中为以太坊账户配置信息,可以留空,等待部署完成后,再启动以太坊创建账户;也可以预先配置好以太坊账户及其余额,这里的账户余额是以wei为单位,也就是数值10的18次方表示1ether。上面的3个账户,是通过第2步生成的。每个人生成的是不一样的。

4、初始化节点

geth --datadir ./chain1 init gensis.json

geth --datadir ./chain2 init gensis.json

geth --datadir ./chain3 init gensis.json

5、分别启动节点

geth --datadir ./chain1 --networkid 52 --port 1314  console

geth --datadir ./chain2 --networkid 52 --port 1315  console

geth --datadir ./chain3 --networkid 52 --port 1316  console

6、各节点互通

admin.nodeInfo 查询节点的信息

admin.addPeer 把节点串起来

下面这个encode是chain1的,这里我们把chain2、chain3节点加到chain1里面

admin.addPeer("enode://3ffa37ee0bcdf85be7ab70d7864d054c5358127e6c590dfda0cf337647e69980552511d97625b85bfc812584b88866b4c1c04bef9802d81efa27ddaa395f8324@[::]:1314")

加入后,可以通过net.peerCount查看连接数

7、测试私有链

在chain1节点里执行miner.start()挖矿,截图如下:


经过挖矿后:


明显看到账户里挖了很多币

下面来个交易例子:


发送交易,首先需要把账号解锁;然后交易后,需要挖矿,这笔交易才能看到。比如:账号A转账给账号B,首先账号A需要调用

personal.unlockAccount()解锁,然后调用eth.sendTranscation发送交易,之后账号A调用miner.start()开始挖矿,最后查看账号B,就能看到这笔交易。

猜你喜欢

转载自blog.csdn.net/jujueduoluo/article/details/80312184
今日推荐