经济激励:挖矿
有了这几个规则后,我们似乎可以松口气了:这么变态的考试,也算也有点眉目了。可深究下去后,却会发现大家很容易陷入“三个和尚没水喝”的地步:
- 既然最后的大家的总分是一样的,我干嘛要辛苦的在那里写单词掷骰子,直接等别人的答案不就好了嘛?
对应到比特币系统中就是:既然记账给大家带不来任何的好处,为什么我要参与到这个活动中来?
为了给记账人足够的动力,比特币系统引入了经济激励:
- 记账人在自己打包区块时,可以凭空向区块中添加一笔交易。这笔交易没有付款方,收款方就是“记账人”自己。
- 每个人在发起一笔交易时,需要指定一笔交易费给记账人。交易费从付款方帐号里扣除,额度由付款方指定。如果记账人收到的交易太多,他有权只选择部分交易打包成区块再发送。而理性的记账人,肯定会选择交易费多的交易。所以交易费越高,越有助于交易在所有节点间完成传播,也就是越有助于转帐的完成。
有了经济激励的规则后,区块的结构如下所示:
值得一提的是,对于正常的转账交易而言,付款方只要说明付多少交易费即可,而交易费的收款方是谁,要打包区块的记账人自己去填写。对于交易内容中的那笔奖励也是如此。因为记账人有了给自己增加余额的动力,所以他也会积极的参与到记账的过程中来。也是因为这个原因,记账人争抢记账权参与记账的行为,叫做“挖矿”。
工作量证明(PoW)
尽管经济激励给了记账人十足的参与动力,但也引入了更大的问题:记账人为什么要按照之前约定好的规则办事?毕竟是货真价实的额度奖励,大家实在没有任何理由不去践踏任何一处规则。而如果把规则看一遍的话,我们也的确会发现不少让人忍不住想破坏的地方:
-
规则一:传播区块前掷骰子。
如果掷骰子全靠自觉,我为啥要老老实实干这么一件事?
-
规则二:将若干交易打包成一个大小合理的区块后再传播。
因为验证交易的成本相对掷骰子而言可以忽略不计,所以如果对一个区块中交易的个数不做限制的话,记账人可能会倾向于填非常多的交易进来。对比特币系统而言,一个区块打包多少交易并不是非黑即白的原则性问题。只不过是太大的区块会降低区块的传播效率,影响体验。所以系统会给出一个上限。这里的悖论是如何让各个记账人遵循这个上限。
-
规则三:优先验证和传播别人的区块。
验证和传播别人的区块,就是在为他人做嫁衣裳,我为什么不埋着头打包自己的区块,而对它的东西置之不理?此外,我可不可以把别人区块中的内容给改了,比如把奖励算到我头上?
-
规则四:先到先得。
我为什么要听话?我可不可以只帮自己,或者只帮熟人?
-
规则五:选择最长链。
我就无视别人的最长链又如何?哪怕选最长链,我能不能把里面的内容给篡改了?
在分析这些悖论时,我们大概可以分为三类:
- 怎样去监督一个记账人,让他别在某些环节上弄虚作假。如跳过掷骰子环节,或者胡乱打包些不合法的区块。
- 当需要一个区块的传播者做决策时,怎样说服他,让他别耍小性子。如置别人区块于不理,置最长链于不理。
- 对于传播中的区块,以及账本中的其他区块,怎么保证不能轻易的被别人篡改掉?
对于这三类问题,比特币其实运用了三种手段来分别进行应对:
- 首先,比特币让参与者对他人进行检查和监督,杜绝非法消息在系统中的传播,从而将个人的作恶行为排斥在群体之外。不过,这种监督手段依赖于一个基本的假设:系统中还是诚实的节点多。如果大多数的群体开始串通来干一些坏事,那么比特币系统就无法公平可信的运行下去了。
- 其次,通过一些手段的引入,比特币会让参与者相信:帮助别人,是对自己更有利的。
- 再次,如果某些个体想伪造一个新的区块或者账本出来,需要非常大的成本。
不过,首先需要承认的是,这三种反制手段,是我依照对系统的理解YY出来的。真正在比特币中,并没有“兵来将挡水来土掩”的明确界限;更多的,几个朴素的手段集合起来,开始发挥巨大的威力。这颇有一些“生态化反”的味道——貌似有奇怪的东西乱入了,抱歉没想到更合适的词语——也正是因为这个原因,个人觉得比特币这个系统理解起来会有些难。
在这些技术手段中,前面也介绍了一些了:依靠人群(p2p网络)、数字签名、数字摘要。这里继续介绍让大家毁誉参半的另一个手段:工作量证明。
直观来看,工作量证明的引入,是为了解决“记账人偷偷不掷骰子”这一问题的。
我们前面说过,记账人在打包区块时,需要生成数字摘要来作为区块的编号;打包完成后,开始进行掷骰子的工作。而工作量证明,通过把这两步合二为一,保证了掷骰子的工作不能被跳过。具体操作方法非常简单:系统强制规定,区块内容所生成的数字摘要,必须得满足首位必须为0。
回想数字摘要的定义我们可知,一旦区块中记录的内容确定,那么其数字摘要也就确定了。所以某一区块的摘要究竟是0-9哪个数字,完全得看运气。为了保证记账人可以得到满足要求的摘要,比特币系统为每个区块额外预留了一个数字字段,专门用来让记账人调整区块的内容:
从另一个角度看,尽管记账人可以通过尝试满足需求,但这种尝试也仅仅只能是没有规律的撞大运,而决计不能遵从一定的规律把字段给快速找出来。整个过程,就是另一种形式的掷骰子。
记账人在生成满足需求的区块账单后,就开始向别人传送自己的区块。对于记账人有没有按规则“掷骰子”,接收者可以轻松验证:他只要把区块内容重新生成数字摘要即可。如果内容和记账人给出的摘要一致,就说明为了得出这个区块,记账人是辛苦做过数字调整的工作的。而只有这样的区块,才有可能被消息的接受人进一步广播。
如果接着用考试的例子来类比,工作量证明的过程有点像我们给每页笔记后加了一道方程求解的附加题。由于知识有限,我们在解方程上只能采用试答案这种笨办法。在答案算好后,别人却可以轻而易举的把未知数的解代入方程,来验证答案是否正确。
那么收到别人区块的验证方,可以偷偷把区块的奖励据为己有吗?显而易见也是不可以的:篡改了区块内容,就会使得原来的数字摘要失效。为了得到新的摘要,验证方也只能费心费力跑一遍工作量证明。篡改埋得较深的区块难度就更大了:篡改方需要对链上所有区块都各跑一遍工作量证明。否则,这些非法的区块是不会被系统中的其他成员接受的。
而对于其他的生成非法区块的操作,如朝自己账户多加钱,或者打包太多的区块等,也是不会为大家所容的。总而言之,通过工作量证明和互相监督,弄虚作假出来的数据是无法在系统中流转的。
剩下的另一个问题就是:传播者不去传播区块又如何?乍一想,这似乎非常有可能,因为自己的区块也已经“掷了一会儿骰子了”,从概率上来说大概也快有结果了。但如果放眼整个系统,情况似乎就有些微妙了:
- 如果大部分人都老老实实遵守规则传播区块,那么很显然,自己无视掉的这个区块很快会在别人那里达成一致,按照先到先得的规则,自己投入的精力会付诸东流。
- 如果大部分人都怀着这种鬼胎,那么即便是自己辛苦计算出来的区块,也很有肯能广播不出去。在这种情况下,还不如什么都不做,这样还能节省一些计算资源。可如果真什么都不做的话,就把这个系统中记账的机会让给别人了。
所以,比特币的核心逻辑就在这里:你是否相信这个分散的记账方式,并且愿意去争抢里面的记账权?如果相信,那么遵守游戏规则,当一个诚实的传播者,对你而言好处最大。如果不相信,你干嘛还要在这里参与记账?
是不是非常的奇妙:每个人为了自己的利益,然后成了系统中诚实的那一环。但这个奇妙的设计是带来了惨痛的代价的:大家不得不浪费着巨量的电力去进行着无意义的掷骰子。这也是比特币系统广受人诟病的一点。区块链世界的很多后继者们,也尝试着在利用其他手段,如PoS、DPoS等,来替换掉比特币的PoW。
可调难度的PoW
引入经济激励后,整个系统的参与人员就会变得庞大起来。但参与人员变多后,又会使得大家在产生区块时发生冲突的概率变大,从而影响最后账本一致性的达成。为了解决这一问题,比特币系统会自发的调整“掷骰子”的难度:
一旦每个节点发现最近若干个区块产生的速度比预期速度要快,就会认为系统中参与成员增多了。在这种情况下,各个节点会自发对数字摘要的格式要求变严苛:比如说最开始需要第一个数字必须为0,后面可以逐渐调整到前两个或者前三个数字为0。总而言之,各个节点会试着调整难度,使得系统生成区块的速度控制在10分钟一个左右。
为了满足统计区块生成速度和控制难度的需求,比特币的每个区块又额外引入了两个字段:
- 当前生成区块的难度值说明
- 区块的生成时间
难度的增加,也意味着成功产生区块所花费的电力成本越来越多。从这个角度看:如果想持续吸引记账节点参与进来,就必须得保持记账带来收益的增加。
那比特币系统的记账收益会持续增加吗?我们从收益的两方面来回答这个问题:奖励和交易费。
对于交易费而言,虽然系统从未规定过交易费额度的多少,但是在系统发展壮大的阶段,交易费一定会随着交易成本的提高而提高,但到了一定的阈值后,反过来又会抑制系统的进一步繁荣。所以到最后,交易费带来的收入一定会趋于稳定。
而对于系统的奖励,也可能会让我们失望:比特币系统的奖励是逐渐减少的。在最开始的21万个区块中,每个记账人可以给自己的余额增加50;第二个21万区间中,减半到25个;此后,以21万为区间每次都减半;最后直到0。如果任何一个记账人不按照这个规则给自己增加余额,那么它的区块就不会被别人接受。
换句话说,如果我们不主动朝系统中充钱的话,比特币账本中的余额总量会有一个上限。
再谈经济激励:铸币
内容写到现在,我相信看的每个人都会开始对比特币这个怪异的系统开始产生疑惑:
- 记账人可以凭空产生余额发给自己的行为,不管怎么看都觉得有些别扭
- 我们可以朝系统中充钱吗?如果它只是一个像支付宝一样的平台,为什么不能对接银行卡充钱呢?在不能充钱的前提下,上一节谈到的总量有上限,又意味着什么?
“凭空产生比特币”之所以别扭,是因为它和我们见过的任何交易平台都不同。无论支付宝也好,银行也罢,从来没有任何一种方式允许大家“凭空”增加自己的余额。那些通过技术手段增加自己账户余额的人,都是要送到监狱里进行改造的。在传统的经济世界里,我们想增加自己的账户余额,只能是通过劳动:要么挣现金,要么别人给我们转账。而别人手里的钱,也都是这么来的。细细追下去,能凭空产生钱的机构只有一个:那就是政府。
如果仅把比特币系统类比成一个转账平台的话,那么很自然也只能有转账和挣交易费的功能。但是当别人给你转账时,他的余额又是从哪里来的呢?仔细追朔下去,你会发现,如果这个系统是从一个空账本开始的:大家的初始余额都是0。没有余额,转账行为是无法运转下去的。
所以这就回到了我们的第二个问题:我们可以朝里面充钱吗?仔细一想的话,充钱似乎也不合理:当比特币的余额增加一个单位时,我们究竟指的是人民币,还是美元,还是什么其他的币种?
再退一步讲,就按一块钱一比特币的汇率存,我又该找谁存呢?我该如何说服大家:请大家给我的比特币账户增加一块,我会自觉的销毁一块人民币。(另外,私毁人民币犯法)
这些问题的存在,使得比特币必须得有一种“在系统内部创造余额”的机制。而前面说的“记账人凭空创造交易产生余额”,就给了比特币系统这种机制。而这一机制的设计者,为比特币赋予了总量有限的额度。
有了这种机制后,比特币就不再是一个纯粹的转账平台,而是一个独立的“价值及其所有权”的体系,体系内的余额和任何货币都不在同一个维度。如果大家都把这个余额当成价值的等价交换物,那它就是一个全新的货币;如果大家都并不这么看它,那它就什么都不是。从这种意义来看,比特币和黄金非常像,它是一个独立维度的、总量有限的价值标的物。所以在很多文章里,大家都把比特币叫做“数字黄金”。
至于为什么要给比特币的总额度设定上限,就已经部分超出本文的讨论范畴了。如果仅从挖矿的角度来看,收益的持续走低必然会使得参与的人数趋于一个稳定的个数,而不会持续膨胀下去。所带来的好处是:资源的消耗,终归是会有上限的。而从货币的角度看,比特币是不是蕴含了更深层次的理念,各位就见仁见智吧。
隐私性
最后来谈谈比特币系统的隐私性。
前面也说过,大家在比特币系统中的账号地址仅仅是一段公钥数字串,而和个人的身份特征没有任何关系。所以,只要不向别人透露“那个公钥是我的”,那么你记录在比特币中的财富就不会为人所知。
但在现实中,这是绝无可能的。伴随着交易,你的账户地址难免会和你本人对应起来:当你需要给一个人转账时,你就需要另一个人的账号;当你收一笔账款时,你也得私下把付款账号和付款人对应起来。更进一步看,如果你开个店,你把账号二维码一贴,别人不仅仅能查到你账上的余额,连你所有的交易细节都可以查的清清楚楚的。
在比特币系统中,可以通过使用“更换账户地址”的方式来规避这个问题:每次进行交易的时候,你都把旧帐号里面的钱转光,扣掉交易本身和交易费,剩下的钱你都转到一个或多个新的账号中去。对于收款,也可以采取些类似的做法把钱转走。
这种手段的确可以防止自己的账户余额被泄露。而对于一个账号的收入流水,似乎就有些无能为力了。
区块链到底代表了什么
在把身份认证、一致性、隐私性三个方面说完后,对比特币的介绍也算可以告一段落了。在讲了比特币怎么运作后,我很想就自己的见解谈谈支撑比特币系统的区块链到底代表了什么。
如果看网上其他对区块链描述的文章,最常用的词汇就是“传递了价值”。我本人对这一说辞是感到极度疑惑的。这几个人让人越看越摸不着头脑的词,也只有“生态化反”可以与之媲美了。其实回到区块链本身来看,它就是一个转账平台。那么转账平台有什么意义呢:登记和转移一个人对一件事物的所有权。所以从这个角度看,区块链传递的是某种事物的所有权。而在比特币系统中,这个事物是“一串数字”,我们人为的为这串数字赋予了等价交换物的特性,就像我们对待“黄金”这种金属一样。
然后继续扩散下去,如果你为区块链账本里记录的数字赋予其他的意义:比如房产、专利、版权、或者其他假的猫猫狗狗,那么区块链就可以变成另外一种账本。上面讲过的那套维持比特币账本一致的规则,就可以转过来维持其他事物所有权的账本一致。
想起来很简单,可实际中还是存在问题的:
- 你在转移房产的时候,你的房产不能分割出一部分来给矿工当激励用
- 在比特币中存钱非常难做,所以比特币极其取巧的选择了自己“铸币”的道路。但对于房产而言,我们在不借助外力的前提下,如何把所有权给造出来?
第一个问题其实不难解决:只要在你的账本里也引入“货币”的概念就好了。
- 你一个账号下可以保存多个事物的所有权,把里面的钱“分给”记账人,顺带在账本里把“房子”转给你的接收者。这就像你去房管局花了一笔手续费,把房子送给别人一样。
- 也可以存在另一种方式。别人把“钱”转给你,也负责交手续费。记账人在确认这笔交易的同时,把你账号下的“房子”记到付款方那里。这就像房屋的买卖过程一样。
所以从这里大概能看到区块链的一些用途:因为它可以把“转账”和“所有权转移”结合到一起,所以理论上可以把一些交易直接搬到区块链上来。
但如果真想这么干的话,上面我们提到的第二个问题就会冒出来:在最初阶段,怎样把一个现实事物的所有权变到链上去?如果要解决这个问题,我们可能就又得回到“信得过的第三方机构”这条老路上去。悖论就此产生:我们既然在“数据上链”这个步骤上离不了第三方机构,为什么偏偏要在交易环节再把它干掉呢?
那有没有什么事物,无需在真实世界中确认,直接在互联网的世界中创造就可以呢?的确也有:
- 比如说论文、专利,在你写到网上的那一刻,它就属于你了,不需要任何人去确认。
- 再比如其他数字内容的创作:书籍、音乐、照片、影视作品。
- 再比如你可以胡乱创造一些的数字,只要能说服别人相信它有用就行了(没错,这里说的就是各种ICO,各种养猫养狗)
而这些事物记到区块链上有意义吗?部分的确有:比如专利申请。现在想申请专利,得到各国的专利局挨个申请一遍。如果能统一记到区块链上,那么注册和转让就会简单多了。至于侵权的取证,把区块链作为一个取证平台就行了。从这个意义上来讲,区块链相当于用“统一的形式”取代了各种冗余的第三方平台。
然而还是得清醒的看到,区块链这一事物是否真的能在一些领域取代现有的形式并发挥作用,还是一个很大的未知数。
一方面来说,技术上还有很多不完善的地方:
- 当把大量的需求都搬到区块链上时,每个记账人都容易产生算不过来也存不下的问题。
- 交易的确认速度缓慢
- 程序升级困难
而从另一方面来看,更多的困难还在非技术层面。毕竟最不确定的因素,还是“人”。
(全文完)