Fisco Bcos学习 - 控制台搭建和基本使用
文章目录
- 一、控制台概述
- 二、环境准备
- 2.1 安装依赖
- Ubuntu 环境安装 Java
- CentOS 环境安装 Java
- 三、获取与配置控制台
- 3.1 获取控制台
- 3.2 控制台目录结构
- 3.3 配置控制台
- 3.4 配置国密版控制台
- 四、合约编译工具使用
- 五、启动控制台
- 5.1 启动脚本说明
- 5.2 账户使用方式
- 六、控制台常用命令
- 6.1 基础命令
- 6.2 合约相关命令
一、控制台概述
FISCO BCOS 控制台是 FISCO BCOS 2.0 重要的交互式客户端工具,它通过 Web3SDK 与区块链节点建立连接,实现对区块链节点数据的读写访问请求。控制台拥有丰富的命令,包括查询区块链状态、管理区块链节点、部署并调用合约等。此外,控制台还提供一个合约编译工具,用户可以方便快捷地将 Solidity 合约文件编译为 Java 合约文件。
二、环境准备
在使用控制台之前,需要先准备好运行环境。
2.1 安装依赖
FISCO BCOS 控制台需要 Java 8 及以上版本。以下是不同系统的 Java 安装方法:
Ubuntu 环境安装 Java
# 安装默认 Java 版本(Java 8 或以上)
sudo apt install -y default-jdk# 查询 Java 版本
java -version
CentOS 环境安装 Java
CentOS 下 OpenJDK 无法正常工作,需要安装 Oracle JDK:
# 创建新的文件夹,安装 Java 8 或以上的版本,将下载的 jdk 放在 software 目录
# 从 Oracle 官网选择 Java 8 或以上的版本下载,例如下载 jdk-8u201-linux-x64.tar.gz
$ mkdir /software# 解压 jdk
$ tar -zxvf jdk-8u201-linux-x64.tar.gz# 配置 Java 环境,编辑 /etc/profile 文件
$ vim /etc/profile# 打开以后将下面三句输入到文件里面并退出
export JAVA_HOME=/software/jdk-8u201 # 这是一个文件目录,非文件
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar# 生效 profile
$ source /etc/profile# 查询 Java 版本,出现的版本是自己下载的版本,则安装成功。
java -version
三、获取与配置控制台
3.1 获取控制台
cd ~ && mkdir -p fisco && cd fisco# 获取控制台
curl -LO https://github.com/FISCO-BCOS/console/releases/download/v1.0.9/download_console.sh && bash download_console.sh
如果因为网络问题导致长时间无法下载,请尝试:
curl -LO https://gitee.com/FISCO-BCOS/console/raw/master/tools/download_console.sh && bash download_console.sh
3.2 控制台目录结构
|-- apps # 控制台 jar 包目录
| -- console.jar
|-- lib # 相关依赖的 jar 包目录
|-- conf
| |-- applicationContext-sample.xml # 配置文件
| |-- log4j.properties # 日志配置文件
|-- contracts # 合约所在目录
| -- solidity # solidity 合约存放目录
| -- HelloWorld.sol # 普通合约:HelloWorld 合约,可部署和调用
| -- TableTest.sol # 使用 CRUD 接口的合约:TableTest 合约,可部署和调用
| -- Table.sol # 提供 CRUD 操作的接口合约
| -- console # 控制台部署合约时编译的合约 abi, bin,java 文件目录
| -- sdk # sol2java.sh 脚本编译的合约 abi, bin,java 文件目录
|-- start.sh # 控制台启动脚本
|-- get_account.sh # 账户生成脚本
|-- sol2java.sh # solidity 合约文件编译为 java 合约文件的开发工具脚本
|-- replace_solc_jar.sh # 编译 jar 包替换脚本
3.3 配置控制台
-
区块链节点和证书的配置:
将节点 sdk 目录下的ca.crt
、sdk.crt
和sdk.key
文件拷贝到conf
目录下。 -
重命名配置文件:
将conf
目录下的applicationContext-sample.xml
文件重命名为applicationContext.xml
文件。 -
配置 applicationContext.xml 文件:
<?xml version="1.0" encoding="UTF-8" ?> <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"xmlns:tx="http://www.springframework.org/schema/tx" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:context="http://www.springframework.org/schema/context"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-2.5.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-2.5.xsd"><bean id="encryptType" class="org.fisco.bcos.web3j.crypto.EncryptType"><constructor-arg value="0"/> <!-- 0:standard 1:guomi --></bean><bean id="groupChannelConnectionsConfig" class="org.fisco.bcos.channel.handler.GroupChannelConnectionsConfig"><property name="allChannelConnections"><list> <!-- 每个群组需要配置一个 bean --><bean id="group1" class="org.fisco.bcos.channel.handler.ChannelConnections"><property name="groupId" value="1" /> <!-- 群组的 groupID --><property name="connectionsStr"><list><value>127.0.0.1:20200</value> <!-- IP:channel_port --></list></property></bean></list></property></bean><bean id="channelService" class="org.fisco.bcos.channel.client.Service" depends-on="groupChannelConnectionsConfig"><property name="groupId" value="1" /> <!-- 连接 ID 为 1 的群组 --><property name="agencyName" value="fisco" /><property name="allChannelConnections" ref="groupChannelConnectionsConfig"></property></bean> </beans>
如果搭链时设置的 channel_listen_ip 为 127.0.0.1 或者 0.0.0.0,channel_port 为 20200,则
applicationContext.xml
配置不用修改。
3.4 配置国密版控制台
国密版的控制台配置与非国密版控制台的配置流程有一些区别,流程如下:
-
区块链节点和证书的配置:
将节点 sdk 目录下的ca.crt
、sdk.crt
和sdk.key
文件拷贝到conf
目录下。 -
重命名配置文件:
将conf
目录下的applicationContext-sample.xml
文件重命名为applicationContext.xml
文件。 -
打开国密开关:
<bean id="encryptType" class="org.fisco.bcos.web3j.crypto.EncryptType"><!-- encryptType 值设置为 1,打开国密开关 --><constructor-arg value="1"/> <!-- 0:standard 1:guomi --> </bean>
-
替换国密编译包:
# 下载 solcJ-all-0.4.25-gm.jar 放在 console 目录下 $ curl -LO https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/solcj/solcJ-all-0.4.25-gm.jar# 替换 Jar 包 $ bash replace_solc_jar.sh solcJ-all-0.4.25-gm.jar
四、合约编译工具使用
控制台提供一个专门的编译合约工具,方便开发者将 solidity 合约文件编译为 java 合约文件。使用该工具,分为两步:
-
将 solidity 合约文件放在
contracts/solidity
目录下。 -
通过运行
sol2java.sh
脚本(需要指定一个 java 的包名)完成编译合约任务。例如,contracts/solidity
目录下已有HelloWorld.sol
、TableTest.sol
、Table.sol
合约,指定包名为org.com.fisco
,命令如下:$ cd ~/fisco/console $ ./sol2java.sh org.com.fisco
运行成功之后,将会在 console/contracts/sdk
目录生成 java、abi 和 bin 目录:
|-- abi # 编译生成的 abi 目录,存放 solidity 合约编译的 abi 文件
| |-- HelloWorld.abi
| |-- Table.abi
| |-- TableTest.abi
|-- bin # 编译生成的 bin 目录,存放 solidity 合约编译的 bin 文件
| |-- HelloWorld.bin
| |-- Table.bin
| |-- TableTest.bin
|-- java # 存放编译的包路径及 Java 合约文件
| |-- org
| |-- com
| |-- fisco
| |-- HelloWorld.java # 编译的 HelloWorld Java 文件
| |-- Table.java # 编译的 CRUD 接口合约 Java 文件
| |-- TableTest.java # 编译的 TableTest Java 文件
五、启动控制台
在节点正在运行的情况下,启动控制台:
$ ./start.sh# 输出下述信息表明启动成功
=====================================================================================
Welcome to FISCO BCOS console(1.0.4)!
Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console.________ ______ ______ ______ ______ _______ ______ ______ ______
| | \/ \ / \ / \ | \ / \ / \ / \
| $$$$$$$$\$$$$$| $$$$$$| $$$$$$| $$$$$$\ | $$$$$$$| $$$$$$| $$$$$$| $$$$$$\
| $$__ | $$ | $$___\$| $$ \$| $$ | $$ | $$__/ $| $$ \$| $$ | $| $$___\$$
| $$ \ | $$ \$$ \| $$ | $$ | $$ | $$ $| $$ | $$ | $$\$$ \
| $$$$$ | $$ _\$$$$$$| $$ __| $$ | $$ | $$$$$$$| $$ __| $$ | $$_\$$$$$$\
| $$ _| $$_| \__| $| $$__/ | $$__/ $$ | $$__/ $| $$__/ | $$__/ $| \__| $$
| $$ | $$ \\$$ $$\$$ $$\$$ $$ | $$ $$\$$ $$\$$ $$\$$ $$\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$
=====================================================================================
[group:1]>
5.1 启动脚本说明
查看当前控制台版本:
./start.sh --version
console version: 1.0.4
5.2 账户使用方式
控制台提供账户生成脚本 get_account.sh
(脚本用法请参考账户管理文档),生成的账户文件在 accounts
目录下,控制台加载的账户文件必须放置在该目录下。控制台启动方式有如下几种:
-
默认启动:控制台随机生成一个账户,使用控制台配置文件指定的群组号启动。
./start.sh
-
指定群组号启动:控制台随机生成一个账户,使用命令行指定的群组号启动。
./start.sh 2
注意:指定的群组在控制台配置文件中需要配置 bean。
-
使用 PEM 格式私钥文件启动:使用指定的 pem 文件的账户启动,输入参数:群组号、-pem、pem 文件路径
./start.sh 1 -pem accounts/0xebb824a1122e587b17701ed2e512d8638dfb9c88.pem
-
使用 PKCS12 格式私钥文件启动:使用指定的 p12 文件的账户,需要输入密码,输入参数:群组号、-p12、p12 文件路径
./start.sh 1 -p12 accounts/0x5ef4df1b156bc9f077ee992a283c2dbb0bf045c0.p12 Enter Export Password:
六、控制台常用命令
6.1 基础命令
-
help:查看控制台所有的命令。
[group:1]> help
-
switch:切换到指定群组。
[group:1]> switch 2 Switched to group 2. [group:2]>
-
getBlockNumber:查看区块高度。
[group:1]> getBlockNumber 90
-
getSealerList:查看共识节点列表。
[group:1]> getSealerList [0c0bbd25152d40969d3d3cee3431fa28287e07cff2330df3258782d3008b876d146ddab97eab42796495bfbb281591febc2a0069dcc7dfe88c8831801c5b5801,10b3a2d4b775ec7f3c2c9e8dc97fa52beb8caab9c34d026db9b95a72ac1d1c1ad551c67c2b7fdc34177857eada75836e69016d1f356c676a6e8b15c45fc9bc34,622af37b2bd29c60ae8f15d467b67c0a7fe5eb3e5c63fdc27a0ee8066707a25afa3aa0eb5a3b802d3a8e5e26de9d5af33806664554241a3de9385d3b448bcd73 ]
6.2 合约相关命令
-
deploy:部署合约。
# 部署 HelloWorld 合约 [group:1]> deploy HelloWorld.sol contract address:0xc0ce097a5757e2b6e189aa70c7d55770ace47767# 部署 TableTest 合约 [group:1]> deploy TableTest.sol contract address:0xd653139b9abffc3fe07573e7bacdfd35210b5576
-
call:调用合约。
# 调用 HelloWorld 的 get 接口获取 name 字符串 [group:1]> call HelloWorld.sol 0xc0ce097a5757e2b6e189aa70c7d55770ace47767 get Hello, World!# 调用 HelloWorld 的 set 接口设置 name 字符串 [group:1]> call HelloWorld.sol 0xc0ce097a5757e2b6e189aa70c7d55770ace47767 set "Hello, FISCO BCOS" transaction hash:0xa7c7d5ef8d9205ce1b228be1fe90f8ad70eeb6a5d93d3f526f30d8f431cb1e70# 调用 HelloWorld 的 get 接口获取 name 字符串,检查设置是否生效 [group:1]> call HelloWorld.sol 0xc0ce097a5757e2b6e189aa70c7d55770ace47767 get Hello, FISCO BCOS
-
deployByCNS:采用 CNS 部署合约。用 CNS 部署的合约,可用合约名直接调用。
# 部署 HelloWorld 合约 1.0 版 [group:1]> deployByCNS HelloWorld.sol 1.0 contract address:
详细内容访问:https://www.bookstack.cn/read/fisco-bcos-2.4-zh/5298fab820a14fd7.md