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至背书节点)。

Hyperledger Fabric Node SDK和应用开发的更多相关文章

  1. 使用Fabric Node SDK进行Invoke和Query

    前面的文章都是在讲解Fabric网络的搭建和ChainCode的开发,那么在ChainCode开发完毕后,我们就需要使用Fabric SDK做应用程序的开发了.官方虽然提供了Node.JS,Java, ...

  2. Hyperledger Fabric 实战(十): Fabric node SDK 样例 - 投票DAPP

    Fabric node SDK 样例 - 投票DAPP 参考 fabric-samples 下的 fabcar 加以实现 目录结构 . ├── app │ ├── controllers │ │ └─ ...

  3. HyperLedger Fabric 1.4 区块链开发平台(4.1)

    目前区块链开发平台分“公有链平台”和“联盟链系统”两类,“公有链平台”主要以以太坊为主的平台,可以在该类平台上进行代币的发行和根据各种模块搭建应用:“联盟链系统”主要以超级账本为主的开源系统,该类开源 ...

  4. windows 搭建 IBM Hyperledger Fabric(超级账本)开发环境

    一.概述 Hyperledge fabric项目是IBM开源的区块链项目.Github地址:https://github.com/hyperledger/fabric 想对fabric有具体的认识,可 ...

  5. 搭建RESTful API来使用Fabric Node SDK 开篇

    在Balance-Transfer中,有关于Node SDK比较完备的例子. SDK的官方文档在这里:https://fabric-sdk-node.github.io/ Balance-Transf ...

  6. fabric Node SDK进行连接

    yum install gcc-c++ npm install --unsafe-perm --registry=https://registry.npm.taobao.org chmod -R

  7. 搭建基于hyperledger fabric的联盟社区(六) --搭建node.js服务器

    接下来我要做的是用fabric sdk来做出应用程序,代替CLI与整个区块链网络交互.并且实现一个http API,向社区提供一个简单的接口,使社区轻松的与区块链交互. 官方虽然提供了Node.JS, ...

  8. 搭建基于hyperledger fabric的联盟社区(一) --前言

    三个月前上面发了一个关于智群汇聚和问题求解研究的项目,我们公司做其中的一个子项目,就是基于区块链的科技信息联盟构建.利用区块链的去中心化特性,构建一个基于区块链的科技社区,以提供科技群智汇聚采集的基础 ...

  9. Hyperledger Fabric——balance transfer(一)启动示例

    Blacne transfer是Hyperledger fabric Node SDK的一个示例应用,主要使用了SDK中fabric-client 和 fabric-ca-client 模块中的API ...

随机推荐

  1. opencv-7-鼠标绘制自定义图形

    opencv-7-鼠标绘制自定义图形 opencvc++qt 开始之前 昨天写了具体的基本的图形绘制, 然后我们使用相应的函数接口进行调用, 便能够在图像上绘制出来相应的图形, 我们以图像绘制为例, ...

  2. python读取txt批量创建文件

    python读取txt批量创建文件 pythonbatchfile 前几天有个小问题, 需要批量建立很多文件夹,, 所以手动写了个小的脚本, 后续可以直接使用 读取目录文件, 然后直接创建相应的文件 ...

  3. Spring boot 自定义banner

    Spring Boot启动的时候会在命令行生成一个banner,其实这个banner是可以自己修改的,本文将会将会讲解如何修改这个banner. 首先我们需要将banner保存到一个文件中,网上有很多 ...

  4. (转)ATOM介绍和使用

    一,Atom介绍 Atom 是 Github 开源的文本编辑器,这个编辑器完全是使用Web技术构建的(基于Node-Webkit).启动速度快,提供很多常用功能的插件和主题,可以说Atom已经足以胜任 ...

  5. 【Python】在Pycharm中安装爬虫库requests , BeautifulSoup , lxml 的解决方法

    BeautifulSoup在学习Python过程中可能需要用到一些爬虫库 例如:requests BeautifulSoup和lxml库 前面的两个库,用Pychram都可以通过 File--> ...

  6. 与IBM的Lin Sun关于Istio 1.0和微服务的问答

    北京时间 7 月 31 日,Istio 正式发布了 1.0 版本,并表示已经可用于生产环境.该版本的主要新特性包括跨集群 mesh 支持.细粒度流量控制以及在一个 mesh 中增量推出 mutual ...

  7. Java9新特性系列(module&maven&starter)

    上篇已经深入分析了Java9中的模块化,有读者又提到了module与starter是什么关系?本篇将进行分析. 首先先回顾下module与maven/gradle的关系: module与maven/g ...

  8. 编写C#程序的IDE

    编写C#程序,在Windows平台下,除了昂贵的Visual Studio.NET这个正宗的工具外,你还了解哪些? 听说有个Eclipse,IBM投钱开发的开源工具,有人也做了个for .NET的pl ...

  9. BSGS 和扩展

    BSGS BSGS,全称叫 BabyStepGiantStep,也就是大步小步 其实还是比较暴力的 它可以\(O(\sqrt p)\)的复杂度内解出: \[a^x\equiv n\pmod p,\gc ...

  10. 01 微信小程序入门

    一. 小程序介绍 微信小程序是腾讯于2017年1月9日推出的一种不需要下载安装即可在微信平台上使用的应用,主要提供给企业.政府.媒体.其他组织或个人的开发者在微信平台上提供服务. 微信小程序和微信的原 ...