• Hyperledger Fabric Node SDK和应用开发


    Hyperledger Fabric 提供了多种语言的SDK版本,其中提出比较早、比较稳定而全面的是Node.js版本的SDK。

    前面提到的fabric示例(如first-network和e2e-cli)都只是在单机上的简单测试,启动一个cli命令行容器来与网络成员节点进行交互,通过在cli容器中手动输入命令完成一系列操作。

    而在实际开发中,fabric区块链应用应该拥有一个完整的应用程序来处理前端发起的请求,调用SDK与各节点进行交互,最终利用fabric底层特性将数据存入区块链中。

    应用模型

    在这里插入图片描述

    Fabric应用可以分为三层,App层,SDK层,Fabric底层。开发人员需要开发的包括app应用和链码chaincode。应用程序一般运行于客户端节点上,负责处理请求并调用相应SDK与Peer节点,Orderer节点,CA节点进行通信。chiancode负责业务逻辑的执行,从账本查询数据或更新数据到账本。

    Fabric Node SDK主要功能

    SDK for Node.js有三个最顶层(top-level)的模块:API, fabric-clientfabric-ca-client。具体细节见官方文档源码

    1. API

    该模块给开发者提供了可插拔API,以提供SDK主要接口的可替换实现,包括CryptoSuite, key, KeyValueStore。每个接口都有内置的默认实现。

    2. fabric-client

    该模块提供了用户客户端与Fabric区块链网络组件(peer,orderer,event等)的交互。主要功能有:

    • 创建channel
    • 发送信息使peer节点加入channel
    • 在peer中安装(install)chaincode
    • 在channel上实例化 chaincode,分为两步:提案( propose )和交易(transact)
    • 提交(submit)一个交易(需要调用chaincode),和上面一样分为两步
    • 多种查询功能:状态(通过chaincode),交易,区块,channel,chaincode
    • 监控事件(monitoring events):包括peer,block,transactions,custom的events
    • 有签名能力的用户对象( User object)的序列化(serializable)
    • 配置信息的分层(hierarchical configuration settings)
    • 还提供可插拔(pluggable)的日志工具(logging utility)、加密工具(CryptoSuite)和状态存储方法(State Store),可以支持与 peer 或 orderer 的 TLS / non-TLS 链接

    3. fabric-ca-client

    该模块主要用于成员资格的管理,主要功能如下:

    • 注册(register )新用户
    • 登录(enroll)用户并且获得由Fabric CA签名(CA私钥完成)的登录证书(enrollment certificate)
    • 通过登录id(enrollment id)来注销 (revoke) 一个用户
    • 可定制的(customizable)持久储存(persistence store)

    Fabric Node SDK具体接口

    Node SDK主要的模块及其中重要的方法如下:
    1.Client

    • getUserContext() / setUserContext():从本地读取/写入用户信息
    • 创建其他各种类的示例

    2.CAClient

    • register():登记
    • enroll():注册

    3.Channel

    • sendTransactionProposal():发送提案
    • sendTransaction():发送交易
    • queryByChaincode():调用链码查询
    • 各种与区块、交易有关的查询功能

    4.Peer

    • sendProposal():发送交易提案到Peer节点

    5.Orderer

    • sendBrodcast():发送数据到Ordere节点
    • sendDeliver():从Orderer节点获取数据

    补充: SDKChaincode的关系:

    • SDK存在于客户端层面,主要用于与网络中各组件的交互,包括peer,orderer,event,channel,chaincode,提供丰富的API便于开发者编写应用程序。
    • Chaincode处于更底层,提供Query,Invoke,Delete等API直接对状态数据库(world state)进行读写操作。
    • SDK中的方法可以对区块及其中中的交易、通道、链码等各种信息进行查询,但是涉及状态的读写则必须通过Chaincode来完成(通过发送Proposal至背书节点)。
  • 相关阅读:
    [传智播客学习日记]写在培训即将过半之前
    [传智播客学习日记]SQL语句一例通之二——查询、存储过程
    [传智播客学习日记]分页查询的存储过程
    [传智播客学习日记]保持HTTP状态的方法
    [传智播客学习日记]正则提取网页信息并写入文件
    激情黄健翔
    maxthon 2 预览版的邀请
    Head first design patterns 读书笔记 – Strategy(策略模式)
    如何在ReadOnly的DataGrid中的让CheckBox列可点击
    每天如何自动编译项目并将之打包添加到VSS中
  • 原文地址:https://www.cnblogs.com/zhayujie/p/12941560.html
Copyright © 2020-2023  润新知