区块链FISCO BCOS 2.0部署文档
区块链知识点本文不做介绍,如有需要,请查看我的关于区块链的博文。
此文记录我的FISCO BCOS 2.0的安装过程。
百度百科:FISCO BCOS是BCOS开源平台的金融分支,是基于BCOS平台加以模块升级与功能重塑 ,为金融行业深度定制而成。
FISCO BCOS“仲裁链”基于区块链多中心化、防篡改、可信任特征,利用分布式数据存储、加密算法等技术对交易数据共识签名后上链,实时保全的数据通过智能合约形成证据链,满足证据真实性、合法性、关联性的要求,实现证据及审判的标准化。 [3]
FISCO BCOS还提供了完整的存证样例供开发者学习和使用,包括完整的业务sdk代码和详细的说明文档,以便为帮助开发者在存证场景中快速启动存证应用开发。 [3]
在安全性上,通过节点准入控制、密钥管理、权限控制,在应用、存储、网络、主机层实现全面的安全保障。在可用性方面,FISCO BCOS 设计为7×24小时运行,达到金融级高可用性。在监管支持方面,可支持监管和审计机构作为观察节点加入联盟链,获取实时数据进行监管审计。
- 环境:CentOS Linux release 7.3.1611 (Core) ,64位
- 预准备环境,需要安装openssl与curl
yum install -y openssl curl
安装步骤:
1. 创建目录
mkdir fisco
2. 下载build_chain.sh脚本
1. cd fisco
2. curl -LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.1.0/build_chain.sh && chmod u+x build_chain.sh
image.png
3. 搭建单群组4节点联盟链
./build_chain.sh -l "127.0.0.1:4" -p 30300,20200,8545
image.png
执行成功后,控制台会输出:All completed. Files in /data/disk2/blockchain/fisco/nodes
如果失败,请查看nodes/build.log
4. 启动FISCO BCOS链
bash nodes/127.0.0.1/start_all.sh
启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp检查机器的30300 - 30303,20200 - 20203,8545 - 8548端口是否被占用
image.png5. 检查进程
ps -ef | grep -v grep | grep fisco-bcos
image.png
6. 检查日志输出
tail -f nodes/127.0.0.1/node0/log/log* | grep connected
正常情况会不停地输出链接信息,从输出可以看出node0与另外3个节点有链接
image.png
执行下面命令,检查是否存在共识
tail -f nodes/127.0.0.1/node0/log/log* | grep +++
正常情况会不停输出++++Generating seal,表示共识正常。
image.png
7. 配置及使用控制台
在控制台通过Web3SDK链接FISCO BCOS节点,实现 查询区块链状态、部署调用合约 等功能,能够快速获取到所需要的信息。控制台指令详细介绍 [参考这里 :https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/console.html ]
获取控制台并回到fisco目录
bash <(curl -s https://raw.githubusercontent.com/FISCO-BCOS/console/master/tools/download_console.sh)
image.png
拷贝控制台配置文件
若节点未采用默认端口,请将文件中的20200替换成节点对应的channle端口。
cp -n console/conf/applicationContext-sample.xml console/conf/applicationContext.xml
配置控制台证书
cp nodes/127.0.0.1/sdk/* console/conf/
image.png
8. 启动控制台
1. cd console
2. bash start.sh
输出下述信息表明启动成功 否则请检查conf/applicationContext.xml中节点端口配置是否正确
image.png
9. 使用控制台获取信息
获取客户端版本 : getNodeVersion
image.png
获取节点链接信息 : getPeers
image.png
10. 部署及调用HelloWorld合约
HelloWorld合约提供两个接口,分别是get()和set(),用于获取/设置合约变量name。合约内容如下:
pragma solidity ^0.4.24;
contract HelloWorld {
string name;
function HelloWorld() {
name = "Hello, World!";
}
function get()constant returns(string) {
return name;
}
function set(string n) {
name = n;
}
}
11. 部署HelloWorld合约
为了方便用户快速体验,HelloWorld合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol,参考下面命令部署即可。
image.png
# 在控制台输入以下指令 部署成功则返回合约地址
[group:1]> deploy HelloWorld
image.png
12. 调用HelloWorld合约
[group:1]> deploy HelloWorld
contract address: 0x137d59e57e2dd5a1e84ff915c586a40378dcf937
# 查看当前块高
[group:1]> getBlockNumber
1
# 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址
[group:1]> call HelloWorld 0x137d59e57e2dd5a1e84ff915c586a40378dcf937 get
Hello, World!
# 查看当前块高,块高不变,因为get接口不更改账本状态
[group:1]> getBlockNumber
1
# 调用set设置name
[group:1]> call HelloWorld 0x137d59e57e2dd5a1e84ff915c586a40378dcf937 set "Hello, FISCO BCOS"
transaction hash: 0xf09750cd18281ebdb6864e60cef350eb0a898ec9187d5fa9ca0b02451d64e737
# 再次查看当前块高,块高增加表示已出块,账本状态已更改
[group:1]> getBlockNumber
2
# 调用get接口获取name变量,检查设置是否生效
[group:1]> call HelloWorld 0x137d59e57e2dd5a1e84ff915c586a40378dcf937 get
Hello, FISCO BCOS
# 退出控制台
[group:1]> quit
注:
- 部署合约还可以通过
deployByCNS
命令,可以指定部署的合约版本号,使用方式[参考这里 https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/console.html#deploybycns]。 - 调用合约通过
callByCNS
命令,使用方式[参考这里 https://fisco-bcos-documentation.readthedocs.io/zh_CN/latest/docs/manual/console.html#callbycns]。