FISCO-BCOS 命令交互控制台 Console-命令大全(超详细)
引言
此文章基于fisco-bocs官方技术文档进行整理并加以解释,在这里可以快速理解命令的含义和更快地上手,可以当作命令词典使用。
文章目录
- FISCO-BCOS 命令交互控制台 Console-命令大全(超详细)
- 引言
- 前提条件
- console 目录如下:
- 使用账户生成脚本生成账户(非国密版)
- PEM格式
- p12格式
- 启动控制台
- 查看控制台命令列表
- 账户操作
- 创建账户
- 获取当前账户信息
- 列出当前保存的账户列表
- 冻结账户
- 解冻账户
- 为交易签名加载账户
- 节点操作
- 查看节点版本号信息
- 查看节点信息
- 查询当前连接到客户端的对等节点
- 查询节点的PBFT视图
- 查询当前连接到客户端的对等节点
- 查询所有已连接节点的Node ID列表
- 移除一个节点
- 观察节点和共识节点
- 群组操作
- 切换群组
- 为指定节点生成一个组
- 通过新群组配置文件(group-generate-config.toml)为指定节点列表创建新群组
- 查询组列表
- 查询共识节点和观察者节点的Node ID列表
- 查询指定节点的指定组的状态
- 恢复指定节点的指定组
- 移除指定节点的指定组
- 启动指定节点的指定组
- 停止指定节点的指定组
- 合约操作
- 部署合约
- 调用合约
- 获取合约的状态
- 查询部署合约的日志
- 列出合约的函数和事件信息
- 列出指定合约的合约地址
- 区块和交易信息
- 通过哈希查询区块的信息
- 通过区块号查询区块的信息
- 通过区块号查询区块哈希
- 通过哈希查询区块头的信息
- 通过区块号查询区块头的信息
- 查询最新区块的数量
- 查询未确认的交易
- 根据区块哈希和交易索引位置查询交易的信息
- 根据交易哈希查询交易的信息
- 根据交易哈希查询交易收据
- 查询总交易数
- 权限管理
- 委员会成员权重
- *整理下来过程艰难,请大家一键三连走起!!!*
前提条件
- 部署好区块链网络
- 配置好console,即拷贝配置文件等等
console 目录如下:
|-- apps # 控制台jar包目录| -- console.jar|-- lib # 相关依赖的jar包目录├── conf│ ├── config-example.toml # 配置文件│ ├── group-generate-config.toml # 创建群组的配置文件,具体可参考命令genrateGroupFromFile│ └── 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 # 账户生成脚本|-- get_gm_account.sh # 账户生成脚本,国密版|-- sol2java.sh # solidity合约文件编译为java合约文件的开发工具脚本
使用账户生成脚本生成账户(非国密版)
PEM格式
bash get_account.sh
p12格式
bash get_account.sh -p
启动控制台
默认启动控制台
bash start.sh
指定群组号启动
bash start.sh [群组号]
使用pem格式私钥文件启动
bash start.sh [群组号] -pem [私钥文件路径]
使用p12格式文件启动
bash start.sh [群组号] -p12 [私钥文件路径]
查看控制台命令列表
help([-h, -help, –h, –H, –help, -H, h]):提供帮助信息。
[group:1]> help* help([-h, -help, --h, --H, --help, -H, h])Provide help information* addObserver Add an observer node* addSealer Add a sealer node* callCall a contract by a function and parameters* callByCNS Call a contract by a function and parameters by CNS* createCreate table by sql* deleteRemove records by sql* deployDeploy a contract on blockchain* deployByCNS Deploy a contract on blockchain by CNS* descDescription table information* quit([quit, q, exit]) Quit console* freezeAccount Freeze the account* freezeContractFreeze the contract...........---------------------------------------------------------------------------------------------
注:
- help显示每条命令的含义是:命令 命令功能描述
- 查看具体命令的使用介绍说明,输入命令 -h或–help查看。例如:
[group:1]> getBlockByNumber -hQuery information about a block by block number.Usage:getBlockByNumber blockNumber [boolean]* blockNumber -- Integer of a block number, from 0 to 2147483647.* boolean -- (optional) If true it returns the full transaction objects, if false only the hashes of the transactions.
账户操作
创建账户
- newAccount:创建账户
newAccount [加密格式/(pem/p12)] 注:无参数默认是pem格式
获取当前账户信息
- getCurrentAccount:获取当前账户信息
列出当前保存的账户列表
- listAccount:列出当前保存的账户列表
冻结账户
- freezeAccount:冻结账户
freezeAccount [账户地址]
解冻账户
- unfreezeAccount:解冻账户
unfreezeAccount [账户地址]
为交易签名加载账户
- loadAccount:为交易签名加载账户
loadAccount [账户私钥路径] [加密格式(pem/p12)]注:不指定加密格式,默认是pem格式
节点操作
查看节点版本号信息
- getNodeVersion:查询当前节点版本
查看节点信息
getNodeInfo:查询指定节点的信息。
getNodeInfo [IP:channel端口号]
查询当前连接到客户端的对等节点
- getPeers:查询当前连接到客户端的对等节点
查询节点的PBFT视图
- getPbftView:查询节点的PBFT视图
查询当前连接到客户端的对等节点
- getPeers:查询当前连接到客户端的对等节点
查询所有已连接节点的Node ID列表
- getNodeIDList:查询所有已连接节点的Node ID列表
移除一个节点
removeNode:移除一个节点
removeNode[nodeId]
观察节点和共识节点
addObserver:添加一个观察者节点
addObserver[nodeid]
getObserverList:查询观察者节点的Node ID列表
addSealer:添加一个共识节点
addSealer [nodeid]
getSealerList:查询共识节点的Node ID列表。
getGroupPeers:查询共识节点和观察者节点的Node ID列表
群组操作
切换群组
switch
switch [群组号]
为指定节点生成一个组
generateGroup:为指定节点生成一个组
generateGroup [节点IP:channel端口号] [新建群组的Id] [新建群组创世块时间戳] [新创建群组的共识节点列表]注:1.可通过命令echo $(($(date '+%s')*1000))获取时间戳;2.多个共识节点ID之间用空格分割
通过新群组配置文件(group-generate-config.toml)为指定节点列表创建新群组
群组配置示例group-generate-config.toml
如下:
# The peers to generate the group[groupPeers]peers=["127.0.0.1:20200", "127.0.0.1:20201"]# The consensus configuration of the generated group[consensus]# The sealerListsealerList=["b8acb51b9fe84f88d670646be36f31c52e67544ce56faf3dc8ea4cf1b0ebff0864c6b218fdcd9cf9891ebd414a995847911bd26a770f429300085f37e1131f36","11e1be251ca08bb44f36fdeedfaeca40894ff80dfd80084607a75509edeaf2a9c6fee914f1e9efda571611cf4575a1577957edfd2baa9386bd63eb034868625f"][genesis]# The genesis timestamp, It is recommended to set to the current utcTime, which must be greater than 0timestamp = "1590586645000"
generateGroupFromFile
命令的参数包括:
groupConfigFilePath
: 群组配置文件路径,控制台conf/group-generate-config.toml
是提供的群组配置文件模板,用户可根据实际场景拷贝、修改该配置模板,并加载修改后的群组配置文件;groupId
: 新创建的群组ID。
[group:1]> generateGroupFromFile conf/group-generate-config.toml 3* Result of 127.0.0.1:20200:GroupStatus{code='0x0',message='Group 3 generated successfully',status='null'}* Result of 127.0.0.1:20201:GroupStatus{code='0x0',message='Group 3 generated successfully',status='null'}
查询组列表
- getGroupList:查询组列表
查询共识节点和观察者节点的Node ID列表
- getGroupPeers:查询共识节点和观察者节点的Node ID列表
查询指定节点的指定组的状态
- queryGroupStatus:查询指定节点的指定组的状态。
queryGroupStatus [节点IP:channel端口] [群组号]
恢复指定节点的指定组
- recoverGroup:恢复指定节点的指定组
recoverGroup [节点IP:channel端口] [群组号]
移除指定节点的指定组
- removeGroup:移除指定节点的指定组
removeGroup [节点IP:channel端口] [群组号]
启动指定节点的指定组
- startGroup:启动指定节点的指定组
startGroup [节点IP:channel端口] [群组号]
停止指定节点的指定组
- stopGroup:停止指定节点的指定组
stopGroup [节点IP:channel端口] [群组号]
合约操作
部署合约
- deploy(deployByCNS):在区块链上部署一个合约
部署合约。(默认提供HelloWorld合约和TableTest.sol进行示例使用) 参数:
合约路径:合约文件的路径,支持相对路径、绝对路径和默认路径三种方式。用户输入为文件名时,从默认目录获取文件,默认目录为: contracts/solidity
,比如:HelloWorld。
`deploy [合约路径]`# 部署HelloWorld合约,默认路径[group:1]> deploy HelloWorld.solcontract address:0xc0ce097a5757e2b6e189aa70c7d55770ace47767# 部署HelloWorld合约,相对路径[group:1]> deploy contracts/solidity/HelloWorld.solcontract address:0xd653139b9abffc3fe07573e7bacdfd35210b5576# 部署HelloWorld合约,绝对路径[group:1]> deploy /root/fisco/console/contracts/solidity/HelloWorld.solcontract address:0x85517d3070309a89357c829e4b9e2d23ee01d881
注:
- 部署用户编写的合约,可以将solidity合约文件放到控制台根目录的
contracts/solidity/
目录下,然后进行部署即可。按tab键可以搜索contracts/solidity/
目录下的合约名称。- 若需要部署的合约引用了其他合约或library库,引用格式为
import "./XXX.sol";
。其相关引入的合约和library库均放在contracts/solidity/
目录。- 如果合约引用了library库,library库文件的名称必须以
Lib
字符串开始,以便于区分是普通合约与library库文件。library库文件不能单独部署和调用。deployByCNS:通过CNS在区块链上部署一个合约
调用合约
- call:通过函数和参数调用合约。
call [合约路径] [合约地址] [合约接口名] [合约接口参数]注:参数:由合约接口参数决定。**参数由空格分隔,其中字符串、字节类型参数需要加上双引号;数组参数需要加上中括号,比如[1,2,3],数组中是字符串或字节类型,加双引号,例如[“alice”,”bob”],注意数组参数中不要有空格;布尔类型为true或者false。**
- callByCNS:通过CNS(Contract Name Service)按函数和参数调用合约。
callByCNS [合约路径] [合约地址] [合约接口名] [合约接口参数]
获取合约的状态
- getContractStatus:获取合约的状态
getContractStatus [合约地址]
查询部署合约的日志
- getDeployLog:查询部署合约的日志
列出合约的函数和事件信息
- listAbi:列出合约的函数和事件信息
listAbi [合约文件路径]
列出指定合约的合约地址
- listDeployContractAddress:列出指定合约的合约地址
listDeployContractAddress [合约文件路径]
区块和交易信息
通过哈希查询区块的信息
- getBlockByHash:通过哈希查询区块的信息
getBlockByHash [区块哈希][true/fasle]注:true表示会返回一个交易对象,false会返回只返回交易哈希,不写默认为false
通过区块号查询区块的信息
- getBlockByNumber:通过区块号查询区块的信息
getBlockByNumber [区块号] [true/false]注:true表示会返回一个交易对象,false会返回只返回交易哈希,不写默认为false
通过区块号查询区块哈希
- getBlockHashByNumber:通过区块号查询区块哈希
getBlockHashByNumber [区块号]
通过哈希查询区块头的信息
- getBlockHeaderByHash:通过哈希查询区块头的信息
getBlockHeaderByHash [区块哈希][true/fasle]注:如果为true,则还将返回签名列表,不写默认为false
通过区块号查询区块头的信息
- getBlockHeaderByNumber:通过区块号查询区块头的信息
getBlockHeaderByNumber [区块号][true/false]
查询最新区块的数量
- getBlockNumber:查询最新区块的数量
查询未确认的交易
- getPendingTransactions:查询未确认的交易
根据区块哈希和交易索引位置查询交易的信息
- getTransactionByBlockHashAndIndex:根据区块哈希和交易索引位置查询交易的信息
getTransactionByBlockHashAndIndex[区块哈希][交易索引]
根据交易哈希查询交易的信息
- getTransactionByHash:根据交易哈希查询交易的信息
getTransactionByHash [交易哈希]
根据交易哈希查询交易收据
- getTransactionReceipt:根据交易哈希查询交易收据
getTransactionReceipt [交易哈希]
查询总交易数
getTotalTransactionCount:查询总交易数
权限管理
这部分需要先理解fisco-bcos安全控制中的权限控制部分才能更好的使用
grantCNSManager:授予地址对CNS的权限
grantCommitteeMember:授予账户委员会成员身份。
grantContractStatusManager:授予用户合约授权。
grantContractWritePermission:授予账户对合约的写入权限。
grantDeployAndCreateManager:授予地址对部署合约和创建用户表的权限。
grantNodeManager:授予地址对节点配置的权限。
grantOperator:授予账户操作员身份。
grantSysConfigManager:授予地址对系统配置的权限。
grantUserTableManager:授予对指定表名和地址的用户表的权限。
revokeCNSManager:撤销对CNS的权限。
revokeCommitteeMember:从委员会成员中撤销账户。
revokeContractStatusManager:撤销用户对合约的授权。
revokeContractWritePermission:撤销账户对合约的写入权限。
revokeDeployAndCreateManager:撤销对部署合约和创建用户表的权限。
revokeNodeManager:撤销对节点配置的权限。
revokeOperator:撤销操作员身份。
revokeSysConfigManager:撤销对系统配置的权限。
revokeUserTableManager:撤销对指定表名和地址的用户表的权限。
revokeSysConfigManager:撤销对系统配置的权限。
revokeUserTableManager:撤销对指定表名和地址的用户表的权限。
委员会成员权重
- queryCommitteeMemberWeight:查询委员会成员的权重。
- updateCommitteeMemberWeight:更新委员会成员的权重。