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

2023-11-16

前言

  • 本文的记录与总结依照于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---搭建第一个区块链网络 的相关文章

  • 攻防世界-MISC-练习区-12(功夫再高也怕菜刀)

    题目描述 菜狗决定用菜刀和菜鸡决一死战 这是攻防世界里面训练区的一道流量分析题 用wireshark 打开流量包 然后一级搜索http 二级用分组字节流搜索flag 按CTRL F 并找到no 1367 在Line based text d
  • 移动NB模块M5311(lwm2m协议登录详解)

    身为一个通信专业大三狗 第一次和别人对接项目今天属于我的功能总算是结束了 接下来就是等待联调 心情愉悦 首先NB是什么 这个我就不详细的解释了 我相信大多数人看这篇文章是以实践为开始的 那么多余的就不说了 接下来说具体流程 首先M5311模
  • 确实有必要好好学英语

    前言 工作已经6年多了 最近忽然明悟一些道理 零度觉得分享出来可能可以帮助一些人 这些道理可能很多成功的 牛逼的人早就知道这些了 随着技术的迭代更新越来越快 新技术不断产生 很多很多人都在焦虑 但是有一个道理的确是这样的 你不学习 未来终将
  • 【微信小程序】项目开发-----百度翻译API接口开发微信翻译小程序

    开发环境 微信开发者工具 V1 02 1902010版本以上 开发语言 JavaSript语言 HTML语言 API接口 百度翻译开发平台开放接口 界面预览 开发 基础配置 1 app js App onLaunch function 展示
  • AVPlay播放视频

    property nonatomic retain nullable AVPlayer player NSString urlStr NSBundle mainBundle pathForResource demo mp4 ofType n
  • 将灰度图片转成三通道(RGB)图片(MatLab)

    运行程序报错 RuntimeError output with shape 1 224 224 doesn t match the broadcast shape 3 224 224 报错原因 原模型输入的图片为RGB三通道 我输入的为单通

随机推荐

  • pytorch混合常量、变量

    有矩阵 X R n d X in R n times d
  • 蓝桥杯2015年第六届真题-赢球票

    题目 题目链接 题解 暴力 模拟 枚举每次从哪个位置开始 也就是有n种情况要枚举 对于每一种情况 我们都模拟这个过程 更新最大值 取牌操作结束的条件是还未被取走的数中的最大值都小于报的数了 说明没有办法取走任何一张了 此时结束 注意答案要求
  • docker安装rabbitmq

    1 准备 需要安装好docker环境 可以阅读文章在Centos和Redhat上安装Docker 小帅虎丶丿的博客 CSDN博客 学习如何安装docker 需要安装docker compose 了解yaml格式文件的编写以及一些常用的doc
  • 【python】如何使python中线程等待其他线程完了再执行;python-threading中的join方法;python的thread库如何判断子线程所绑定的函数全部执行完毕?

    1 主要方法 让所有的子线程都join 就可以了 不用join 的时候是这样的 用了join 之后是这样的 2 案例一 1 没有join import threading time def fun print 线程开始 print 我是线程
  • 国内几个主要的ubuntu 18.04 软件源

    1 阿里源 deb http mirrors aliyun com ubuntu bionic main restricted universe multiverse deb http mirrors aliyun com ubuntu b
  • R如何正确动态创建变量名,解决target of assignment expands to non-language object

    在一个群里 看到一位朋友发了一堆代码 错误代码 以及一个报错信息 Error in paste could not find function paste 还有一个target of assignment expands to non la
  • C++ 文档加密与解密运用【Crypto++】库

    一 下载Cryptopp 鼠标放到下面网址 点击下载即可 github地址 8 7 0版本 https github com weidai11 cryptopp releases tag CRYPTOPP 8 7 0 二 下载PEM包 pe
  • [1100]rocketmq详解

    文章目录 rocketmq入门 消息队列 rocketmq示例图 rocketmq应用场景 搭建环境 环境安装 Linux RocketMQ下载及安装 RocketMQ目录结构 RocketMQ启动及测试 管理工具 mqadmin管理工具
  • Navicat系列软件在win10中崩溃/闪退解决办法

    Navicat系列软件在win10中崩溃 在执行query gt run selected 的时候crash 安装了navicat 11的版本 经常在下拉菜单执行的过程中碰到闪退的情况 找过很多版本的安装包 都是如此 操作系统 win10
  • 程序员的关键思维

    在IT行业工作多年 越往后走 越是感觉到需要强调思考的能力 思考是我们底层非常关键的能力 尤其是在脑力密集 知识密集的行业里面显得更加重要 而这些思考的能力到底指的是什么 有没有什么方法论可以作为指导 让我们在日常的工作中不断精进 我最近试
  • [转]如何删除grub恢复windows操作系统的启动

    注 本文特别适合于在windows下已释放Linux所占空间 而启动时仍进入grub引导而不知如何解决的朋友 此文是我自己遇到这个问题时在网上搜到的 在此转载供大家参考 我自己采用的是方法四 确实比较简便 由于windows 2000 wi
  • 移植2- 移植uboot的spl代码

    根据http blog csdn net xiaojiaohuazi article details 8269890来修改 2014 3 2 做到第九步 这步还未做 疑问 uboot应该在BL2时才初始化内存吧 这里为什么这么早就初始化内存
  • 多线程高并发服务器:3个问题

    1 子线程能否关闭监听文件描述符 2 主线程能否关闭通信文件描述符 3 多个子线程共享cfd 会有什么问题发生 解答1 不能 父子线程共享文件描述符 若子进程关闭监听文件描述符之后 第二个子线程Accept时就会出错 Accept的第一个参
  • V-rep学习笔记:Geometric Constraint Solver(几何约束求解)

    The geometric constraint solver is slower and less precise at solving kinematic problems but might be easier and more in
  • 【计算机视觉】LeNet方法实现手写体识别(MNIST数据集)

    目录 一 MNIST数据集的特点 二 LeNet模型原理 一 卷积神经网络 二 LeNet 5模型 三 实验结果 一 训练测试结果 二 匹配结果 四 相关代码 一 MNIST数据集的特点 部分数据 MNIST数据集是一个手写体数据集 数据集
  • 进程间通信(IPC)的方法:命名管道

    使用管道时 一个进程的输出可成为另外一个进程的输入 命名管道 Named pipe或FIFO 是一种类似于管道的特殊文件 但在文件系统上有一个名称 它允许以先进先出 FIFO first in first out 的方式存储有限数量的数据
  • CUDA常见函数(一)(小白入门)

    CUDA常见函数 小白入门 示例代码0 VS自带Kernel cu 初始定义 核函数 其他函数 示例代码1 传递参数 cudaMalloc malloc cudaFree cudaMemcpy Memcpy 示例代码2 查询设备 cudaG
  • 关于as遇到的Enable "Android Support" Plugin错误问题

    元旦休息了3天 17年第一天上班打开as就遇到了这个facets cannot be loaded you can mark them as ignored to suppress this error错误问题 蛋疼得很 当然既然遇到了 就
  • 树莓派Pico入手

    树莓派Pico入手 树莓派 Pico 中文站 一 介绍 1 1 价格 开发板 19 00 1 2 型号 目前主要有两个型号 Pico 基础版 Pico W 板载WIFI芯片 H的是指给你焊好排针 1 3 性能 核心 双核 Arm Corte
  • Fisco技术文档总结1---搭建第一个区块链网络

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