以太坊创办人Vitalik Buterin在开发区块链面临技术上的挑战,因此他提出了区块链三大不可能(Blockchain Trilemma),即是去中心化、可扩充性和安全性。因此工程师在开发区块链服务的时候,经常被迫要做出技术上取舍。

区块链三大不可能

区块链的一切都是由去中心化的比特币开始的,透过工作量证明(Proof of work)它公开透明、全民公开竞争挖矿的奖励。因此比特币的安全性毋庸置疑,但是去中心化的机制是优点也是缺点,如果要提升区块链的扩充性需要更快的验证机制,那表示取代工作量证明(Proof of Work)的可能是权益证明(Proof of Stake),这将会牺牲去中心化和安全性的特性。因此许多人就想到,也许不需要全民挖矿,只要维持区块链的资料不可篡改、可追溯特性、透过较少的节点达成局部去中心化,因此私有链(Private Blockchain)和联盟链(Consortium Blockchain)就诞生了。

什么是私有链和联盟链

私有链(Private Blockchain)

私有链是组织私有的区块链,表示写入权限仅限于在一个组织管理的区块链。该组织可以调整读取权限是否对外开放,因此权限是受到限制的。而市面上有几家开发私有链的平台,例如Ripple、R3's Corda和Hyperledger Fabric,并且在金融、供应链、医疗、房地产、政府机构、零售、保险等产业将有大量的应用。这类区块链被认为是「部分去中心化」。

特点:交易速度快,保护企业隐私,交易成本极低;仍保有不可篡改性。 缺点:由于完全由单一组织操作的特性,私有链的代币(若有发行的话)价格是可以被操作的,代码也是可以修改的,集中风险较大。

在近年因为企业对区块链的探索与需求,发展出了联盟链(Consortium Blockchain),保有私有链的隐私性,又能维​​持多节点共识治理的特性。

联盟链(Consortium Blockchain)

联盟链适合在机构之间进行交易等B2B 的使用情境。例如在银行间进行支付、结算、清算的系统就可以采用联盟链的形式,将各家银行的网关节点作为记帐节点。

通常情况下,权限以外的机构可以查询,但是不可交易;联盟链或许允许每个人都可读取,尤其该区块的Root Hash 及其API 对外公开,​​外界可用API来作有限次数的查询和获取区块链状态的资讯。这些区块链可视为「部分去中心化」。

联盟链与私链类似,其开放程度和去中心化程度是有所限制的,其读写权、记帐权由组织决定。但与私有链最大的不同在于,联盟链是为一个联盟例如银行而服务;而私链则是为一个组织,比如一家公司内部服务。

联盟链介绍— 以Hyperledger为例

Hyperledger(超级帐本)是一个旨在推动区块链跨行业应用的开源项目,由Linux基金会在2015年12月主导发起该项目,成员包括金融,银行,物联网,供应链,制造和科技业。而Hyperledger项目中有5个子项目,其中,Fabric是当中最有名的一个,因此,大家常说的Hyperledger(超级账本),实质上指的就是Fabric。

基本上各领域世界知名的企业或区块链新创公司都是Hyperledger的成员之一:

区块链新创:ConsenSys,Digital Asset,R3, Onchain 知名科技公司:Cisco,Fujitsu,Hitachi,IBM,Intel,NEC,NTT DATA,Red Hat,VMware) 知名金融企业:ABN AMRO,ANZ Bank,BNY Mellon,CLS Group,CME Group, theDepository Trust & Clearing Corporation(DTCC)

Linux基金会的超级账本项目,希望创建一个软体开发人员和公司社区会面和协调的环境,以构建区块链框架。它是一个基础设施,通常采用Hyperledger进行联盟或私有链开发的相关项目,都是无币的、产业级的应用。

HyperLedger Fabric是什么

Linux基金会在2015年创立了HyperLedger Fabric是一个许可制(Permissioned)的区块链架构(blockchain infrastructure)。其由IBM和Digital Asset最初贡献给Hyperledger项目,主要为采用模块化架构的区块链应用及解决方案提供开发基础,追求模块化(Modular)、扩展化(Scalable)、安全化(Secure)。

Hyperledger Fabric 可以令共识机制(Consensus)、会员服务(Membership Services)等「组件」可被即插即用(Plug-and-Play)智能合约执行(在Fabric中称为“Chaincode”)

Hyperledger Fabric 观念和名词解释

资产(Assets)- 能够在网络上交换几乎所有具有货币价值的东西,就好像现实生活中的食品、古董车、货币期货一样。 Chaincode —即可理解成智能合约,它的执行与事务排序是分开的,它能够控制不同节点类型的所需信任级别和验证级别,并保障了网络可伸缩性和性能。 账本功能(Ledger Features)- 这种不可修改的、分布式的账本编码了所有的频道(channel)的历史交易记录,并且还包含了类似SQL 查询功能,来帮助管理员高效的过滤数据和事实证明。同时,一个状态数据库维护账本当前状态(Current State),因此也被叫做世界状态(World state database)。 私密频道(Privacy through Channels)- 如果存在商业竞争以及监管的行业在通用的区块链网络上运行的话,就使得网络必须提供具有高度隐私和机密性的多边交易,Channel 就是为此而生。 安全& 会员服务(Security & Membership Services)- 会员授权系统提供了一个可信任的区块链网络,参与者知道所有的交易都可以被授权的监管机构和审计师检测和追踪。 共识(Consensus)- 在整个网络中保持总账交易同步的过程— 确保总账仅在交易获得适当参与者批准时才更新,并且当总账确实更新时,他们以相同的顺序更新相同的交易

Hyperledger Fabric运作方法

在解释Hyperledger Fabric 运作流程以前,我们先来解释交易中几个重要的元素,「Application」、「Peer」、「Orderer」、「Channel」。

1.- Application (SDK) :

负责连结节点(Peer),并且发起提案(Proposal)

补充:Hyperledger Fabric客户端SDK提供了一个结构化的Library,让工程师在编写和测试chaincode应用程序可以使用。组件包括用于签名的加密算法,日志记录框架和状态存储,都可以轻松地换入和换出SDK。该SDK提供了用于事务处理,成员资格服务,节点遍历和事件处理的API。目前,两个受官方支持的SDK程式语言为Node.js 和Java,另外两个(Python和Go)尚未正式发布,但仍可以下载和测试。

2.- Peer:

区块链中主要组成部分,承载了账本(Ledger)及智能合约(Smart Contracts)在Hyperledger Fabric中称之为Chain Code。

如下图中所示,每个peer节点上包含了一个账本和一个智能合约,另外peer节点是可以包含多个智能合约和账本的

图中区块链网络总共有三个peer,各保存一个chaincode及一个ledger

3.- Orderer:

是一种特殊节点用来确保和把关Peers的Ledger一致性,主要负责排序交易并且打包成区块回传给peer以加入区块链

4. Channel:

一个用来达到私密通讯及交易的机制。加入channel的节点都需要维护一份相同的ledger,并且也只有加入channel的节点可以存取这份ledger,以此达到保护隐私的作用。

了解了「Client」、「Peer」、「Orderer」、「Channel」以后,将进一步解释交易流程

Application连接peer Peer发起提案(proposal) :查询或更新帐本

2.1 peer根据chaincode执行提案

2.2根据提案内容(查询或更新帐本)产生提案回应 各Peer回传提案回应给Application。如果是query那么到此就完成了,如果是update就继续进行下一步 Application收集各peer回传的提案回应后建立一个transaction发给orderer要求排序

4.1 orderer收集整个网络内的transaction并打包成区块,然后把区块送给所有peer

4.2 peer收到区块后会进行验证,通过后就把区块加到帐本上 更新完帐本后peer会产生一个event给A通知交易已经完成

HyperLedger Fabric的特性和使用时机

以商业角度出发,我们将从三个面向总结HyperLedger Fabric 的特性,「智能合约」、「隐私隐私」、「共识机制」

1.- 智能合约

HyperLedger Fabric 的智能合约是用Chaincode 编写的,即是用来执行该企业的商业逻辑、账本读写(Read/Write)或验证资料的程序。

补充:在大多数情况下, Chaincode 只查询世界状态的资料库,而不会与事务日志互动。Chaincode 可以用几种编程语言实现,例如,GO语言,在今后的发行版中将会逐步添加Java 和其它语言的支持。

2.- 资料隐私

企业在公布商业资讯的时候必然会考量隐私的重要性,尤其企业对企业(B2B)网络(Network)的参与者可能对他们所共享的资讯非常敏感。而HyperLedger Fabric 透过节点与节点的频道(channel)允许企业为敏感交易新建一个独立的帐本,因此不在频道内的企业会看不到该账本。

3.- 共识机制

在分散式分类帐技术中,共识渐渐已成为单一功能中特定演算法的代名词。然而,共识不仅仅是简单地同意交易顺序,而是通过在整个交易流程中的基本作用,从提案和认可到订购,验证和承诺,在Hyperledger Fabric中强调了这种差异化。简而言之,共识被定义为对包含块的一组交易的正确性的全面验证。

Hyperledger Fabric共识机制,目前包括排序演算法包含:SOLO,Kafka,以及未来可能要使用的SBFT

Solo

SOLO是Hyperledger Fabric排序机制,工程师最常使用SOLO在Hyperledger Fabric网络进行试验。SOLO涉及单个Ordering节点,不适合大规模实际的环境。

Kafka

Kafka是Hyperledger Fabric Ordering机制,建议用于Production阶段。这种排序机制利用Apache Kafka(一种开放源代码流处理平台):一个统一、高吞吐量和低延迟的平台来处理实时数据馈送。在这种情况下,数据由背书交易(Endorse Transaction)和读写集(R/W set)组成。Kafka机制为Ordering提供了crash fault-tolerant解决方案。

SBFT(简化拜占庭容错)

全名为Simplified Byzantine Fault Tolerance,这种排序机制既具有崩溃容错能力,又具有拜占庭容错能力,这意味着即使在存在恶意或故障节点的情况下,它也可以达成协议。Hyperledger Fabric社群尚未实现此机制。

应用案例

根据Hyperledger Fabric 社群的使用案例整理,目前它在航太(Aerospace)、教育(Education)、医疗(Healthcare)、身份管理(Identity Management)、供应链管理(Supply Chain Management)等皆有应用。

我们以贸易金融(Trading Finance)领域整理几个商业案例。

We.Trade — 欧洲区块链交易平台

We.Trade 聚焦的重点是中小型企业在欧洲内的交易,这可望使平台迅速扩张规模。并宣称能为银行与企业提供更具效率及节省成本的方式进行全世界的交易,这个平台是由德意志银行、汇丰银行、比利时联合银行(KBC)、法国外贸银行、北欧银行、荷兰合作银行、法国兴业银行、西班牙桑坦德银行与裕信银行共九家银行所联合打造。

Dltledger-新加坡区块链交易平台

Dltledger的核心解决方案是供应链可追溯性区块链,可链接到银行、运输公司以及保险公司。其成功的关键原因是通过数字化跨境贸易带来的高效率。

小结

就如专题报导和文章前面所提及的,企业其实最在意的还是隐私和可控性。隐私可透过设定参与者(节点)的加入权限是否须经认证分成许可制(Permissioned)以及非许可制、开放式(Permissionless),链的透明程度、以及加入可否是否向公众开放则是以公、私有链去区分。且由于区块链的应用对于多数产业而言,要打掉重练,因此到目前阶段都还在试水温,所以需要长时间观察后续的进程。