Fisco技术文档总结3---使用工具

2023-11-05

前言

本文介绍fisco技术文档中的使用工具模块,该模块中将重点介绍开发部署工具和控制台,这都是开发过程中十分常用的,其他的工具是封装的工具,方便开发者使用这里接受一下方便之后使用

开发部署工具

功能

build_chain.sh脚本用于快速生成一条链中节点的配置文件,脚本依赖于openssl

搭建指令

默认使用指令

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

解释:

  • -l选项用于指定要生成的链的IP列表以及每个IP下的节点数,以逗号分隔。脚本根据输入的参数生成对应的节点配置文件,其中每个节点的端口号默认从30300开始递增,所有节点属于同一个机构和群组。
  • -f选项通过使用一个指定格式的配置文件,支持创建各种复杂业务场景FISCO BCOS链。-l-f选项必须指定一个且不可共存,例如192.168.0.1:2 agency1 1,2表示ip192.168.0.1的机器上有两个节点,这两个节点属于机构agency1,属于group1和group2。
下面是一个配置文件的例子,每个配置项以空格分隔。
192.168.0.1:1 agency1 1,2 30300,20200,8545
192.168.0.2:1 agency1 1,2 30300,20200,8545
192.168.0.3:2 agency1 1,3 30300,20200,8545
192.168.0.4:1 agency2 1   30300,20200,8545
192.168.0.5:1 agency3 2,3 30300,20200,8545
192.168.0.6:1 agency2 3   30300,20200,8545
bash build_chain.sh -f ipconf -T
  • p指定节点的起始端口,每个节点占用三个端口,分别是p2p,channel,jsonrpc使用,分割端口,必须指定三个端口。同一个IP下的不同节点所使用端口从起始端口递增。
  • 为便于开发和体验,p2p模块默认监听IP是 0.0.0.0 ,出于安全考虑,请根据实际业务网络情况,修改为安全的监听地址,如内网IP或特定的外网IP

节点文件组织结构

nodes/
├── 127.0.0.1
│   ├── fisco-bcos # 二进制程序
│   ├── node0 # 节点0文件夹
│   │   ├── conf # 配置文件夹
│   │   │   ├── ca.crt # 链根证书
│   │   │   ├── group.1.genesis # 群组1初始化配置,该文件不可更改
│   │   │   ├── group.1.ini # 群组1配置文件
│   │   │   ├── node.crt # 节点证书
│   │   │   ├── node.key # 节点私钥
│   │   │   ├── node.nodeid # 节点id,公钥的16进制表示
│   │   ├── config.ini # 节点主配置文件,配置监听IP、端口等
│   │   ├── start.sh # 启动脚本,用于启动节点
│   │   └── stop.sh # 停止脚本,用于停止节点
│   ├── node1 # 节点1文件夹
│   │.....
│   ├── node2 # 节点2文件夹
│   │.....
│   ├── node3 # 节点3文件夹
│   │.....
│   ├── sdk # SDK与节点SSL连接配置,FISCO-BCOS 2.5及之后的版本,添加了SDK只能连本机构节点的限制,操作时需确认拷贝证书的路径,否则建联报错
│   │   ├── ca.crt # SSL连接根证书
│   │   ├── sdk.crt # SSL连接证书
│   │   └── sdk.key # SSL连接证书私钥
|   |   ├── gm # SDK与节点国密SSL连接配置,注意:生成国密区块链环境时才会生成该目录,用于节点与SDK的国密SSL连接
|   |   │   ├── gmca.crt # 国密SSL连接根证书
|   |   │   ├── gmensdk.crt # 国密SSL连接加密证书
|   |   │   ├── gmensdk.key # 国密SSL连接加密证书私钥
|   |   │   ├── gmsdk.crt # 国密SSL连接签名证书
|   |   │   └── gmsdk.key # 国密SSL连接签名证书私钥
├── cert # 证书文件夹
│   ├── agency # 机构证书文件夹
│   │   ├── agency.crt # 机构证书
│   │   ├── agency.key # 机构私钥
│   │   ├── agency.srl
│   │   ├── ca-agency.crt
│   │   ├── ca.crt
│   │   └── cert.cnf
│   ├── ca.crt # 链证书
│   ├── ca.key # 链私钥
│   ├── ca.srl
│   └── cert.cnf
  • cert文件夹下存放链的根证书和机构证书。
  • 以IP命名的文件夹下存储该服务器所有节点相关配置、fisco-bcos可执行程序、SDK所需的证书文件。
  • 每个IP文件夹下的node*文件夹下存储节点所需的配置文件。其中config.ini为节点的主配置,conf目录下存储证书文件和群组相关配置。配置文件详情,请参考这里。每个节点中还提供start.shstop.sh脚本,用于启动和停止节点。
  • 每个IP文件夹下的提供start_all.shstop_all.sh两个脚本用于启动和停止所有节点。

使用

群组新增节点

为上一小节生成的群组1新增一个共识节点

接下来的操作,都在上一节生成的nodes/127.0.0.1目录下进行

  1. 获取证书生成脚本
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh
  1. 生成新节点私钥证书
# -c指定机构证书及私钥所在路径
# -o输出到指定文件夹,其中newNode/conf中会存在机构agency新签发的证书和私钥
bash gen_node_cert.sh -c ../cert/agency -o newNode
  1. 准备配置文件

    • 拷贝群组1中节点node0配置文件与工具脚本
    cp node0/config.ini newNode/config.ini
    cp node0/conf/group.1.genesis newNode/conf/group.1.genesis
    cp node0/conf/group.1.ini newNode/conf/group.1.ini
    cp node0/*.sh newNode/
    cp -r node0/scripts newNode/
    

    除了ca.crt,node.crt,nodr.key,nodde.nodeied全部拷贝

    • 更新newNode/config.ini中监听的IP和端口,对于[rpc]模块,修改listen_ipchannel_listen_portjsonrpc_listen_port;对于[p2p]模块,修改listen_port

    • 将新节点的P2P配置中的IP和Port加入原有节点的config.ini中的[p2p]字段。假设新节点IP:Port为127.0.0.1:30304则,修改后的[P2P]配置为

    ```bash
    [p2p]
        listen_ip=0.0.0.0
        listen_port=30304
        ;enable_compress=true
        ; nodes to connect
        node.0=127.0.0.1:30300
        node.1=127.0.0.1:30301
        node.2=127.0.0.1:30302
        node.3=127.0.0.1:30303
        node.4=127.0.0.1:30304
    ```
    
  2. 启动新节点,执行newNode/start.sh

  3. 通过console将新节点加入群组1,2.6版本控制台指令详细介绍参考这里,1.x版本控制台指令详细介绍参考这里nodeID可以通过命令cat newNode/conf/node.nodeid来获取

  4. 检查连接和共识

为机构生成新的SDK证书

  1. 获取证书生成脚本
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_node_cert.sh
  1. 生成新节点私钥证书
# -c指定机构证书及私钥所在路径
# -o输出到指定文件夹,其中newSDK中会存在机构agency新签发的证书和私钥
bash gen_node_cert.sh -c ../cert/agency -o newSDK -s

生成新机构证书

  1. 获取机构证书生成脚本
curl -#LO https://raw.githubusercontent.com/FISCO-BCOS/FISCO-BCOS/master/tools/gen_agency_cert.sh
  1. 生成新机构私钥和证书
# -c 指定链证书及私钥所在路径,目录下必须有ca.crt 和 ca.key, 如果ca.crt是二级CA,则还需要root.crt(根证书)
# -g 指定国密链证书及私钥所在路径,目录下必须有gmca.crt 和 gmca.key,如果gmca.crt是二级CA,则还需要gmroot.crt(根证书)
# -a 新机构的机构名
bash gen_agency_cert.sh -c nodes/cert/ -a newAgencyName

控制台

具体使用与配置可见搭建第一个区块链网络(Fisco联盟链)或者官方文档

  • 交互式客户端工具,通过 Java SDK 与区块链节点建立连接,实现对区块链节点数据的读写访问请求。控制台拥有丰富的命令,包括查询区块链状态、管理区块链节点、部署并调用合约等。此外,控制台提供一个合约编译工具,用户可以方便快捷的将Solidity合约文件编译为Java合约文件。

  • 环境:控制台基于Java SDK 需要安装Java环境

  • 由于控制台是实现对区块链节点数据的读取访问请求,因此在配置中需要选定与其相连的节点,有两步配置

    • cp -n console/conf/config-example.toml console/conf/config.toml官方案例中该步骤就是将样例配置引入使用
    • cp -r nodes/127.0.0.1/sdk/* console/conf/同样还需要配置证书
  • 注意:控制台只是一个方便交互的界面,在启动控制台之前一定要将节点建立连接start_all.sh

其他工具

作为封装的工具在使用的时候直接使用就可以,这里本着不反复造轮子的原则,先介绍使用,再后来具体使用的时候再具体分析

运维部署工具

  • 本工具降低了机构间生成与维护区块链的复杂度,提供了多种常用的部署方式。
  • 本工具考虑了机构间节点安全性需求,所有机构间仅需要共享节点的证书,同时对应节点的私钥由各机构自己维护,不需要向机构外节点透露。
  • 本工具考虑了机构间节点的对等性需求,多机构间可以通过交换数字证书对等安全地部署自己的节点。

联盟链在初始化时,需要协商创世节点中包含的节点信息。因此谁来生成这些信息就显得十分重要。

FISCO BCOS generator从上述背景出发,根据灵活、安全、易用、对等的原则,从不同机构对等部署、新建群组的角度考虑,设计了解决上述问题的解决方案。

数据治理通用组件

  • 数据扩容
  • 链上数据只能通过智能合约接口的方式获取和调用,执行效率低下
  • 缺乏通用的产品和可复用的组件

多方协作治理组件

  • 不难看出私钥、账户、权限和证书管理和使用等方面均存在较高门槛:开发者需要在不同场景重复且繁琐地解决同一个问题,用户在使用过程中容易出现困惑和不顺手,甚至可能因为治理方案不完善给系统带来安全隐患和风险
  • 开源的区块链治理通用组件由私钥管理组件(Governance-Key)、账户治理组件(Governance-Account)、权限治理组件(Governance-Authority)、证书管理组件(Governance-Cert)等组件构成

区块链应用开发组件

从应用开发的视角来看,从智能合约到项目搭建,包含了大量机械而重复的工作,如创建项目、引入依赖、编写配置代码、访问智能合约、编写相关实体类等。相形之下,通过WeBankBlockchain-SmartDev,开发者可以选用应用开发脚手架。脚手架会根据智能合约自动生成项目工程。工程中已经包含了上述逻辑代码,开发者只需基于该工程继续添加业务逻辑代码,聚焦在自身的业务上即可。

总结

整个联盟链的使用有一下几步:

1.使用bash build_chain.sh,命令搭建区块链网络。当然这里涉及不同的拓扑结构,与搭建配置

2.启动节点,查看共识

3.配置相应的控制台,启用控制台

4.使用控制台交互

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

Fisco技术文档总结3---使用工具 的相关文章

  • jquery.webcam进行摄像头拍照

    最近由于项目要进行人像采集 所以就涉及到在web页面调用摄像头 进行拍照来获取图片 可以初来乍到 这技术又不是杠杠滴 所以在面对这有实现想法 但是又没有实现手段的时候 还是按照往常惯例找度娘 这个搜索过程可谓是无比艰辛 由于关键字不准确迟迟

随机推荐

  • WDK李宏毅学习笔记第十八周01_Meta learning-MAML and Gradient descent as LSTM

    Meta learning MAML and Gradient descent as LSTM 文章目录 Meta learning MAML and Gradient descent as LSTM 摘要 1 Meta learning
  • LO Frequency Plan

    概述 LO DIV是位于VCO和mixer之间的模块 其作用是分频和驱动长走线 设计难点在于底噪 不同的band有不同的频率覆盖范围 为了减小VCO的设计难度需要选择合适的分频方案 E UTRA规定的band与频率的对应关系在3GPP或wi
  • GNU/Linux下有多少是GNU的?

    原文地址 http coolshell cn articles 4826 html more 4826 一个葡萄牙的学生写了一篇文章 How much GNU is there in GNU Linux GNU Linux下有多少是GNU的
  • java模拟HTTP请求工具

    import org slf4j Logger import org slf4j LoggerFactory import java io BufferedReader import java io DataOutputStream imp
  • sqli-labs/Less-10

    这一关提示我们使用布尔和时间盲注相结合的做法 我们先去判断一下注入类型 输入1 and 1 2 存在回显 为字符型 输入1 存在回显 而且回显还一模一样 输入1 存在回显 而且回显当然是一摸一样的啦 我怀疑一直都是如此输出 所以根本不能使用
  • j2ee规范认识

    完成了J2EE视频的学习 三个系列的视频感觉走的是那么的艰难 在懵懵懂懂中进行着 在视频进行的时候已经对J2EE以及EJB的大体框架进行笔记记录和框架整理 接下来对在学习过程中的一些关键点进行总结 J2EE是什么 要想知道J2EE是什么就要
  • Open vSwitch流表查找分析

    流表查找过程是Open vSwitch核心中的核心 在此之前 庾志辉写过关于对Open vSwitch 下文简称OVS 源代码分析的系列博客 链接如下 http blog csdn net yuzhihui no1 article deta
  • 【漏洞复现】Microsoft Office MSDT 远程代码执行漏洞 (CVE-2022-30190)

    0x01 Microsoft Office Microsoft Office是由Microsoft 微软 公司开发的一套办公软件套装 常用组件有 Word Excel PowerPoint等 0x02 漏洞简介 该文档使用 Word 远程模
  • 如何连接到虚拟服务器上,虚拟主机如何连接服务器的

    虚拟主机如何连接服务器的 内容精选 换一换 GaussDB DWS 提供的gsql命令行客户端 它的运行环境是Linux操作系统 在使用gsql客户端远程连接GaussDB DWS 集群之前 需要准备一个Linux主机用于安装和运行gsql
  • 你真的知道运维是干嘛的吗?

    文章目录 前言 运维基本能力 运维岗位分类 按照职责划分 按照服务类型划分 按照运维模式划分 按照工作模式划分 按照管理层级划分 按照技术方向划分 按照服务对象划分 按照工作内容划分 按照服务形式划分 按照业务类型划分 按照技术栈划分 按照
  • python selenium页面跳转_Python爬虫之Selenium多窗口切换的实现

    前言 在页面操作过程中有时候点击某个链接会弹出新的窗口 但由于Selenium的所有操作都是在第一个打开的页面进行的 这时就需要主机切换到新打开的窗口上进行操作 WebDriver提供了switch to window 方法 可以实现在不同
  • 如何去实现机械灵巧手玩魔方和弹钢琴_工业级灵巧手与智慧抓取技术

    随着工业机器人的发展以及机器人应用领域的不断扩展 作为末端执行器的机器人夹爪的应用边界也在不断扩展 在工业自动化领域被广泛使用的气动手爪 正在被可精确控制 可数字化管理的新一代末端执行器所替代 编辑 符号整理 Cloud Sunny 机器人
  • “找不到或无法加载主类”该问题出现的一个可能原因

    今天按照教材上的程序 编译运行时 程序编译没有问题 但是运行时 出现 找不到或无法加载主类 的提示 遂网上四处找答案 说什么 1 拼写错误 2 环境变量配置时classpath和path前面未加 下面是我的程序 package myFram
  • vue——echarts柱状图横轴文字太多放不下【处理办法】

    1 如果单纯是文字太多 且中间无法分割开的话 可以采用两种方式 文字倾斜展示 效果 在options配置中的xAxis中配置如下代码 axisLabel interval 0 rotate 40 文字竖直显示 效果 在options配置中的
  • 终于搞定了SHADOWMAP,

    5 5pcf
  • 关于 ChatGPT 必看论文推荐【附论文链接】

    关于 ChatGPT 必看论文推荐 2022年11月 OpenAI推出人工智能聊天原型 ChatGPT 再次赚足眼球 为AI界引发了类似AIGC让艺术家失业的大讨论 ChatGPT 是一种专注于对话生成的语言模型 它能够根据用户的文本输入
  • 情人节用Python画玫瑰花

    用Python turtle 绘制的玫瑰花 效果图 import turtle import time turtle penup turtle setup 1100 1000 turtle hideturtle turtle speed 1
  • tensorRT模型推理时动态shape

    动态shape 所谓动态shape就是编译时指定可动态的范围 L H 推理时可以允许L lt shape lt H 在全卷积网络中我们通常就是有这个诉求的 推理时的shape是可以动态改变的 不一定要限制死 这个动态shape不一定只宽高
  • 有序数组中找到num

    问题 在有序数组中找到num 分析 直接遍历查找均可 但既然是有序数组 则充分利用此条件 采用效率更高的二分法 代码 创建一个随机的有序数组 void Random array int array int num for int i 0 i
  • Fisco技术文档总结3---使用工具

    前言 本文介绍fisco技术文档中的使用工具模块 该模块中将重点介绍开发部署工具和控制台 这都是开发过程中十分常用的 其他的工具是封装的工具 方便开发者使用这里接受一下方便之后使用 开发部署工具 功能 build chain sh脚本用于快