当前位置: 首页 > 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

http://www.lryc.cn/news/575179.html

相关文章:

  • 在ASP.NET Core WebApi中使用标识框架(Identity)
  • 网络安全漏洞扫描是什么?如何识别目标进行扫描?
  • 通用 Excel 导出功能设计与实现:动态列选择与灵活配置
  • 国道观察者手记
  • React + Umi(Umijs/Max) 搭建项目及配置
  • 大学专业科普 | 物联网、自动化和人工智能
  • 多服务器IP白名单配置(使用redis stream实现)
  • 神经网络的运作方式类比讲解
  • 【EI会议征稿】东北大学主办第三届机器视觉、图像处理与影像技术国际会议(MVIPIT 2025)
  • Arm架构下麒麟V10桌面版安装MySQL
  • Android14音频子系统-Linux音频子系统ASoC-ALSA
  • Linux size命令详解
  • Android14音频子系统-Linux音频子系统ALSA
  • MFC对话框启动时就隐藏窗口
  • 开疆智能CCLinkIE转ModbusTCP网关连接脉冲计数器配置案例
  • matlab机器人工具箱(Robotics Toolbox)安装及使用
  • 分布式系统 - 分布式缓存及方案实现
  • python网络自动化-数据格式与数据建模语言
  • 如何快速将iPhone中的文本保存到电脑上
  • 基于SSM框架+mysql实现的监考安排管理系统[含源码+数据库+项目开发技术手册]
  • PHP爬虫实战:轻松获取京东商品SKU信息
  • 计算机网络-----详解HTTP协议
  • 【编程基本功】Win11中Git安装配置全攻略,包含Git以及图形化工具TortoiseGit
  • 芯谷科技--升压/升降压DC-DC转换器D5209
  • 无人船:科技驱动,快速发展,前景广阔
  • 云计算产业链
  • pscc系统如何部署,怎么更安全更便捷?
  • 【EDA软件】【应用功能子模块网表提供和加载编译方法】
  • 【番外篇】TLS指纹
  • sentinel与seata组件在微服务中的基本作用