网易乐得技术团队

Hyperledger超级账本介绍

Hyperledger

image

什么是Hyperledger

  • Hyperledger是Linux基金会于2015年12月发起的一个企业级的开源分布式账本框架。项目旨在共同建立一个开放的区块链技术开源标准,推进跨行业区块链技术。它是一个全球跨行业领导的合作项目,包括金融、银行、物联网、供应链、制造和技术领域。
  • 遵循Apache v2 License开源协议,对商业应用友好。

Hyperledger组织结构

  • 项目组织架构参考下图所示,主要设立技术指导委员会(下设各区域工作组)、董事会、以及Linux基金会成员。
    image
  • 中国技术工作组(TWG China)成立于2016.12.1,目前主要的管理成员如下图所示:
    image

Hyperledger参与成员

  • 成员包含核心会员、普通会员、准会员,准会员中包含高校学术领域成员,目前共计超200家成员。
  • 目前核心成员共包含18家,包含IBM、Intel、埃森哲、思科、富士通、日立、万达、SAP、百度金融等。
    image

    开放的沟通交流

  • Hyperledger使用Rocket chat 作为团队合作聊天工具,每个人都可以自由的加入各个不同的项目组发起讨论。
    image

  • 这里有列出各子项目公开的邮件列表:Mail list

  • 这里可以查看到有关项目公开的会议安排Meetings

Hyperledger主要项目

  • Hyperledger Fabric

    • 作为Hyperledger的一个主要项目,知名度也最高,这个项目于2015年12月开源
    • 最初由IBM 和 DAH(Digital Asset Holdings,由高盛、IBM、荷兰银行、埃森哲、 澳洲证券交易所、法国巴黎银行、Broadridge的金融解决方案、花旗银行、 CME Ventures、德意志交易所集团、 ICAP、桑坦德风投、证券托管清算公司(DTCC)、PNC金融服务集团投资) 贡献提交
    • 实现语言:Golang
  • Hyperledger Sawtooth

    • Hyperledger Sawtooth是一个模块化的平台,用于构建、部署和运行分布式的账本。分布式账本提供了一个数字记录(例如资产所有权),它在没有中央授权或实现的情况下进行维护。
    • 2016年4月开源,由Intel贡献提交
    • 实现语言:Python
    • 主要特征:
      • PoET(Proof of Elapsed Time) 共识 (通过乐透的方式选择出一个leader,由leader产生块添加到账本中)
      • Transaction Families (确保智能合约的安全性)
      • 弹性扩展
  • Hyperledger Iroha

    • Hyperledger Iroha是一个区块链平台实现,属于一个轻量级的分布式账本。
    • 2016年10月开源,由Soramitsu(日本区块链初创公司) 和 Hitachi(日立)两家公司贡献提交
    • 实现语言:C++
    • 主要特征:
      • C++的运行环境
      • 对移动和Web应用的支持
      • Sumeragi共识(对拜占庭容错共识算法的改进)
  • Hyperledger Blockchain Explorer

    • Explorer设计用于创建用户友好的Web应用程序,可以查看、调用、部署或查询区块、事务和相关数据、网络信息(名称、状态、节点列表)、链码和事务链,以及存储在账本中的任何其他相关信息。
    • 2016年8月开源,由IBM、Intel、DTCC(美国存管信托和结算公司)贡献提交
    • 实现语言:Node.js
  • Hyperledger Cello

    • Cello是一个区块链模块工具包,旨在将随需应变的“as-a-service”部署模型引入区块链生态系统,以减少创建、管理和终止区块链所需的工作量。它在各种基础设施(如虚拟机和更多的容器平台)上高效地、自动地提供多租户链服务,即区块链即服务(Blockchain as a Service)。
    • 2017年1月开源,由IBM贡献提交
    • 实现语言:Python,javaScript实现
    • 支持多种基础架构
    • 高性能,弹性以及插件化
      image
  • Hyperledger Burrow

    • 来源于以太坊框架的项目,基于以太坊EVM的智能合约执行引擎
    • 最初是由Monax贡献的,由Intel共同赞助
    • 主要模块:
      • 共识引擎
      • 应用程序区块链接口(Application Blockchain Interface)
      • 智能合约应用
      • 可信的以太坊虚拟机
      • 应用程序二进制接口
      • API网关
    • proof-of-stake Tendermint 共识
    • 实现语言:Golang
  • Hyperledger Composer

    • 是一组用于构建区块链业务网络的协作工具,它使业务所有者和开发人员能够简单快速地创建智能契约和区块链应用程序来解决业务问题。
    • 旨在简化和加快Hyperledger fabric 区块链应用的创建。
    • 面向企业的区块链解决方案。企业区块链应用可以通过在业务网络内共享的资产、参与者,以及事务来描述,通过对业务网络进行建模,将现有系统和数据与区块链应用程序集成。
    • 实现语言:JavaScript
  • Hyperledger Fabric SDK

    • fabric-sdk-node
    • fabric-sdk-py
    • fabric-sdk-java
    • fabric-sdk-go

Hyperledger Fabric V1.0架构

  • 最新版本
    -目前最新发行版本为1.1.0-alpha (2018年1月25日发布)
  • 逻辑架构
    • 1.0版本和之前0.6版本相比,架构上做了比较大的改动,通过模块化的拆分使得相关功能组件的职责更加清晰,扩展性也得到了提高。架构参考如下图所示,主要包含如下几个部分:
    • 身份验证(identity)
      • 提供可插拔的方式实现成员管理,负责会员注册,身份保护,内容保密,交易审计功能,以保证平台访问的安全性。
    • 账本服务
      • 分布式账本的管理,账本数据的更新由共识服务(包括账本的分布式计算与存储、排序服务、网络协议、背书验证等)来完成。
    • 智能合约
      • 可编程的账本,提供在区块链上运行业务逻辑的能力。
    • APIs,事件以及SDKs
      • 事件流贯穿于其他各个组件中间,为各个组件中的异步通信提供了技术实现。
      • 多语言实现的原生SDK,帮助DLT app的开发。
        image
  • 网络架构
    • 网络架构如下图所示,和0.6版本相比,网络中的节点类型分为了orderer节点、endorser节点、committer节点 。
      image
  • 运行时架构
    • 主要的事务执行流程如下图所示,首先应用程序通过SDK需要先把用户信息注册到区块链网络中(主要通过fabric-ca模块实现)
    • 注册并登录成功后,向背书节点发起一个事务请求,背书节点执行Chaincode,得到模拟的结果,但不将结果执行提交到本地账本,只是将结果返回给应用
    • 应用得到正确的背书请求结果后,则提交对应的处理结果给排序节点,排序节点并不关心交易数据具体是什么,负责对所有的交易进行一个排序并生成对应的区块
    • 排序节点处理完成后,会将生成的区块进行广播分发,提交节点则负责对提交的区块进行验证,验证通过后则写入账本,同一个物理节点可同时充当背书节点和提交节点的角色。
      image

image
image

Fabric核心概念

  • channel

    • 通道是构建在我们构建的区块链网络上的私有区块链,通过一种数据隔离机制来控制交易的可见性,保证只对交易干系人可见,也就是说在我们构建的区块链网络上允许有多个通道的实现。
    • 共识机制只针对同一个通道内的成员有效,一般一个通道单独维护一份账本
    • 多通道并存示例如下所示


      image
  • chaincode?

    • chaincode也称之为链码,是智能合约的实现方式。
    • 部署在Fabric区块链的网络节点上,是上层应用与区块链交互的唯一渠道
    • 生成Transaction的唯一来源 Transactions -> Blocks -> Ledger
    • 实现语言主要是Go,也支持Java语言的实现,不过目前还不太完善。关键需要实现chaincode接口中定义的方法,如下图所示。
      image
    • 一个chaincode可以被部署到多个通道上,每个实例都是独立的
    • 一个chaincode原则上可以通过ACL查询其他通道上的chaincode
    • 节点内事务流向如下图所示,每个Chaincode在部署时,都需要和背书(ESCC)、验证(VSCC)的系统Chaincode关联。ESCC指定proposal(请求)的背书策略,VSCC则负责对事务的有效性进行验证(包括背书的正确性)
      image
  • Orderer
    • 由一组节点组成并运行排序服务,提供原子广播
    • 排序服务是网络的一个重要部分,负责接受事务请求以及创建分发区块以及整个网络的相关配置
    • 它面向的客户端就是其他网络节点和应用客户端
    • 提供可插拔的共识机制(SOLO/Kafka/PBFT)
  • Peer

    • 是网络中维护账本状态和管理Chaincodes的组成部分
    • 从职责来看,可划分为背书节点(Endorser)和提交节点(Committer)
    • 节点间形成对等的 gossip(遵循该协议)网络
  • Ledger

    • 每个通道中会维护一个单独的交易数据账本,如下图所示,账本主要包含交易的日志信息和具体的交易数据。
    • 具体的交易数据由一个状态数据库来进行存储,默认采用goLevelDB实现,目前可替换为CouchDB的实现。
      image
  • Membership Service Provider

    • MSP是指为client和peer提供证书的系统抽象组件
    • 管理应用、背书节点、排序节点的身份识别


      image
  • Fabric-CA

    • 实现MSP的接口,默认的证书管理组件,它向网络成员及其用户颁发基于PKI的证书。CA为每个成员颁发一个根证书(rootCert),为每个授权用户颁发一个注册证书(eCert),为每个注册证书颁发大量交易证书(tCerts)
    • 支持高可用集群
    • 支持LDAP用户身份验证
    • 支持HSM(硬件安全模组)


      image

参考资料&更多信息