Fisco技术文档总结1---搭建第一个区块链网络

2023-11-01

前言

  • 本文的记录与总结依照于FISCO BCOS 技术文档学习联盟链搭建的相关知识,详细搭建过程见文档,本文仅作参考

  • 本文通过在单机上部署一条4节点的FISCO BCOS联盟链,掌握FISCO BCOS部署流程。

搭建

需要使用已经封装好的脚本程序build_chain.sh,由于该脚本依赖于openssl, curl

需要先安装相关依赖openssl, curl

下载脚本(可以新建一个文件夹管理)

curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v2.8.0/build_chain.sh && chmod u+x build_chain.sh

启动脚本,生成一条单群组4节点的FISCO链,注意确保机器端口占用情况

bash build_chain.sh -l 127.0.0.1:4 -p 30300,20200,8545

其中-p选项指定起始端口,分别是p2p_port,channel_port,jsonrpc_port

命令执行成功会输出All completed

启动

启动所有节点

bash nodes/127.0.0.1/start_all.sh

启动成功会输出类似下面内容的响应。否则请使用netstat -an | grep tcp检查机器的30300~30303,20200~20203,8545~8548端口是否被占用。

try to start node0
try to start node1
try to start node2
try to start node3
 node1 start successfully
 node2 start successfully
 node0 start successfully
 node3 start successfully

检测

检查进程是否启动

ps -ef | grep -v grep | grep fisco-bcos

正常情况会有类似下面的输出; 如果进程数不为4,则进程没有启动(一般是端口被占用导致的)

fisco       5453     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node0/../fisco-bcos -c config.ini
fisco       5459     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node1/../fisco-bcos -c config.ini
fisco       5464     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node2/../fisco-bcos -c config.ini
fisco       5476     1  1 17:11 pts/0    00:00:02 /home/ubuntu/fisco/nodes/127.0.0.1/node3/../fisco-bcos -c config.ini

如下,查看节点node0链接的节点数

tail -f nodes/127.0.0.1/node0/log/log*  | grep connected

正常情况会不停地输出连接信息,从输出可以看出node0与另外3个节点有连接。

info|2019-01-21 17:30:58.316769| [P2P][Service] heartBeat,connected count=3
info|2019-01-21 17:31:08.316922| [P2P][Service] heartBeat,connected count=3
info|2019-01-21 17:31:18.317105| [P2P][Service] heartBeat,connected count=3

执行下面指令,检查是否在共识

tail -f nodes/127.0.0.1/node0/log/log*  | grep +++

正常情况会不停输出++++Generating seal,表示共识正常。

配置及使用控制台

在控制台链接FISCO BCOS节点,实现查询区块链状态、部署调用合约等功能,能够快速获取到所需要的信息。

本质上控制台也是使用命令调用的sdk

  • 需要依赖
    • Java
  • 下载控制台脚本
cd ~/fisco && curl -LO https://github.com/FISCO-BCOS/console/releases/download/v2.8.0/download_console.sh && bash download_console.sh
  • 拷贝控制台配置文件并配置控制台证书
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
# 获取客户端版本
[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'
    }
]

总结

本过程本质上包含两个部分,搭建一个联盟链和使用联盟链的控制台。核心自然是下载了其GitHub上的两个脚本(fisco搭建脚本与fisco控制台脚本)实现区块链搭建,当然在脚本的bash前需要安装脚本依赖环境,控制台在bash前还需要进行一定的配置

补充:部署及调用简单合约

简单合约编写

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合约提供两个接口,分别是get()set(),用于获取/设置合约变量name

部署

为了方便用户快速体验,HelloWorld合约已经内置于控制台中,位于控制台目录下contracts/solidity/HelloWorld.sol,参考下面命令部署即可。

# 在控制台输入以下指令 部署成功则返回合约地址
[group:1]> deploy HelloWorld
transaction hash: 0xd0305411e36d2ca9c1a4df93e761c820f0a464367b8feb9e3fa40b0f68eb23fa
contract address:0xb3c223fc0bf6646959f254ac4e4a7e355b50a344

调用

# 查看当前块高
[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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Fisco技术文档总结1---搭建第一个区块链网络 的相关文章

  • java api签名验证

    https my oschina net KelinM blog 1925209 https blog csdn net u010096717 article details 84558463 https blog csdn net ma
  • 算法刷题【一本通YbtOJ1488】新的开始

    异想之旅 本人原创博客完全手敲 绝对非搬运 全网不可能有重复 本人无团队 仅为技术爱好者进行分享 所有内容不牵扯广告 本人所有文章仅在CSDN 掘金和个人博客 一定是异想之旅域名 发布 除此之外全部是盗文 先说句题外话 这个标题我很喜欢 种

随机推荐

  • 从目标检测到小目标检测

    目标检测 目标检测 object detection 就是在给定的一张图片中精确找到物体所在的位置 并标注出物体的类别 所以 目标检测要解决的问题就是物体在哪里以及是什么的整个流程问题 但是 在实际照片中 物体的尺寸变化范围很大 摆放物体的
  • mysql 数据合并

    最近有这样的需求 由于早期数据库表设计有些问题 为了加速查询速度将几个关联表合并到一张表中 最开始想的是一个字段一个字段进行入库更新 类似于 update tb userinfo 0 a set avatar update count se
  • XML Schema学习总结

    简单类型 1 简单元素 指只能包含文本内容 不能够包含子元素 也没有属性的元素 格式
  • Cesium修改地图颜色代码

    import as Cesium from cesium export default function modifyMap viewer Cesium Viewer 获取地图影像图层 const baseLayer viewer imag
  • 让 Flutter 在鸿蒙系统上跑起来

    鸿蒙系统 HarmonyOS 是华为推出的一款分布式操作系统 那么如何在保证开发迭代效率的前提下 以相对低的成本将移动应用快速移植到鸿蒙平台上呢 美团外卖 MTFlutter 团队近期做了一次技术探索 成功地实现了 Flutter 对于鸿蒙
  • 组合优于继承

    目录 前言 1 什么是继承 2 继承的劣势 问题 3 组合相比继承有哪些优势 4 如何判断该用组合还是继承 参考资料 前言 我们在平时日常开发设计的过程中 经常会有人提到一条经典的设计模式 组合由于继承 其实我们做更深层次的思考 我们想搞清
  • C# try catch finally return

    插眼 参考 https www cnblogs com huangshuqiang p 7850468 html
  • 三十六计之败战计

    败战计故名思意 是在败势中使用的计谋 共六计 美人计 空城计 反奸计 苦肉计 连环计和走为上 第三十一计 美人计 兵强者 攻其将 兵智者 伐其情 将弱 兵颓 其势自萎 利用御寇 顺相保也 兵强者 攻其将 兵智者 伐其情 句意 对兵力强大的敌
  • Java中的IO流详解(进阶五)

    目录 友情提醒 第一章 File类和IO技术概述 1 1 File类和IO技术的作用 1 2 创建File类对象 1 3 File类中的方法 1 4 文件过滤器 FileFileter 第二章 IO流 2 1 IO流的分类 2 2 字节输入
  • RestTemplate转发请求

    需求 服务端A接收到来自于前端的请求后 要使用RestTemplate将请求转发给服务端B 然后将服务端B的返回转发给前端 根据请求类型的不同 分为 常规请求转发 文件上传转发 文件下载转发 常规请求转发 RequestMapping tr
  • HTTP请求报错:405 Request method ‘GET‘ not supported解决方法!!(终极整理)

    1 问题场景 在项目中发送ajax请求时 控制台提示如下错误信息 org springframework web HttpRequestMethodNotSupportedException Request method GET not s
  • 【Python开发】Flask开发实战:个人博客(二)

    Flask 开发实战 个人博客 二 在 Python开发 Flask开发实战 个人博客 一 中 我们已经完成了 数据库设计 数据准备 模板架构 表单设计 视图函数设计 电子邮件支持 等总体设计的内容 本篇博客将介绍博客前台的实现 博客前台需
  • 【AnyQ】遇到的问题整理(二)

    一 version GLIBCXX 3 4 22 not found 问题描述 run server usr lib x86 64 linux gnu libstdc so 6 version GLIBCXX 3 4 22 not foun
  • 华为OD机试 - 最远足迹(Java)

    题目描述 某探险队负责对地下洞穴进行探险 探险队成员在进行探险任务时 随身携带的记录器会不定期地记录自身的坐标 但在记录的间隙中也会记录其他数据 探索工作结束后 探险队需要获取到某成员在探险过程中相对于探险队总部的最远的足迹位置 仪器记录坐
  • mongon库加上权限认证后,java程序连接异常

    现象 linux库中mongo库 用超级管理员添加了一个超级管理员 并加了认证 通过spring等相关的配置文件获取Mongo数据库连接 抛出异常 如下 Caused by org springframework data mongodb
  • MySQL——关联查询&组合查询

    1 子查询 SELECT FROM data order WHERE id IN SELECT order id FROM data order detail WHERE goods id IN SELECT id FROM data go
  • 实对称矩阵的特征值一定为实数证明

    虽然不是什么有应用价值的定理 但是每次看到实对称矩阵时总会有疑惑 现在记录下来 证明 设有实对称矩阵 A 它的特征值与对应的特征向量分别为 lambda x 另外记 overline A overline lambda overline x
  • MySQL中的多表查询详解

    目录 多表查询概述 一 多表关系 1 一对多 多对一 2 多对多 3 一对一 二 多表查询概述 1 内连接 1 1 隐式连接 1 2 显示连接 2 外连接 1 左外连接 2 右外连接 3 自连接 4 联合查询 5 子查询 5 1 按照查询结
  • 处理大并发之三 对libevent的初步认识 (必看)

    https blog csdn net feitianxuxue article details 9360347 处理大并发之三 对libevent的初步认识 首先翻译下http www wangafu net nickm libevent
  • Fisco技术文档总结1---搭建第一个区块链网络

    前言 本文的记录与总结依照于FISCO BCOS 技术文档学习联盟链搭建的相关知识 详细搭建过程见文档 本文仅作参考 本文通过在单机上部署一条4节点的FISCO BCOS联盟链 掌握FISCO BCOS部署流程 搭建 需要使用已经封装好的脚