cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.2/download_console.sh && bash download_console.sh
如果因为网络问题导致长时间无法下载,请尝试
cd ~/fisco && curl -#LO https://gitee.com/FISCO-BCOS/console/raw/master-2.0/tools/download_console.sh && bash download_console.sh
控制台目录结构
|-- 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合约文件的开发工具脚
若节点未采用默认端口,请将文件中的20200替换成节点对应的channel端口。
# 最新版本控制台使用如下命令拷贝配置文件
cp -n console/conf/config-example.toml console/conf/config.toml
cp -r nodes/127.0.0.1/sdk/* console/conf/
cd ~/fisco/console && bash start.sh
输出下述信息表明启动成功 否则请检查conf/config.toml中节点端口配置是否正确
控制台命令列表及使用
# 创建新账户
[group:1]> newAccount
# 账户列表
[group:1]> listAccount
# 切换账号
[group:1]> loadAccount 新创建的账户
# 区块高度
[group:1]> getBlockNumber
# 共识节点列表
[group:1]> getSealerList
# 观察节点列表
[group:1]> getObserverList
HelloWorld合约提供两个接口,分别是get()
和set()
,用于获取/设置合约变量name
。合约内容如下:
cd ~/fisco/console/contracts/solidity && vim HelloWorld.sol
pragma solidity>=0.4.24 <0.6.11;
contract HelloWorld {
string name;
constructor() public {
name = "Hello, World!";
}
function get() public view returns (string memory) {
return name;
}
function set(string memory n) public {
name = n;
}
}
为了方便用户快速体验,HelloWorld合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol
,参考下面命令部署即可。
cd ~/fisco/console && bash start.sh
# 在控制台输入以下指令 部署成功则返回合约地址
[group:1]> deploy HelloWorld
transaction hash: 0xcef99370e6f9149459e26f030d05ddacaa5032f019c220f5b22aa9da1be19435
contract address: 0xa4b9b450613f50fc54568c8ede7a0349a53bdac9
currentAccount: 0x05cf6f5482ce4d318a3683ddd7a3e2d9531c2dfa
# 查看当前块高
[group:1]> getBlockNumber
1
# 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址
[group:1]> call HelloWorld 0xa4b9b450613f50fc54568c8ede7a0349a53bdac9 get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return value size:1
Return types: (STRING)
Return values:(Hello, World!)
---------------------------------------------------------------------------------------------
# 查看当前块高,块高不变,因为get接口不更改账本状态
[group:1]> getBlockNumber
1
# 调用set设置name
[group:1]> call HelloWorld 0xa4b9b450613f50fc54568c8ede7a0349a53bdac9 set "Hello, FISCO BCOS"
transaction hash: 0x3a2286706bff3bae891cbb57c6aaaf26b0a3f3e30059bd6e31e7967888398287
---------------------------------------------------------------------------------------------
transaction status: 0x0
description: transaction executed successfully
---------------------------------------------------------------------------------------------
Transaction inputs:
Input value size:1
Input types: (STRING)
Input values:(Hello, FISCO BCOS)
---------------------------------------------------------------------------------------------
Receipt message: Success
Return message: Success
Return values:[]
---------------------------------------------------------------------------------------------
Event logs
Event: {}
# 再次查看当前块高,块高增加表示已出块,账本状态已更改
[group:1]> getBlockNumber
2
# 调用get接口获取name变量,检查设置是否生效
[group:1]> call HelloWorld 0xa4b9b450613f50fc54568c8ede7a0349a53bdac9 get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return value size:1
Return types: (STRING)
Return values:(Hello, FISCO BCOS)
---------------------------------------------------------------------------------------------
# 退出控制台
[group:1]> quit
至此,我们完成了控制台的配置,使用控制台获取区块链信息以及完成了合约的部署和调用等内容!