天天看点

基于以太坊项目quorum多机多节点搭建_1准备工作

准备工作

  • 环境搭建

我这里使用4台虚拟机来模拟实际网络,在这四台虚拟机里分别搭建了quorum节点。

我这里使用quorum maker 工具来搭建quorum

quorum maker 是一个带UI界面的自动化搭建quorum的工具。

  • quorum maker 安装

git clone https://github.com/synechron-finlabs/quorum-maker.git
           

附上Github地址里面自带了英文版的安装使用指南

https://github.com/synechron-finlabs/quorum-maker/wiki

基于以太坊项目quorum多机多节点搭建_1准备工作

拷贝完后,还需要安装docker

  • docker安装

  脚本我已经写好了,这个脚本实现自动安装docker容器

#! /bin/bash
sudo apt-get purge libappstream3 -y
sudo apt-get update
echo 更新软件列表成功
sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y
echo 安装CURL成功
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
echo 添加阿里云地址成功
sudo add-apt-repository "deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
echo 添加阿里云地址成功X
sudo apt-get update
echo 二次更新软件列表成功
sudo apt-get install docker-ce -y
echo 安装docker容器成功
sudo groupadd docker
echo 创建docker容器用户组成功
sudo gpasswd -a $(whoami) docker
echo 添加用户到用户组
newgrp docker
echo 更新docker用户组
sudo service docker restart
echo 重启docker
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
echo 添加加速器链接
docker version
sudo systemctl restart docker
echo 重启DOcker服务
sudo apt install docker-compose -y
           
  • 智能合约编译环境搭建

 我这里用的是node+web3来编译部署合约,当然也可以用truffle框架,不过我个人不喜欢用truffle框架。

这里附上我另一篇文章nodejs+npm+web3+solc环境搭建。

当然这个quorum maker里面集成了自动部署合约的功能。在他的右上角有一个自动部署合约的按钮。

基于以太坊项目quorum多机多节点搭建_1准备工作
基于以太坊项目quorum多机多节点搭建_1准备工作
  • 开始搭建quorum网络

  • 创建第一个节点

上面拷贝好代码后我们进入目录并且运行初始化脚本

cd quorum-maker &&  ./setup.sh
           

第一次运行脚本还需要下载docker镜像,它会自动识别并且拉取所需镜像,等待镜像下载完毕后重新执行./setup.sh即可。

docker镜像里面包含了quorum环境。

再次运行 ./setup.sh

基于以太坊项目quorum多机多节点搭建_1准备工作

出现了一个漂亮的界面。

我们在第一台虚拟机上执行创建网络

基于以太坊项目quorum多机多节点搭建_1准备工作
  • 其他节点加入网络

下面我们切换到其他虚拟机上

基于以太坊项目quorum多机多节点搭建_1准备工作

这时候他会像第一台主机请求连接

我们切换到第一台主机视角进入浏览器输入 http://localhost:22004/dashboard 进入当前节点UI管理界面

基于以太坊项目quorum多机多节点搭建_1准备工作

右上角出现了节点加入请求,我们点开它就可以了、如果这时候没有显示就刷新下页面。如果还是没有就检查是否填错了信息

quorum maker 还提供了白名单功能。需要连接的节点我们可以提前将那个节点的IP加入白名单。当那个节点连接的时候就无须验证自动加入网络。

基于以太坊项目quorum多机多节点搭建_1准备工作

这是quorum maker提供的API 。更多接口可以在他的github上找到。

https://github.com/synechron-finlabs/quorum-maker/wiki

  • 尝试节点加入白名单的时候遇到的坑

我这里是通过nodejs来调用/updateWhitelist的post请求的

之前调用的时候不知道IP需要以什么格式加入白名单。最终搞懂了是以    ["需要加入的IP地址"]   对象格式发送post请求来加入白名单。这个点在官方的github上都没写,浪费了我一个上午的时间来尝试.

现在附上代码

var request = require('request');
var url="http://localhost:22004/updateWhitelist";
var requestData=["192.168.1.141"]
httprequest(url,requestData);

function httprequest(url,data){
    request({
        url: url,
        method: "POST",
        json: true,
        headers: {
            "content-type": "application/json",
        },
        body: requestData
    }, function(error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log(body) // 请求成功的处理逻辑
        }
    });
};
           

如果想一次性加入多个IP到白名单的话加个逗号即可

["192.168.1.1",“192.168.1.22”] 
           

加入白名单后需要连接之后才能被激活。如果不连接不停地更新白名单的话,之后加的IP会覆盖掉前面的。

除非一次性写入