geth搭建私有链联盟链(三节点)

 

目录

一.geth的安装

二.geth的启动(先同步两个节点)

三.联盟链互通

四.节点3的接入以及转账同步。 (操作流程类似)


一.geth的安装

1.  https://geth.ethereum.org/downloads/            //此链接为geth的各个版本,根据需求下载使用,本文所用为1.7.3版本。链接打不开的可以私信我给你安装包。

2.  安装目录。下载完成后安装除c盘的文件中,我安装在了d盘。如下图:

3。安装完以后我们需要在这个文件中创建一个genesis.json的文件。代码如下:

{
  "nonce": "0x0000000000000042",
  "difficulty": "0x4",
  "mixhash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "coinbase": "0x0000000000000000000000000000000000000000",
  "timestamp": "0x00",
  "parentHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
  "gasLimit": "0xffffffffffffff",
  "alloc": {},
  "config": {
	"chainId": 666,
    "homesteadBlock": 0,
    "eip150Block": 0,
    "eip150Hash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "eip155Block": 0,
    "eip158Block": 0,
    "byzantiumBlock": 0,
    "constantinopleBlock": 0,
    "petersburgBlock": 0,
    "istanbulBlock": 0,
    "ethash": {}
   }
}

4.创建完成后,目录中就是两个文件。

二.geth的启动(先同步两个节点)

1. win+R打开第一个控制台输入以下命令。

2.接着就是初始化,此处data是生成一个存储数据的文档,可以更改名字。(初始化创世块的命令)

geth --datadir ./data-init1/ init genesis.json

3.启动并进入控制台。

geth --datadir ./data-init1/ --port 30303 --nodiscover console

4.显示如下界面,启动成功。(Welcome to the Geth JavaScript console!)

5.win+R打开第二个控制台输入以下命令。 (初始化创世块的命令)

geth --datadir ./data-init2/ init genesis.json

6.启动并且进入控制台。(注意此处多一个ipcdiable参数,如与第一个控制台一样,会报错:Erro starting protocol stack:Access is denied)

geth --datadir ./data-init2/ --port 40404 --nodiscover --ipcdisable console

7.分别在两个控制台创建新的账号,并记录地址。

personal.newAccount("123456")

8.两个账号的地址分别为:

"0x0d12fd40b27405558103da6f6938ebc2eb8c257d"
"0xd133cddb87fef456314da378f78dda0a20022f96"

 

三.联盟链互通

1.查看节点的peers的情况。 

> admin.peers
[]

2.通过分享enode地址的方式来让两个节点建立链接。(打开控制台2输入)

admin.nodeInfo.enode

3.显示如下界面。

 通过上面命令,我们获得了节点2的encode信息。这是geth用来连接到不同节点的enode信息,在这些不同的节点它们能够分享交易和成功挖掘信息。

4.复制节点2的enode的信息,在节点1的控制台执行以下命令。 (把2的节点链接到1中,返回true说明成功)

admin.addPeer  ("enode://0bd1b7da689dd574eae04d20484086a5c59d81981b927602ef745233a72eac3280ea1a193a41c24d05fae54ae9e78d4fd76b590ffc356c6786eb6f70b0e6b276@[::]:40404?discport=0")

5.在控制台1执行挖矿miner.start()时,我们会发现节点2的控制台出现了这样的日志信息,说明同步成功,也就是说,节点1挖矿,节点2在同步数据信息。

6.停止节点1的挖矿,并我们拿节点1的这个地址在节点2的控制台查询一下信息,查看coinbase地址金额。 

> eth.getBalance("0x0d12fd40b27405558103da6f6938ebc2eb8c257d")
1.334999999999844444446e+21

以上信息说明,节点1和节点2的数据是完全同步的。

四.节点3的接入以及转账同步。 (操作流程类似)

1.win+R打开第三个控制台输入以下命令。 (初始化创世块的命令)

geth --datadir ./data-init3/ init genesis.json

2. 启动并进入控制台。

geth --datadir ./data-init3/ --port 50505 --nodiscover --ipcdisable console
WARN [10-28|10:35:53] No etherbase set and no accounts found as default
INFO [10-28|10:35:53] Starting peer-to-peer node               instance=Geth/v1.7.3-stable-4bb3c89d/windows-amd64/go1.9
INFO [10-28|10:35:53] Allocated cache and file handles         database=D:\\testGeth\\data-init3\\geth\\chaindata cache=128 handles=1024
WARN [10-28|10:35:54] Upgrading database to use lookup entries
INFO [10-28|10:35:54] Database deduplication successful        deduped=0
INFO [10-28|10:35:54] Initialised chain configuration          config="{ChainID: 72 Homestead: 0 DAO: <nil> DAOSupport: false EIP150: <nil> EIP155: 0 EIP158: 0 Byzantium: <nil> Engine: unknown}"
INFO [10-28|10:35:54] Disk storage enabled for ethash caches   dir=D:\\testGeth\\data-init3\\geth\\ethash count=3
INFO [10-28|10:35:54] Disk storage enabled for ethash DAGs     dir=C:\\Users\\Administrator.DESKTOP-BT0S13O\\AppData\\Ethash count=2
INFO [10-28|10:35:54] Initialising Ethereum protocol           versions="[63 62]" network=1
INFO [10-28|10:35:54] Loaded most recent local header          number=0 hash=942f59…a2588a td=16384
INFO [10-28|10:35:54] Loaded most recent local full block      number=0 hash=942f59…a2588a td=16384
INFO [10-28|10:35:54] Loaded most recent local fast block      number=0 hash=942f59…a2588a td=16384
INFO [10-28|10:35:54] Regenerated local transaction journal    transactions=0 accounts=0
INFO [10-28|10:35:54] Starting P2P networking
INFO [10-28|10:35:54] RLPx listener up                         self="enode://6746169e29e872fa71e856e9535fc31aef2a63dce1fe7e71b2b9fea4ca42ea75f3ad740eec6471518505337d425da7148ba442596405d8e6efa3faa9100bb7f5@[::]:50505?discport=0"
Welcome to the Geth JavaScript console!

instance: Geth/v1.7.3-stable-4bb3c89d/windows-amd64/go1.9
 modules: admin:1.0 debug:1.0 eth:1.0 miner:1.0 net:1.0 personal:1.0 rpc:1.0 txpool:1.0 web3:1.0

3.创建新账号。

personal.newAccount("123456")

4. 通过分享enode地址的方式来让两个节点建立链接。(打开控制台3输入)

> admin.nodeInfo.enode
"enode://6746169e29e872fa71e856e9535fc31aef2a63dce1fe7e71b2b9fea4ca42ea75f3ad740eec6471518505337d425da7148ba442596405d8e6efa3faa9100bb7f5@[::]:50505?discport=0"

 5.复制节点3的enode的信息,在节点2的控制台执行以下命令。 (把3的节点链接到2中,返回true说明成功)

> admin.addPeer("enode://6746169e29e872fa71e856e9535fc31aef2a63dce1fe7e71b2b9fea4ca42ea75f3ad740eec6471518505337d425da7148ba442596405d8e6efa3faa9100bb7f5@[::]:50505?discport=0")
true

6.进行转账交易。(转账之前先解锁,在控制台1操作) 

personal.unlockAccount("0x0d12fd40b27405558103da6f6938ebc2eb8c257d")
Unlock account 0x0d12fd40b27405558103da6f6938ebc2eb8c257d
Passphrase:
true

7.给节点2以及节点3转账。

> eth.sendTransaction({from: eth.coinbase, to: '0xd133cddb87fef456314da378f78dda0a20022f96', value: 66666666})
INFO [10-28|10:33:11] Submitted transaction                    fullhash=0x7ab1130510f6bce2e82f92635eedc5f5d6637e032233b15d6f9a02c3a478b29b recipient=0xd133cDdb87FEf456314da378F78Dda0A20022F96
"0x7ab1130510f6bce2e82f92635eedc5f5d6637e032233b15d6f9a02c3a478b29b"

> eth.sendTransaction({from: eth.coinbase, to: '0xd133cddb87fef456314da378f78dda0a20022f96', value: 66666666})
INFO [10-28|10:33:11] Submitted transaction                    fullhash=0x7ab1130510f6bce2e82f92635eedc5f5d6637e032233b15d6f9a02c3a478b29b recipient=0xd133cDdb87FEf456314da378F78Dda0A20022F96
"0x7ab1130510f6bce2e82f92635eedc5f5d6637e032233b15d6f9a02c3a478b29b"

8.查询节点2,3余额发现为0,因为虽然我们发起了交易,单并没有矿工挖矿打包交易。再次执行miner.start()。再次查询,就会发现节点2,3的coinbase地址已经有金额了。 

> eth.getBalance("0x47792beb63a58a82ca3fde1039ab0f4fedac2722")
88888888
> eth.getBalance("0xd133cddb87fef456314da378f78dda0a20022f96")
66666666
>

通过以上的操作我们已经建立了一个拥有三个节点的联盟链,如果想建立更多节点的联盟链,可以此添加新的节点。

 

 

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值