Fabric学习&应用记 录

 

Hyperledger Fabric一个开放源码的企业级许可分布式账本技术平台

HyperLedge Fabric

Fabric Analysis

Hyperledger Fabric一个开放源码的企业级许可分布式账本技术平台

DLT 分布式账本技术

特点:

  • 高度模块化
  • 可配置
  • 支持通用编程语言
  • 经过许可
  • 可插入共识协议
  • 不需要本机加密货币
  • 隐私和机密性

模块化

在较高的层次上,Fabric由以下模块化组件组成:

  • 可插拔的订购服务在交易顺序上达成共识,然后将区块广播给同级。
  • 可插拔成员资格服务提供商负责将网络中的实体与加密身份相关联。
  • 可选的对等八卦服务通过向其他对等点订购服务来分发输出的块。
  • 智能合约(“链码”)在容器环境(例如Docker)中运行以进行隔离。它们可以用标准编程语言编写,但不能直接访问分类帐状态。
  • 账本可以配置为支持各种DBMS

可插拔的认可和验证策略实施,可以针对每个应用程序进行独立配置。业界有一个公平的共识,那就是没有“一个区块链可以全部统治”。

许可与无许可的区块链

在未经许可的区块链中,几乎任何人都可以参与,每个参与者都是匿名的。在这种情况下,除了区块链在一定深度之前的状态是不可变的之外,别无其他信任。
为了减轻这种信任的缺乏,无许可的区块链通常采用“开采”的本机加密货币或交易费用来提供经济激励,以抵消基于“工作证明”(拜占庭式)的拜占庭容错共识形式参与的特殊费用。

获得许可的区块链在一组已知,已识别且经常经过审核的参与者(在产生一定程度的信任的治理模型下运行)中操作区块链。
许可的区块链提供了一种方法来保护一组具有共同目标但可能不会完全相互信任的实体之间的交互。
通过依赖参与者的身份,获得许可的区块链可以使用更传统的崩溃容错(CFT)或拜占庭容错(BFT)共识协议,而无需昂贵的挖掘工作。

另外,在这种许可的情况下,参与者通过智能合约有意引入恶意代码的风险得以降低。
首先,参与者是彼此了解的,并且遵循针对网络和相关交易类型建立的认可策略,所有活动(无论是提交应用程序交易,修改网络配置还是部署智能合约)都记录在区块链上。
除了完全匿名之外,还可以根据治理模型的条款轻松地确定有罪的一方并处理事件。

智能合约

智能合约或Fabric称之为“链码”的功能,是一种受信任的分布式应用程序,可从区块链和对等方之间的潜在共识中获得安全性/信任。
这是区块链应用程序的业务逻辑。

适用于智能合约的三个要点,尤其是应用于平台时:

  • 网络中同时运行许多智能合约
  • 它们可以动态部署(在许多情况下,任何人都可以)
  • 应用程序代码应被视为不受信任,甚至可能是恶意的

现有的大多数具有智能合约功能的区块链平台都遵循一种 订单执行架构,其中共识协议为:

  • 验证并订购交易,然后将其传播到所有对等节点
  • 然后,每个对等方依次执行事务。

订单执行架构可以在几乎所有现有的区块链系统中找到,从以太坊等公共/非许可平台 (基于PoW的共识)到Tendermint, Chain和Quorum等许可平台。

在以订单执行架构运行的区块链中执行的智能合约必须具有确定性。否则,可能永远无法达成共识。为了解决非确定性问题,许多平台要求以非标准的或领域特定的语言(例如Solidity)编写智能合约,以便可以消除非确定性操作。
这阻碍了广泛采用,因为它要求开发人员编写智能合约来学习一种新语言,并可能导致编程错误。

此外,由于所有事务均由所有节点顺序执行,因此性能和规模受到限制。智能合约代码在系统中的每个节点上执行的事实要求采取复杂的措施来保护整个系统免受潜在的恶意合约的侵害,以确保整个系统的弹性。

事务流架构——一种新方法

Fabric为事务引入了一种新的架构,我们称之为 execute-order-validate。
它通过将事务流分为三个步骤来解决订单执行模型所面临的弹性,灵活性,可伸缩性,性能和机密性挑战:

  • 执行交易并检查其正确性,从而认可该交易
  • 通过(可插入)共识协议订购交易
  • 在将交易提交到分类账之前,根据特定于应用程序的背书策略验证交易

该设计与订单执行范式完全不同,Fabric在达成交易最终协议之前执行交易。

在Fabric中,特定于应用程序的认可策略指定需要哪些对等节点或其中的对等节点保证给定智能合约的正确执行。
因此,每个交易只需要由满足交易认可策略所必需的对等节点的子集执行(认可)。

这允许并行执行,从而提高了系统的整体性能和规模。第一阶段还消除了任何不确定性,因为不一致的结果可以在订购前滤除。

因为我们消除了不确定性,所以Fabric是第一个启用标准编程语言使用的区块链技术。

隐私与保密

正如我们已经讨论的那样,在一个利用PoW作为共识模型的公共、无许可的区块链网络中,交易在每个节点上执行。
这意味着合同本身或所处理的交易数据都不会保密。每个事务及其实现的代码对于网络中的每个节点都是可见的。在这种情况下,我们已将合同和数据的机密性交换为PoW提供的拜占庭容错共识。

对于许多业务/企业用例而言,缺乏机密性可能会成为问题。例如,在供应链合作伙伴网络中,可能会为某些消费者提供优惠价格,以巩固关系或促进额外销售。如果每个参与者都能看到每份合同和交易,那么就不可能在完全透明的网络中维持这样的业务关系-每个人都希望获得首选价格!

再举一个例子,考虑证券行业,在该行业中,建立仓位(或出售仓位)的交易者不希望竞争对手知道这一点,否则他们将寻求介入游戏,削弱了交易者的竞争能力。

为了解决出于满足企业用例需求的目的而缺乏隐私和机密性的问题,区块链平台采用了多种方法。所有人都有其取舍。

加密数据是提供机密性的一种方法。但是,在利用PoW达成共识的无许可网络中,加密数据位于每个节点上。如果有足够的时间和计算资源,则可能会破坏加密。对于许多企业用例而言,其信息可能遭到破坏的风险是无法接受的。

零知识证明(ZKP)是解决该问题的另一研究领域,这里的权衡是,目前计算ZKP需要大量时间和计算资源。因此,在这种情况下的权衡是为了保密。

在可以利用替代形式的共识的许可上下文中,人们可能会探索将机密信息仅分配给授权节点的方法。

Hyperledger Fabric是允许的平台,它通过其通道体系结构和私有数据功能来实现机密性。在渠道中,Fabric网络上的参与者建立了一个子网,每个成员都可以查看特定的一组交易。因此,只有那些参与频道的节点才能访问智能合约(链码)和交易的数据,从而保留了两者的隐私和机密性。
私有数据允许在通道上的成员之间进行收集,从而在不增加创建和维护单独通道的维护开销的情况下,提供与通道相同的保护。

可插拔共识

交易的顺序被委托给模块化组件以达成共识,该组件在逻辑上与执行交易并维护分类账的对等方分离。具体来说就是订购服务。
由于共识是模块化的,因此可以根据特定部署或解决方案的信任假设量身定制其实现。这种模块化架构允许平台依赖完善的工具包来进行CFT(崩溃容错)或BFT(拜占庭容错)排序。

fabric目前提供基于A CFT订购服务实现etcd库中的筏协议。有关当前可用订购服务的信息,请查看有关订购的概念性文档。

还要注意,它们不是互斥的。Fabric网络可以具有支持不同应用程序或应用程序需求的多种订购服务。

性能和可伸缩性

区块链平台的性能可能会受到许多变量的影响,例如交易规模,区块规模,网络规模以及硬件限制等。Hyperledger Fabric Performance and Scale工作组 目前在称为Hyperledger Caliper的基准测试框架上工作。

已经发表了几篇研究和测试Hyperledger Fabric性能的研究论文。最新的Fabric可扩展到每秒20,000个事务。

资源参考和下载

论文

以太坊

嫩薄荷

Solidity

etcd

FastFabric:将Hyperledger Fabric扩展到每秒2w个事务

docker-compose

https://learnblockchain.cn/article/590

https://github.com/hyperledger/fabric-samples

https://learnblockchain.cn/article/581

###

error:GO版本问题

> make all
ERROR: 1.13.4 is required to build Fabric and you are using 1.13. Please update go.
make: *** [check-go-version] Error 2

原因:go版本问题,需要更新go

error:GO的代理问题

export GO111MODULE=on
export GOPROXY=https://goproxy.io

IBM Cloud & Kubernetes API

##

环境

  • git

  • curl

  • docker 和 docker compose

查看docker版本:

> docker --version

Docker version 18.09.2, build 6247962

查看docker compose的版本

> docker-compose --version
docker-compose version 1.23.2, build 1110ad01

docker 和 k8s :https://zhuanlan.zhihu.com/p/53260098

字数:3903     

赞助我

一饮一啄 / 皆为因果
WeChat 微信
Alipay 支付宝

评论区