FISCO BCOS——搭建第一个区块链(搭建但群组FISCO BCOS联盟链)
搭建但群组FISCO BCOS联盟链
使用开发部署工具 build_chain.sh脚本搭建一条4节点的FISCO BCOS链。
第一步. 安装依赖
安装macOS依赖
安装centos依赖
安装ubuntu依赖
sudo apt install -y openssl curl
- sudo :
- 用于以超级用户(root)权限执行后续命令。普通用户在执行某些需要管理员权限的操作(如安装软件包)时,需要使用
sudo。- apt :
- 是 Debian 及其衍生系统(如 Ubuntu)中的包管理工具,用于从软件仓库中搜索、安装、升级和卸载软件包。
- install :
apt命令的子命令,用于安装软件包。- -y :
- 是
apt install命令的一个选项,代表 “yes”。它会自动回答安装过程中的所有确认提示,避免用户手动输入 “yes” 来确认安装。- openssl :
- 是一个开源的加密库和工具包,提供了各种加密算法和安全相关的功能,常用于实现 SSL/TLS 协议,保障网络通信的安全。例如,它可用于生成密钥对、证书签名请求(CSR)等。
- curl :
- 是一个命令行工具,用于通过 URL 传输数据。它支持多种协议,如 HTTP、HTTPS、FTP 等。可以用来从服务器下载文件、发送 HTTP 请求等。例如,可以使用
curl来获取网页内容、上传文件到支持相应协议的服务器等。
第二步. 创建操作目录, 下载安装脚本
创建操作目录
cd ~ && mkdir -p fisco && cd fisco(在用户主目录下创建一个名为 fisco 的目录,并进入该目录。)
cd ~:这部分命令用于切换到当前用户的主目录。在 Linux 系统中,每个用户都有自己的主目录,~是主目录的快捷表示方式。例如,如果当前用户是
testuser,那么cd~就等同于cd /home/testuser(假设系统使用默认的用户主目录结构)。
mkdir -p fisco:mkdir 是创建目录(make directory)的命令。-p 选项表示如果要创建的目录的父目录不存在,会自动创建父目录。所以这部分命令会在当前目录(即用户主目录)下创建一个名为 fisco 的目录,如果 fisco 目录的父目录不存在,也会一并创建。
cd fisco:这部分命令是将当前工作目录切换到刚刚创建的 fisco 目录中。
下载脚本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh(这个命令组合的作用是从https://github.com/FISCO - BCOS/FISCO - BCOS/download/v2.11.0/这个地址下载名为build_chain.sh的脚本文件,并赋予该脚本文件所有者可执行权限)
curl -#LO https://github.com/FISCO - BCOS/FISCO - BCOS/download/v2.11.0/build_chain.sh
- curl :它是一个功能强大的命令行工具,主要用于进行数据传输,支持多种协议,如 HTTP、HTTPS 等。在这里,它用于从指定的 URL 下载文件。
- -# :这个选项让
curl在下载时显示进度条,方便用户了解下载的进度情况。- -L :当遇到重定向时,
curl会自动跟随重定向,继续下载目标文件。这在下载链接可能发生重定向的情况下很有用。- -O :它指示
curl将下载的文件以服务器上的文件名保存到当前目录。所以,这里会把从指定 URL 获取的文件保存为build_chain.sh。chmod u + x build_chain.sh
chmod:用于改变文件或目录的访问权限。u+x:u代表文件所有者(user),+x表示给文件所有者添加执行权限。执行该命令后,文件所有者就可以运行build_chain.sh这个脚本了。
如果因为网络问题导致长时间无法下载build_chain.sh脚本,尝试 curl -#LO https://gitee.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.11.0/build_chain.sh && chmod u+x build_chain.sh
第三步. 搭建单群组4节点联盟链
在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链(请确保机器的3030030303,2020020203,8545~8548端口没有被占用):
bash build_chain.sh -l 127.0.0.1:4 -p 30300~30303,20200,8545(利用 build_chain.sh 脚本在本地构建一个区块链环境,创建 4 个节点,并为这些节点配置一系列特定的端口用于不同的通信和服务功能。)
命令执行成功会输出All completed。如果执行出错,请检查nodes/build.log文件中的错误信息。
**
bash**——执行build_chain.sh脚本。-l ——是脚本定义的一个选项,通常表示 “listen”(监听)相关的配置。
127.0.0.1:4——其中127.0.0.1是本地回环地址,代表当前机器自身。4可能表示要在本地地址上创建 4 个节点(假设脚本逻辑如此),意味着脚本可能会在本地回环地址上启动 4 个与区块链相关的节点-p —— 是另一个脚本定义的选项,可能与 “port”(端口)相关。
30300~30303,20200,8545——是端口相关的值。30300~30303表示一个端口范围,即从30300到30303这 4 个端口;,20200,8545额外指定了两个单独的端口20200和8545。这些端口可能被用于区块链节点之间的通信、RPC 服务(例如 8545 端口常被以太坊相关 RPC 服务使用)等不同功能。
国密版本请执行
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545 -g -G
其中-g表示生成国密配置,-G表示使用国密SSL连接
第四步. 启动FISCO BCOS链
启动所有节点:bash nodes/127.0.0.1/start_all.sh (通过bash(Bourne - Again Shell)来执行位于nodes/127.0.0.1/目录下的start_all.sh脚本)
启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp检查机器的30300~30303,20200~20203,8545~8548端口是否被占用。
try to start node0
try to start node1
try to start node2
try to start node3
node1 start successfully
node2 start successfully
node0 start successfully
node3 start successfull
第五步:检查进程
检查进程是否启动:ps -ef | grep -v grep | grep fisco-bcos(查找正在运行的与 fisco - bcos 相关的进程,同时排除掉用于查找进程的 grep 命令自身的进程显示)
-f——选项表示以完整格式(full - format)显示进程信息,包括进程的用户 ID、父进程 ID、启动时间等详细信息。所以ps -ef会列出系统中所有进程的详细信息。
-e——选项表示显示所有进程,包括系统进程和用户进程
ps是 “process status” 的缩写,用于查看当前系统中运行的进程状态
|——这是管道符,它将ps -ef命令的输出作为下一个命令的输入。
grep——是一个强大的文本搜索工具,用于在输入文本中查找匹配指定模式的行。**
-v——**选项是 “invert match” 的意思,即显示不匹配指定模式的行。这里是要排除掉包含 “grep” 这个词的行,因为如果不排除,grep fisco - bcos这个命令本身也会出现在搜索结果中,干扰对真正fisco - bcos进程的查找。grep fisco-bcos——再次使用
grep命令,这次是在经过grep -v grep过滤后的输出中查找包含 “fisco - bcos” 的行,这些行就是正在运行的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
fisco 5464 1 1 17:11 pts/0 00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini
fisco 5476 1 1 17:11 pts/0 00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini
第六步. 检查日志输出
查看节点node0链接的节点数
tail -f nodes/127.0.0.1/node0/log/log* | grep connected
tail—— 用于查看文件的末尾部分内容
-f——选项表示 “follow”,即持续监控文件的变化。当文件有新内容追加时,tail会实时显示这些新内容。在这里,它会持续关注nodes/127.0.0.1/node0/log/目录下符合条件的日志文件的更新。
nodes/127.0.0.1/node0/log/log*——这是指定要监控的文件路径及文件名模式。表示nodes目录下以127.0.0.1命名的子目录中的node0/log/目录下,所有以log开头的文件。
|---管道符号,将tail -f命令的输出作为下一个命令的输入。
grep—— 用于在输入文本中搜索匹配指定模式的行。这里指定的模式是connected,它会在tail -f输出的实时日志内容中查找包含connected这个单词的行,并将这些行显示出来。
正常情况会不停地输出连接信息,从输出可以看出node0与另外3个节点有连接。
info|2019-01-21 17:30:58.316769| [P2P][Service] heartBeat,connected count=3
info|2019-01-21 17:31:08.316922| [P2P][Service] heartBeat,connected count=3
info|2019-01-21 17:31:18.317105| [P2P][Service] heartBeat,connected count=3
检查是否在共识
tail -f nodes/127.0.0.1/node0/log/log* | grep +++
grep—— 是一个强大的文本搜索工具,用于在输入文本中查找包含特定模式的行。这里的模式是+++,意味着grep会在tail -f实时输出的日志内容里,查找并显示所有包含+++字符串的行。
正常情况会不停输出带有++++Generating seal的日志,即表示共识正常。
info|2020-12-22 17:24:43.729402|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=1,hash=2e133146...
info|2020-12-22 17:24:47.740603|[g:1][CONSENSUS][SEALER]++++++++++++++++ Generating seal on,blkNum=1,tx=0,nodeIdx=1,hash=eb199760..
