官方链接
(ubuntu 最新版本22.04 LTS)
sudo apt install -y openssl curl
## 创建操作目录
cd ~ && mkdir -p fisco && cd fisco
## 下载脚本
curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.9.0/build_chain.sh && chmod u+x build_chain.sh
在fisco目录下执行下面的指令,生成一条单群组4节点的FISCO链。 请确保机器的30300~30303,20200~20203,8545~8548
端口没有被占用。
bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545
命令执行成功会输出 All completed
在这里第一次尝试的时候出现了一个报错:需要openssl 1.1.0 或1.0.2,你应该先安装openssl 或者使用“openssl version”命令检查openssl 版本是否合适。
下载相应版本后再开始这一步依旧报错,,询问师姐后得知是因为第一步安装依赖后把openssl自动更新到最新版本了。
安装1.0.2版本时出现了一个权限错误,权限不够,无法在根目录里创建文件夹
解决办法
启动所有节点
bash nodes/127.0.0.1/start_all.sh
启动成功会输出类似下面内容的响应
检查进程是否启动
ps -ef | grep -v grep | grep fisco-bcos
正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般是端口被占用导致的)
1.查看节点node0链接的节点数
tail -f nodes/127.0.0.1/node0/log/log* | grep connected
正常情况会不停地输出连接信息,从输出可以看出node0与另外3个节点有连接。
这里将每隔10秒不停地输出连接信息,按 Ctrl + C 即可停止
2. 执行下面指令,检查是否在共识
tail -f nodes/127.0.0.1/node0/log/log* | grep +++
正常情况会不停输出 ++++Generating seal
,表示共识正常。
1.安装java
sudo apt install -y default-jdk
2.获取控制台并回到fisco目录
cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.9.1/download_console.sh && bash download_console.sh
3.拷贝控制台配置文件
cp -n console/conf/config-example.toml console/conf/config.toml
4.配置控制台证书
cp -r nodes/127.0.0.1/sdk/* console/conf/
1.启动。
cd ~/fisco/console && bash start.sh
输出下述信息表明启动成功 否则请检查conf/config.toml中节点端口配置是否正确
2.用配置台获取信息
# 获取客户端版本
[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合约提供两个接口,分别是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合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol
,参考下面命令部署即可。
在控制台输入以下指令,部署成功则返回合约地址
[group:1]> deploy HelloWorld
transaction hash: 0xd0305411e36d2ca9c1a4df93e761c820f0a464367b8feb9e3fa40b0f68eb23fa
contract address:0xb3c223fc0bf6646959f254ac4e4a7e355b50a344
注意:这里只输入 deploy HelloWorld 这一条指令即可,并且在我们控制台里还会出现一条:currentAccount: 0x818df363d99da7275e2c877841f67eb71f9acf73 别搞混了
1. 查看当前块高
[group:1]> getBlockNumber
2. 调用 get 接口获取 name 变量,此处的合约地址是 deploy 指令返回的地址
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
一定要注意!! !
3. 查看当前块高,块高不变,依然是 1 ,因为 get 接口不更改账本状态
[group:1]> getBlockNumber
4. 调用 set 设置 name
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 set "Hello, FISCO BCOS"
5. 再次查看当前块高,块高增加表示已出块,账本状态已更改
[group:1]> getBlockNumber
6. 调用 get 接口获取 name 变量,检查设置是否生效
[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get
7. 退出控制台
[group:1]> quit