区块链技术指南:(一)区块链思想的诞生与概念

96
知行gitlore
2017.05.09 17:29* 字数 5563

概况

** 任何事物的发展,从来不是一蹴而就的。 **

商贸合作中签订的合同,怎么确保对方能遵守和执行?

餐厅宣称刚从海里打捞上来的三文鱼,怎么证明捕捞时间和运输中的卫生?

数字世界里,怎么证明你对资产的所有?

囚徒困境中的两个人,怎样能达成利益的最大化?

宇宙不同文明之间的猜疑链,有没有可能打破?

这些看似很难解决的问题,在区块链的世界里已经有了初步的答案。

本章将简要介绍区块链相关的背景知识,包括其起源、定位、涉及到的关键技术点以及潜在的商业价值。并对区块链的发展进行展望。

从数字货币说起

货币是人类文明发展过程中的一大发明,最重要的职能包括价值尺度、流通手段、贮藏手段。很难想象离开了货币,现代社会庞大而复杂的经济和金融体系还能否持续运转。

历史上,货币的形态经历了多个阶段的演化,包括实物货币、金属货币、代用货币、信用货币、电子货币、数字货币等。货币自身的价值依托也从实物价值、发行方信用价值,到今天出现的对信息系统(包括算法、数学、密码学、软件等)的信任价值。

注:中国最早的关于货币的确切记载“夏后以玄币”出现在恒宽《盐铁论·错币》。

需求

一般等价物都可以作为货币使用。然而平时最常见的还是纸币本位制,既方便携带、不易仿制、又相对容易辩伪。

注意,严格来讲,货币(money)不等于现金或通货(cash,currency),货币的范围更广。

或许有人认为信用卡相对纸币形式更方便。相对于信用卡这样的集中式支付体系来说,货币提供了更好的匿名性。另外,一旦碰到系统故障、断网、没有刷卡机器等情况,信用卡就不可用了。

无论是货币,还是信用卡模式,都需要额外的系统(例如银行)来完成生产、分发、管理等操作,带来很大的额外成本和使用风险。诸如伪造、信用卡诈骗、盗刷、转账等安全事件屡见不鲜。

很自然的,如果能实现一种数字货币,保持既有货币的这些特性,消除纸质货币的缺陷,无疑将带来巨大的社会变革,极大提高经济活动的运作效率。

比较

让我们来对比现在的数字货币和现实生活中的纸币:

属性 分析 胜出方
便携 这点上应该没有争议,显然数字形式的货币胜出。 数字货币
防伪 这点上应该说两者各有千秋,但数字货币可能略胜一筹。纸币依靠的是各种设计(纸张、油墨、暗纹、夹层等)上的精巧,数字货币依靠的则是密码学上的保障。事实上,纸币的伪造时有发生,但数字货币的伪造明面上还没能实现。 数字货币
辩伪 纸币即使依托验钞机仍会有误判情况,数字货币依靠密码学基本不可能出错。数字货币胜出。 数字货币
匿名 通常情况下,两者都能提供很好的匿名性。但都无法防御有意的追踪。 平局
交易 对纸币来说,谁持有纸币就是合法拥有者,交易通过纸币自身的转移即可完成。对数字货币来说则复杂的多,因为任何数字物品都是可以被复制的,因此需要额外的机制。为此,比特币发明了区块链技术来确保可靠不可篡改的交易。 纸币
资源 100 美元钞票的生产成本是 0.1 美元左右。100 面额人民币的生产成本说法众多,但估计应该在几毛到几块范围内。数字货币消耗的资源则复杂的多,以最坏情况估计,算出来多少就要消耗多少电(往往要更多)。 纸币
发行 纸币的发行需要第三方机构的参与,数字货币则通过分布式算法来完成发行。在人类历史上,通胀和通缩往往是不合理地发行货币造成的;数字货币尚无机会被验证,在这方面的表现还有待观察。 平局

可见,数字货币并非在所有领域都优于已有的货币形式。不带前提的在所有领域都鼓吹数字货币并不是一种严谨的态度,应该针对具体情况具体分析。实际上,仔细观察目前支持数字货币的交易机构就会发现端倪,当前还没有一种数字货币能完整起到货币的职能。

最后,虽然当前的数字货币“实验”已经取得了巨大成功,但可见的局限也很明显:其依赖的分布式账本技术还缺乏大规模场景下考验;性能和安全性还有待提升;资源的消耗还过高等等。这些问题还有待于相关技术的进一步发展。

实现挑战

设计和实现一个数字货币并非易事。

在现实生活中,因为纸币具备可转移性,相对容易地完成价值的交割。但是因为电子内容天然具备零复制成本,无法通过发送电子内容来完成价值的转移。持有人可以试图将同一份电子货币发给多个人,这种被称为“双重支付攻击(Double-Spent)”。

也许有人会讲,当前银行中的货币都是电子化的,因为通过账号里面的数字记录了资产。说的没错,这种电子货币模式有人称为“数字货币 1.0”,它实际上是假定存在一个安全可靠的第三方记账机构来实现,这个机构利用信用作为抵押,来完成交易。

这种中心化控制下的数字货币实现相对简单,但需要一个中心管控系统。但是,很多时候并不存在一个安全可靠的第三方记账机构来充当这个中心管控的角色。

例如,贸易两国可能缺乏足够的外汇储备;网络上的匿名双方进行直接买卖;交易的两个机构彼此互不信任,找不到双方都认可的第三方担保;汇率的变化;可能无法连接到第三方的系统;第三方的系统可能会出现故障……

总结一下,在去中心化的场景下,存在几个难题:

  • 货币的防伪:谁来负责验证货币;
  • 货币交易:如何确定货币从一方转移到另外一方;
  • 避免双重支付:如何避免出现双重支付。

好吧,这事其实不太容易。

比特币出现

在不存在一个第三方记账机构的情况下,如何实现一个数字货币系统呢?

近三十年来,数字货币技术朝着这个方向努力,经历了几代演进,包括 e-Cash、、[HashCash](Hashcash](http://en.wikipedia.org/wiki/Hashcash)、B-money 等。

1983 年,David Chaum 最早提出ecash,并于 1989 年创建了 Digicash 公司。ecash 系统是首个匿名化的数字加密货币(anonymous cryptographic electronic money, or electronic cash system),基于 David Chaum 发明的盲签名技术,曾被应用于银行小额支付中。ecash 依赖于一个中心化的中介机构,导致它最终失败。

1997 年,Adam Back 发明了 Hashcash,来解决邮件系统中 DoS 攻击问题。Hashcash 首次提出用工作量证明(Proof of Work,PoW)机制来获取额度,该机制后来被后续数字货币技术所采用。

1998 年,Wei Dai 提出了 B-money,将 PoW 引入数字货币生成过程中。B-money 同时是首个面向去中心化设计的数字货币。从概念上看已经比较完善,但是很遗憾的是,其未能提出具体的设计实现。

上面这些数字货币都或多或少的依赖于一个第三方系统的信用担保。直到比特币的出现,将 PoW 与共识机制结合在一起,首次从实践意义上实现了一套去中心化的数字货币系统

比特币网络无需任何管理机构,自身通过数学和密码学原理来确保了所有交易的成功进行,比特币自身的价值是通过背后的计算力为背书。这也促使人们开始思考在未来的数字世界中,该如何衡量价值,如何发行货币。

目前看来,数字货币比较有影响力的模式有两种,一种是类似 paypal 这样的选择跟已有的系统合作,成为代理;一种是以比特币这样的完全丢弃已有体系的分布式技术。

现在还很难讲哪种模式将成为未来的主流,甚至未来还可能出现更先进的技术。但对比特币这一类数字货币的设计进行探索,将是一件十分有趣的事情。

什么是比特币

历史

2008 年 10 月 31 日,化名 Satoshi Nakamoto (中本聪)的人提出了比特币的设计白皮书(最早见于 metzdowd 邮件列表),并在 2009 年公开了最初的实现代码,第一个比特币是 2009 年 1 月 3 日 18:15:05 生成。但真正流行起来还是在 2010 年后的事情。其官方网站是 bitcoin

发明人(传言代号为中本聪的澳大利亚人)到目前为止尚无法确认身份,据推测,背后也可能是一个团队。

尽管充满了争议,但从技术角度看,比特币仍然是数字货币历史上一次了不起的创新。比特币网络在 2009 年上线以来已经在全球范围内 7*24 小时运行接近 8 年时间,支持过单笔 1.5 亿美金的交易。比特币网络由数千个核心节点参与构成,没有任何中心的运维参与,支持了稳定上升的交易量。

比特币之所以受到无数金融从业者的热捧,在于它首次真正意义上实现了足够安全可靠的去中心化数字货币机制。

作为一种概念金融货币,比特币主要是希望解决已有金融货币系统的几个问题:

  • 被掌控在发行机构手中;
  • 自身的价值无法保证;
  • 无法匿名化交易。

搞金融的人都能想到,实际上,要设计这么一套系统,最关键的还是一套强大的交易记录系统和中立的货币发行机制。

首先,这个系统要能中立、公正、无法被篡改地记录发生过的每一笔交易。对比已有的银行系统,可以看出,现在的银行机制作为第三方,是有代价的提供了这样的服务,即如果交易双方都相信银行的数据库,那么就没问题了。可是如果是世界范围内流通的货币呢?有哪个银行能让大家完全信任它?于是,需要有一套分布式的数据库,在世界范围内都可以访问,而且都无法去控制。这也就是区块链设计的目的。

货币的发行则是通过比特币的协议来规定的,总量必须控制,发行速度会自动调整。既然总量一定,那么单个比特币的价值肯定会随着承认比特币的实体经济的加入而水涨船高。发行速度的调整则避免了通胀或者滞涨的出现。

比特币到区块链

2014 年开始,比特币背后的区块链(Blockchain)技术受到大家关注,并正式引发了分布式记账本(Distributed Ledger)技术的革新浪潮。

人们开始意识到,记账本相关的技术,对于资产(包括有形资产和无形资产)的管理(包括所有权和流通)十分关键;而去中心化的分布式记账本技术,对于当前开放多维化的商业网络意义重大。区块链,正是实现去中心化记账本系统的一种极具潜力的可行技术。

目前,区块链技术已经脱离开比特币,在包括金融、贸易、征信、物联网、共享经济等诸多领域崭露头角。现在当人们提到“区块链”时,往往已经与比特币网络没有直接联系了,除非特别指出是承载比特币交易系统的“比特币区块链”。

什么是区块链

定义

区块链(Blockchain)技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。

[wikipedia](https://en.wikipedia.org/wiki/Block_chain_(database) 给出的定义为:

A blockchain —originally, block chain —is a distributed database that maintains a continuously-growing list of data records hardened against tampering and revision. It consists of data structure blocks—which hold exclusively data in initial blockchain implementations, and both data and programs in some of the more recent implementations—with each block holding batches of individual transactions and the results of any blockchain executables. Each block contains a timestamp and information linking it to a previous block.

最早区块链技术雏形出现在比特币项目中。作为比特币背后的分布式记账平台,在无集中式管理的情况下,比特币网络稳定运行了近八年时间,支持了海量的交易记录,并未出现严重的漏洞。

注:比特币历史上唯一已知的漏洞事件曾导致比特币的恶意增发,但问题很快被发现并修正,相关非法交易被撤销。

公认的最早关于区块链的描述性文献是中本聪所撰写的 比特币:一种点对点的电子现金系统,但该文献重点在于讨论比特币系统,实际上并没有明确提出区块链的定义和概念。在其中,区块链被描述为用于记录比特币交易的账目历史。

记账技术历史悠久,现代复式记账系统(Double Entry Bookkeeping)是由意大利数学家卢卡·帕西奥利,1494 年在《Summa de arithmetica, geometrica, proportioni et proportionalità》一书中最早制定。复式记账法对每一笔账目同时记录来源和去向,首次将对账验证功能引入记账过程,提升了记账的可靠性。从这个角度来看,区块链是首个自带对账功能的数字记账技术实现

更广泛意义地看,区块链属于一种去中心化的记录技术。参与到系统上的节点,可能不属于同一组织、彼此无需信任;区块链数据由所有节点共同维护,每个参与维护节点都能复制获得一份完整记录的拷贝。

跟传统的记账技术相比,其特点应该包括:

  • 维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;
  • 去中心化,或者说多中心化,无需集中的控制而能达成共识,实现上尽量分布式;
  • 通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。

更进一步的,还可以将智能合约跟区块链结合到一起,让其提供除了交易(比特币区块链已经支持简单的脚本计算)功能外更灵活的合约功能,执行更为复杂的操作。这样扩展之后的区块链,已经超越了单纯数据记录的功能了,实际上带有点“普适计算”的意味了。

从技术特点上,可以看到现在区块链技术的三种典型应用场景:

定位 功能 智能合约 一致性 权限 类型 性能 代表
公信的数字货币 记账功能 不带有或较弱 PoW 公有链 较低 比特币
公信的交易处理 智能合约 图灵完备 PoW、PoS 公有链 受限 以太坊
带权限的交易处理 商业处理 多种语言,图灵完备 多种,可插拔 支持 联盟链 可扩展 Hyperledger

基本原理

区块链的基本原理理解起来并不难。基本概念包括:

  • 交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录;
  • 区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;
  • 链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。

如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。

区块链示例
区块链示例

在实现上,首先假设存在一个分布式的数据记录本(这方面的技术相对成熟),这个记录本只允许添加、不允许删除。其结构是一个线性的链表,由一个个“区块”串联组成,这也是其名字“区块链”的来源。新的数据要加入,必须放到一个新的区块中。而这个块(以及块里的交易)是否合法,可以通过一些手段快速检验出来。维护节点都可以提议一个新的区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。

具体以比特币为例来看如何使用了区块链技术?客户端发起一项交易后,会广播到网络中并等待确认。网络中的节点会将一些等待确认的交易记录打包在一起(此外还要包括此前区块的哈希值等信息),组成一个候选区块。然后,试图找到一个 nonce 串放到区块里,使得候选区块的 hash 结果满足一定条件(比如小于某个值)。一旦算出来这个区块在格式上就合法了,就可以进行全网广播。大家拿到提案区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,被添加到链上。当然,在实现上还会有很多的细节。

比特币的这种基于算力的共识机制被称为 Proof of Work(PoW)。目前,要让 hash 结果满足一定条件并无已知的启发式算法,只能进行暴力尝试。尝试的次数越多,算出来的概率越大。通过调节对 hash 结果的限制,比特币网络控制约 10 分钟平均算出来一个合法区块。算出来的节点将得到区块中所有交易的管理费和协议固定发放的奖励费(目前是 12.5 比特币,每四年减半)。也即俗称的挖矿。

很自然会有人问,能否进行恶意操作来破坏整个区块链系统或者获取非法利益。比如不承认别人的结果,拒绝别人的交易等。实际上,因为系统中存在大量的用户,而且用户默认都只承认他看到的最长的链。只要不超过一半(概率意义上越少肯定越难)的用户协商,最终最长的链将很大概率上是合法的链,而且随着时间增加,这个概率会越大。例如,经过 6 个块后,即便有一半的节点联合起来想颠覆被确认的结果,其概率将为 $$\frac{1}{2}^6 = 1.6%$$,即低于 $$\frac{1}{60}$$ 的可能性。

注:熟悉 Git 的人,应该会赞叹两者在设计上的异曲同工之妙。

分类

根据参与者的不同,可以分为公开(Public)链、联盟(Consortium)链和私有(Private)链。

公开链,顾名思义,任何人都可以参与使用和维护,典型的如比特币区块链,信息是完全公开的。

如果引入许可机制,包括私有链和联盟链两种。

私有链,则是集中管理者进行限制,只能得到内部少数人可以使用,信息不公开。

联盟链则介于两者之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息会得到保护,典型如银联组织。

目前来看,公开链将会更多的吸引社区和媒体的眼球,但更多的商业价值应该在联盟链和私有链上。

根据使用目的和场景的不同,又可以分为以数字货币为目的的货币链,以记录产权为目的的产权链,以众筹为目的的众筹链等。

误区

目前,对区块链的认识还存在不少误区。

首先,区块链不是数据库。虽然区块链也可以用来存储数据,但它要解决的问题是多方的互信问题。单纯从存储数据角度,它的效率可能不高,笔者也不推荐把大量的原始数据放到区块链上。

其次,区块链不是要颠覆现有技术。作为基于多项已有技术而出现的新事物,区块链跟现有技术的关系是一脉相承的,在解决多方合作和可信处理上多走了一步,但并不意味着它将彻底颠覆已有的商业模式。很长一段时间里,区块链的适用场景仍需摸索,跟已有系统必然是合作共存的关系。

区块链技术指南:(一)区块链思想的诞生与概念

日记本
Web note ad 1