区块链 模块1

搭建区块链系统并验证

基于给定服务器环境以及软件(地址“/root/tools”),搭建一条4节点的区块链系统并验证,具体工作内容如下:

(1)采用默认配置搭建区块链网络;

乌班图依赖

1
apt install -y openssl curl

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

1
2
3
4
5
## 创建操作目录
cd ~ && mkdir -p fisco && cd fisco

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

搭建单群组4节点联盟链

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

(2)通过命令验证区块链节点进程运行状况;

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

(3)通过命令验证区块链连接状态和共识状态日志输出。

1
2
3
4
# 如下,查看节点node0链接的节点数
tail -f nodes/127.0.0.1/node0/log/log* | grep connected
# 执行下面指令,检查是否在共识
tail -f nodes/127.0.0.1/node0/log/log* | grep +++

搭建区块链系统管理平台并验证

基于给定服务器环境以及软件(地址“/root/tools”),搭建区块链控制台并开展相关运维工作,具体工作内容如下:

(1)配置控制台,管理相关证书并启动;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# ubuntu系统安装java
apt install -y default-jdk

# 获取控制台并回到fisco目录
cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh

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

#配置控制台证书
cp -r nodes/127.0.0.1/sdk/* console/conf/

#启动
cd ~/fisco/console && bash start.sh

(2)使用控制台安装HelloWorld智能合约;

1
deploy HelloWorld

(3)使用控制台完成HelloWorld智能合约的set与get操作;

1
2
3
4
5
6
# 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址
call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
# 调用set设置name
call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
# 调用get接口获取name变量,检查设置是否生效
call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get

(4)使用控制台查看区块链中区块高度。

1
getBlockNumber

区块链节点运维

基于已完成的区块链系统与管理平台搭建工作,开展区块链节点的加入与退出运维工作,具体内容如下:

(1)获取指定区块链节点输出等级为警告级,并设置日志存储阈值位100MB并验证;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
vi nodes/127.0.0.1/node3/config.ini
[log]
enable=true
log_path=./log
; enable/disable the statistics function
enable_statistic=false
; network statistics interval, unit is second, default is 60s
stat_flush_interval=60
; info debug trace
level=warning
; MB
max_log_file_size=100
flush=true
bash nodes/127.0.0.1/stop_all.sh
bash nodes/127.0.0.1/start_all.sh
tail -f nodes/127.0.0.1/node3/log/log* | grep warning

(2)通过给定工具(地址/root/tools)完成新节点(node4)配置;

接下来的操作都在nodes/127.0.0.1目录下进行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master-2.0/tools/gen_node_cert.sh

# 生成新节点私钥证书
# -c指定机构证书及私钥所在路径
# -o输出到指定文件夹,其中node4/conf中会存在机构agency新签发的证书和私钥
# 成功会输出 All completed 提示
bash gen_node_cert.sh -c ../cert/agency -o node4


# 拷贝node0/config.ini、node0/start.sh和node0/stop.sh到node4目录
cp node0/config.ini node0/start.sh node0/stop.sh node4/

#修改node4/config.ini。对于[rpc]模块,修改channel_listen_port=20204和jsonrpc_listen_port=8549;对于[p2p]模块,修改listen_port=30304并在node.中增加自身节点信息
vim node4/config.ini
[rpc]
;rpc listen ip
listen_ip=127.0.0.1
;channelserver listen port
channel_listen_port=20204
;jsonrpc listen port
jsonrpc_listen_port=8549
[p2p]
;p2p listen ip
listen_ip=0.0.0.0
;p2p listen port
listen_port=30304
;nodes to connect
node.0=127.0.0.1:30300
node.1=127.0.0.1:30301
node.2=127.0.0.1:30302
node.3=127.0.0.1:30303
node.4=127.0.0.1:30304

# 节点3拷贝节点1的node0/conf/group.1.genesis(内含群组节点初始列表)和node0/conf/group.1.ini到node4/conf目录下,不需改动;
cp node0/conf/group.1.genesis node0/conf/group.1.ini node4/conf/

# 执行node4/start.sh启动节点
bash node4/start.sh

# 确认node4与其他节点连接已经建立,加入网络操作完成
tail -f node4/log/log* | grep "connected count"

(3)启动新节点加入区块链系统并验证

1
2
3
4
5
6
7
8
9
10
11
12
# 获取node4的nodeid
cat node4/conf/node.nodeid

#使用addObserver将node4作为观察节点加入群组1
getObserverList

addObserver 94ae60f93ef9a25a93666e0149b7b4cb0e044a61b7dcd1b00096f2bdb17d1c6853fc81a24e037c9d07803fcaf78f768de2ba56a4f729ef91baeadaa55a8ccd6e
# 使用addSealer将node4作为共识节点加入群组1
addSealer 94ae60f93ef9a25a93666e0149b7b4cb0e044a61b7dcd1b00096f2bdb17d1c6853fc81a24e037c9d07803fcaf78f768de2ba56a4f729ef91baeadaa55a8ccd6

#验证
getSealerList

区块链网络运维

根据任务描述要求,完成网络配置与管理运维操作,具体内容如下:

(1)设置区块链系统黑名单,将node3设为黑名单禁止连接,并验证;

1
2
3
4
5
6
# 获取node3的nodeid
cat node3/conf/node.nodeid
# 编辑配置文件
vim nodes/127.0.0.1/node3/config.ini
[certificate_blacklist]
; crl.0 should be nodeid, nodeid's length is 128 ;crl.0=e81caf5ce4f12838093cd2887136912b48a4a076361e30ef369359d2f27b14420a1017018bf532d622cda456c7a06a3bb8dac5002d7f98d687a8308d74334c6c

(2)设置系统中区块打包最大交易数量设为2000;

1
2
3
bash console/start.sh

setSystemConfigByKey "tx_count_limit" "2000"

(3)验证区块最大打包交易数量情况

1
getSystemConfigByKey tx_count_limit

搭建webase-front

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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

vi /etc/profile

export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

source /etc/profile

cp -r ~/fisco/nodes/127.0.0.1/sdk/* ~/fisco/webase-front/conf/

bash ~/fisco/webase-front/start.sh

参考文献:

http://www.vianao.top/posts/faca.html

https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html#fisco-bcos

https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/webase/webase.html