Link

区块链

目录

  1. 区块链
    1. 概念
  2. Hyperledger Fabric是什么?
    1. 共享账本
    2. 智能合约
    3. 隐私
    4. 共识
  3. 搭建

概念

区块链是一个“共享的不可修改的分布式账本(ledger)”

区块链网络的核心是一个分布式的账本,记录网络中发生的所有交易(transaction,又称事务)。区块链账本有两个关键词:“去中心化”、“协同”。其中去中心化代表账本会保存在区块链网络中的多个节点中,各个节点独立运作,然后协同组成区块链网络。

区块链也有一个特性,只能附加内容,这个特点使得一旦交易被写入网络中,便是永恒的,无法被改变。

智能合约

为了实现一致性的信息更新以及其他的账本功能(例如交易记录、查询等),区块链网络使用智能合约来提供到账本的受控访问权限。

智能合约不仅能用于封装信息,使其方便在网络中传播,也可以被设置成允许参与者自动执行交易。

例如,智能合同可以规定货物的运输成本,而运输成本取决于货物到达的速度。在一开始双方协商好条款然后将其写入账本,当货物最终收到时,对应的费用会自动进行转账。

共识

保持网络中所有账本交易的同步流程,就是共识。共识保证了账本只会在交易双方都确认后才进行更新。同时在账本更新时,交易双方能够在账本中的相同位置,更新一个相同的交易信息。

Hyperledger Fabric是什么?

2015年,Linux基金会启动了Hyperledger项目,目标是发展跨行业的区块链技术。Hyperledger项目并不仅仅是定义一个单一的区块链标准,它更鼓励通过开源社区的力量协作开发区块链技术。

Hyperledger Fabric是Hyperledger中的一个区块链项目。与其他区块链技术类似,Hyperledger Fabric包含一个账本,使用智能合约并且是一个通过所有参与者管理交易的系统。

Hyperledger Fabric与其他区块链系统最大的不同体现在私有许可。与开放无需许可的网络系统允许未知身份的参与者加入网络不同(需要通过工作量证明协议来保证交易有效并维护网络的安全),Hyperledger Fabric通过Membership Service Provider(MSP)来登记所有的成员。

Hyperledger Fabric也提供了多个可拔插选项。账本数据可被存储为多种格式,共识机制可被接入或者断开,同时支持多种不同的MSP。

Hyperledger Fabric提供了建立channel的功能,这允许参与者为交易新建一个单独的账本。当网络中的一些参与者是竞争对手时,这个功能变得尤为重要。因为这些参与者并不希望所有的交易信息——比如提供给部分客户的特定价格信息——都对网络中所有参与者公开。只有在同一个channel中的参与者,才会拥有该channel中的账本,而其他不在此channel中的参与者则看不到这个账本。

共享账本

Hyperledger Fabric包含一个账本子系统,这个子系统包含两个组件:世界状态(world state)交易记录。在Hyperledger Fabric网络中的每一个参与者都拥有一个账本的副本。

世界状态组件描述了账本在特定时间点的状态,它是账本的数据库。交易记录组件记录了产生世界状态当前值的所有交易,它是世界状态的更新历史。那么,账本则是世界状态数据库和交易历史记录的集合。

账本的世界状态存储数据库是可更换的。默认配置下,这是一个key-value存储数据库。交易记录模块不需要被接入。只需要记录在区块链网络中账本数据库被使用时之前和之后的值就可以了。

智能合约

Hyperledger Fabric智能合约被称为chaincode,当一个区块链外部的一个应用程序需要访问账本时,就会调用chaincode。大多数情况下,chaincode只会访问账本的数据库组件和世界状态(world state)(比如查询),但不会查询交易记录。

chaincode可通过多种不同编程语言实现。目前支持chaincode的语言是Go(包含对java的支持),更多的编程语言会在今后的版本中获得支持。

隐私

根据网络的需求,在一个Business-to-Business(B2B)网络中的参与者会对信息共享的程度极为敏感。然而,对于其他的网络,隐私并不是首要考虑的因素。

Hyperledger Fabric支持构建隐私保护严格的网络,也支持构建相对开放的网络。

共识

在网络中,不同的参与者写入的交易必须按照产生顺序依次被写入账本中。要实现这一目标,交易顺序必须被正确的建立并且必须包含拒绝错误(或者恶意)插入账本中的无效交易的方法。

这完全是计算机科学的研究领域,可以有多种方法实现上面提到的目标,这些方法各有优缺点。例如,PBFT (Practical Byzantine Fault Tolerance)可以为文件副本提供一种机制来相互通信,即使是在发生腐败的情况下,也可以保证每个副本保持一致。另外,在比特币中,通过一种称为挖矿的行为进行排序。在挖矿过程中,竞争的计算机竞相解决一个密码难题,这个谜题定义了所有后续的构建顺序。

Hyperledger Fabric被设计为允许网络构建者依据业务需求来选择采用的共识机制。好比考虑隐私性,就会有一连串的需求,从高度结构化的网络或是更加点对点的网络。

更多的Hyperledger Fabric共识机制会在另一份文档中详细描述,这些共识机制目前包含SOLO,Kafka以及后续会添加的SBFT (Simplified Byzantine Fault Tolerance)。

https://hyperledgercn.github.io/hyperledgerDocs/blockchain_zh/


搭建

MSP:Membership Service Provider