区块链思想的诞生与概念
从数字货币说起
历史上,货币的形态经历了多个阶段的演化,包括实物货币、金属货币、代用货币、信用货币、电子货币、数字货币等。货币自身的价值依托也从实物价值、发行方信用价值,到今天出现的对信息系统(包括算法、数学、密码学、软件等)的信任价值。
需求
一般等价物都可以作为货币使用。然而平时最常见的还是纸币本位制,既方便携带、不易仿制、又相对容易辩伪。注意,严格来来讲,货币(money)不等于现金或通(cash,currency),货币的范围更广。
无论是货币,还是信用卡模式,都需要额外的系统(例如银行)来完成生产、分发、管理等操作,带来很大的额外成本和使用风险。诸如伪造、信用卡诈骗、盗刷、转账等安全事件屡见不鲜。很自然的,如果能实现一种数字货币,保持既有货币的这些特性,消除纸质货币的缺陷,无疑将带来巨大的社会变革,极大提高经济活动的运作效率。
比较
可见,数字货币并非在所有领域都优于已有的货币形式。
最后,虽然当前的数字货币“实验”已经取得了巨大成功,但可见的局限也很明显:其依赖的分布式账本技术还缺乏大规模场景下考验;性能和安全性还有待提升;资源的消耗还过高等等。
实现挑战
设计和实现一个数字货币并非易事。在现实生活中,因为纸币具备可转移性,相对容易地完成价值的交割。但是因为电子内容天然具备零复制成本,无法通过发送电子内容来完成价值的转移。
持有人可以试图将同一份电子货币发给多个人,这种被称为“双重支付攻击(Double-Spent)”。
电子货币模式有人称为“数字货币 1.0”,它实际上是假定存在一个安全可靠的第三方记账机构来实现,这个机构利用信用作为抵押,来完成交易。
这种中心化控制下的数字货币实现相对简单,但需要一个中心管控系统。但是,很多时候并不存在一个安全可靠的第三方记账机构来充当这个中心管控的角色。
总结一下,在去中心化的场景下,存在几个难题:
货币的防伪:谁来负责验证货币;
货币交易:如何确定货币从一方转移到另外一方;
避免双重支付:如何避免出现双重支付。
比特币出现
不存在一个第三方记账机构的情况下,如何实现一个数字货币系统呢?
1983 年,David Chaum 最早提出ecash,并于 1989 年创建了 Digicash 公司。ecash 系统是首个匿名化的数字加密货币(anonymous cryptographic electronic money, or electronic cash system),基于 David Chaum 发明的盲签名技术,曾被应用于银行小额支付中。
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。
比特币网络由数千个核心节点参与构成,没有任何中心的运维参与,支持了稳定上升的交易量。
比特币之所以受到无数金融从业者的热捧,在于它
首次真正意义上实现了足够安全可靠的去中心化数字货币机制。
作为一种概念金融货币,比特币主要是希望解决已有金融货币系统的几个问题:
被掌控在发行机构手中;
自身的价值无法保证;
无法匿名化交易。
比特币到区块链
2014 年开始,比特币背后的区块链(Blockchain)技术受到大家关注,并正式引发了分布式记账本(Distributed Ledger)技术的革新浪潮。
记账本相关的技术,对于资产(包括有形资产和无形资产)的管理(包括所有权和流通)十分关键;而去中心化的分布式记账本技术,对于当前开放多维化的商业网络意义重大。区块链,正是实现去中心化记账本系统的一种极具潜力的可行技术。
什么是区块链
定义
区块链(Blockchain)技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。
wikipedia 给出的定义为:
A blockchain —originally, block chain —is a distributed database that maintains acontinuously-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.
最早区块链技术雏形出现在比特币项目中。作为比特币背后的分布式记账平台,在无集中式管理的情况下,比特币网络稳定运行了近八年时间,支持了海量的交易记录,并未出现严重的漏洞。
注:比特币历史上唯一已知的漏洞事件曾导致比特币的恶意增发,但问题很快被发现并修正,相关非法交易被撤销。
区块链属于一种去中心化的记录技术。参与到系统上的节点,可能不属于同一组织、彼此无需信任;区块链数据由所有节点共同维护,每个参与维护节点都能复制获得一份完整记录的拷贝。
跟传统的记账技术相比,其特点应该包括:
1)维护一条不断增长的链,只可能添加记录,而发生过的记录都不可篡改;
2)去中心化,或者说多中心化,无需集中的控制而能达成共识,实现上尽量分布式;
3)通过密码学的机制来确保交易无法抵赖和破坏,并尽量保护用户信息和记录的隐私性。
区块链技术的三种典型应用:
基本原理
基本概念包括:
交易(Transaction):一次操作,导致账本状态的一次改变,如添加一条记录;
区块(Block):记录一段时间内发生的交易和状态结果,是对当前账本状态的一次共识;
链(Chain):由一个个区块按照发生顺序串联而成,是整个状态变化的日志记录。
如果把区块链作为一个状态机,则每次交易就是试图改变一次状态,而每次共识生成的区块,就是参与者对于区块中所有交易内容导致状态改变的结果进行确认。
在实现上,首先假设存在一个分布式的数据记录本(这方面的技术相对成熟),这个记录本只允许添加、不允许删除。其结构是一个线性的链表,由一个个“区块”串联组成,这也是其名字“区块链”的来源。新的数据要加入,必须放到一个新的区块中。而这个块(以及块里的交易)是否合法,可以通过一些手段快速检验出来。维护节点都可以提议一个新的区块,然而必须经过一定的共识机制来对最终选择的区块达成一致。
比特币为例来看如何使用了区块链技术?客户端发起一项交易后,会广播到网络中并等待确认。网络中的节点会将一些等待确认的交易记录打包在一起(此外还要包括此前区块的哈希值等信息),组成一个候选区块。然后,试图找到一个 nonce 串放到区块里,使得候选区块的 hash 结果满足一定条件(比如小于某个值)。一旦算出来这个区块在格式上就合法了,就可以进行全网广播。大家拿到提案区块,进行验证,发现确实符合约定条件了,就承认这个区块是一个合法的新区块,被添加到链上。
比特币的这种基于算力的共识机制被称为 Proof of Work(PoW)。目前,要让 hash 结果满足一定条件并无已知的启发式算法,只能进行暴力尝试。尝试的次数越多,算出来的概率越大。通过调节对 hash 结果的限制,比特币网络控制约 10 分钟平均算出来一个合法区块。算出来的节点将得到区块中所有交易的管理费和协议固定发放的奖励费(目前是 12.5 比特币,每四年减半)。也即俗称的挖矿。
实际上,因为系统中存在大量的用户,而且用户默认都只承认他看到的最长的链。只要不超过一半(概率意义上越少肯定越难)的用户协商,最终最长的链将很大概率上是合法的链,而且随着时间增加,这个概率会越大。
分类
根据参与者的不同,可以分为公开(Public)链、联盟(Consortium)链和私有(Private)链。
公开链,顾名思义,任何人都可以参与使用和维护,典型的如比特币区块链,信息是完全公开的。如果引入许可机制,包括私有链和联盟链两种。
私有链,则是集中管理者进行限制,只能得到内部少数人可以使用,信息不公开。
联盟链则介于两者之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息会得到保护,典型如银联组织。
根据使用目的和场景的不同,又可以分为以数字货币为目的的货币链,以记录产权为目的的产权链,以众筹为目的的众筹链等。
误区
首先,区块链不是数据库。虽然区块链也可以用来存储数据,但它要解决的问题是多方的互信问题。
其次,区块链不是要颠覆现有技术。作为基于多项已有技术而出现的新事物,区块链跟现有技术的关系是一脉相承的。
小结
区块链是第一个试图自带信任化和防止篡改的分布式记录系统。
更进一步,比特币只是基于区块链技术的一种金融应用(而且是直接嵌入区块链中),区块链技术还能带来更通用的计算能力。Hyperledger 和 Ethereum 就试图做类似的事情,基于区块链再做一层平台层,让别人基于平台开发应用变得更简单。
另外,区块链本身可以作为分布式存储,也自然可以作为分布式计算引擎。