oracle 控制台使用手册,使用手册 - 控制台 - 《FISCO BCOS v2.0 技术文档》 - 书栈网 · BookStack...

控制台

控制台是FISCO BCOS 2.0重要的交互式客户端工具,它通过Web3SDK与区块链节点建立连接,实现对区块链节点数据的读写访问请求。控制台拥有丰富的命令,包括查询区块链状态、管理区块链节点、部署并调用合约等。此外,控制台提供一个合约编译工具,用户可以方便快捷的将Solidity合约文件编译为Java合约文件。

控制台命令

控制台命令由两部分组成,即指令和指令相关的参数:指令: 指令是执行的操作命令,包括查询区块链相关信息,部署合约和调用合约的指令等,其中部分指令调用JSON-RPC接口,因此与JSON-RPC接口同名。使用提示: 指令可以使用tab键补全,并且支持按上下键显示历史输入指令。

指令相关的参数: 指令调用接口需要的参数,指令与参数以及参数与参数之间均用空格分隔,与JSON-RPC接口同名命令的输入参数和获取信息字段的详细解释参考JSON-RPC API。

常用命令链接

合约相关命令利用CNS部署和调用合约(推荐)

普通部署和调用合约调用合约: call

其他命令

快捷键Ctrl+A:光标移动到行首

Ctrl+D:退出控制台

Ctrl+E:光标移动到行尾

Ctrl+R:搜索输入的历史命令

↑:向前浏览历史命令

↓:向后浏览历史命令

控制台响应

当发起一个控制台命令时,控制台会获取命令执行的结果,并且在终端展示执行结果,执行结果分为2类:正确结果: 命令返回正确的执行结果,以字符串或是json的形式返回。

错误结果: 命令返回错误的执行结果,以字符串或是json的形式返回。控制台的命令调用JSON-RPC接口时,错误码参考这里。

控制台的命令调用Precompiled Service接口时,错误码参考这里。

控制台配置与运行

重要

前置条件:搭建FISCO BCOS区块链请参考 建链脚本 或 企业工具。

获取控制台$ cd~&&mkdir-p fisco&&cd fisco

# 获取控制台

$ bash

目录结构如下:|--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合约需要引入的Table合约接口

|--console# 控制台部署合约时编译的合约abi, bin,java文件目录

|--sdk# sol2java.sh脚本编译的合约abi, bin,java文件目录

|--start.sh# 控制台启动脚本

|--get_account.sh# 账户生成脚本

|--sol2java.sh# solidity合约文件编译为java合约文件的开发工具脚本

|--replace_solc_jar.sh# 编译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文件

java目录下生成了org/com/fisco/包路径目录。包路径目录下将会生成java合约文件HelloWorld.java、TableTest.java和Table.java。其中HelloWorld.java和TableTest.java是java应用所需要的java合约文件。

注: 下载的控制台其console/lib目录下包含solcJ-all-0.4.25.jar,因此支持0.4版本的合约编译。如果使用0.5版本合约编译器或国密合约编译器,请下载相关合约编译器jar包,然后替换console/lib目录下的solcJ-all-0.4.25.jar。可以通过./replace_solc_jar.sh脚本进行替换,指定下载的编译器jar包路径,命令如下:# 下载solcJ-all-0.5.2.jar放在console目录下,示例用法如下

$./replace_solc_jar.sh solcJ-all-0.5.2.jar

下载合约编译jar包

0.4版本合约编译jar包$ curl-LO https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/solcj/solcJ-all-0.4.25.jar

0.5版本合约编译jar包$ curl-LO https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/solcj/solcJ-all-0.5.2.jar

国密0.4版本合约编译jar包$ curl-LO https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/solcj/solcJ-all-0.4.25-gm.jar

国密0.5版本合约编译jar包$ curl-LO https://github.com/FISCO-BCOS/LargeFiles/raw/master/tools/solcj/solcJ-all-0.5.2-gm.jar

配置控制台区块链节点和证书的配置:将节点sdk目录下的ca.crt、node.crt和node.key文件拷贝到conf目录下。

将conf目录下的applicationContext-sample.xml文件重命名为applicationContext.xml文件。配置applicationContext.xml文件,其中添加注释的内容根据区块链节点配置做相应修改。提示:如果搭链时设置的listen_ip为127.0.0.1或者0.0.0.0,channel_port为20200, 则applicationContext.xml配置不用修改。<?xml version="1.0"encoding="UTF-8"?>

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/beans

http://www.springframework.org/schema/beans/spring-beans-2.5.xsd

http://www.springframework.org/schema/tx

http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">

127.0.0.1:20200

配置项详细说明参考这里。

重要

控制台配置说明如果控制台配置正确,但是在CentOS系统上启动控制台出现如下错误:

Failed to connect to the node. Please check the node status and the console configruation.则是因为使用了CentOS系统自带的JDK版本(会导致控制台与区块链节点认证失败),请从 OpenJDK官网 或 Oracle官网 下载并安装Java 8或以上版本(具体安装步骤 参考附录 ),安装完毕后再启动控制台。当控制台配置文件在一个群组内配置多个节点连接时,由于群组内的某些节点在操作过程中可能退出群组,因此控制台轮询节点查询时,其返回信息可能不一致,属于正常现象。建议使用控制台时,配置一个节点或者保证配置的节点始终在群组中,这样在同步时间内查询的群组内信息保持一致。

启动控制台

在节点正在运行的情况下,启动控制台:$./start.sh

# 输出下述信息表明启动成功

=====================================================================================

Welcometo FISCO BCOS console(1.0.3)!

Type'help'or'h'forhelp.Type'quit'or'q'to quit console.

________ ______ ______ ______ ______ _______ ______ ______ ______

||\/ \/\/\|\/\/\/\

|$$$$$$$$\$$$$$|$$$$$$|$$$$$$|$$$$$$\|$$$$$$$|$$$$$$|$$$$$$|$$$$$$\

|$$__|$$|$$___\$|$$ \$|$$|$$|$$__/$|$$ \$|$$|$|$$___\$$

|$$ \|$$ \$$ \| $$|$$|$$|$$ $|$$|$$|$$\$$ \

|$$$$$|$$ _\$$$$$$|$$ __|$$|$$|$$$$$$$|$$ __|$$|$$_\$$$$$$\

|$$ _|$$_|\__|$|$$__/|$$__/$$|$$__/$|$$__/|$$__/$|\__|$$

|$$|$$ \\$$ $$\$$ $$\$$ $$|$$ $$\$$ $$\$$ $$\$$ $$

\$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$

=====================================================================================

启动脚本说明

查看当前控制台版本:./start.sh--version

console version:1.0.3

账户使用方式

控制台加载私钥

控制台提供账户生成脚本get_account.sh(脚本用法请参考账户管理文档,生成的的账户文件在accounts目录下,控制台加载的账户文件必须放置在该目录下。控制台启动方式有如下几种:./start.sh

./start.sh groupID

./start.sh groupID-pem pemName

./start.sh groupID-p12 p12Name

默认启动

控制台随机生成一个账户,使用控制台配置文件指定的群组号启动。./start.sh

指定群组号启动

控制台随机生成一个账户,使用命令行指定的群组号启动。./start.sh2注意:指定的群组在控制台配置文件中需要配置bean。

使用PEM格式私钥文件启动使用指定的pem文件的账户启动,输入参数:群组号、-pem、pem文件路径./start.sh 1 -pem accounts/0xebb824a1122e587b17701ed2e512d8638dfb9c88.pem

使用PKCS12格式私钥文件启动使用指定的p12文件的账户,需要输入密码,输入参数:群组号、-p12、p12文件路径./start.sh 1 -p12 accounts/0x5ef4df1b156bc9f077ee992a283c2dbb0bf045c0.p12

EnterExportPassword:

控制台命令

help

输入help或者h,查看控制台所有的命令。

[group:1]>help

addObserver Add an observer node.addSealer Add a sealer node.call Call a contract by a function and paramters.callByCNS Call a contract by a function and paramters by CNS.deploy Deploy a contract on blockchain.deployByCNS Deploy a contract on blockchain by CNS.desc Description table information.exit Quit console.getBlockByHash Query information about a block by hash.getBlockByNumber Query information about a block by block number.getBlockHashByNumber Query block hash by block number.getBlockNumber Query the number of most recent block.getCode Query code at a given address.getConsensusStatus Query consensus status.getDeployLog Query the log of deployed contracts.getGroupList Query group list.getGroupPeers Query nodeId list for sealer and observer nodes.getNodeIDList Query nodeId list for all connected nodes.getNodeVersion Query the current node version.getObserverList Query nodeId list for observer nodes.getPbftView Query the pbft view of node.getPeers Query peers currently connected to the client.getPendingTransactions Query pending transactions.getPendingTxSize Query pending transactions size.getSealerList Query nodeId list for sealer nodes.getSyncStatus Query sync status.getSystemConfigByKey Query a system config value by key.getTotalTransactionCount Query total transaction count.getTransactionByBlockHashAndIndex Query information about a transaction by block hash and transaction index position.getTransactionByBlockNumberAndIndex Query information about a transaction by block number and transaction index position.getTransactionByHash Query information about a transaction requested by transaction hash.getTransactionReceipt Query the receipt of a transaction by transaction hash.grantCNSManager Grant permission for CNS by address.grantDeployAndCreateManager Grant permission for deploy contract and create user table by address.grantNodeManager Grant permission for node configuration by address.grantPermissionManager Grant permission for permission configuration by address.grantSysConfigManager Grant permission for system configuration by address.grantUserTableManager Grant permission for user table by table name and address.help(h) Provide help information.listCNSManager Query permission information for CNS.listDeployAndCreateManager Query permission information for deploy contract and create user table.listNodeManager Query permission information for node configuration.listPermissionManager Query permission information for permission configuration.listSysConfigManager Query permission information for system configuration.listUserTableManager Query permission for user table information.queryCNS Query CNS information by contract name and contract version.quit(q) Quit console.removeNode Remove a node.revokeCNSManager Revoke permission for CNS by address.revokeDeployAndCreateManager Revoke permission for deploy contract and create user table by address.revokeNodeManager Revoke permission for node configuration by address.revokePermissionManager Revoke permission for permission configuration by address.revokeSysConfigManager Revoke permission for system configuration by address.revokeUserTableManager Revoke permission for user table by table name and address.setSystemConfigByKey Set a system config.switch(s) Switch to a specific group by group ID.[create sql] Create table by sql.[delete sql] Remove records by sql.[insert sql] Insert records by sql.[select sql] Select records by sql.

[update sql] Update records by sql.

注:help显示每条命令的含义是:命令 命令功能描述

查看具体命令的使用介绍说明,输入命令 -h或—help查看。例如:[group:1]>getBlockByNumber-h

Queryinformation about a blockbyblock number.

Usage:getBlockByNumber blockNumber[boolean]

blockNumber--Integerof a block number,from0to2147483647.

boolean--(optional)Iftrueit returns the full transaction objects,iffalseonly the hashes of the transactions.

switch

运行switch或者s,切换到指定群组。群组号显示在命令提示符前面。[group:1]>switch2

Switchedtogroup2.

[group:2]>

注: 需要切换的群组,请确保在console/conf目录下的applicationContext.xml(该配置文件初始状态只提供群组1的配置)文件中配置了该群组的信息,并且该群组中配置的节点ip和端口正确,该节点正常运行。

getBlockNumber

运行getBlockNumber,查看区块高度。[group:1]>getBlockNumber

90

getSealerList

运行getSealerList,查看共识节点列表。[group:1]>getSealerList

[

0c0bbd25152d40969d3d3cee3431fa28287e07cff2330df3258782d3008b876d146ddab97eab42796495bfbb2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值