当前位置: 首页 > news >正文

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.crtcert.cnfsdk.crtsdk.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 配置文件
http://www.dtcms.com/a/615333.html

相关文章:

  • MM32F0144芯片ADC电压采样策略详解
  • 自己做的网站怎么取sql数据库一站式网站搭建
  • 网页C语言在线编译 | 提供方便快捷的C语言编程环境
  • 网站如何屏蔽中国ip网页开发工具软件
  • VMware-ubuntu网络配置
  • 东风地区网站建设价格国家免费培训学校
  • 【C语言】贪吃蛇游戏设计思路深度解析:从零开始理解每个模块
  • 《Three.js权威指南》核心知识点梳理
  • 青岛网架公司网站域名如何优化
  • 网站建设陆金手指谷哥4广告公司简介模板200字
  • 大发快三网站自做英文网站的首页怎么做
  • 免费网站部署杭州制作网站个人
  • rootfs overlay 灵活自定义
  • 如何把网站做成软件商务网站开发流程
  • 设备驱动程序编程-Linux2.6.10-kdb安装
  • 怎么看别的网站是那个公司做的服装设计最好的出路
  • 免费网站站盐城建设厅网站设计备案
  • 卡尔曼学习笔记
  • seo导航站php网站费用
  • 建设网站收废品做网站找那些公司
  • 信阳企业网站建设公司网上做衣服的网站有哪些
  • 一个服务器可以做两个网站郎溪做网站
  • 前端微前端应用共享状态,Redux Toolkit
  • 算法分析与设计
  • 3.3.GPIO输入
  • 鸿运通网站建设怎么样宝塔系统怎么建设网站
  • 黑马Redis A基础01-命令String类型-JSON格式-Hash类型-List类型-Set类型-SortedSet类型-Redis的java客户端-jedis连接池-Spring集成Redis
  • 做司考题的网站网站完成上线时间
  • 深圳网站网络建设莆田自助建站软件
  • 河北企业建站提供小企业网站建设