超级账本(介绍)

文章目录

  • 介绍
  • Hyperledger Fabric
  • 模块化
  • 联盟链vs公有链
  • 智能合约
  • 新的方案
  • 隐私与机密
  • 可插拔共识
  • 性能与扩展性
  • 参考

本系列目录:超级账本源码(V1.3)解析目录

介绍

区块链是由分布式网络节点维护的一个不可修改的交易账本,每个节点都维护一个副本,账本中的交易都由共识算法验证后打包成区块的形式,每个区块中包含前一个区块的哈希值,形成链状。

中文 英文
公有链 public blockchain;permissionless blockchain
联盟链 consortium blockchain ;permissioned blockchain

第一个广受认可的区块链应用是比特币(Bitcoin),后来的以太坊(Ethereum)在其基础上引入了智能合约(smart contract),不过比特币和以太坊都属于公链(public permissionless blockchain)。

但是公链对于企业来说,有很多不足,企业可能有如下的需求:

  1. 参与者必须可认证/识别
  2. 区块链网络需要准入权限
  3. 高吞吐量
  4. 低延迟
  5. 某些交易需要保证隐私性与机密性

超级账本(Hyperledger Fabric)诞生之初就是为企业级应用设计的。

Hyperledger Fabric

Fabric是准入型区块链(permissioned blockchain),节点之间拥有一定的信任。

Fabric拥有一个高度模块化、可配置的架构,支持通用语言编写智能合约。

Fabric最大的特点之一是支持可插拔式的共识算法,用户可以根据使用场景配置不同的共识算法(CFT/BFT)。

Fabric不需要加密货币的支持,降低了被攻击的风险,不需要挖矿,降低了能源消耗。

Fabric支持交易的隐私与机密性。

模块化

  1. 可插拔的排序服务(ordering service)对交易顺序建立共识,然后广播区块给其他节点。
  2. 可插拔的成员服务(membership service)为区块链网络中的实体提供密码学身份(证书)。
  3. 可选的gossip协议用来分发区块。
  4. 隔离运行(Docker)的智能合约。
  5. 账本支持多种数据库。
  6. 背书策略和验证策略可以为每个应用单独定制。

工业界有一个共识,“没有区块链适用于所有场景”,Fabric提供了多样化的定制操作使得它可以根据不同场景调整。

联盟链vs公有链

公有链没有准入机制,任何人都可以加入网络,网络成员之间不存在任何信任。比特币和以太坊都使用了PoW来建立共识,需要加密货币/交易费用的激励。

联盟链的成员之间存在一定程度的信任,可以使用传统的CFT、BFT共识算法支持更高的吞吐量。同时更加容易追踪到恶意节点。

智能合约

在Fabric中,智能合约(smart contrat)被称为链码(chaincode),是区块链应用程序的商业逻辑代码。

已有的支持智能合约的平台(Ethereum, Tendermint, Chain, and Quorum.),遵循一种排序–>执行的模式来运行智能合约。即先验证交易并对交易进行排序,然后分发给所有的节点,节点顺序执行这些交易。

这种模式存在的两个问题:

  1. 所有的智能合约必须保证是确定的(deterministic),否则无法达成共识,为了消除不确定性,需要使用特定的编程语言(比如Solidity)。
  2. 节点顺序执行交易,系统无法扩展。

新的方案

Fabric提出了新的交易执行模型,执行–>排序–>验证,解决了上述两个问题。

  1. 执行:执行一个交易,检查正确定性,为其背书
  2. 通过共识算法对交易就行排序
  3. 提交交易到账本之前对其进行验证(背书策略、交易冲突)

由于可以定制背书策略,因此第一步不需要所有的节点都执行该交易,使得Fabric可扩展,同时消除了不确定性(如果该交易存在不确定的操作,那么不同的节点执行的结果不一致,无法进行第二步排序),使得Fabric可以使用通用编程语言编写智能合约。

隐私与机密

在公有链中,合约与交易都公开存储在区块链上,毫无机密与隐私可言,对于企业来说很多场景下无法接受。

可能存在的解决方案:

  1. 加密交易后再存储到区块链上。(但是由于每个人都可以或许到账本,解密也只是时间问题,安全性要求较高的场景可能希望即使密文也不被泄露)
  2. 零知识证明。(需要大量的时间和算力)

Fabric提出了channel架构,只有在同一个channel的节点可以看到该channel内的数据,提高了隐私性。

为了 提高隐私和机密性,Fabric还提出了隐私数据(private data)。

可插拔共识

0.6版本支持PBFT,后来去掉了,目前支持Kafka、raft,BFT在路上…

性能与扩展性

IBM做了测试:https://arxiv.org/abs/1801.10228v1

参考

原文链接: https://hyperledger-fabric.readthedocs.io/en/release-1.3/whatis.html

你可能感兴趣的