FISCO-BCOS 命令交互控制臺 Console-命令大全(超詳細(xì))
引言
此文章基于fisco-bocs官方技術(shù)文檔進(jìn)行整理并加以解釋,在這里可以快速理解命令的含義和更快地上手,可以當(dāng)作命令詞典使用。
前提條件
- 部署好區(qū)塊鏈網(wǎng)絡(luò)
- 配置好console,即拷貝配置文件等等
console 目錄如下:
|-- apps # 控制臺jar包目錄
| -- console.jar
|-- lib # 相關(guān)依賴的jar包目錄
├── conf
│ ├── config-example.toml # 配置文件
│ ├── group-generate-config.toml # 創(chuàng)建群組的配置文件,具體可參考命令genrateGroupFromFile
│ └── log4j.properties # 日志配置文件
|-- contracts # 合約所在目錄
| -- solidity # solidity合約存放目錄
| -- HelloWorld.sol # 普通合約:HelloWorld合約,可部署和調(diào)用
| -- TableTest.sol # 使用CRUD接口的合約:TableTest合約,可部署和調(diào)用
| -- 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合約文件的開發(fā)工具腳本
使用賬戶生成腳本生成賬戶(非國密版)
PEM格式
bash get_account.sh
p12格式
bash get_account.sh -p
啟動控制臺
-
默認(rèn)啟動控制臺
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 * call Call a contract by a function and parameters * callByCNS Call a contract by a function and parameters by CNS * create Create table by sql * delete Remove records by sql * deploy Deploy a contract on blockchain * deployByCNS Deploy a contract on blockchain by CNS * desc Description table information * quit([quit, q, exit]) Quit console * freezeAccount Freeze the account * freezeContract Freeze the contract ........... ---------------------------------------------------------------------------------------------
注:
- help顯示每條命令的含義是:命令 命令功能描述
- 查看具體命令的使用介紹說明,輸入命令 -h或–help查看。例如:
[group:1]> getBlockByNumber -h Query 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.
賬戶操作
創(chuàng)建賬戶
- newAccount:創(chuàng)建賬戶
newAccount [加密格式/(pem/p12)]
注:
無參數(shù)默認(rèn)是pem格式
獲取當(dāng)前賬戶信息
- getCurrentAccount:獲取當(dāng)前賬戶信息
列出當(dāng)前保存的賬戶列表
- listAccount:列出當(dāng)前保存的賬戶列表
凍結(jié)賬戶
- freezeAccount:凍結(jié)賬戶
freezeAccount [賬戶地址]
解凍賬戶
- unfreezeAccount:解凍賬戶
unfreezeAccount [賬戶地址]
為交易簽名加載賬戶
- loadAccount:為交易簽名加載賬戶
loadAccount [賬戶私鑰路徑] [加密格式(pem/p12)]
注:
不指定加密格式,默認(rèn)是pem格式
節(jié)點(diǎn)操作
查看節(jié)點(diǎn)版本號信息
- getNodeVersion:查詢當(dāng)前節(jié)點(diǎn)版本
查看節(jié)點(diǎn)信息
-
getNodeInfo:查詢指定節(jié)點(diǎn)的信息。
getNodeInfo [IP:channel端口號]
查詢當(dāng)前連接到客戶端的對等節(jié)點(diǎn)
- getPeers:查詢當(dāng)前連接到客戶端的對等節(jié)點(diǎn)
查詢節(jié)點(diǎn)的PBFT視圖
- getPbftView:查詢節(jié)點(diǎn)的PBFT視圖
查詢當(dāng)前連接到客戶端的對等節(jié)點(diǎn)
- getPeers:查詢當(dāng)前連接到客戶端的對等節(jié)點(diǎn)
查詢所有已連接節(jié)點(diǎn)的Node ID列表
- getNodeIDList:查詢所有已連接節(jié)點(diǎn)的Node ID列表
移除一個節(jié)點(diǎn)
-
removeNode:移除一個節(jié)點(diǎn)
removeNode [nodeId]
觀察節(jié)點(diǎn)和共識節(jié)點(diǎn)
-
addObserver:添加一個觀察者節(jié)點(diǎn)
addObserver [nodeid]
-
getObserverList:查詢觀察者節(jié)點(diǎn)的Node ID列表
-
addSealer:添加一個共識節(jié)點(diǎn)
addSealer [nodeid]
-
getSealerList:查詢共識節(jié)點(diǎn)的Node ID列表。
-
getGroupPeers:查詢共識節(jié)點(diǎn)和觀察者節(jié)點(diǎn)的Node ID列表
群組操作
切換群組
-
switch
switch [群組號]
為指定節(jié)點(diǎn)生成一個組
-
generateGroup:為指定節(jié)點(diǎn)生成一個組
generateGroup [節(jié)點(diǎn)IP:channel端口號] [新建群組的Id] [新建群組創(chuàng)世塊時間戳] [新創(chuàng)建群組的共識節(jié)點(diǎn)列表] 注: 1.可通過命令echo $(($(date '+%s')*1000))獲取時間戳; 2.多個共識節(jié)點(diǎn)ID之間用空格分割
通過新群組配置文件(group-generate-config.toml)為指定節(jié)點(diǎn)列表創(chuàng)建新群組
群組配置示例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 sealerList
sealerList=["b8acb51b9fe84f88d670646be36f31c52e67544ce56faf3dc8ea4cf1b0ebff0864c6b218fdcd9cf9891ebd414a995847911bd26a770f429300085f37e1131f36","11e1be251ca08bb44f36fdeedfaeca40894ff80dfd80084607a75509edeaf2a9c6fee914f1e9efda571611cf4575a1577957edfd2baa9386bd63eb034868625f"]
[genesis]
# The genesis timestamp, It is recommended to set to the current utcTime, which must be greater than 0
timestamp = "1590586645000"
generateGroupFromFile
命令的參數(shù)包括:
-
groupConfigFilePath
: 群組配置文件路徑,控制臺conf/group-generate-config.toml
是提供的群組配置文件模板,用戶可根據(jù)實(shí)際場景拷貝、修改該配置模板,并加載修改后的群組配置文件; -
groupId
: 新創(chuàng)建的群組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:查詢組列表
查詢共識節(jié)點(diǎn)和觀察者節(jié)點(diǎn)的Node ID列表
- getGroupPeers:查詢共識節(jié)點(diǎn)和觀察者節(jié)點(diǎn)的Node ID列表
查詢指定節(jié)點(diǎn)的指定組的狀態(tài)
- queryGroupStatus:查詢指定節(jié)點(diǎn)的指定組的狀態(tài)。
queryGroupStatus [節(jié)點(diǎn)IP:channel端口] [群組號]
恢復(fù)指定節(jié)點(diǎn)的指定組
- recoverGroup:恢復(fù)指定節(jié)點(diǎn)的指定組
recoverGroup [節(jié)點(diǎn)IP:channel端口] [群組號]
移除指定節(jié)點(diǎn)的指定組
- removeGroup:移除指定節(jié)點(diǎn)的指定組
removeGroup [節(jié)點(diǎn)IP:channel端口] [群組號]
啟動指定節(jié)點(diǎn)的指定組
- startGroup:啟動指定節(jié)點(diǎn)的指定組
startGroup [節(jié)點(diǎn)IP:channel端口] [群組號]
停止指定節(jié)點(diǎn)的指定組
- stopGroup:停止指定節(jié)點(diǎn)的指定組
stopGroup [節(jié)點(diǎn)IP:channel端口] [群組號]
合約操作
部署合約
- deploy(deployByCNS):在區(qū)塊鏈上部署一個合約
部署合約。(默認(rèn)提供HelloWorld合約和TableTest.sol進(jìn)行示例使用) 參數(shù):
合約路徑:合約文件的路徑,支持相對路徑、絕對路徑和默認(rèn)路徑三種方式。用戶輸入為文件名時,從默認(rèn)目錄獲取文件,默認(rèn)目錄為: contracts/solidity
,比如:HelloWorld。
`deploy [合約路徑]`
# 部署HelloWorld合約,默認(rèn)路徑
[group:1]> deploy HelloWorld.sol
contract address:0xc0ce097a5757e2b6e189aa70c7d55770ace47767
# 部署HelloWorld合約,相對路徑
[group:1]> deploy contracts/solidity/HelloWorld.sol
contract address:0xd653139b9abffc3fe07573e7bacdfd35210b5576
# 部署HelloWorld合約,絕對路徑
[group:1]> deploy /root/fisco/console/contracts/solidity/HelloWorld.sol
contract address:0x85517d3070309a89357c829e4b9e2d23ee01d881
注:
- 部署用戶編寫的合約,可以將solidity合約文件放到控制臺根目錄的
contracts/solidity/
目錄下,然后進(jìn)行部署即可。按tab鍵可以搜索contracts/solidity/
目錄下的合約名稱。- 若需要部署的合約引用了其他合約或library庫,引用格式為
import "./XXX.sol";
。其相關(guān)引入的合約和library庫均放在contracts/solidity/
目錄。- 如果合約引用了library庫,library庫文件的名稱必須以
Lib
字符串開始,以便于區(qū)分是普通合約與library庫文件。library庫文件不能單獨(dú)部署和調(diào)用。deployByCNS:通過CNS在區(qū)塊鏈上部署一個合約
調(diào)用合約
- call:通過函數(shù)和參數(shù)調(diào)用合約。
call [合約路徑] [合約地址] [合約接口名] [合約接口參數(shù)]
注:參數(shù):由合約接口參數(shù)決定。**參數(shù)由空格分隔,其中字符串、字節(jié)類型參數(shù)需要加上雙引號;數(shù)組參數(shù)需要加上中括號,比如[1,2,3],數(shù)組中是字符串或字節(jié)類型,加雙引號,例如[“alice”,”bob”],注意數(shù)組參數(shù)中不要有空格;布爾類型為true或者false。**
- callByCNS:通過CNS(Contract Name Service)按函數(shù)和參數(shù)調(diào)用合約。
callByCNS [合約路徑] [合約地址] [合約接口名] [合約接口參數(shù)]
獲取合約的狀態(tài)
- getContractStatus:獲取合約的狀態(tài)
getContractStatus [合約地址]
查詢部署合約的日志
- getDeployLog:查詢部署合約的日志
列出合約的函數(shù)和事件信息
- listAbi:列出合約的函數(shù)和事件信息
listAbi [合約文件路徑]
列出指定合約的合約地址
- listDeployContractAddress:列出指定合約的合約地址
listDeployContractAddress [合約文件路徑]
區(qū)塊和交易信息
通過哈希查詢區(qū)塊的信息
- getBlockByHash:通過哈希查詢區(qū)塊的信息
getBlockByHash [區(qū)塊哈希] [true/fasle]
注:
true表示會返回一個交易對象,false會返回只返回交易哈希,不寫默認(rèn)為false
通過區(qū)塊號查詢區(qū)塊的信息
- getBlockByNumber:通過區(qū)塊號查詢區(qū)塊的信息
getBlockByNumber [區(qū)塊號] [true/false]
注:
true表示會返回一個交易對象,false會返回只返回交易哈希,不寫默認(rèn)為false
通過區(qū)塊號查詢區(qū)塊哈希
- getBlockHashByNumber:通過區(qū)塊號查詢區(qū)塊哈希
getBlockHashByNumber [區(qū)塊號]
通過哈希查詢區(qū)塊頭的信息
- getBlockHeaderByHash:通過哈希查詢區(qū)塊頭的信息
getBlockHeaderByHash [區(qū)塊哈希] [true/fasle]
注:
如果為true,則還將返回簽名列表,不寫默認(rèn)為false
通過區(qū)塊號查詢區(qū)塊頭的信息
- getBlockHeaderByNumber:通過區(qū)塊號查詢區(qū)塊頭的信息
getBlockHeaderByNumber [區(qū)塊號] [true/false]
查詢最新區(qū)塊的數(shù)量
- getBlockNumber:查詢最新區(qū)塊的數(shù)量
查詢未確認(rèn)的交易
- getPendingTransactions:查詢未確認(rèn)的交易
根據(jù)區(qū)塊哈希和交易索引位置查詢交易的信息
- getTransactionByBlockHashAndIndex:根據(jù)區(qū)塊哈希和交易索引位置查詢交易的信息
getTransactionByBlockHashAndIndex [區(qū)塊哈希] [交易索引]
根據(jù)交易哈希查詢交易的信息
- getTransactionByHash:根據(jù)交易哈希查詢交易的信息
getTransactionByHash [交易哈希]
根據(jù)交易哈希查詢交易收據(jù)
- getTransactionReceipt:根據(jù)交易哈希查詢交易收據(jù)
getTransactionReceipt [交易哈希]
查詢總交易數(shù)
getTotalTransactionCount:查詢總交易數(shù)
權(quán)限管理
這部分需要先理解fisco-bcos安全控制中的權(quán)限控制部分才能更好的使用
grantCNSManager:授予地址對CNS的權(quán)限
grantCommitteeMember:授予賬戶委員會成員身份。
grantContractStatusManager:授予用戶合約授權(quán)。
grantContractWritePermission:授予賬戶對合約的寫入權(quán)限。
grantDeployAndCreateManager:授予地址對部署合約和創(chuàng)建用戶表的權(quán)限。
grantNodeManager:授予地址對節(jié)點(diǎn)配置的權(quán)限。
grantOperator:授予賬戶操作員身份。
grantSysConfigManager:授予地址對系統(tǒng)配置的權(quán)限。
grantUserTableManager:授予對指定表名和地址的用戶表的權(quán)限。
revokeCNSManager:撤銷對CNS的權(quán)限。
revokeCommitteeMember:從委員會成員中撤銷賬戶。
revokeContractStatusManager:撤銷用戶對合約的授權(quán)。
revokeContractWritePermission:撤銷賬戶對合約的寫入權(quán)限。
revokeDeployAndCreateManager:撤銷對部署合約和創(chuàng)建用戶表的權(quán)限。
revokeNodeManager:撤銷對節(jié)點(diǎn)配置的權(quán)限。
revokeOperator:撤銷操作員身份。
revokeSysConfigManager:撤銷對系統(tǒng)配置的權(quán)限。文章來源:http://www.zghlxwxcb.cn/news/detail-760990.html
revokeUserTableManager:撤銷對指定表名和地址的用戶表的權(quán)限。文章來源地址http://www.zghlxwxcb.cn/news/detail-760990.html
revokeSysConfigManager:撤銷對系統(tǒng)配置的權(quán)限。
revokeUserTableManager:撤銷對指定表名和地址的用戶表的權(quán)限。
委員會成員權(quán)重
- queryCommitteeMemberWeight:查詢委員會成員的權(quán)重。
- updateCommitteeMemberWeight:更新委員會成員的權(quán)重。
整理下來過程艱難,請大家一鍵三連走起?。?!
到了這里,關(guān)于FISCO-BCOS 命令交互控制臺 Console-命令大全(超詳細(xì))的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!