搭建基于ethereum以太坊环境的私有链
2018-01-17 15:35
561 查看
搭建基于ethereum以太坊环境的私有链
安装geth在之前的博客有提到,所以本篇默认已经安装成功
2
现在通过配置创世块来创建私有链。同一个网络中,创世块必须是一样的,否则无法联通。
创建一个private的根目录,新建创世块json文件genesis.json, 并把该文件放置于peivate目录下。内容如下:
ps: 其中详细内容可参考:here
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ps: 直接从官网复制,chainId 为 0, 但是会在合约部署出现问题,所以在这里改为10.
参数解释:
1 、 查看private存放目录
2
3
2 、执行命令,创建私有链
3、 结果
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
参数解释:
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
查看输出(进入到private目录):
2
1、 查看区块信息
2
3
2、 查看节点信息
2
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ps: 注意enode节点,这是当前节点的标识。
要求: 两台电脑网络相通,并且要指定相同的networkid
按照同样的步骤在B电脑上搭建私链。
搭建完成后在B电脑上输入:
2
3
4
5
6
验证是否和其他节点成功建立连接,输入admin,查看是否连接上了节点,很多时候回连接不上,这时候就可以从另外一个节点尝试添加本节点,这样就会成功了。
参考博客:here 和 here 和 here
安装geth在之前的博客有提到,所以本篇默认已经安装成功
geth -h //能成功显示输出帮助,则表示已经成功安装1
2
一、创世块
现在通过配置创世块来创建私有链。同一个网络中,创世块必须是一样的,否则无法联通。创建一个private的根目录,新建创世块json文件genesis.json, 并把该文件放置于peivate目录下。内容如下:
ps: 其中详细内容可参考:here
{ "config": { "chainId": 10, "homesteadBlock": 0, "eip155Block": 0, "eip158Block": 0 }, "alloc" : {}, "coinbase" : "0x0000000000000000000000000000000000000000", "difficulty" : "0x20000", "extraData" : "", "gasLimit" : "0x2fefd8", "nonce" : "0x0000000000000042", "mixhash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "parentHash" : "0x0000000000000000000000000000000000000000000000000000000000000000", "timestamp" : "0x00" }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ps: 直接从官网复制,chainId 为 0, 但是会在合约部署出现问题,所以在这里改为10.
参数解释:
二、 创建
1 、 查看private存放目录输入:pwd 显示结果: /Users/pro/private1
2
3
2 、执行命令,创建私有链
geth --datadir "./" init genesis.json1
3、 结果
目录结构: private ├── chain │ ├── geth │ │ └── chaindata │ │ │ ├── 000055.log │ │ │ ├── CURRENT │ │ │ ├── LOCK │ │ │ ├── LOG │ │ │ └── MANIFEST-000000 │ │ ├── lightchaindata │ │ ├── LOCK │ │ └── nodekey │ └── keystore └── genesis.json1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
三、 启动
geth --datadir "./" --nodiscover console 2>>geth.log1
2
参数解释:
--nodiscover 使用这个参数,你的节点就不会被其他人发现,除非手动添加你的节点。否则,就只有一个被无意添加到一个陌生区块链上的机会,那就是跟你有相同的genesis文件和networkID。 --maxpeers 0 如果你不想有人连上你的测试链,就用maxpeers 0。或者,你可以调整参数,当你确切的知道有几个节点要连接上来的时候。 --rpc 允许RPC操作你的节点。这个参数在Geth上是默认的。 --rpcapi "db,eth,net,web3" 这个命令指示了允许通过RPC访问的命令。默认情况下,Geth允许web3。 --rpcport "8080" --rpccorsdomain "http://chriseth.github.io/browser-solidity/" --datadir "/home/TestChain1" 私有链存放路径(最好跟公有链路径不同) --port "30303" 网络监听端口,用来和其他节点手动连接 --identity “TestnetMainNode" 用来标识你的节点的,方便在一大群节点中识别出自己的节点1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
查看输出(进入到private目录):
tail -f geth.log1
2
四、使用
1、 查看区块信息eth eth.getBlock(0) //查看创始区块信息1
2
3
2、 查看节点信息
admin.nodeInfo //查看当前节点信息1
2
> admin.nodeInfo { enode: "enode://160e220dda023b7307de009791be621a2857195f062a6a1d9002276e95604f07481fca352a31bb6e1219edb5760ccdec65cad37310be578c2ad503ccd301a762@[::]:30303", id: "160e220dda023b7307de009791be621a2857195f062a6a1d9002276e95604f07481fca352a31bb6e1219edb5760ccdec65cad37310be578c2ad503ccd301a762", ip: "::", listenAddr: "[::]:30303", name: "Geth/v1.6.5-stable-cf87713d/darwin-amd64/go1.8.3", ports: { discovery: 30303, listener: 30303 }, protocols: { eth: { difficulty: 17179869184, genesis: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3", head: "0xd4e56740f876aef8c010b86a40d5f56745a118d0906a34e69aec8c0db1cb8fa3", network: 1 } } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
ps: 注意enode节点,这是当前节点的标识。
五、配置第二台私链服务器
要求: 两台电脑网络相通,并且要指定相同的networkid按照同样的步骤在B电脑上搭建私链。
搭建完成后在B电脑上输入:
admin.addPeer("节点信息@A电脑ip地址:30303"); 例如: admin.addPeer("enode://160e220dda023b7307de009791be621a2857195f062a6a1d9002276e95604f07481fca352a31bb6e1219edb5760ccdec65cad37310be578c2ad503ccd301a762@127.0.0.1:30303")1
2
3
4
5
6
验证是否和其他节点成功建立连接,输入admin,查看是否连接上了节点,很多时候回连接不上,这时候就可以从另外一个节点尝试添加本节点,这样就会成功了。
参考博客:here 和 here 和 here
相关文章推荐
- 【区块链】搭建基于ethereum以太坊环境的私有链 - mac
- 区块链开发(一)搭建基于以太坊的私有链环境
- 搭建基于以太坊的私有链环境
- 区块链开发(一)基于以太坊的私有链环境搭建介绍
- 搭建开发基于数字货币的私有链环境
- 搭建基于以太坊的私有链环境
- 区块链开发(一)搭建基于以太坊的私有链环境
- 基于Docker的以太坊私有环境搭建
- 区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
- 区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
- 区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
- 基于docker+gitlabCI搭建私有集成环境
- 区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
- 转:区块链开发(一)搭建基于以太坊go-ethereum的私有链环境
- 微信公众平台开发之基于百度 BAE3.0 的开发环境搭建(采用 Baidu Eclipse)
- Windows环境下搭建基于Eclipse的STM32 GCC 开发环境(一)工具篇
- 基于SpringMVC、Maven以及Mybatis的环境搭建 【转】
- Linux——虚拟化环境搭建教程,基于Centos 6 版本(下)
- 搭建用友开发环境(基于碧桂园的nchome)
- 基于Maven的Springboot+Mybatis+Druid+Swagger2+mybatis-generator框架环境搭建