当前位置: 首页 > news >正文

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 配置控制台

  1. 区块链节点和证书的配置
    将节点 sdk 目录下的 ca.crtsdk.crtsdk.key 文件拷贝到 conf 目录下。

  2. 重命名配置文件
    conf 目录下的 applicationContext-sample.xml 文件重命名为 applicationContext.xml 文件。

  3. 配置 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 配置国密版控制台

国密版的控制台配置与非国密版控制台的配置流程有一些区别,流程如下:

  1. 区块链节点和证书的配置
    将节点 sdk 目录下的 ca.crtsdk.crtsdk.key 文件拷贝到 conf 目录下。

  2. 重命名配置文件
    conf 目录下的 applicationContext-sample.xml 文件重命名为 applicationContext.xml 文件。

  3. 打开国密开关

    <bean id="encryptType" class="org.fisco.bcos.web3j.crypto.EncryptType"><!-- encryptType 值设置为 1,打开国密开关 --><constructor-arg value="1"/> <!-- 0:standard 1:guomi -->
    </bean>
    
  4. 替换国密编译包

    # 下载 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 合约文件。使用该工具,分为两步:

  1. 将 solidity 合约文件放在 contracts/solidity 目录下。

  2. 通过运行 sol2java.sh 脚本(需要指定一个 java 的包名)完成编译合约任务。例如,contracts/solidity 目录下已有 HelloWorld.solTableTest.solTable.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

相关文章:

  • 毕业设计论文网seo服务建议
  • 常熟做网站下载百度app免费下载安装
  • 一个网站如何做推广方案设计长沙网站seo收费
  • 响应式网站开发方法十大免费网站推广
  • 电子政务与网站建设的经验软文广告发稿
  • 做网站设计的公司排名seo综合查询接口
  • NVads V710 v5 系列虚拟机已发布
  • 【iOS】iOS崩溃总结
  • 我手动从go官网下载了go1.16.15linux安装包,我该如何做,才能使得vscode仍能通过右下角来管理这个go版本
  • python学习笔记(深度学习)
  • 新能源汽车电池类型差异分析
  • 英飞凌高性能BMS解决方案助力汽车电动化
  • 亚远景-ASPICE与ISO 26262:汽车安全与软件质量的协同
  • 【世纪龙科技】新能源汽车VR虚拟体验展示馆-解锁认知新维度
  • 打造属于你的AI智能体,从数据开始 —— 使用 Bright Data MCP+Trae快速构建垂直智能体
  • React Native【实战范例】账号管理(含转换分组列表数据的封装,分组折叠的实现,账号的增删改查,表单校验等)
  • React + Umi(Umijs/Max) 搭建项目及配置
  • 大塘至浦北高速分布式光伏项目,让‘交通走廊’变身‘绿色能源带’
  • TensorFlow Lite (TFLite) 和 PyTorch Mobile介绍2
  • P7915 [CSP-S 2021] 回文
  • Sortablejs动态同类型穿插
  • 基于大数据的社会治理与决策支持方案PPT(66页)
  • 基于开源AI大模型、AI智能名片与S2B2C商城小程序的美食菜单社交化营销创新研究
  • DeepSeek 助力 Vue3 开发:打造丝滑的日历(Calendar),日历_服药提醒示例(CalendarView01_24)
  • 深度学习在智能零售中的创新应用与未来趋势
  • web安全之h2注入系统学习