缘起
区块链技术的出现是一个意外。2008 年全球金融危机引起很多人的讨论和思考,在互联网上有一个匿名为“中本聪”的人提出了一种叫比特币的技术(比特币的出现是否和金融危机有直接关系不得而知)。他以《比特币白皮书:一种点对点的电子现金系统》为标题写下了一段文字,开头部分这样写道:
我们无法实现完全不可逆的交易,因为金融机构总是不可避免地会出面协调争端。而金融中介的存在,也会增加交易的成本,并且限制了实际可行的最小交易规模,也限制了日常的小额支付交易。
中本聪的这篇文章其实够不上“论文”的标准,这段文字有点颠三倒四。这里试着归纳一下:
希望交易不可逆。如果发生了 A 转账到 B, 那么数据库系统就应该记录下这件事情,并且无法篡改。
希望交易不依赖于某个金融机构的数据库系统记录。金融机构的 IT 能力、公司制度会影响交易的实时性(数据可能要经过审核,数据库还可能崩溃);经过金融机构也会被抽取一定的“交易费”(金融机构的管理费,IT 系统的支出)。
同时中本聪还编写了一个简单的 Demo 放到 SourceForge 上(这是早起的开源软件聚集地,地位相当于现在的 Github)。他希望能建立起一套自治的系统自动记账以实现上述两点——交易记录不可篡改和数据分布式存放。读者如果对最早的代码感兴趣可以在 Github 上看到这份代码。
关于中本聪本人究竟如何思考我们不得而知,但是我们可以仔细思考一下。中本聪所描述和编写的比特币的核心技术是什么?是数据库系统或者叫存储系统,因为记录交易的是数据库,传统数据库是可以进行修改的;因为金融机构是用 IT 系统、用数据库、存储系统记录交易,而这些系统是可能出现故障的。在比特币中解决的本质问题是用一个不可逆的、分布式的数据库去代替传统数据库。
发展
最开始的时候没人把比特币当做“真实的货币”,比特币能有今天的价格也实在是匪夷所思。当然始终对它感兴趣的人还是有的,比如一个名叫 Vitalik Buterin 的 俄罗斯 90 后,他就对比特币非常感兴趣,并且一直在为比特币社区做一些事情。2013 年的时候比特币社区的一些开发者开始讨论比特币的核心技术,也就是后来被称为“区块链”的技术。他们希望可以把这个技术单独剥离出来用在更多的场景中,Vitalik Buterin 就提出了可以运行任意形式(图灵完备)的应用程序而不仅仅是脚本。
比特币的脚本是指 Pay-to-Script-Hash(P2SH),它是为了解决多重签名的问题。Vitalik Buterin 强调的图灵完备性其实是针对 P2SH,P2SH 是基于堆栈的简单虚拟机,只有简单的堆栈指令;缺少结构化程序设计的分支、循环。而图灵完备性就是指结构化程序设计所必须支持的顺序、分支、循环。
Vitalik Buterin 这个想法没有让比特币社区有足够的兴趣,所以比特币并没有实现这个想法。2014 年 Vitalik Buterin 招募到开发者成立了以太坊项目,并且把上述思想写到白皮书中,称之为“智能合约(Smart Contract)”。这个名字带有强烈的“数字货币色彩”,或者说它的出发点还是为了解决“多重签名”的问题。
这个时期的区块链已经脱离比特币,成为一种独立的技术。如前文所述,比特币的核心技术就是一种数据存储技术或者叫数据库,但是这个概念还比较模糊,因为缺少数据访问接口(就像关系型数据库和 SQL)。无论是否有意,以太坊的智能合约都为解决这个问题提供了足够的思路和火花。
繁荣
无论是比特币还是以太坊它们本质上还是数字货币,都是为了解决“金融问题”,所以它们都属于币圈。把比特币、以太坊的核心理念提取出来除了用于数字货币还可以有更加广泛的应用场景,这就是 Hyperledger Fabric 的历史使命。
Hyperledger Fabric 是 IBM 贡献给 Linux 基金会的商用分布式账本系统,自项目创立伊始就吸引了金融、银行、互联网、传统行业领域的巨头们的眼光。
Hyperledger Fabric 是基于 Golang 实现的可插拔的区块链系统,它主要面向企业之间或者企业多个部门之间提供服务。
主链侧链开发数字货币交易所白皮书区块链浏览器跨境支付场内场外宠物挖矿游戏基金会牌照 181-4069-6008 微信电话同号
上图是 Hyperledger Fabric 的逻辑架构图,垂直方向划分为三部分。
Membership 即成员管理服务,提供身份管理、证书校验。在 Fabric 中每个通讯组件都必须提供身份证明,每个事务的发起者会被永久记录在区块链上,审核人员可以追溯事务。
Blockchain Services 即区块链服务,提供分布式一致性算法,维护全网数据一致,提供账本存储服务,基于 P2P 网络实现节点之间的通讯。
Chaincode Services 即链码服务,智能合约在 Fabric 中称为链码。链码是操作状态数据库的唯一方法,大部分事务都是通过链码完成的。该部分提供链码的部署和运行环境。
有疑问加站长微信联系(非本文作者)