目录
前言
配置及使用控制台
第一步. 准备依赖
第二步. 启动并使用控制台
部署及调用测试HelloWorld合约
第一步. 编写HelloWorld合约
第二步. 部署HelloWorld合约
第三步. 调用HelloWorld合约
前言随着区块链的发展,目前国内也掀起了一阵区块链的热潮,无论是金融、信任、交易、溯源等领域都是非常受欢迎,慢慢的我们也将成为第一个吃螃蟹的人,本篇文章主要是与大家一起创建一个崭新的FISCO-BCOS区块链网络,单机四节点。
我们选择用国产的FISCO-BCOS来进行我们的第一个区块链网络教程,是因为FISCO-BCOS对于国内相对友好,资源较多架构基本一致,所以我们选择先使用FISCO-BCOS来在大家的脑海里形成一个完整的区块链交易流程与区块链模型。
谢谢支持,精品区块链交流请认准“CQCET-阿雄不会写代码”
配置及使用控制台 第一步. 准备依赖- 安装java (推荐使用java 14).
# ubuntu系统安装java sudo apt install -y default-jdk #centos系统安装java sudo yum install -y java java-devel
- 获取控制台并回到fisco目录
cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.1/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
- 拷贝控制台配置文件
若节点未采用默认端口,请将文件中的20200替换成节点对应的channel端口。
# 最新版本控制台使用如下命令拷贝配置文件 cp -n console/conf/config-example.toml console/conf/config.toml
- 配置控制台证书
注解
使用1.x版本控制台时:
- 搭建国密版时,如果使用国密SSL请执行
cp nodes/127.0.0.1/sdk/gm/* console/conf/ - 搭建国密版时,请修改 applicationContext.xml 中 encryptType 修改为1
cp -r nodes/127.0.0.1/sdk/* console/conf/第二步. 启动并使用控制台
- 启动
cd ~/fisco/console && bash start.sh
输出下述信息表明启动成功 否则请检查conf/config.toml中节点端口配置是否正确
============================================================================================= Welcome to FISCO BCOS console(2.6.0)! Type 'help' or 'h' for help. Type 'quit' or 'q' to quit console. ________ ______ ______ ______ ______ _______ ______ ______ ______ | \| \ / \ / \ / \ | \ / \ / \ / \ | $$$$$$$$ \$$$$$$| $$$$$$\| $$$$$$\| $$$$$$\ | $$$$$$$\| $$$$$$\| $$$$$$\| $$$$$$\ | $$__ | $$ | $$___\$$| $$ \$$| $$ | $$ | $$__/ $$| $$ \$$| $$ | $$| $$___\$$ | $$ \ | $$ \$$ \ | $$ | $$ | $$ | $$ $$| $$ | $$ | $$ \$$ \ | $$$$$ | $$ _\$$$$$$\| $$ __ | $$ | $$ | $$$$$$$\| $$ __ | $$ | $$ _\$$$$$$\ | $$ _| $$_ | \__| $$| $$__/ \| $$__/ $$ | $$__/ $$| $$__/ \| $$__/ $$| \__| $$ | $$ | $$ \ \$$ $$ \$$ $$ \$$ $$ | $$ $$ \$$ $$ \$$ $$ \$$ $$ \$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$$ \$$$$$$ \$$$$$$ \$$$$$$ =============================================================================================
若1.x控制台启动失败,参考 Web3SDK启动失败场景
- 用控制台获取信息
# 获取客户端版本
[group:1]> getNodeVersion
ClientVersion{
version='2.6.0',
supportedVersion='2.6.0',
chainId='1',
buildTime='20200819 15:47:59',
buildType='Darwin/appleclang/RelWithDebInfo',
gitBranch='HEAD',
gitCommitHash='e4a5ef2ef64d1943fccc4ebc61467a91779fb1c0'
}
# 获取节点信息
[group:1]> getPeers
[
PeerInfo{
nodeID='c1bd77e188cd0783256ee06838020f24a697f9af785438403d3620967a4a3612e3abc4bbe986d1e9dddf62d4236bff0b7d19a935a3cd44889f681409d5bf8692',
ipAndPort='127.0.0.1:30302',
agency='agency',
topic=[
],
node='node2'
},
PeerInfo{
nodeID='7f27f5d67f104eacf689790f09313e4343e7887a1a7b79c31cd151be33c7c8dd57c895a66086c3c8e0b54d2fa493407e0d9646b2bd9fc29a94fd3663a5332e6a',
ipAndPort='127.0.0.1:57266',
agency='agency',
topic=[
_block_notify_1
],
node='node1'
},
PeerInfo{
nodeID='862f26d9681ed4c12681bf81a50d0b8c66dd5b6ee7b0b42a4af12bb37b1ad2442f7dcfe8dac4e737ce9fa46aa94d904e8c474659eabf575d6715995553245be5',
ipAndPort='127.0.0.1:30303',
agency='agency',
topic=[
],
node='node3'
}
]
[group:1]>
部署及调用测试HelloWorld合约
第一步. 编写HelloWorld合约
HelloWorld合约提供两个接口,分别是get()和set(),用于获取/设置合约变量name。合约内容如下:
pragma solidity ^0.4.24;
contract HelloWorld {
string name;
function HelloWorld() {
name = "Hello, World!";
}
function get()constant returns(string) {
return name;
}
function set(string n) {
name = n;
}
}
第二步. 部署HelloWorld合约
为了方便用户快速体验,HelloWorld合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol,参考下面命令部署即可。
# 在控制台输入以下指令 部署成功则返回合约地址 [group:1]> deploy HelloWorld transaction hash: 0xd0305411e36d2ca9c1a4df93e761c820f0a464367b8feb9e3fa40b0f68eb23fa contract address:0xb3c223fc0bf6646959f254ac4e4a7e355b50a344第三步. 调用HelloWorld合约
# 查看当前块高
[group:1]> getBlockNumber
1
# 调用get接口获取name变量 此处的合约地址是deploy指令返回的地址
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return values:
[
"Hello,World!"
]
---------------------------------------------------------------------------------------------
# 查看当前块高,块高不变,因为get接口不更改账本状态
[group:1]> getBlockNumber
1
# 调用set设置name
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
transaction hash: 0x7e742c44091e0d6e4e1df666d957d123116622ab90b718699ce50f54ed791f6e
---------------------------------------------------------------------------------------------
transaction status: 0x0
description: transaction executed successfully
---------------------------------------------------------------------------------------------
Output
Receipt message: Success
Return message: Success
---------------------------------------------------------------------------------------------
Event logs
Event: {}
# 再次查看当前块高,块高增加表示已出块,账本状态已更改
[group:1]> getBlockNumber
2
# 调用get接口获取name变量,检查设置是否生效
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
---------------------------------------------------------------------------------------------
Return code: 0
description: transaction executed successfully
Return message: Success
---------------------------------------------------------------------------------------------
Return values:
[
"Hello,FISCO BCOS"
]
---------------------------------------------------------------------------------------------
# 退出控制台
[group:1]> quit
