一分钟了解比特币(系列三)|霍格沃茨禁林里上百种不同声音,如何达成“共识”?
假期余额严重不足,我们的“一分钟了解比特币”系列文章也已发布过半。如果在阅读我们的文章当中有什么问题,不妨在公众号下面留言,也许我们以后会推出文章来专门解答你的问题。
通过上一篇文章,我们知道了如何保证财产和信息的安全性、私有性。但是,在没有中央服务器来协调的情况下,怎样才能让每个人都认可他人的账户余额确实是账户持有者说的那么多呢?
让我们回想一下之前10个硬币换一个羊驼的例子:在一个无政府调控的市场里,每个人都随意交换所属物,并将交易记录在册,最终希望各方都互相认可,达成共识。有了区块链,我们就可以勾勒出一个相似的系统,在这个系统中,广泛的群体可以达成共识,并就单一有效的交易历史达成一致意见。那么为了阐述“共识”是什么,我们先要来了解一下整个系统中重要的元素或者说用户“矿工”。
矿工:特殊类型的用户
不不不,我们说的不是这个。不是“白雪矮人和七个小公主”里面那个和黄金相关的“小矮人矿工”。
当然如果对比特币略微熟悉的人们应该已经知道了,矿工并不是所谓早对应黄金“采矿”的矿工。它的定义是:在分类帐中进行记录任务的一群特殊的、经过信任和验证的用户。下次别人再和你提到“挖矿”或者“矿工”的时候,别忘了你要问问他说的到底是哪一个概念。
这个工作并非单独任命给了某一类特殊人群,而是谁想当矿工就可以成为矿工——没错,矿工就是你想当,想当就能当。作为一个商业机会,整个工作过程是开放的。而作为当矿工的基础,一台功能强大的电脑必不可少,维护电脑设备的钱也不能少。
矿工们的目的是通过辛勤努力赚得金钱,但也不是人人都能赚到钱的。和别的生意一样,有些人能抓住机会赚钱,但也有很多人或因为风险太大,或因投资太多,亦或是其他原因放弃了这个机会。
区块链领域的大多数人都知道,矿工会通过高强度计算,来获得新创建的比特币。人们可能会想,为了创造新的比特币,必须以某种方式处理大量的数学公式和计算。
这种误解其实是个普遍现象。之前有一条很受欢迎的推文阐释比特币的游戏规则和奖励机制时是这样写的:“只要让你的汽车7天24小时点火待命,你就能解出一些数独游戏,(而只要解决了一个数独,你就可以用它来)交换一定数量的海洛因。”
这条推文其实是具有误导性的:即一个比特币,在当你解决了谜题之后便具有了价值。其实比特币只是账本上的一个数字。如果总账上的一笔交易说我得到了8个比特币,我直接把这个数字改成9,我就能说自己得到了9个比特币。根本不需要解决什么数独或是谜题。
所以,敲黑板了!挖矿的目的不是为了创造比特币。相反,其目的是执行中央服务器在集中式系统中发出的任务,即处理服务器上每个人的事务并及时更新数据库。新的比特币是完成这项关键任务的奖励。这就好比是为了以一种分散的方式管理数据库而把一切工作都外包给一群自由职业者一样,只不过在这个行业里的支付方式是比特币而已。
同样的,需要大量计算的目的是为了确保矿工们在得到比特币之前把钱用到该用的地方。因此,这些投入的钱也称为“工作证明”。矿工需要用这份“证明”证明他们已经做了一定数量的计算工作。
矿工负责监控网络上发生的所有交易,及时报告并更新信息。这些矿工不是一次在数据库中记录一个事务,而是一次添加数百个被称为“块”的批量事务。因此“区块链”数据库也是一个不断增长的块链。
根据该系统的设计,每十分钟就会有一个块发布。块只能添加,不能修改。每当一个矿工写了一个区块,他们就能把一定数量的新比特币存入自己的账户作为回报。每个矿工还可以从用户那里收取在下个区块进行交易的交易费。比特币客户端会告诉你目前的平均交易费用,这样你就知道其他人花了多少钱。
如果矿工未能及时了解并更新你的交易,那么这就不好办了,相当于你的交易从未发生过。如果真是遇到这种问题,你就得等它在新一轮的10分钟被发现了。(或者尝试给矿工更高的交易费用)
在这种情境下,普通人其实不再需要担心更新账户,而是需要担心更新速度。现在有一群发布者(代表矿工)四处走动,通过记录他们在各账户中了解到的每一笔交易来赚钱。一旦有人做了一笔交易,他们需要告诉别的发布者,而且知道的人越多越好。每隔十分钟,一个发布者就会被选中,然后把更新好的数据(新的账户交易记录)放到网上去,然后分发给市场上所有的成员,这样每个参与的人都会有一个记录。这样一来,每个人的账本记录都是一样的,不会产生共识方面的混乱。
通过使用这个系统,我们可以维护一个一致的、定期更新的账本,只要我们信任发布者且同意一次发布一个新的有效块,那么系统中的每个人都能对此账本达成共识。通过这一公认的系统,发布者或是矿工很容易就能查看有没有人花他们并没有拥有的钱。因为发布者或是矿工可以在账本中查看某人的所有转账,并计算这个人的余额应该是多少。
而且,任何人,包括矿工和发布者,都不能伪造别人的交易,因为交易要想完成就需要交易者本人不可伪造的签名。用户也不必盲目地信任矿工和发布者,因为他们可以自己验证现有的交易。
共识
现在,我们需要弄清楚,我们如何确切地让矿工以及用户对最新区块产生共识。上述系统能阻止花别人钱的行为,但是如果不能达成公平、透明的共识,那么欺骗就可以产生“双花攻击”。
如果不解决这个问题,那么它就有可能阻止数字货币的发展。比特币成功成为第一款去中心化数字货币的原因是,它是第一个解决“双花攻击”的数字货币。在解释此解决方案之前,我们有必要解释清楚“双花攻击”到底是什么。
简单来说,“双花攻击”就是用户所持有的数字资产中的余额,进行多次交易。在不同交易中的花费,双花不会产生新的货币,只能把自己花出去的钱重新拿回来。假设一个矿工可以使一个交易“不发生”即发布这个事务。那么矿工就相当于空手套了一张支票。假设某人账户里有价值200美元的比特币,并有反向交易的想法,他可以花200美元的比特币购买机械键盘,然后通过立即收回交易,并在Xbox上也花200美元比特币。但实际上他只花了200美元就买到了一台Xbox和一个炫酷机械键盘。这样一来,卖键盘的人就成了输家,因为他没有获得任何回报还丢了键盘。
这就是我们需要共识的原因。如果没有这个协议,就会有多个相互矛盾的历史版本,有人可能会利用这一点花一次钱买两种东西。
但是想象一下:你刚刚跌跌撞撞地走进霍格沃茨后面的漆黑、雾蒙蒙的禁林,还丢了你的魔杖,只有一小盏灯笼和微弱的月光帮你照亮。你什么也看不见,只能通过触摸和声音导航。一个声音在雾中呼唤你:”我给你一只魔杖换一枚隐形加隆(魔法世界中的货币单位)。”
在这片危机四伏的森林里,没有魔法能力就如同麻瓜,肯定不能活着出去。而且一只魔杖的价格听起来还算合理,但是对方怎么知道你有一枚隐形加隆并且你确定他有一只魔杖呢?”来,检查一下我的帐本。“对方说,同时一只起皱的手把几张潦草的纸塞进你的灯笼里。你仔细阅读也看到了魔法签名,这些确实好像能够证明账本的真实性了。
突然,禁林中一个声音吼叫到:“这账本是真的!”,紧接着无数声吼叫围绕在你周围 “我在那儿,我看见他拿了我的账本!他的账本看起来像我的!”你不寒而栗,此时你的同学哈利和赫敏和不会来救你。其实你不知道这账本从哪儿来的,你是从别人那里得到它的。你不知道你在和谁说话,因为一个人很容易在数百甚至数千台不同的计算机上运行相同的程序(例如通过云计算平台),所以你不知道你在和多少人说话。
禁林里的故事说明,当一个矿工发布一个新块时,你不知道网络的其他人是否会接受它。对于其他人来讲,他们也不知道它的发布者是否试图欺骗其他人。假如有多人同时发布新的区块怎么办?哪一个区块将得到被认可呢?也许你会想到少数服从多数原则,让大家通过投票来决定哪个新的区块将会成被认可,接下来大家就可以在这个被多数人认可的区块上继续向后发布新的区块,而这一个被认可的区块也就成为了区块链中真实的历史中的一部分。但是你不能投票,因为你根本不知道有多少人参与其中。怎么办呢?
你可以不数人头,而是数电。这就是昂贵的、浪费能源的采矿部分的更高价值所在。所有的矿工需要参加一场游戏,获胜者将获得下一个区块的发行权。谁在这个游戏上花的电越多,谁的获胜概率就越高。获胜的概率大致与输入系统的电量与所有玩家的总电量成正比。
因此,为了更大概率(既51%)从而使你发布的下一个区块得到认可,你需要耗费比单位矿工耗电量的总和还要更多的电力。这很难做到,因为矿工都是来自世界各地的志愿者,他们受单纯的利益吸引而投身其中。也就是说,除非你有着超过系统51%的算力,不然你不可能伪造一个交易记录去产生一个让大家都认可的新的区块。
通过电力投票,实际上就是用金钱投票。这样一来,世界上的每个人都在无形中团结起来对抗骗子。所以,让我们回到丛林中神秘的声音:他们要想有真正的机会欺骗你,他们就需要有比世界上所有巫师加起来更强大,除非他是邓布利多或者是伏地魔,而这显然也是不可能的(因为两位人物都已经在原著中死去)。更有可能的是,他也许真的只是一个卖魔杖的巫师。所以价钱合适而且你又会使用魔杖的话还是赶紧买了,至少从数学层面来说你是安全的。
关于这个浪费电的游戏,上文谈了很多。(挖矿专用,生活中请勿任意模仿、任意浪费电)接下来让我们来探索一下游戏是如何进行的。欢迎继续关注CertiK的长假没剩两天系列文章:每天一分钟,了解比特币(系列四),来了解“哈希函数”。别一听函数就吓跑了,不妨把它想成一个游戏。
了解更多
General Information: info@certik.org
Audit & Partnerships: bd@certik.org
Website: certik.org
Twitter: @certik.org
Telegram: t.me/certik.org
Medium:medium.com/certik
币乎:bihu.com/people/1093109
往期回顾
请点击“阅读原文”访问CertiK官网