BRICS比赛流程梳理如下,从上到下的顺序为比赛流程的顺序。总共3个部分,从环境搭建到常见问题踩坑。提供了参考。整合了许多文档于一体的一部参考文档。对于未完成的部分,未来会完成补坑。
区块链平台运维
基于提供的开发环境,使用离线安装包搭建区块链网络平台,含 FISCO BCOS 区块链底层平台和 Console控制台等
登录Linux服务器,安装并部署2节点Fisco联盟链
-
安装Ubuntu对于Fisco-Bcos依赖
sudo apt install -y openssl curl
-
创建区块链比赛目录
cd ~ && mkdir -p fisco && cd fisco
-
下载安装脚本
curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO-BCOS/FISCO-BCOS/releases/v2.9.1/build_chain.sh && chmod u+x build_chain.sh
-
搭建2节点联盟链
bash build_chain.sh -l 127.0.0.1:2 -p 30300,20200,8545
命令执行成功会输出
All completed
。如果执行出错,请检查nodes/build.log
文件中的错误信息。 -
启动2节点联盟链
bash nodes/127.0.0.1/start_all.sh
启动成功如下所示
try to start node0 try to start node1 node0 start successfully node1 start successfully
-
检查进程是否成功启动
ps -ef | grep -v grep | grep fisco-bcos
正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般是端口被占用导致的)
fisco 5453 1 1 17:11 pts/0 00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini fisco 5459 1 1 17:11 pts/0 00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
安装并部署Console控制台,检查部署的Console控制台是否正常运行
-
系统安装Java
sudo apt install -y default-jdk
-
获取控制台并返回fisco目录
cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh
-
拷贝控制台配置文件
cp -r nodes/127.0.0.1/sdk/* console/conf/
将刚刚搭建的2节点下sdk所有证书配置文件赋值到控制台中的配置文件目录
-
启动并使用控制台,检测控制台是否安装配置成功
cd ~/fisco/console && bash start.sh
这是正确无误的启动情况
============================================================================================= Welcome to FISCO BCOS console(2.6.0)! Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console. ________ ______ ______ ______ ______ _______ ______ ______ ______ | \| \ / \ / \ / \ | \ / \ / \ / \ | $$$$$$$$ \$$$$$$| $$$$$$\| $$$$$$\| $$$$$$\ | $$$$$$$\| $$$$$$\| $$$$$$\| $$$$$$\ | $$__ | $$ | $$___\$$| $$ \$$| $$ | $$ | $$__/ $$| $$ \$$| $$ | $$| $$___\$$ | $$ \ | $$ \$$ \ | $$ | $$ | $$ | $$ $$| $$ | $$ | $$ \$$ \ | $$$$$ | $$ _\$$$$$$\| $$ __ | $$ | $$ | $$$$$$$\| $$ __ | $$ | $$ _\$$$$$$\ | $$ _| $$_ | \__| $$| $$__/ \| $$__/ $$ | $$__/ $$| $$__/ \| $$__/ $$| \__| $$ | $$ | $$ \ \$$ $$ \$$ $$ \$$ $$ | $$ $$ \$$ $$ \$$ $$ \$$ $$ \$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ =============================================================================================
使用MySQL数据库对搭建的节点数据进行存储,并命名为Node0和Node1。
完成区块链中间件WeBASE-Front搭建,以及按要求进行网络的扩容和网络配置等维护操作
安装并检查部署的WeBASE-Front中间件是否正常运行
需要安装的环境
环境依赖
- java: 8~14
请注意:WeBASE-Front依赖于JAVA_HOME。如果没有配置JAVA_HOME,请优先配置JAVA_HOME在完成以下操作
-
查看位置
which java
输出:
/usr/bin/java
-
确定Java安装位置
ls -lr /usr/bin/java ls -lrt /etc/alternatives/java
输出:
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el7_5.x86_64
。这个就是Java的安装目录。 -
打开配置环境变量的文件
vim /etc/profile
添加如下配置
export JAVA_HOME=java安装目录 export JRE_HOME=$JAVA_HOME/jre export CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
-
刷新并测试是否配置成功
source /etc/profile && echo $JAVA_HOME
安装
-
下载安装包
wget https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/WeBASE/releases/download/v1.5.5/webase-front.zip
-
解压并进入目录
unzip webase-front.zip cd webase-front
-
拷贝sdk证书文件(build_chain生成的)
cp -r nodes/${ip}/sdk/* ./conf/
-
服务启动
bash start.sh
-
启动成功出现如下日志
... Application() - main run success...
检查
-
访问浏览器http://ipaddr:5002/WeBASE-Front/看是否能够访问web平台
-
检查节点进程
ps -ef | grep node
输出如下,此处部署了两个节点node0, node1
root 29977 1 1 17:24 pts/2 00:02:20 /root/fisco/webase/webase-deploy/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini root 29979 1 1 17:24 pts/2 00:02:23 /root/fisco/webase/webase-deploy/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
-
检查节点前置webase-front的进程
ps -ef | grep webase.front
正常输入如下
root 31805 1 0 17:24 pts/2 00:01:30 /usr/local/jdk/bin/java -Djdk.tls.namedGroups=secp256k1 ... conf/:apps/*:lib/* com.webank.webase.front.Application
登陆linux服务器,生成新的节点,并且将该节点启动及加入当前群组
针对搭建的区块链网络平台,使用Caliper压力测试工具对区块链网络平台进行性能测试
搭建Caliper环境
环境依赖:
- NodeJS: 8,9,10
- Docker >= 18.06.01
- Docker Compose >= 1.22.0
- Python >=2.7
- 安装make, g++, gcc, git
- 需要外网权限
下载caliper,并安装验证
npm install --only=prod @hyperledger/caliper-cli@0.2.0
npx caliper --versi
成功会打印版本信息v0.2.0。如果错误,请检查环境是否完整或者版本是否对应。
绑定FISCO-BCOS(需要外网)
npx caliper bind --caliper-bind-sut fisco-bcos --caliper-bind-sdk latest
下载测试用例
在Caliper目录下通过git拉去测试代码,这里使用gitee
git clone https://gitee.com/vita-dounai/caliper-benchmarks.git
修改源码
一共要修改4个文件的源码,分别是fiscoBcos.js
,channelPromise.js
,web3sync.js
, 一个依赖包版本secp256k1
-
修改
fiscoBcos.js
vim ./node_modules/@hyperledger/caliper-fisco-bcos/lib/fiscoBcos.js
-
修改
channelPromise.js
vim ./node_modules/@hyperledger/caliper-fisco-bcos/lib/channelPromise.js
-
修改
web3sync.js
vim ./node_modules/@hyperledger/caliper-fisco-bcos/lib/web3lib/web3sync.js
-
修改
package.json
文件,添加secp256k1
依赖vim node_modules/@hyperledger/caliper-fisco-bcos/package.json
在该目录下重新安装依赖:
npm i
基于刚刚下载的测试用例进行压测
进入caliper目录中输入如下命令:
npx caliper benchmark run --caliper-workspace caliper-benchmarks --caliper-benchconfig benchmarks/samples/fisco-bcos/helloworld/config.yaml --caliper-networkconfig networks/fisco-bcos/4nodes1group/fisco-bcos.json
等命令执行完成之后会显示如下页面:
如上图所示,显示了4个节点的内存,磁盘使用率,每秒交易的TPS,最大与最小响应时间
在caliper-benchmarks中也有report.html文件方便查看。
Caliper 使用
-
启动webase平台(webase-front)
-
在caliper目录中:
cd ./caliper-benchmarks/networks/fisco-bcos mkdir myProject
-
在该目录创建
fisco-bcos.json
使用Caliper和HelloWorld合约对区块链网络进行压测。
智能合约开发
基于题目中的业务逻辑,使用 Solidity 语言进行智能合约开发,并完成合约编译、部署以及运行测试。
根据提供的Solidity智能合约代码框架完成银行、核心企业、供应商的功能,并且完成银行向核心企业提供授信并发放数字凭证,企业转让数字凭证。
完成智能合约的部署、编译与接口调用的运行测试,并将结果截图提交至工程文档。
智能合约代码测试,基于Ganache私有链环境,使用Truffle框架编写JavaScript脚本对Solidity智能合约进行单元测试
安装Ganache与Truffle
环境要求
- NodeJS v8.9.4 或 之后的版本
安装Ganache
-
下载成功如图所示
安装Truffle
-
使用npm安装Truffle
npm install -g truffle@5.8.2
-
创建项目
truffle unbox metacoin
如果在安装的过程中出现了错误的token,如图所示。
建议升级node版本或者npm版本,然后清除npm缓存,再不行就卸载重装最新版本node。即可解决这一问题。
-
修改配置文件
基于Ganache与Truffle完成简单测试查看是否安装配置成功
在启动Ganache私有链环境与Truffle框架配置完成之后就可以进行如下操作。
在项目目录下:
truffle migrate
成功之后会显示如下信息,包括账户信息,资产信息,合约地址以及用户地址。
如果合约地址在链上出现,说明合约部署成功并完成上链操作