搭建FISCO BCOS 3.0 Pro版区块链网络集群

1. 安装依赖

sudo yum install -y curl docker docker-compose python3 python3-devel

2. 下载Pro版区块链构建工具BcosBuilder

# 创建操作目录
mkdir -p ~/fisco && cd ~/fisco

# 下载Pro版区块链构建工具BcosBuilder
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v3.0.0-rc1/BcosProBuilder.tgz && tar -xvf BcosProBuilder.tgz

# 安装构建工具依赖包
cd BcosProBuilder && pip3 install -r requirements.txt

3. 安装、启动并配置tars服务

3.1 安装/启动tars服务

#启动docker :

systemctl start docker

# 进入BcosProBuilder目录
cd ~/fisco/BcosProBuilder

# Note: 这里需要保证docker服务处于启动状态
# linux系统:进入到docker配置文件路径
cd docker/host/linux/framework

# 配置MYSQL密码,这里假设密码设置为FISCO
# linux系统(macOS系统可跳过本步骤)
sed -i 's/MYSQL_ROOT_PASSWORD: ""/MYSQL_ROOT_PASSWORD: "FISCO"/g' docker-compose.yml

#把IP 172.25.0.3修改成真实的公网IP,例如:MYSQL_HOST: "122.9.111.111"、WEB_HOST的IP
vi docker-compose.yml
vi ../node/docker-compose.yml 

# 创建并启动tars管理服务(这一步下载镜像比较慢,预计需要30分钟左右)
docker-compose up -d

# 调用成功之后,等待2分钟(不要做任何操作),2分钟之后,查看端口情况
netstat -nlt | grep 3

#查看有3000端口,这样tars安装成功

#浏览器打开tars浏览器管理窗口

4. 部署Pro版本区块链节点

Pro版本FISCO BCOS包括RPC服务、Gateway服务以及区块链节点服务BcosNodeService。

  • RPC服务负责接收客户端请求,并将请求转发到节点进行处理, RPC服务可横向扩展,一个RPC服务可接入多个区块链节点服务
  • Gateway服务负责跨机构区块链节点之间的网络通信,Gateway服务横向可扩展,一个Gateway服务可接入多个区块链节点服务
  • 区块链节点服务BcosNodeService提供区块链相关的服务,包括共识、执行、交易上链等,节点服务通过接入到RPC服务和Gateway服务获取网络通信功能。每一个BcosNodeService表示一个群组,可以部署多个BcosNodeService扩展多群组。

关于Pro版本FISCO BCOS的总体架构设计可参考这里

本章以在单机上部署2机构2节点区块链服务为例,介绍Pro版本FISCO BCOS搭建部署流程,对应的服务组网模式如下:

注解

  • 如果没有申请token,请参考【3.2 配置tars服务】申请token
  • 如果忘记了访问tars服务的token,可通过tars网页管理平台的【admin】->【用户中心】->【token管理】获取token列表
  • 部署Pro版本区块链节点之前,请先确保您的tars服务是启动的状态,安装/启动和配置tars服务请参考3.2节

4.1 下载二进制

构建Pro版本FISCO BCOS前,需要先下载二进制包,BcosProBuilder的提供了基于linux的静态二进制包下载功能,可部署到tarsnode中,下载最新二进制的命令如下:

# 进入操作目录
cd ~/fisco/BcosProBuilder

# 运行build_chain.py脚本下载二进制,二进制包默认下载到binary目录
python3 build_chain.py download_binary

4.2 部署RPC服务

在建链工具BcosProBuilder目录,执行如下命令,可部署并启动2机构RPC服务,对应的RPC服务名分别为agencyABcosRpcServiceagencyBBcosRpcService,ip均为192.168.0.15,占用的监听端口分别为2020020201(进行本操作前,请确保机器的2020020201端口没被占用)。

# 进入操作目录
cd ~/fisco/BcosProBuilder

# 从conf目录拷贝配置
cp conf/config-deploy-example.toml config.toml

此时拷贝的config.toml为整个BcosBuilder使用的配置文件,配置详情请参考链接:配置介绍

# 将步骤3.2生成的token配置到config.toml的tars_token字段
# 这里生成的token,实际使用时,请替换为实际申请的token
# linux系统(macOS系统跳过本步骤):
sed -i 's/tars_token = ""/tars_token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiJhZG1pbiIsImlhdCI6MTYzODQzMTY1NSwiZXhwIjoxNjY3MjAyODU1fQ.430ni50xWPJXgJdckpOTktJB3kAMNwFdl8w_GIP_3Ls"/g' config.toml

#部署并启动RPC服务
python3 build_chain.py chain -o deploy -t rpc

4.3 部署Gateway服务

RPC服务部署完成后,需要再部署Gateway服务,用于建立机构之间的网络连接。在建链工具BcosProBuilder目录下,执行如下命令,可部署并启动2机构Gateway服务,对应的Gateway服务名分别为agencyABcosGatewayServiceagencyBBcosGatewayService,ip均为192.168.0.15,占用的端口分别为3030030301(进行本操作前,请确保机器的3030030301端口没被占用)。

# 进入操作目录
cd ~/fisco/BcosProBuilder

# 部署并启动Gateway服务
python3 build_chain.py chain -o deploy -t gateway

4.4 部署区块链节点服务

RPC服务和Gateway服务均部署完成后,可部署区块链节点服务。在建链工具BcosProBuilder目录下,执行如下命令,可部署并启动2机构2节点区块链服务,对应的服务名分别为groupnode00BcosNodeServicegroupnode10BcosNodeService,链ID均为chain,群组ID均为group

# 进入操作目录
cd ~/fisco/BcosProBuilder

# 部署并启动区块链节点服务
python3 build_chain.py chain -o deploy -t node

5. 配置及使用控制台

控制台同时适用于Pro版本和Air版本的FISCO BCOS区块链,且在体验上完全一致。Pro版本区块链体验环境搭建完毕后,可配置并使用控制台向Pro版本区块链发送交易。

#centos系统安装java
sudo yum install -y java java-devel

5.2 下载、配置并使用控制台

步骤1:下载控制台

cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v3.0.0-rc1/download_console.sh && bash download_console.sh
  • 备注:如果因为网络问题导致长时间无法下载,请尝试 
    • cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh
    • bash download_console.sh

配置控制台证书

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

# 拷贝证书文件

cp -r BcosProBuilder/generated/rpc/chain/192.168.0.15/agencyBBcosRpcService/sdk/* console/conf

步骤3:启动并使用控制台

cd ~/fisco/console && bash start.sh
# 在控制台输入以下指令 部署成功则返回合约地址
[group]: /> deploy HelloWorld
transaction hash: 0x0fe66c42f2678b8d041624358837de34ac7db195abb6f5a57201952062190590
contract address: 0x6849F21D1E455e9f0712b1e99Fa4FCD23758E8F1
currentAccount: 0x537149148696c7e6c3449331d77ddfaabc3c7a75

#如果报错:deploy contract failed for get response failed, errorCode: -4008, error message: waiting for message response timed out,
#则重启一下tars,   命令: cd /root/fisco/BcosProBuilder/docker/host/linux/framework
docker-compose stop
docker-compose start

# 查看当前块高
[group]: /> getBlockNumber
1
# 调用get接口获取name变量,此处的合约地址是deploy指令返回的地址
[group]: /> call HelloWorld 0x6849F21D1E455e9f0712b1e99Fa4FCD23758E8F1 get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return value size:1
Return types: (string)
Return values:(Hello, World!)
---------------------------------------------------------------------------------------------

# 查看当前块高,块高不变,因为get接口不更改账本状态
[group]: /> getBlockNumber
1

# 调用set方法设置name
[group]: /> call HelloWorld 0x6849F21D1E455e9f0712b1e99Fa4FCD23758E8F1 set "Hello, FISCO BCOS"
transaction hash: 0x2f7c85c2c59a76ccaad85d95b09497ad05ca7983c5ec79c8f9d102d1c8dddc30
---------------------------------------------------------------------------------------------
transaction status: 0
description: transaction executed successfully
---------------------------------------------------------------------------------------------
Receipt message: Success
Return message: Success
Return value size:0
Return types: ()
Return values:()
---------------------------------------------------------------------------------------------
Event logs
Event: {}

# 查看当前块高,因为set接口修改了账本状态,块高增加到2
[group]: /> getBlockNumber
2

# 退出控制台
[group]: /> exit
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,我可以为您解答关于在 SpringBoot 中调用 FISCO BCOS 合约的问题。 首先,您需要在项目中引入 FISCO BCOS 的 Java SDK 包,可以通过 Maven 或 Gradle 依赖来实现。然后,您需要创建一个合约的 Java 接口,该接口需要继承自 org.fisco.bcos.sdk.contract.Contract 接口,并定义您合约中的方法,如下所示: ```java public interface MyContract extends Contract { public RemoteCall<TransactionReceipt> myMethod(int param1, String param2); } ``` 在接口中,您需要定义您合约中的方法,方法的返回值类型需要使用 RemoteCall 包装,以便异步调用合约并获取合约返回结果。 接下来,您需要实现该接口,实现类需要继承自 org.fisco.bcos.sdk.contract.ContractImpl 类,并在构造函数中调用父类的构造函数,同时将合约地址、私钥、公钥等信息传递给父类,如下所示: ```java public class MyContractImpl extends ContractImpl implements MyContract { public MyContractImpl(String contractAddress, Web3j web3j, Credentials credentials, BigInteger gasPrice, BigInteger gasLimit) { super(contractAddress, web3j, credentials, gasPrice, gasLimit); } @Override public RemoteCall<TransactionReceipt> myMethod(int param1, String param2) { // 执行合约方法 return executeRemoteCallTransaction(FunctionEncoder.encode(function), gasPrice, gasLimit); } } ``` 在实现类中,您需要实现接口中定义的方法,并在方法中调用合约的方法。 最后,在您的 SpringBoot 应用程序中,您可以通过以下方式进行合约的调用: ```java @Autowired private Web3j web3j; @Autowired private Credentials credentials; public void callContract() { String contractAddress = "0x..."; // 合约地址 MyContract myContract = new MyContractImpl(contractAddress, web3j, credentials, gasPrice, gasLimit); RemoteCall<TransactionReceipt> remoteCall = myContract.myMethod(1, "test"); TransactionReceipt receipt = remoteCall.sendAsync().get(); // 处理合约返回结果 } ``` 在 SpringBoot 中,您可以通过注入 Web3j 和 Credentials 对象来连接 FISCO BCOS 区块链网络,并通过调用 MyContractImpl 类中定义的方法来调用合约。最后,您可以通过异步调用 RemoteCall 对象的 sendAsync 方法来执行合约方法,并获取合约返回结果。 希望这些信息对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值