区块链端口
p2p_port: 节点通信端口。
channel_port: SDK 通知协议交换端口,使用的 SSL。
jsonrpc_port: http接口包含的此协议,网络明文。
官方教程
https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/installation.html
一、准备环境
安装依赖(openssl 版本需要 1.0.2 以上,使用 openssl version 查询版本)# CentOS sudo yum install -y openssl curl # 乌邦图 sudo apt install -y openssl curl # macOS brewinstallopensslcurl
创建操作目录(在家目录单独创建一个文件夹)
cd ~ && mkdir -p fisco && cd fisco
下载 build_chain.sh 脚本(可以直接使用下载好的)
curl -LO /FISCO-BCOS/FISCO-BCOS/releases/download/v2.1.0/build_chain.sh && chmod u+x build_chain.sh
二、搭建单群组4节点联盟链
生成一条单群组4节点的 FISCO 链。在 fisco 目录下执行,确保机器的 30300~30303,0~3,8545~8548 端口未被占用。
如果是外网访问,不要使用 127.0.0.1。如果使用的是多个ip,会生成多个ip的文件夹,需要将对应ip的文件夹拷贝到对应机器上面启动即可。
# -p 选项指定起始端口,分别是p2p_port,channel_port,jsonrpc_port,出于安全考虑jsonrpc/channel默认监听127.0.0.1,需要外网访问请添加-i参数。# -e 指定使用的二进制,如果没有网的环境需要提前加,fisco-bcos-Linux 文件需要提前准备好。如果是 mac,需要将文件改成 fisco-bcos-macOS。# -v 指定版本号bash build_chain.sh -l "127.0.0.1:4" -p 30300,0,8545 -e ./fisco-bcos-Linux -v 2.1.0
三、启动 FISCO BCOS 链
启动所有节点bash nodes/127.0.0.1/start_all.sh
注:如果失败请检查端口是否占用,netstat -an | grep tcp ,检查端口 30300~30303,0~3,8545~8548
四、检查进程
检查进程是否启动(进程如果不为4,请检查端口占用情况)ps -ef | grep -v grep | grep fisco-bcos
五、检查日志输出
查看 node0 链接的节点数tail -f nodes/127.0.0.1/node0/log/log* | grep connected
正常情况会不停地输出链接信息,从输出可以看出node0与另外3个节点有链接
检查是否在共识
tail -f nodes/127.0.0.1/node0/log/log* | grep +++
正常情况会不停输出++++Generating seal,表示共识正常
六、目录释义
nodes/127.0.0.1:如果使用的是多个ip,会生成多个ip的文件夹,需要将对应ip的文件夹拷贝到对应机器上面启动即可。nodes/cert:P2P建立连接,channel 建立连接时候生成的证书,如果是找 CA 机构购买证书,需要将证书按照要求放到对应的位置。 nodes/127.0.0.1/node0,nodes/127.0.0.1/node1,nodes/127.0.0.1/node2,nodes/127.0.0.1/node3:四个节点。nodes/127.0.0.1/sdk:使用 sdk 开发需要拷贝证书,使用控制台交互也有拷贝证书的过程。nodes/127.0.0.1/node0/config.ini:如果是在云服务器上,需要修改 listen_ip 为云服务器 ip。如果 channel 和 jsonrpc 端口冲突需要修改一下端口,重启生效。配置文件和配置项:https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/configuration.html# nodes/127.0.0.1/node0/data:链上的数据。七、配置及使用控制台(实现查询区块链状态、部署调用合约等)
安装 openjdk# 乌邦图sudo apt install -y default-jdk# CentOSsudo yum install -y default-jdk# macbrew cask install java
获取控制台(可以直接使用下载好的)
cd ~/fisco && bash <(curl -s /FISCO-BCOS/console/master/tools/download_console.sh)
拷贝控制台配置文件
若节点未采用默认端口,请将文件中的0替换成节点对应的channle端口。
cp -n ~/fisco/console/conf/applicationContext-sample.xml ~/fisco/console/conf/applicationContext.xml
配置控制台证书
cp ~/fisco/nodes/127.0.0.1/sdk/* ~/fisco/console/conf/
八、启动控制台
启动(未成功启动请检查conf/applicationContext.xml中节点端口配置是否正确)bash ~/fisco/console/start.sh
使用控制台获取信息
# 获取客户端版本[group:1]> getNodeVersion{"Build Time":"0923 13:22:09","Build Type":"Linux/clang/Release","Chain Id":"1","FISCO-BCOS Version":"2.1.0","Git Branch":"HEAD","Git Commit Hash":"cb68124d4fbf3df563a57dfff5f0c6eedc1419cc","Supported Version":"2.1.0"}# 获取节点链接信息[group:1]> getPeers[{"Agency":"agency","IPAndPort":"127.0.0.1:33964","Node":"node3","NodeID":"dfd091cb377829957dfd40f41f5f2316751ed4d0728612c6d8f3ad0fc56142136b315cc922d0d6fb08130bb57148241a0dd9f6d14e5fc84573587cddba89e747","Topic":[]},{"Agency":"agency","IPAndPort":"127.0.0.1:33948","Node":"node1","NodeID":"ade12ef11712bb9402bfd6e753351d0b4b7b72856cd3d59035c60727ec55ee1b92ec757b7e580086b61df28ba128b29af443b1610d38e4348203424184758efd","Topic":[]},{"Agency":"agency","IPAndPort":"127.0.0.1:33956","Node":"node2","NodeID":"4ab266ae9ed9299f982a5e165d2b68d49b0016ab1f5ce63a9041782621b80642ba431fbf2b6fca22d77398f44d3fcc338d3674f456afa2ae56208c2af1e80b5f","Topic":[]}]
九、部署及调用HelloWorld合约
HelloWorld合约HelloWorld合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol
# 在控制台输入以下指令 部署成功则返回合约地址[group:1]> deploy HelloWorldcontract address: 0xdb63e14a7e71458585dd3d47d0cdcc8f0ce99691
调用HelloWorld合约
# 查看当前块高[group:1]> getBlockNumber1# 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址[group:1]> call HelloWorld 0xdb63e14a7e71458585dd3d47d0cdcc8f0ce99691 getHello, World!# 查看当前块高,块高不变,因为get接口不更改账本状态[group:1]> getBlockNumber1# 调用set设置name[group:1]> call HelloWorld 0xdb63e14a7e71458585dd3d47d0cdcc8f0ce99691 set "Hello, FISCO BCOS"transaction hash: 0xf753959e7b88a64cec4d4ef7000364e06fc520e2d16e7a543433d1d5e6852694# 再次查看当前块高,块高增加表示已出块,账本状态已更改[group:1]> getBlockNumber2# 调用get接口获取name变量,检查设置是否生效[group:1]> call HelloWorld 0xdb63e14a7e71458585dd3d47d0cdcc8f0ce99691 getHello, FISCO BCOS# 退出控制台[group:1]> quit
十、WeBase 可视化界面
官方教程“快速入门搭建”:https://webasedoc.readthedocs.io/zh_CN/latest/docs/WeBASE-Install/developer.html
下载安装包
wget /cdn/webase/releases/download/v1.2.1/webase-front.zip
拷贝证书
cp ~/fisco/nodes/127.0.0.1/sdk/* ~/fisco/webase-front/conf/
启动可视化界面
bash ~/fisco/webase-front/start.sh
网页打开可视化界面
http://localhost:5002/WeBASE-Front
直接在界面上开发合约