Fisco Bcos搭建第一个区块链网络--小白实战

官方链接

(ubuntu 最新版本22.04 LTS)

1. 搭建单群组FISCO BCOS联盟链

第一步. 安装依赖

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

第三步. 搭建单群组4节点联盟链

在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版本时出现了一个权限错误,权限不够,无法在根目录里创建文件夹

解决办法

第四步. 启动FISCO BCOS链

启动所有节点

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,表示共识正常。

2. 配置及使用控制台 

第一步. 准备依赖

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]>

3. 部署及调用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

注意:这里只输入 deploy HelloWorld  这一条指令即可,并且在我们控制台里还会出现一条:currentAccount: 0x818df363d99da7275e2c877841f67eb71f9acf73  别搞混了

 第三步. 调用HelloWorld合约

1. 查看当前块高

[group:1]> getBlockNumber

2. 调用 get 接口获取 name 变量,此处的合约地址是 deploy 指令返回的地址

[group:1]> call HelloWorld 0xb3c223fc0bf6646959f254ac4e4a7e355b50a344 get

 一定要注意!! !  

此处的合约地址是deploy指令返回的地址

 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

猜你喜欢

转载自blog.csdn.net/weixin_43819762/article/details/109004451