主页 > imtoken钱包苹果手机怎么下载 > 基于以太坊环境搭建私有链

基于以太坊环境搭建私有链

基于以太坊环境搭建私有链

安装geth在之前的博客中有提到,所以本文已经默认安装成功

geth -h   //能成功显示输出帮助,则表示已经成功安装

 
  • 1
  • 2

1. 创世区块

现在通过配置创世块创建私有链。 在同一个网络中,创世块必须相同,否则无法连接。

创建一个私有根目录,新建一个创世块json文件genesis.json启动以太坊私有链,并将该文件放在peivate目录下。 内容如下:

ps:详情请参考:这里

{
  "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.查看私有存储目录

输入:pwd
显示结果: /Users/pro/private

 
  • 1
  • 2
  • 3

2.执行命令创建私有链

geth --datadir "./" init genesis.json
 
  • 1

3. 结果

目录结构:
 private
├── chain

启动以太坊私有链_以太坊私有链搭建_如何登陆以太坊公链

│ ├── geth │ │ └── chaindata │ │ │ ├── 000055.log │ │ │ ├── CURRENT │ │ │ ├── LOCK │ │ │ ├── LOG │ │ │ └── MANIFEST-000000 │ │ ├── lightchaindata │ │ ├── LOCK │ │ └── nodekey │ └── keystore └── genesis.json
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

3.开始

geth --datadir "./" --nodiscover console 2>>geth.log

 
  • 1
  • 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

查看输出(进入私有目录):

tail -f geth.log 

 
  • 1
  • 2

4.使用

如何登陆以太坊公链_以太坊私有链搭建_启动以太坊私有链

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节点启动以太坊私有链,是当前节点的标识。

5.配置第二个私链服务器

要求:两台电脑联网,必须指定相同的networkid

按照同样的步骤在电脑B上搭建私有链。

构建完成后,在电脑B上输入:

admin.addPeer("节点信息@A电脑ip地址:30303");
例如: 
admin.addPeer("enode://160e220dda023b7307de009791be621a2857195f062a6a1d9002276e95604f07481fca352a31bb6e1219edb5760ccdec65cad37310be578c2ad503ccd301a762@127.0.0.1:30303") 

 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

验证是否与其他节点建立连接成功,进入admin查看节点是否连接。 在许多情况下,连接会失败。 这时候可以尝试从另外一个节点添加这个节点,会成功的。

参考博客:这里和这里和这里