一、环境

1. Ubuntu虚拟机4台

name ip role
node1 192.168.92.129 bootNode
node2 192.168.92.130
node3 192.168.92.131
node4 192.168.92.132

2. 安装golang

版本为1.11或更高

因为sudo apt install golang目前安装的版本是1.10,所以需要通过手动安装,若之前已经通过apt安装了golang,则可以参考ubuntu apt 卸载 golang_软件工程小施同学 的专栏-CSDN博客_apt 卸载golang卸载。

#下载
wget https://dl.google.com/go/go1.15.3.linux-amd64.tar.gz
#解压
sudo tar -C /usr/local -xzf go1.15.3.linux-amd64.tar.gz
#建立软连接
sudo ln -s /usr/local/go/bin/* /usr/bin/
#设置环境变量
sudo vim ~/.bashrc

在文件末尾插入下面2行,保存退出

export GOPATH="$HOME/go"
export PATH="$PATH:/usr/local/go/bin:$GOPATH/bin"
#使配置文件生效
source ~/.bashrc

测试是否安装成功

go version

查看环境变量

go env

3.安装git

sudo apt-get install git
# 查看是否安装成功
git --version 

4. 安装gcc

GCC版本需要升级到4或5以上,可以先gcc  --version查看是否已经安装及其版本。

sudo apt-get update
sudo apt-get install build-essential
gcc --version

二、安装XuperChain

1. 编译XuperChain

只需要在一台机器上进行编译,然后拷贝到其它机器

1.1 在node1编译

#创建一个xuper文件夹作为工作目录
mkdir ~/xuper
cd ~/xuper#使用git下载源码到本地
git clone https://github.com/xuperchain/xuperchain.git#编译
cd src/github.com/xuperchain/xuperchain
make

若报错:

"https://proxy.golang.org/github.com/%21burnt%21sushi/toml/@v/v0.3.1.mod": dial tcp 216.58.200.49:443: connect: connection refused
Makefile:22: recipe for target 'build-release' failed

则可以换一个国内能访问的代理地址,执行命令:

go env -w GOPROXY=https://goproxy.cn

重新执行编译。

在output目录下,主要目录有data, logs, conf, plugins等, 二进制文件有xchain,xchain-cli

各目录的功能如下表:

目录名

功能

output/

节点根目录

├─ conf

xchain.yaml: xchain服务的配置信息(注意端口冲突) plugins.conf: 插件的配置信息

├─ data

数据的存放目录,创世块信息,以及共识和合约的样例

│ ··· ├─ blockchain

账本目录

│ ··· ├─ keys

此节点的地址,具有全局唯一性

│ ··· ├─ netkeys

此节点的网络标识ID,具有全局唯一性

│ ··· └─ config

包括创始的共识,初始的资源数,矿工奖励机制等

├─ logs

程序日志目录

├─ plugins

so扩展的存放目录

├─ xchain

xchain服务的二进制文件

├─ xchain-cli

xchain客户端工具

└─ wasm2c

wasm工具(智能合约会用到)

1.2 将output文件夹拷贝到其它机器

在其它机器(node2,3,4)新建目录

mkdir -p ~/xuper/xuperchain/

将node1中的output文件夹发送到其它机器

scp -r /home/shijianfeng/xuper/xuperchain/output/ shijianfeng@192.168.92.130:~/xuper/xuperchain/scp -r /home/shijianfeng/xuper/xuperchain/output/ shijianfeng@192.168.92.131:~/xuper/xuperchain/scp -r /home/shijianfeng/xuper/xuperchain/output/ shijianfeng@192.168.92.132:~/xuper/xuperchain/

2.部署xchain服务

2.1 创建区块链

在node1节点创建区块链

在启动xchain服务之前,我们首先需要创建一条链(创世区块),xchain客户端工具提供了此功能

cd ~/xuper/xuperchain/output/
# 创建xuper链
./xchain-cli createChain

使用 config/xuper.json 中的配置创建了一条链(此时 data/blockchain 中会生成 xuper 目录,里面即是我们创建的链的账本等文件)

启动该节点

# 启动服务节点
nohup ./xchain &

2.2 指定bootNode节点

首先需要有一个节点作为“bootNode”,其他节点启动前都配置这个“bootNode”的地址即可实现

对于bootNode节点,我们需要先获取它的netURL,具体命令如下:

./xchain-cli netURL get -H 192.168.92.129:37101

如此我们会获得一个类似于 /ip4/127.0.0.1/tcp/47101/p2p/QmVxeNubpg1ZQjQT8W5yZC9fD7ZB1ViArwvyGUB53sqf8e样式的返回。

使用时将上述命令中的127.0.0.1改为机器的实际ip192.168.92.129

2.3 生成其它节点的私钥与netURL

在每个节点目录中分别进行操作

cd ~/xuper/xuperchain/output/
./xchain-cli account newkeys -f
./xchain-cli netURL gen

2.4 修改其它节点的配置

对其他的节点,我们需要修改其服务配置 conf/xchain.yaml 中p2p一节

vim conf/xchain.yaml
p2p:module: p2pv2// port是节点p2p网络监听的默认端口port: 47101// 节点加入网络所连接的种子节点的链接信息,bootNodes:- "/ip4/192.168.92.129/tcp/47101/p2p/QmVxeNubpg1ZQjQT8W5yZC9fD7ZB1ViArwvyGUB53sqf8e"

2.5 启动其它节点

修改完配置后,即可在每一个节点使用相同配置创建链,然后分别启动bootNode和其他节点,即完成了多节点环境的部署

# 启动服务节点
nohup ./xchain &

3. 确认服务状态

可以在各个节点,另其一个命令行窗口,使用系统状态的命令检查环境是否正常

./xchain-cli status -H 192.168.92.129:37101

多次执行上面的命令,如果trunkHeigh变化,则代表区块链启动成功。

通过变更 -H 参数,查看每个节点的状态,若所有节点高度都是一致变化的,则证明环境部署成功

三、基本功能使用

1. XuperChain环境部署 — xuperchain-doc 文档

参考

1. XuperChain环境部署 — xuperchain-doc 文档

2. 多节点部署 — xuperchain-doc 文档

区块链xuperchain ubuntu多机多节点 single共识 部署教程相关推荐

  1. 为什么区块链需要ADAMoracle预言机有着怎样紧密关联

    为什么区块链需要ADAMoracle预言机有着怎样紧密关联. 在预言机问题上的体现就是:用预言机上链数据并不难,简单的读写操作就能把一个链下的数据「喂」给链上的合约:但生产信任却很难,预言机要通过技术 ...

  2. BCH区块链上的预言机项目——Oracles

    近日,加密开发人员cgcardona在r/btc论坛发布了一个由个人开发的BCH相关项目,项目命名为Oracles(预言),它可用于预测市场.无信任下注等,目的是为了提供一种快速引导Oracles数据 ...

  3. 百度区块链 XuperChain开发教程(第二部分)

    百度区块链 XuperChain开发教程(第二部分) 第一部分编译完成后,现在开始进入测试部分: $ cd output/ $ ./xchain-cli createChain msg="c ...

  4. 【区块链开发入门】(三) Solidity合约编译、部署

    目录导航页 [区块链开发入门](一) 以太坊的搭建与运行 [区块链开发入门](二) 以太坊的编程接口 [区块链开发入门](三) Solidity合约编译.部署 [区块链开发入门](四) Truffle ...

  5. [北大肖臻-区块链技术与应用笔记]第三节课——共识机制

    文章目录 [北大肖臻-区块链技术与应用笔记]第三节课--共识机制 一.数字货币 数字货币与纸质货币 解决双花攻击--中心化方法 去中心化 举例 二.区块结构 块头(block header) 块身(b ...

  6. 区块链 fisco bcos 2.72 在多机器上部署多个docker节点 ubuntu

    一.安装 1. 安装依赖 安装curl.openssl: sudo apt-get update sudo apt install -y curl openssl 2. 安装docker: (1)安装 ...

  7. 区块链侧链应用开发平台Asch节点安装及区块生产教程

    1 系统要求 必须是linux系统 必须有公网ip 建议使用ubuntu 14.04 64位 建议内存1G以上 建议带宽2Mb以上 2 安装 2.1 下载 wget https://www.asch. ...

  8. 区块链查比特币_登图区块链课堂——比特币矿机发展史

    每周区块链知识讲堂准时和大家见面了,今天和大家聊聊:"比特币矿机的发展史".虚拟货币发展到今天,不知其中多少人经历了人生的跌宕起伏,一夜暴富的剧情每天都在上演.但比特币在几年前,只 ...

  9. ubuntu开启端口_RChain节点运行无门槛教程(二)--Windows-Ubuntu

    本文接上篇 RChain-Axe:RChain本地节点运行无门槛教程--Windows系统,在上篇文章中,我们尝试连接测试网但失败了,因为我们还没有进行网络配置(参考官方https://rchain. ...

  10. 区块链学习(3) 以太坊测试环境编译并部署智能合约(mac版)

    选择编写智能合约的语言 Ethereum上的智能合约需要使用solidity语言来撰写.虽然还有其他能用来撰写智能合约的语言如Serpent(类Python).lll(类Fortran),但目前看到所 ...

最新文章

  1. 深度探索javascript的call和apply面向对象应用
  2. Android自定义View全解
  3. Spring Boot 静态资源映射与上传文件路由配置
  4. IntelliJ IDEA for Mac 文件结构侧边窗口/类文件内部结构(File Structure)
  5. java游戏将相_(Java)算法——位运算基础及基本应用
  6. 利用html sessionStorge 来保存局部页面在刷新后回显,保留
  7. 区块链 以太坊 合约 创建、执行 详解
  8. 启明星系统使用在线视频教程
  9. 低代码,想说爱你不容易
  10. 2021年6月10日08点53分 SQL注入
  11. 1.操作系统的基本特性和主要功能
  12. “手绘爷爷”:花甲之年再续“冰城之恋”
  13. JAVA编写QQ登录界面
  14. MySQL定位慢查询步骤
  15. template模板
  16. 浙大版《python程序设计》第四章课后习题
  17. 为个人信息安全加“保险锁” 多家快递公司启用隐私面单
  18. 电脑硬件故障维护小全(十三)
  19. PostgreSQL生成测试数据
  20. [MobaXterm] Unable to detect graphics environment

热门文章

  1. 编写安装配置DNS服务脚本
  2. Android中文API(125) —— VideoView
  3. 在dropdownlist中使用enum
  4. 学习python第七天
  5. java基础47 装饰着模式设计
  6. iOS 使用脚本自动化复制target
  7. 数据结构与算法系列----字典树
  8. html中设置锚点定位的几种常见方法
  9. 浙江工业大学校赛 XiaoWei的战斗力
  10. 【转载】Jquery中的$命名冲突的解决方案