|
第一章 账单
第一章第一节 撕纸游戏
比特币本质上是一个广播和管理账单的系统。也许有点让人难以相信的是,每个标准客户端都保存有有史以来每一笔帐单。而且没有任何特殊结点(服务器),因而称之为去中心化的点对点系统。
很显然帐单必须唯一,那么在一个点对点的系统中如何能做到这一点呢?想像100个互不信任的人住在一个小岛上,他们没有物理货币,只能相互给账面上钱,并且每给一笔都喊一句让所有人知道。如果他们每人都可以记帐,显然就乱套了:当两个人的帐单对不上号怎么办?如果由一个指定的人来记帐,那他又有可能以权谋私。
比特币怎么解决这个问提?每个人都可以记帐,把每一笔交易都记在一张牛皮纸上,签个名。那么,谁的牛皮纸算数呢?很简单,所有人都得把这张纸撕成等面积的两半,让误差小于一定值,比如0.1%。如果满足这个条件,那么你的就被大家认可,每人复印一份拿回家。什么?你撕完了发现误差是0.100001%?对不起,大侠请重新来过。为什么要撕纸呢,因为纸一分为二形成的那一条线,是独一无二的,具备了防伪的功能。而撕成误差极小的两半,是有“难度”的,没有难度无法成为游戏。
没事干玩撕纸游戏干嘛?因为大家约定,每个人都可以在帐单上添一笔,说“比特岛公共基金给本人25元”。你的账单被判为有效的话,你就得到了这25元。这个撕纸游戏就叫挖矿,因为游戏过程就像淘金一样。
比特币的挖矿就是用电脑来进行这种撕纸撞大运的游戏,当前的数据是全络“撕”61,000,000,000,000次每秒,换句话说大概每61,000,000,000,000 x 600 次尝试产生一个幸运儿。无疑这需要巨大的硬件和能源,但是如你现在所知,这是维持比特币这个金融系统必须付出的成本,而不是所谓的“纯粹浪费资源”。要明白现实中的金融系统要比这个昂贵得多,一个银行客服的成本相当于多少台电脑?
第一章第二节 账单链
所有的有效账单组合在一起,才能成为完整的账单。怎么做到这一点呢?每一份账单都把前一份账单缩小成1/10,贴在自己的角落上,换句话说每个账单都知道上个账单是哪个,一个链就形成了。这对玩记账游戏的人有产生问题了:假如第123份账单生成好了,A和B都拿这个作为前一个节点,记账,撕纸,然后他们几乎同时撕出了符合要求的账单怎么办?那个稍微慢一点点的(假定是B)怎么甘心认输呢?方法很简单:大众只认最长的那一条链。所以,当一个新账单生成并被广播时,每个玩家会立即放弃当前这一局游戏,拿到最新的账单缩小成1/10,贴在自己的新的一张账单的角落上,开始下一轮游戏。否则就算你撕出了合法的账单,也会被孤立,变得无效。
明白B是怎么被淘汰的了吗?想象这样一个有趣的无限接力赛游戏:环形赛道,每一棒一圈,每圈跑完以后你就把棒子插到一个“下一代接力棒生成器”中,生成一大堆下一代接力棒供下一棒的选手们使用。只要你的棒子的下一代被大多数人使用,你就为这一轮的胜者。显然下一棒的选手们会去拿最早生成的新一代棒子,因而其他的上一棒的选手会自动就放弃。哪怕是由于惯性B也跑到交棒点,然后顺手把棒子插到一个“下一代接力棒生成器”中,也是徒劳的。因为大家都已经跑了,再也没人理会你的接力棒了。
但是如果真的有两个人同时跑到终点怎么办?那也没关系,下一轮就会有拿着两种棒子的人跑了。平局的这一轮两个人如何决胜?你应该也已经想到,“我不比你快,我儿子比你快就行”。在现实挖矿中,这种两种棒子同时跑的现象是十分常见的,所以矿工每隔一段时间就要经历一次“空欢喜”。具体可见Orphaned Blocks。
第一章第三节 游戏规则
记账是个日常事务,所以矿工每时每刻都在试图制造合法的账单。那么假如我希望每天一份账单就好,但是这些矿工技术越来越好,玩的人越来越多了怎么办呢?没关系,如果账单生成得太快,就提高误差要求,反之降低要求,以达到动态平衡。比特币的控制目标是十分钟一个账单,就是传说中的一个”Block”.
怎么保证没有人伪造账单呢?答案是不能100%保证,但是伪造非常困难。由于账单链的存在,伪造一份账单必须把从这份账单以后的所有账单全部伪造一遍。否则,比如你伪造的是第123份,大众拿手里的第124份的复印件中的第123份的缩略图一对比,会发现撕纸的痕迹不一样。因而拒绝承认你的合法性。你也无法直接窜改那牛皮纸,因为撕纸游戏规定一旦有改动,该纸立即作废。因而那个被大众所承认的账单链代表的,其实是历史上所有的最高效的撕纸生产力的总和。你要推翻它就必须拿出比这个更大的生产力伪造一条新的更长账单链,然后指鹿为马说,你这条链才是合法的,因为大众只认可最长的那一条。
注意,这不是不可能。现实中新一代矿机的制造商完全有这样的能力,因为他们的生产力是别人的成百上千倍,再加上规模化制造矿机,这个是很容易实现的。但问题是很显然这背离了他们的利益,这会是对他们自己赖以赚钱的平台的核心机制毁灭性打击,所以这种事情是不会发生的。
如果对这个还是不放心的话,其实已经有修补这个漏洞的方案,只不过似乎目前并未实施。
第一章第四节 2100万
如同很多人知道斯诺克满分是147一样,很多人最先了解到比特币的信息之一便是,比特币总数上限是2100万。对普通人来说,这就是最大的卖点。而这又是如何实现的呢?其实这个上限就是前面提到的比特岛公共基金的总量,通过撕纸游戏分配给获胜者。显然总有一天是要坐吃山空的,怎么办呢?两个办法。一是往后拖:每四年撕纸的奖励减半,09年还奖励50呢,如今13年就只有25了。这么玩要玩到下个世纪才算瓜分完。二是伸手要:假如你给别人钱的同时,给记账的一点小费,别人就优先给你记账,你的交易就较早第得到确认。原作者的假设是,到最后矿工只通过小费获得收益。
这里面隐藏的一个重要的信息是,比特岛公共基金是通过这个游戏做了另外一件非常重要的事,把钱分发出去的。发现了吧,记账和分发货币,这两个最基本的工作,就是由这个巧妙的游戏完成的。 |
|