区块链核心技术与应用
上QQ阅读APP看书,第一时间看更新

2.1 区块链技术研究缘由

区块链之所以获得全球的关注,原因在于区块链技术可以带来社会迫切需要的去中介化信任机制,改变社会的各种应用的计算范式,并为社会带来巨大的效益。根据Gartner的研究预测,Blockchain将在未来5~10年迎来爆发式发展,并得到实际应用。图2-1为2016年7月Gartner发布的最新的未来技术的预测图,其中区块链技术(Blockchain)就包含在其中。为了让大家清楚为什么要研究区块链技术,首先让我们从分析区块链技术的第一个用例——比特币入手。对比特币的初步了解,将有助于我们了解区块链技术的重要性。

图2-1 区块链技术的未来

2.1.1 区块链用例描述:比特币

互联网上的电子商务,几乎都需要借助金融机构作为可信赖的第三方来处理电子支付信息。而比特币的出现,可以摆脱第三方的限制,完全依靠算法来确保交易的可靠性。它完全不同于传统的物物交换、基于金银的贵金属交换、基于政府信用背书的纸币作为流通货币的交换、基于政府信用背书的电子货币交换,而是完全依赖于算法本身的可靠性,将引领一种新的交易范式。

假设有A、B、C三个人正在使用比特币,并希望通过比特币进行交易。他们需要解决三个问题:第一是来源问题,即如何获得比特币;第二是解决怎么交易比特币问题;第三是怎么保证交易安全可靠,怎么确认获得的比特币是真的,也就是解决防伪防欺诈的问题。下面我们来看中本聪的设计是如何解决这些问题的。

1.怎么获取比特币(来源问题)

A、B以及C获取比特币的来源有两种途径,分别为:按照中本聪的想法,第一种方法可以比较形象地表示为挖金矿,自己当矿工,通过算力挖比特币;第二种办法是通过交易或者别人捐赠获得比特币。

(1)当矿工获取比特币

中本聪挖到了世界上第一个比特币区块,也被称之为“创世区块”,从而得到了50个比特币的挖矿奖励。每个区块(Block,账本)的创建者都将得到相应的比特币。就像现实世界中的矿产资源有限、矿的优劣程度也不同一样,中本聪对应制定了如下的挖矿规则:前21万个区块的初始值为50个比特币,即前面21万个区块的创建者每创建一个新的区块均可以得到50个比特币。这可以通俗地理解为前21万个区块为最优质矿。产生到第21万个区块之后,每个区块的创建者只能得到25个比特币。依此类推,第42万个区块创建后,区块里初始只有12.5个比特币。也就是说,随着优质矿被挖走,矿产质量越来越差,价值也越来越低。矿产终究有挖完的一天,所以最后比特币的钱总数会停留在2100万个。矿挖完了,但是交易永远都不会停止,因此,区块会不断地创建下去,只不过后面那些挖矿的人即使创建一个区块,也不会再得到比特币的挖矿奖励,但可以获取区块中所有交易的交易费用。

根据中本聪的设计,世界上约每10分钟就会产生一个新的区块,不管这个区块是否有交易,都会约每10分钟产生一个。如果有很多矿工想去挖矿(挖矿算力增加),则算法会动态地调高出块的难度来保证出块节奏稳定在大约10分钟出一块。所以,通过挖矿得到比特币不是一件十分容易的事情。如果在这十分钟内有1万人在挖矿,那也只有一个幸运者能够获得该矿,并得到系统所给予的挖矿奖励。当然,世界上发生在这10分钟内的大部分交易,会记在这个区块里面。到一定时间后(2140年),所有矿产都挖完了,后面每一次挖矿(创建Block)将不会有任何收益,这将会影响矿工的积极性。因此,中本聪也规定,对于一些非常复杂的交易会收取交易费,这个交易费用将会用于奖励挖矿者。这在一定程度上也提升了矿工的积极性。

回到前面的描述,A、B、C三人要想获得比特币,首先要成为矿工去挖矿,获得比特币系统给予他们的奖励(每挖出一个最优质矿将获得50个比特币,挖到一个次优质矿将得到25比特币,依此类推)。

(2)通过交易或者捐赠获得比特币

当然,要想获得比特币,去当矿工挖矿不是唯一的途径,也可以通过交易或者捐赠获得。假如B是一个猎人,A可以花0.5个比特币购买B的一头野猪,一旦这个交易完成,B就从A那里得来0.5个比特币。又如A有比较多的比特币,为了做慈善,可以为社会进行捐赠,比如给壹基金捐赠100个比特币等,这时候壹基金就从A那里获得了100个比特币。

2.怎么交易比特币

通过比特币进行交易,其实和传统的商品交易没有本质上的区别。唯一不同的是,通过人民币或者美元进行交易既可以通过电子形式(比如通过转账)完成,也可以直接使用钞票(人民币或者美元)去购买所需要的商品。而通过比特币进行交易,只能使用电子形式进行,也就是只能通过在账本中进行登记和计算的方式来完成交易。假如B有100个比特币,A有2000个比特币,A花了0.5个比特币从B那里购买了一头野猪,在账本中记录下了这笔交易。B的钱包就会根据账本信息在B的账户余额增加0.5个比特币,变成100.5个比特币;而A的钱包根据账本信息在A的账户余额减少0.5个比特币,变成1999.5个比特币。从这里可以看出,比特币所有的交易都体现在账本里面。

3.怎么确保交易安全可靠

现实中的面对面交易,一手交钱一手交货,只要钱不是假币,整个交易将会很顺利,并且双方都会很满意,可以马上完成交易。现实中的电子交易有中央银行的CA中心(国家机器)作为信用背书者,CA会确认电子交易双方的真实性(CA会证明A、B、C是实实在在存在的真实交易者),并且防止他们抵赖(比如:A下了购买B的野猪的订单,但是对购买行为不承认;或者B收到了A购买野猪的钱,但是不承认已经收到,拒绝通过物流运输野猪给A;等)。比特币交易系统不一样,它没有任何组织(欧盟发行的欧元)或者国家(美国发行的美元、中国发行的人民币)来背书,交易安全完全需要依靠技术手段本身来解决,比如依靠各种加密手段、验证手段、算法等。具体可以归纳为如下几点。

(1)如何确保比特币是真实的

比特币与现实中的美元或者人民币不一样。现实货币的真假可以通过银行或借助验钞机等方式来判别真假,而比特币是一种虚拟货币,无法通过识别水印或者特殊标记、制作材料等来进行判断,其真实性的判断依据是它的来源是否真实。人们获取比特币只有挖矿(创建账本)和通过交易或者接受捐赠获得两种方式。所以判断比特币是否真实,只需判断其是否有真实的来龙去脉,是否被“双花”过。比如在上面的例子中,当B获得A的0.5个比特币的时候,他怎么确认是真的呢?首先比特币区块链采用密码学的非对称加密公钥系统的签名来保证A的交易来自于A,同时A的比特币有来龙去脉。就像前节所述的,A的比特币要么是自己挖矿挖来的,要么是别人转给的,总之A的比特币不能凭空产生,其来源可以被验证。

(2)如何防止重复支付(“双花”)

在传统的面对面交易中,如果D只有1000元人民币,那么他用这1000元人民币购买了一个手机后,就不可能再用这1000元人民币去购买自行车,因为这1000元人民币在购买手机的时候就已经支付给了手机销售商。同样,在传统的电子商务交易中,如果D的电子银行账户中只有1000元人民币余额,那么当D在某个时间同时下单购买价值1000元人民币的手机和价值1000元人民币的自行车的时候,交易中心会确认哪一笔买卖在前、哪一笔买卖在后,如果购买手机的时间在前,交易中心会通知数据库转账1000元人民币给手机销售商的银行账户,通过数据库的锁定机制,钱就不可能再支付到自行车销售商的账号里,也就是说也不可能出现重复支付的问题。但是在比特币的交易系统里面,由于没有中心化信任机构,因此,交易需要广播给参与账本的所有人,需要所有人进行确认,这就需要一定的时间来完成。可能“D购买价值1000元手机”的交易还没有确认完,“D购买价值1000元的自行车”的交易就已经开始确认了。于是就有可能出现两笔交易同时有效的现象(即“双花”)。但实际上D只有1000元,却购买了价值2000元的东西。这是比特币交易体系里面一个不能容忍的现象,因此需要借助“共识机制”来解决该类问题,从而确保交易的先后顺序、确认哪一笔交易是有效的,等等。比特币采用工作量证明机制来保证不能出现“双花”。B只要看到A转给他的0.5个比特币有6个以上的区块进行了确认,就可以有很大把握确认这0.5个比特币不可能被A“双花”。

2.1.2 区块链需要研究哪些关键技术

区块链将成为未来计算范式的一个基石。为了促进区块链技术的发展,到底需要研究哪些关键技术呢?通过前面的分析,我们对区块链有了一个大概的了解,区块链关键技术的研究应该包含如下几个方面。

(1)区块链共识机制

为了确保交易的有效性,区块链主要是通过交易参与者对账本中交易的统一确认来完成的。因此需要研究不同的应用场景所需要的各种共识机制,比如,也有解决强一致性问题共识机制,也有解决“最终一致性”问题的共识机制,如工作量证明PoW、权益证明PoS、股份授权证明DPoS等。目前,各种共识机制都存在缺点,例如比特币的PoW机制存在高耗能、无用功和性能低下的问题,而PoS则存在安全性低的问题。随着应用的不断丰富以及复杂化,如何寻找满足各种不同应用场景需求的,更高效、更安全的共识机制是业界需要持续关注的问题。

(2)区块链的安全与隐私保护技术

与传统的计算范式完全不同,区块链不再借助中心化机构来确保信用可靠,其安全性完全通过技术手段来解决。因此,研究区块链的安全性保障显得至关重要,包括数字加密技术、数字签名、身份认证、授权鉴权、隐私保护、审计追溯、防止网络安全攻击等技术。

(3)区块链的存储技术

区块链是一个由众多的区块(Block)组成的相互关联的账本链。随着区块链数据的增加,区块链的数据如何在云计算环境下进行高效存取,如何确保存储与计算效率,存储在文件系统还是数据库,如何存储在分布式数据库或者分布式文件系统,如何提升区块链的查询效率,什么数据存放在链上、什么数据存放在链下的数据库,如何压缩区块链的数据以节省空间等问题,都是区块链存储必须关心的问题。

(4)区块链的通信技术研究

区块链主要是运行在分布式环境下。如何高效地同步数据?如何提升通信的可靠性?如何防止DDoS攻击?如何提升广播效率?如何对通信进行有效验证?这些问题都是区块链在通信过程中需要研究的。

(5)区块链的智能合约

最主要的是要研究提供智能合约的计算引擎,通常是虚拟机的技术。这其中包括虚拟机的效率、安全机制、图灵完备性、高级语言编译器、智能合约形式化证明、智能合约的升级、治理机制等。随着区块链3.0应用的需要,还需要研究能够满足人类社会管理所需的、更为复杂的、具有语意功能的复杂应用算法库以及算法组合机制等。

(6)区块链的应用体系

比特币是区块链技术的一个成功应用,但它仅仅是一种虚拟货币支付体系的应用。其实区块链技术还可以应用到社会的各个方面。区块链技术发展可以分成三个阶段:1.0阶段、2.0阶段和3.0阶段。这些在第1章有过讲解,这里不再赘述。

(7)区块链技术标准

一项技术要想实现产业化,形成生态产业链,标准化是其必经之路。区块链技术也不例外。目前区块链技术在国内外尚未形成统一的标准。区块链技术及其具体的应用过程会涉及各种技术标准,逐步开发与区块链相关的技术标准,将有助于实现区块链技术的成熟,从而令它成为一个可以工业化、可以应用到实体经济的、真正意义上的实用技术。