欢迎光临
我们一直在努力

arm架构上搭建第一个区块链网络FISCO BCOS

文章目录

  • 1. 搭建单群组FISCO BCOS联盟链
    • 一、 环境
    • 二、 安装依赖
    • 三、 创建操作目录,并下载安装脚本
    • 四、 搭建单群组4节点联盟链
    • 五、 启动FISCO BCOS链
    • 六、 检查进程
    • 七、 检查日志输出
  • 2. 配置及使用控制台
    • 一、 准备依赖
    • 二、 启动并使用控制台
  • 3. 部署及调用HelloWorld合约
  • 工作目录

1. 搭建单群组FISCO BCOS联盟链

一、 环境

arm架构ubuntu18.04

二、 安装依赖

sudo apt install -y openssl curl

三、 创建操作目录,并下载安装脚本

## 创建操作目录
cd ~ && mkdir -p fisco && cd fisco

## 下载脚本
curl#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh

在这里插入图片描述 可以看到脚本已经下载完成

四、 搭建单群组4节点联盟链

在fisco目录下执行命生成一条单组群4节点的FISCO链

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

  • -l:是指从命令行输入ip,其中127.0.0.1是ip,:4表示生成4个节点
  • -p:是端口

执行上述命令得到的结果,这里面有一个报错是openssl在生成证书的时候需要随机数,尝试从/home/zc/.rnd文件中读取随机数,而这个文件不存在,但openssl比较智能会从其他地方读取能生成随机数的文件。 可以看到All completed Files in /home/zc/fisco/nodes,这代表已经成功。 在这里插入图片描述 可以看到fisco目录下多了一个nodes文件,其由三部分组成

  • 127.0.0.1:这是我们创建FISCO链时命令中指定的ip地址,这个文件中存放了所有计划部署在这台机器上的节点文件,如下图中由于命令中我们创建了4个节点,所以有node0、node1、node2、node3这三个节点文件,start_all.sh (一键启动这4个节点的脚本),stop_all.sh (一键停止这4个节点的脚本)、sdk/ (存放供 SDK/Console 连接用的证书和配置)、download_console.sh (下载控制台的脚本)
  • cert:这是证书颁发中心存放这条联盟链的根证书,里面最重要的文件是 ca.crt (CA证书) 和 ca.key (CA私钥),之后所有节点的证书都是由这个ca.cert签发的。
  • cerf.cnf:证书配置文件,一个openssl使用的配置模版文件,定义了build_chain.sh 脚本在生成证书时应该遵循的规则。

nodes/
├── 127.0.0.1/ <– “本地战区”
│ ├── node0/ <– 节点0 (配置文件, 数据, 日志…)
│ ├── node1/ <– 节点1
│ ├── node2/ <– 节点2
│ ├── node3/ <– 节点3
│ ├── sdk/ <– SDK/控制台连接用的证书
│ ├── fisco-bcos <– 这是区块链的可执行文件 ,运行这个程序,区块链节点就启动了
│ └── start_all.sh <– 启动脚本

├── cert/ <– “公安部”(根证书存放处)
│ ├── ca.crt
│ └── ca.key

└── cert.cnf <– “身份证填写规范”

在这里插入图片描述 在这里插入图片描述

五、 启动FISCO BCOS链

运行启动命令

bash nodes/127.0.0.1/start_all.sh

这里出了点问题,arm64架构的需要自己编译源码获取fisco-bcos可执行程序。 在这里插入图片描述 这里先安装所需要的依赖

sudo apt install -y g++ libssl-dev openssl cmake git build-essential autoconf texinfo flex patch bison libgmp-dev zlib1g-dev

然后克隆源码

git clone https://gitee.com/FISCO-BCOS/FISCO-BCOS.git

对源码进行编译,很幸运又遇到cmake版本太久了。解决转安装新版本cmake 在这里插入图片描述

cd FISCO-BCOS
git checkout master-2.0
mkdir -p build && cd build

然后执行

cmake ..

在这里插入图片描述 可以看到在更新完cmake后编译成功了,并也build file放在了我们执行编译命令的目录下。 最后执行

make

emmm这里太新的cmake也是不行的会报下面错误,接着换cmake版本换成3.x版本的 在这里插入图片描述 换完之后需要先清除之前版本cmake生成的东西,也就是在build目录下执行下面命令

rm -rf *

重新执行

cmake ..
make

执行make的时候还会遇到一些问题: 第一个问题: automake版本不匹配,automake-1.15太低了,要求automake-1.16,但是unbuntu的软件源只有1.15的源,所以需要手动下载automake1.16 下载完之后进入mhd文件中

cd /home/zc/FISCO-BCOS/deps/src/mhd/

清理旧的配置

make clean

执行自动刷新命令

autoreconf -fvi

这个问题解决之后有遇到了boost下载不下来的问题,这个问题可能是网络原因导致的,网络原因导致boost库总是下载一半就中断,然后sha256去用这个库hash得到的结果不对,这个问题通过手动下载然后放到/home/zc/FISCO-BCOS/deps/src/目录下解决,链接在下面

https://jaist.dl.sourceforge.net/project/boost/boost/1.85.0/boost_1_85_0.tar.bz2

编译太慢放到晚上睡前编译,早上看到下面的错误,这说明之前的编译指令make -j8不行,开了太多进程,而我的设备内存又太小,只有4g,导致C++编译器直接把进程杀死了,进而导致编译失败了,这里把编译指令换乘make -j4就好了。

c++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <file:///usr/share/doc/gcc-7/README.Bugs> for instructions.
libconsensus/CMakeFiles/consensus.dir/build.make:134: recipe for target 'libconsensus/CMakeFiles/consensus.dir/pbft/PBFTSealer.cpp.o' failed
make[2]: *** [libconsensus/CMakeFiles/consensus.dir/pbft/PBFTSealer.cpp.o] Error 4
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:2187: recipe for target 'libconsensus/CMakeFiles/consensus.dir/all' failed
make[1]: *** [libconsensus/CMakeFiles/consensus.dir/all] Error 2
Makefile:135: recipe for target 'all' failed
make: *** [all] Error 2

历尽千辛万苦终于编译成功了 在这里插入图片描述

编译fisco-bcos链接参考编译步骤链接

编译成功后,需要将~/fisco/nodes/127.0.0.1/fisco-bcos这个可执行文件替换成我们刚才编译的二进制文件。 刚才的二进制文件在build/bin中,在linux中可执行文件是绿色 在这里插入图片描述 重新执行本节开始的时候的命令,这次可以看到四个node start successfully 在这里插入图片描述

六、 检查进程

ps -ef | grep -v grep | grep fisco-bcos

  • ps:显示当前正在运行进程状态 -e显示所有用户进程 -f是现实进程的完整信息。
  • | grep -v grep :这是grep用法的一个技巧,-v是将搜索到的内容排除,这里是排除grep程序本身
  • | grep fisco-bcos:将排除后的内容通过管道传递给grep搜索包含fisco-bcos的内容

在这里插入图片描述

七、 检查日志输出

tail -f nodes/127.0.0.1/node0/log/log* | grep connected

  • tail命令用于查看文件尾部的内容,-f会持续关注,如果文件被追加内容会立即被tail发现
  • 通过管道传递给grep,查找connected中相关的内容。

可以看到node0和另外三个节点有链接 在这里插入图片描述 检查是否存在共识

tail -f /nodes/127.0.0.1/node0/log/log* | grep +++

看到下面Generating seal on,表示共识正常。 在这里插入图片描述

2. 配置及使用控制台

一、 准备依赖

安装jdk

sudo apt install -y default-jdk

在这里插入图片描述 获取下载控制台的脚本,同时执行这个安装控制台的脚本

cd ~/fisco && curl#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh

拷贝控制台配置文件,可以看到执行cp命令后console/conf中多了一个文件

# 最新版本控制台使用如下命令拷贝配置文件
cp -n console/conf/config-example.toml console/conf/config.toml

在这里插入图片描述 配置控制台证书

cp -r nodes/127.0.0.1/sdk/* console/conf/

可以看到执行上面命令后该文件夹下多了ca.crt 、cert.cnf、 sdk.crt 、sdk.key这几个文件 在这里插入图片描述

二、 启动并使用控制台

启动控制台

cd ~/fisco/console && bash start.sh

执行控制台的启动脚本 在这里插入图片描述 尝试用控制台获取信息 在这里插入图片描述

3. 部署及调用HelloWorld合约

这是HelloWorld合约的内容,主要就是提供了两个方法get()和set()用于获取和设置合约变量。

pragma solidity ^0.4.24;

contract HelloWorld {
string name;

function HelloWorld() {
name = "Hello, World!";
}

function get()constant returns(string) {
return name;
}

function set(string n) {
name = n;
}
}

其实console已经把HelloWorld.sol这份合约写好了放在console/contracts/solidity路径下面,我们直接去调用这份合约就好了。 在这里插入图片描述 先部署合约,在控制台deploy,部署成功返回了合约地址

deploy HelloWorld

在这里插入图片描述 调用合约中的方法

call HelloWorld contract address get

在这里插入图片描述 由于get接口不更改账本状态,所以块高不变,但是set方法会改变账本状态,改变之后块高增加了一

call HelloWorld contract address set "Hello, FISCO BCOS"

在这里插入图片描述 退出控制台命令,没有clear命令。

quit

在这里插入图片描述 至此单机上的区块链网络就搭建完毕了

工作目录

fisco目录下面有:

  • console:这是 FISCO BCOS 的控制台目录,是一个基于 Java 的客户端工具,是开发者或管理员与区块链进行交互的入口。通过运行这个目录下的 start.sh 脚本来启动一个命令行界面,然后可以在里面:部署和调用智能合约、查询区块高度、查询交易回执、管理节点状态等。
  • FISCO-BCOS:存放的是 FISCO BCOS 的核心可执行文件
  • nodes
  • webase-deploy:这个目录与 WeBase (WeBank Blockchain Application Software Stack) 相关,WeBase 是一个为 FISCO BCOS 打造的区块链中间件平台,提供了图形化的管理界面。可以使用它来更方便地监控节点状态、管理私钥、部署合约、查看交易等。这个目录包含了部署 WeBase 平台所需的脚本和配置文件。
  • build_chain.sh:用来从零开始”搭建整条区块链的入口脚本
  • download_console.sh:控制台下载脚本
  • ipconf:IP 配置文件
赞(0)
未经允许不得转载:171主机测评 » arm架构上搭建第一个区块链网络FISCO BCOS
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址