1. 说明

fisco-bcos 2.7.2版本已经支持了ARM平台运行,只是需要手动编译源码和细节调整,在此记录国密版本部署过程.
操作系统是CentOS7

参考文档:
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/enterprise_tools/tutorial_detail_operation_gm.html
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/get_executable.html
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/tutorial/cdn.html?highlight=tassl

2. 下载generator

FISCO BCOS generator 是针对多机构组网,适用于多机构部署,维护多群组联盟链的企业区块链部署工具.此版本只支持FISCO BCOS 2.0+.
本工具降低了机构间生成与维护区块链的复杂度,提供了多种常用的部署方式.
本工具考虑了机构间节点安全性需求,所有机构间仅需要共享节点的证书,同时对应节点的私钥由各机构自己维护,不需要向机构外节点透露.
本工具考虑了机构间节点的对等性需求,多机构间可以通过交换数字证书对等安全地部署自己的节点.
文档见FISCO BCOS 企业部署工具.

## 创建工作目录
mkdir -p /data/fisco
cd /data/fisco

## 下载generator
wget https://github.com/FISCO-BCOS/generator/archive/refs/tags/v1.7.1.tar.gz

## 解压
tar zxvf ./v1.7.1.tar.gz 
mv generator-1.7.1 generator

## 需要root权限
cd ./generator && bash ./scripts/install.sh

## 验证是否安装成功
./generator -h

3.x86安装fisco

cd /data/fisco/generator
## 下载 x86 版本的fisco二进制文件,放到 ./meta 目录下
./generator --download_fisco ./meta --cdn
## 验证是否成功
./meta/fisco-bcos -v

4.ARM安装fisco

ARM版本需要编译源码,参考:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/get_executable.html

## 安装依赖
yum install -y epel-release centos-release-scl
yum install -y openssl-devel openssl cmake3 gcc-c++ git flex patch bison gmp-static devtoolset-7


cd /data/fisco
## 下载源码
wget https://github.com/FISCO-BCOS/FISCO-BCOS/archive/refs/tags/v2.7.2.tar.gz
tar -zxvf v2.7.2.tar.gz
## 进入源码目录
cd FISCO-BCOS-2.7.2
##创建编译目录
mkdir -p build && cd build
## CentOS请执行此命令,其他系统不需要
source /opt/rh/devtoolset-7/enable  

## 编译
### ARCH_NATIVE,默认off,编译时根据本地CPU指令优化以获得更好的性能,在ARM架构上编译可以使用此选项.GCC9以上版本编译暂未适配完成,可以通过打开此编译选项避过问题,完成编译.
cmake3 -DARCH_NATIVE=on ..

## 高性能机器可添加-j4使用4核加速编译(时间略长)
make -j4

## 把编译好的 fisco-bcos 复制到 /data/fisco/generator/meta 目录下
cp -rf ./fisco-bcos /data/fisco/generator/meta

5.ARM安装tassl

FISCO BCOS国密版本需要使用TASSL生成国密版本的证书,部署工具会自动从GitHub下载,解压后放置于~/.fisco/tassl,如果碰到下载失败,请尝试从https://gitee.com/FISCO-BCOS/LargeFiles/blob/master/tools/tassl.tar.gz下载并解压后,放置于~/.fisco/tassl
macOS请下载https://gitee.com/FISCO-BCOS/LargeFiles/blob/master/tools/tassl_mac.tar.gz
ARM下请下载https://gitee.com/FISCO-BCOS/LargeFiles/blob/master/tools/tassl-aarch64.tar.gz

cd /data/fisco
wget https://gitee.com/FISCO-BCOS/LargeFiles/blob/master/tools/tassl-aarch64.tar.gz

tar -zxvf tassl-aarch64.tar.gz

## 拷贝到指定目录
cp -rf tassl /root/.fisco/

##### 后续操作和普通模式相同,参照文档即可

6.部署fisco

后续操作和普通模式相同,参照文档即可

7.ARM安装Key Manager(非必须)

联盟链的数据,只对联盟内部成员可见.落盘加密,保证了运行联盟链的数据,在硬盘上的安全性.一旦硬盘被带出联盟链自己的内网环境,数据将无法被解密.
落盘加密是对节点存储在硬盘上的内容进行加密,加密的内容包括:合约的数据.节点的私钥.

ARM上的国密版本,需要源码编译 Key Manager

## 安装依赖
yum install procps-ng-devel
yum install curl-devel

## 进入工作目录
cd /data/fisco
wget https://github.com/FISCO-BCOS/key-manager/archive/refs/tags/v1.0.0.tar.gz

tar -zxvf v1.0.0.tar.gz

##进入目录
cd ./key-manager-1.0.0/

## 修改 cmake目录下 ProjectCryptopp.cmake,ProjectJsonCpp.cmake,ProjectJsonRpcCpp.cmake 三个文件
## 删除掉 -march=generic64 的参数,是整个 -D 参数删除,不只是 -march 这个选项!!!!!

## 创建编译目录
mkdir build && cd build

## 国密版本
cmake3 -DBUILD_GM=On .. 
## 高性能机器可添加-j4使用4核加速编译(时间略长)
make -j4

后续使用参照官方文档即可.