搭建geth私有链和联盟链网络

搭建geth私有链和联盟链网络,第1张

*** 作系统:linux或Mac OS

安装geth执行以下命令:

linux:sudo apt-get install ethereum

Mac OS:brew install ethereum

直接创建两个geth的工作目录,用于之后的组建联盟链的使用:

mkdir eth-private1

mkdir eth-private2

首先 cd eth-private1 进入节点1的工作目录该目录下执行下面命令

geth --datadir data --nodiscover console (data是之后geth节点的数据目录,可自行修改)

使用geth自带的工具 puppeth 用于生成创世区块,过程如下:

puppeth

+-----------------------------------------------------------+

| Welcome to puppeth, your Ethereum private network manager |

| |

| This tool lets you create a new Ethereum network down to |

| the genesis block, bootnodes, miners and ethstats servers |

| without the hassle that it would normally entail. |

| |

| Puppeth uses SSH to dial in to remote servers, and builds |

| its network components out of Docker containers using the |

| docker-compose toolset. |

+-----------------------------------------------------------+

Please specify a network name to administer (no spaces, please)

输入私链名称后,会出现二级菜单,现在2:配置一个新的创世快

What would you like to do? (default = stats)

再次出现二级菜单,让你选择共识机制(这里采用poa共识)

Which consensus engine to use? (default = clique)

Ethash - proof-of-work(PoW) :工作量证明,通过算力达成共识 (以太坊就是使用这种方式)

Clique - proof-of-authority(PoA): 权威证明、通过预先设定的权威节点来负责达成共识 (不消耗算力,一般用于私有链测试开发)

如果选择Pow的共识方法,直接输入1,回车即可。

如果选择PoA的共识方法,输入2后会提示让你选择处快的间隔时间,一般测试开发使用可以设置相对的将处快时间设置较少5秒即可,然后会让你选择哪个账户来作为权威生成区块(至少有一个,输入刚才创建的账户,若只是单节点就输入那个节点目录生成的地址,若想组建联盟链就填写生成的两个地址)

How many seconds should blocks take? (default = 15)

选择好共识机制后会让你指定给那些账号初始化ether(至少有一个),输入我们刚才创建的账户地址回车即可。

Which accounts should be pre-funded? (advisable at least one)

选择输入私有链的网络ID,任意数字即可(不能为1,1是公链),也可以不输入会给定一个随机数作为私有链的网络ID

Specify your chain/network ID if you want an explicit one (default = random)

选择导出创世区块配置文件

选择导出创世区块配置文件的保存路径,可以保存到当前目录,直接按回车即可

Which file to save the genesis into? (default = my-private-chain.json)

INFO [02-09|14:56:33] Exported existing genesis block

这样就完成了创世区块文件的配置了,直接退出puppeth即可。

输入命令 geth --datadir data init private.json 其中data自己制定,private.json就是刚才生成的创世区块

若出现如图错误:

输入命令:

geth --datadir data --syncmode full --port 2001 --networkid 1234 --rpc --rpcport "8545" --rpccorsdomain "*" --rpcaddr "0.0.0.0" --rpcapi "db,eth,net,web3,personal,admin,clique" --nodiscover console 进入控制台

--datadir data:节点的数据目录

--syncmode full:块同步的方式(若只是单节点可不填)

--port 2001: 网卡监听端口

--networkid 1234:网络标识符

--rpc:开启rpc服务

--rpcport "8545":rpc服务的端口

--rpccorsdomain "*":允许跨域请求的域名列表(逗号分隔)(浏览器强制)

--rpcaddr "0.0.0.0" :HTTP-RPC服务器接口地址(默认值:“localhost”)

--rpcapi "db,eth,net,web3,personal,admin,clique":基于HTTP-RPC接口提供的API(私有链可以任意开发,公有链需要谨慎)

--nodiscover:不允许节点自动加入

若想搭建联盟链,必须保证创世区块一致,进入到刚才创建的eth-private2的目录

将之前生成的创世区块拷贝过来,初始化创世区块,然后使用启动命令启动分别启动两个节点,进入控制台,使用 admin.nodeInfo 命令获取节点的信息

总结:

两个服务器部署两个节点是可以联通的,但是只能使用两个节点对应的地址进行挖矿,所以只能是两个节点对应两个地址进行挖矿,使用poa共识,当一个节点挂掉,挖矿停止,因为poa共识挖矿必须超过50%的节点进行钱增,现在只是两个节点,挂掉一个节点挖矿就会停止等待另一个节点的确认,停掉的节点可以通过正常运作的节点信息重新连接到网络中。

问题:

同步块有可能报错情况:

1:Synchronisation failed "retrieved hash chain is invalid" 解决目前找到的方法是removedb 数据目录 ,重新init创世区块

2:内存溢出初步确认为开启rpc服务造成的,有可能服务器恶意被黑,暴力破解密码,占有内存,解决,将服务器的ip设置一条防火墙

若存在问题可给本人留言或访问本人的github: https://github.com/qi-shuo/geth-document 记录了一些本人搭建使用的命令

使用GDI+中Bitmap类打开一幅图象后,需要将头结构数据取出,

使用

Graphics graphics (GetSafeHwnd (), FALSE)

Bitmap myBitmap (L"abc.jpg", FALSE)

Color backColor

HBITMAP HBitmap

myBitmap.GetHBITMAP(backColor, &HBitmap)

LPSTR lpInfo = (LPSTR) GlobalLock(HBitmap)

error = GetLastError ()

一般命令可能得通过脚本实现了,把写好的命令写进一个文本文件中,然后在改文件的第一行前面插入:#!/bin/bash(独占一行),再保存,最后给这个文件添加可执行权限:chmod +x filename 这样一来这个文件就可以执行了,执行的方式:./filename

C,C++高级语言执行则使用gcc编译,gdb 调试 : $ gcc /写好的文件 -o /编译后的文件名(file1)

$ gdb (参数 [-g -o]等,可省略) file1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/6734855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存