转载自:http://www.ftchinese.com/story/001076223?page=1
李洋:在一个互不认识、没有中心、缺乏互信的环境里,大家只需要在最长的区块链上工作,就能保证系统信息的真实性,这就是“工作量证明”机制。
“以开放的心态看待科技,以理性的心态看待市场。”跌宕起伏的比特币,扑朔迷离的ICO,给本就聒噪的年末增添了不少科技的新鲜与错失的焦虑。
打着“去中心化”招牌的区块链技术,很多人觉得懂,又说不清楚;很多人感觉跟自己相关,又不知何从入手;很多人觉得这里蕴藏极大机会,又觉得风险也极大,荷兰郁金香的质疑不绝于耳。比特币到底是什么?区块链是如何“绕过”中心的?无论最后成败,了解区块链到底是什么以及它的基本原理是有必要的。不能总是用概念充当解释,用情怀预测市场。基于此,本文试图用最通俗易懂的语言来聊聊为什么比特币的正常流转需要“挖矿”,为何确认一笔比特币交易需要几十分钟和消耗电量几百度以上。这也就是Proof-Of-Work(“工作量证明”)——让区块链能够去掉中心机构的核心机制。
区块链是一种技术,比特币是该技术的一个明星级应用。 与支付宝、微信支付类似,比特币属于互联网支付,不需纸钞也没有摸得着的真金白银。但微信和支付宝处理的是人民币,是*发行的法定货币,代表民众对权力机构的信任。而比特币是去中心化的虚拟“货币”,背后完全没有国家、机构或法律背书,完全是参与者的集体管理。那问题来了,信任从何而来?一个在阿根廷的比特币持有者给一个身在贵州的买家汇去三个比特币,这个贵州人不认识这个阿根廷人,为什么相信他发了三个币,而不是一个币?为什么相信他的账户里增加的三个币正好是阿根廷人账户里减少的三个币。既然没有一家银行管理和处理交易,我们又怎能相信比特币不是互联网虚拟世界里凭空产生、可被人随意改动的一堆数字?
比特币的惊叹之处正在于此,它用区块链技术为上述问题给出答案,达成Trustless Consensus“无信任的共识”——比特币用户之间无需互相认识和信任即可正常交易(但也因此在全球范围内浪费了巨大的电力资源)。与银行处理汇款收款类似,比特币系统有一本账,记录了比特币用户的账户信息(账户里有多少币)和交易情况(谁给谁在什么时候汇了多少币)。为给自己牟利,账本管理人有可能在这本账上做手脚,比如往自己相关的账户里凭空增加几个币,反正都是些电脑上的数字。更何况,比特币用户都是匿名的,这让作假的成本又一次降低。作为防备,比特币系统给这本账做了很多份拷贝,将他们分散给全球成千上万的比特币“记账人”保存。 记账人也被称为“矿工”,本身也是比特币用户。他们之间没有老大,没有中心,只是互联网上一个个节点。他们负责管理手上这本记录了比特币2009年出现至今所有汇款记录的账本拷贝。当有新的汇款请求出现,比特币系统在全球范围内按一定概率随机选择一个记账人,让他验证这笔交易并为之记账,然后把更新的账本“广播”给其他记账人。这个被选中的记账人也因此获得一定的记账报酬。
这种分布式的账本优势很明显。即使你篡改了其中一本或几本账本拷贝,全球范围内还有成千上万的真实账本拷贝在别人手中你没法改。然而实际情况远没有这么简单。心怀不轨的记账人总会琢磨怎么篡改手上这本账并且让其他记账人接受这本账来为自己获利。试想一下,如果账本有分歧,有两本账在网络里被广播的时候,其他记账人到底该相信哪本账?没有中心机构作比对,善良的我甚至不知道我手上这本账是不是那本真的账。少数服从多数的原则在这个虚拟世界里是不管用的,因为坏人总可以在网络里注册足够多的记账人账号来形成大多数优势。即使提高注册成本也无济于事,因为注册成本只是固定性投入。如果账本有风险,用户又怎能放心持有和使用比特币呢?
保持分散的账本拷贝的内容一致,防止恶意篡改,不能像共享单车那样依靠情怀,只能依靠提高成本,提高做假账的成本。我们先说一下比特币账本的长相。每个记账人手上的账本拷贝是一个由很多“小账本”按时间顺序串接而成的(如下图)。
每个小账本在内存里的大小为1M,可记录约两千条比特币汇款信息。最关键的是,每个小账本上有个类似猜数字的“谜语”,它的谜面由上一个小账本的谜底和这个小账本的两千条汇款信息共同组成,而这个小账本的谜底又成为下一个小账本谜面的组成部分。这样的谜面和谜底,环环相扣,把多个小账本连接成一个链条。小账本也被称为区块,如上述方式连接成区块链。
猜这个谜语特别无聊,就是在“凑数字”。凑对的可能性及小,需要计算机尝试许多遍。全球范围内的记账人,不停地用手上最强的计算机来猜这个谜语。而最快猜对新的小账本谜底的记账人,就能给待处理的两千条汇款信息记账,并将更新的账本链条广播给其他记账人。别的记账人虽没猜对,但他们很容易验证广播来的账本是否猜对(这是密码学的成熟技术)。之后所有记账人用这个新账本链条替换他们手上的老账本链条,然后接着猜下一个小账本的谜语。前面说过,记账是有报酬的(包括汇款的手续费和新发的12.5个比特币奖励),因此记账人会尽可能加强手中的运算能力来加大最快猜对谜语的可能性。有趣的是,无论全球范围内记账人投入的计算资源有多少,比特币系统会自动提高或降低猜谜语的难度,把最快猜对谜语的时间维持在“十分钟”左右。换句话说,用比特币交易,最快也要等十分钟才能得到确认。
这样链条式的账本和猜谜语的记账方式是如何防止账本篡改的呢?假如当前链条上最新一个小账本是上图的013,而一个心怀不轨的记账人要篡改011上的交易记录为自己牟利。一旦011的账本信息被改动,这个小账本的谜面就变了,之前猜对的谜底就变成了错的,这个记账人必须重新猜这个小账本的数字谜底。猜对以后,下一个小账本012的谜面跟着变了,他又得猜。然后下一个小账本013的谜面也变了,还得接着猜。当他猜完三个小账本,至少三十分钟过去了,这期间发生了什么?这期间其他记账人手上的账本链条早已变长,新的小账本014、015、016等已经产生,而这个使坏的记账人手中的账本长度再也赶不上网络里的那本账。有同学说,他能否用两台电脑,一边猜之前小账本的谜底,一边猜新出现小账本的谜底,两边都不耽误?当然不行。因为这些小账本的谜面和谜底是前后关联、环环相扣的。所以,从自身利益出发,这个记账人还是从良比较好,争取为新交易记账获得记账报酬,而不是得不偿失地篡改历史账本。而当网络里有两本不同的账被广播时,记账人们只需接受最长的那本账即可,因为最长的链条对应的工作量(计算量)付出最大。
上面所说的记账过程就是比特币的运作过程。 那一个个小账本,就是“区块”。它们串接而成的人手一份的链条账本,便是“区块链”。那成千上万的记账人,就是俗称的“矿工”。所谓“挖矿”,无非是每个记账人用最好最多的计算机来猜数字谜语,用设备和电量消耗来证明自己的账本正确。在网络的计算资源相对分散的情况下,大家只需要在最长的区块链上工作,就能保证系统信息的真实性。换句话说,在一个互不认识、没有中心、缺乏互信的环境里,我们只能相信付出成本最大的信息记录,这就是题目中提到的“工作量证明”机制。
到现在,大家可能理解了区块链是如何做到去中心化的。没有中心机构的权威背书,区块链系统一方面提供报酬鼓励记账人参与记账,另一方面通过记账人之间的资源消耗竞赛来提高作假成本、确保账本真实性。记账人(矿工)之间为获得比特币报酬而争夺“记账权”。只要比特币兑美元价格被市场抬高,矿工群体就有动力去增添计算设备和消耗更多电量来竞争记账(挖矿)。因而区块链网络里记账所消耗的电量与比特币价格成正比。这就是为什么在当前的比特币高价之下,确认一笔交易需要耗电至少五百度以上(全球的记账人为竞争这笔交易记账权所消耗的总电量,而且是保守估计),耗时也至少几十分钟(因为每十分钟最多确认两千条交易)。这远远超过了在支付宝或微信上做一笔支付所需要的边际电量与时间。天下没有免费的午餐,这就是区块链为了去中心化、为了信息可追溯所付出的最起码的“代价”。