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

Posted Cookieer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fisco技术文档总结3---使用工具相关的知识,希望对你有一定的参考价值。

前言

本文介绍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.使用控制台交互

以上是关于Fisco技术文档总结3---使用工具的主要内容,如果未能解决你的问题,请参考以下文章

区块链入门教程--FISCO BCOS单机四节点联盟链安装

FISCO BCOS——SmartDev-Contract——Traceability商品溯源合约案例分析

FISCO BCOS——SmartDev-Contract——Traceability商品溯源合约案例分析

FISCO BCOS——SmartDev-Contract——Traceability商品溯源合约案例分析

FISCO BCOS——SmartDev-Contract——Traceability商品溯源合约案例分析

FISCO BCOS java sdk 组装交易的代码位置