一、搭建第一个区块链网络
1.安装依赖
centos7
sudo yum install -y openssl openssl-devel
Ubuntu
sudo apt install -y openssl curl
2.创建操作目录, 下载安装脚本
## 创建操作目录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
3. 搭建单群组4节点联盟链
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
搭建成功截图如下
4.启动FISCO BCOS链
bash nodes/127.0.0.1/start_all.sh
启动成功截图如下
5.检查进程
检查进程是否启动
ps -ef | grep -v grep | grep fisco-bcos
输出结果如下,如果进程数不为4,则进程没有启动(一般是端口被占用导致的)
6.检查日志输出
查看节点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 +++
输出结果如下,正常情况会不停输出++++Generatingseal
,表示共识正常
二、配置及使用控制台
1.准备依赖
安装Java
# ubuntu系统安装javasudo apt install -y default-jdk#centos系统安装javasudo yum install -y java java-devel
获取控制台并回到fisco目录
cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/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/
2.启动并使用控制台
启动
cd ~/fisco/console && bash start.sh
输出下述信息表明启动成功 否则请检查conf/config.toml中节点端口配置是否正确
用控制台获取信息
# 获取客户端版本[group:1]> getNodeVersionClientVersion{version='2.6.0',supportedVersion='2.6.0',chainId='1',buildTime='20200819 15:47:59',buildType='Darwin/appleclang/RelWithDebInfo',gitBranch='HEAD',gitCommitHash='e4a5ef2ef64d1943fccc4ebc61467a91779fb1c0'}# 获取节点信息[group:1]> getPeers[PeerInfo{nodeID='c1bd77e188cd0783256ee06838020f24a697f9af785438403d3620967a4a3612e3abc4bbe986d1e9dddf62d4236bff0b7d19a935a3cd44889f681409d5bf8692',ipAndPort='127.0.0.1:30302',agency='agency',topic=[],node='node2'},PeerInfo{nodeID='7f27f5d67f104eacf689790f09313e4343e7887a1a7b79c31cd151be33c7c8dd57c895a66086c3c8e0b54d2fa493407e0d9646b2bd9fc29a94fd3663a5332e6a',ipAndPort='127.0.0.1:57266',agency='agency',topic=[_block_notify_1],node='node1'},PeerInfo{nodeID='862f26d9681ed4c12681bf81a50d0b8c66dd5b6ee7b0b42a4af12bb37b1ad2442f7dcfe8dac4e737ce9fa46aa94d904e8c474659eabf575d6715995553245be5',ipAndPort='127.0.0.1:30303',agency='agency',topic=[],node='node3'}][group:1]>
三、部署及调用HelloWorld合约
1.编写智能合约
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;}}
2.部署HelloWorld合约
3.调用HelloWorld合约