×
新网 > 互联网热点 > 正文

区块链超级账本 Fabric 的构建

  • 作者:zccc
  • 来源:网络
  • 2020-07-16 15:14:57

外汇天眼 APP 讯 : 时至今日区块链技术的应用已被诸多行业熟悉及采用,真正意义上实现了区块链技术对产业的赋能,产业区块链应用也越来越吸引市场的目光,引领着技术发展的新方向

外汇天眼 APP 讯 : 时至今日区块链技术的应用已被诸多行业熟悉及采用,真正意义上实现了区块链技术对产业的赋能,产业区块链应用也越来越吸引市场的目光,引领着技术发展的新方向。从区块链的本质上来讲,可以分为公有链、联盟链以及私有链三种形式,虽然公链的完全去中心化是众所共同期望的,但在公链的环境下运行效率低下,且全网都可接入的公链,账本完全共享,这对很多企业是无法接受的。因此,用于企业与企业之间的联盟链基础平台—— Hyperledger(超级账本)运用而生,接入有了准入限制,并且支持多种商业环境的应用。

本文翻译自行业技术巨头 IBM 研究院 2016 年的一篇研究报告,详尽阐述了区块链 Hyperledger Fabric 如何构建这个问题。IBM 作为行业技术的先行者及实践者,早在区块链超级联盟链概念及生态诞生之初即开展了广泛且深入的探索研究, 即使在今日依然对区块链超级联盟链的课题研究具有深远的指导意义,读者可以从无论技术层面还是思维层面领悟 IBM 研究院对此课题所阐述的含义。

- 概述

区块链是一种分布式系统,其所属的分布系统又被称为 复 制状态机模型 ,即多个节点上从相同的初始状态开始,执行相同的一串命令,产生相同的最终状态。区块链中服务维护着一些状态,而客户端可以调用转换状态和生成输出的操作。区块链通过分布式协议模拟 可信任的 计算服务,该协议是由互联网上连接的节点运行。服务呈现或创建一个资产,其中所有节点都有一些权益相关。节点共享运行服务的共同目标,但不一定相互信任。在 无许可 的区块链中,比如比特币加密货币底层的区块链中,任何人都可以操作一个节点,并通过消耗 CPU 循环参与其中,并演示 工作证明 。另一方面,区块链在 许可 模式控制谁参与验证和协议;这些节点已经建立了明确的身份并组成了一个联盟。Swanson 的一份报告比较了这两种模式。

Hyperledger:超级账本项目 ( www.hyperledger.org ) 是一个合作创建的企业级项目,由开源的分布式账本框架和代码 构成。旨在通过识别和实现跨行业分布式账本开放标准平台,推进区块链技术,改变全球范围内的商业交易方式。Hyperledger 是 Linux 基金会于 2016 年初成立的一个项目,开始不久即有 50 多名成员。

Hyperledger Fabric:Hyperledger Fabric 是一个实现运行智能合约的分布式账本平台,利用熟悉和证明技术,采用模块化架构,允许实施各种可插拔的功能。它是 Hyperledger 项目中正在孵化的多个项目之一。Hyperledger Fabric 的开发者预览版 ( 称为 v0.5 开发者预览版 ) 已于 2016 年 6 月发布。

Fabric 的分布式账本协议是由对节点运行的。这种 Fabric 能区分有两种类型的节点:验证节点是网络上运行共识、验证交易和维护账本的节点。另一方面,非验证节点是作为代理连接客户端 ( 发出交易 ) 和验证 peer 节点。非验证节点不执行交易,但可以验证交易。

当前发布 Fabric 的一些关键特性是:

获批准的有即时确定性的区块链;

运行在 Go ( golang.org ) 中执行的任意的智能合约(称为链码):

- 将用户自定义的链码封装在 Docker 容器中;

- 系统链码与 peer 节点运行相同的进程;

共识协议是可插拔的,目前拜占庭容错共识的实现由 PBFT 协议支持,提供了一个用于寻址不确定性链码的 SIEVE 原型,并且协议存根(命名为 NOOPS)服务于单个节点上的开发;

安全支持通过权威认证(Cas)的 TLS 证书、注册证书和交易证书;

RocksDB ( rocksdb.org ) 支持 Persistent state(持久状态)使用键值存储系统;

支持预定义和自定义事件的事件框架;

与 fabric 接口的客户端 SDK ( Node.js ) 为开发工具包;

支持基础 REST API 和 CLIs。

在开发人员预览版中,对非验证节点的支持是最小的。

架构:验证节点运行 BFT 共识协议来执行状态机可复 制机制接受三种交易操作 : Deploy transaction(部署交易):接受用 Go 编写的链码 ( 表示为智能合同 ) 作为参数;链码安装在对等节点上,并准备随时被调用。Invoke transaction(调用交易):调用之前通过部署交易安装的特定链码的交易;参数是特定于交易类型的;链码执行交易,可以相应地读写其状态中的条目,并指示它是成功还是失败。Query transaction(查询交易):从读取对等节点的持久状态直接返回进入状态项;这有可能不能确保线性化。每个链码都可以定义自己的持久状态,区块链的哈希链是计算执行的交易和结果的持久状态。

通过复 制执行链码和给出潜在的 BFT 共识的错误假设来验证交易,比如,在 n 个验证对等节点中,最多 f < n/3 可以 说谎 并任意执行,但其他正确执行链码。在 PBFT 共识之上执行时,链码交易必须是确定的,否则对等节点的状态可能会发生分歧。有一个模块化的解决方案可以过滤出明显发散的非确定性 交易,并且已经在 SIEVE 协议中实现。运行 BFT 共识的验证节点之间的成员关系目前是静态的需要手动干预。计划在未来的版本中支持动态更改运行共识的节点集。

由于 fabric 实现了一个许可的分类账,因此它包含一个用于身份验证和授权的安全基础设施。通过公钥证书支持注册和交易授权,通过内加密实现链码的机密性。更准确地说,为了连接到网络,每个对等节点都需要从注册 CA 获得注册证书和成员服务的一部分。它授权对等点连接到网络并获得提交交易所需的交易证书。交易证书由交易 CA 颁发,并支持提交交易的对等节点的匿名授权,因为颁发给同一对等节点 ( 即同一注册证书 ) 的多个交易证书不能相互链接。链码和状态的机密性是通过交易和状态的对称密钥加密提供的,使用特定于区块链的密钥对所有具有区块链注册证书的对等方可用。未来版本计划对加密机制进行扩展,使其具有更详细的交易和状态条目的机密性。

- 讨论

区块链的共识协议一直在研究中保持热度,金融科技初创公司 ( 如 tendermint.com, kadena.io ) 也在讨论。Fabric 的设计使用了共识的模块化概念,这与分布式计算中公认的共识概念是一致的。这确保了 fabric 的区块链相关特性可以独立于特定的共识协议进行开发。PBFT 协议是已经在 fabric 中实现的第一个共识协议,这是由于其显著突出在:它受益于近 20 年系统性研究拜占庭共识的经验,密切相关知名 Viewstamped Replication 和 Paxos 之类的协议,分析了在许多环境中的使用和教科书中的描述。

- 结论

Hyperledger Fabric 是一个用于商业用途的区块链平台。它是开源的并且基于标准,能够运行用户自定义的智能合约,支持强大的安全和身份特征,使用模块化架构和可插拔的共识协议。

  • 相关专题

免责声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,也不承认相关法律责任。如果您发现本社区中有涉嫌抄袭的内容,请发送邮件至:operations@xinnet.com进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

免费咨询获取折扣

Loading