编者按:比特币越来越火,但是它到底如何运作却成了许多人的困惑点。本文作者Tess Rinearson在“Making Money Trustworthy-Bitcoin Explained (with Emoji), Part 2”一文中生动地讲述了比特币之所以运作的两大数据逻辑,十分简单易懂。
在上一篇文章中,我们了解了比特币是一种去中心化货币,不由任何政府或金融机构产生或拥有,并了解了散列法的原则。在这篇文章中,我们将学习比特币开矿者如何使用散列法赚钱,以及加密技术如何让比特币变得可信、独特和不可复制,它们是完全可以转移的。
与美元一样,比特币的价值也在波动。但是即使价值发生波动,人们也选择相信货币。当美元得到黄金的支持,人们因其可以兑换成贵重金属而相信它。如今,人们信任美元很大程度是因为美国政府的信誉,他们信任政府会支持银行。
比特币系统被设计成高度信赖的样子,但却并非因为黄金或政府。相反,它依赖于数学,具体来说,依赖于两种技术的巧妙运用:散列法和公钥加密。
散列法&比特币的区块链
区块链是每次比特币交易的公开账簿。它是一个区块序列,每个区块包含一组比特币交易。你可以将区块链视为由一系列包裹组成,每个包裹里面包含有大约10分钟内发生的交易信息。
或者你可以把这些包裹彼此堆叠起来,其中最早期的操作事务位于底部,而最近发生的包裹位于顶部。而那些堆叠式存放的包裹则极易被破坏,从而使得干涉行为容易被发现。
每一个区块都拥有一个独特的散列,以一个非常大的数字(十六进制)的形式作为一个官方字符串来表示一个“指纹”。其中一个区块的散列可能是“e95b0ac78cb961d0”。
为了让我们的说明更加简单和概念化,我会用表情符号代替一长串数字来表示某一散列。我们把第一个区块散列比作一个足球,第二个区块散列比作一条鱿鱼,第三个区块散列比作一把伞。那么,这个区块链用表情式散列表示时,展示如下:
假如我的朋友伊丽莎白给了我价值5美元的比特币,我想把它给你。当我这样做时,交易将与其他众多交易一起形成一个区块并归入进整个链条上。每个链条中的区块知道其在序列中的位置,因为它包含有前面出现的区块的散列。换句话说,第三个区块不仅包含有一组交易信息,它同时含有前一个区块的散列值。
想象一下,比特币系统刚刚完成三个区块的散列(生成那个雨伞区块链的散列值)。如果我付给你5美元,那么下一个区块就会记录下我们的交易。而这个新生成的区块,此时还没有生成散列值。目前结果是什么仍不得而知。
这就是有趣之处。智能电脑会叫“矿工们”将第四个区块添加到区块链上。第一个成功获得新区块散列值的矿工是胜利者,它的所有者将获得12.5个全新比特币作为奖励(未来这一奖励数量会减少)。
这就是财富被“开矿”出来的过程。一旦一个散列值被成功挖掘,它就会被迅速地分配给其他矿工,他们会对其验证并将其添加到自己的区块链副本中,然后为区块链的新区块寻找散列值的又一轮比赛就会开始。
散列法非常容易。笔记本电脑能在一秒内找到数千个散列值。
但是在比特币的世界里,成功找到一个复合条件的散列值平均需要花费为此竞争的矿工们10分钟的时间,因为并非每一个散列值都会有效。比特币系统所要求的散列值比其他所有可能找到的散列值要小得多,这使得找到一个可接受的散列值十分繁琐。
矿工们想要找到一个小散列值,唯一的办法就是进行一遍遍地尝试。每一次尝试都必须不同,并且矿工们不能改变他们寻找的方式,但是能够稍微改变他们所寻到的结果。
矿工们在一个叫“随机数(nonce)”的帮助下做到这些,它像我在前一篇文章中提到的一只小狗眼睛上方的单像素黑跳蚤。
想象一下,添加一个由小狗照片的散列值所产生的单像素绝非平常之事,因为在获得散列值之前轻微改变这个数字化内容就会产生完全不可预知的结果。
一个随机数代表一个大胆猜测,它是在不断试错的基础上寻找能添加到区块链上的数值,并因其能够生成最终散列而成功。矿工们将前面所有的交易信息促成一个新区块,再加上之前区块上的散列值,再加上随机数,然后见证结果。每个矿工尝试不同的随机数,并希望有一个能够成功合并到区块中,使这个区块散列出一个合适的小数值。事实上,成功的矿工可能尝试过数百万种不同的数值。
这段时间以来,通常在某矿工成功找到合适的散列值之前,整个比特币系统内会进行千万亿次尝试。由于计算机的强大,以及矿工人数的增加,每10分钟左右就会有一个赢家。(如果平均挖矿时间下降到10分钟以下,比特币系统就会自动让目标值变得更小,从而使寻找过程变得更为复杂。)
黄金因其为一种珍贵的金属而具有价值,获胜的散列值则因其是一串珍贵的数字而获得价值,它的价值在于它的质量(小数值)而使其极其稀有。矿工们在黑暗中聚集起大量石块,并且希望自己成为第一个撞到数字的人,这个数字会产生一个符合比特币系统严格要求的散列。举例来说,这个要求可能是小于e95b0acc32ac的散列。那些成功的挖矿者的策略是用足够强大的计算机进行大量猜测。
比特币世界要求散列值低于一定的大小,让我们继续用表情符号进行说明,假设约束设置更友好,比如,散列值必须是一种动物。经过尝试,矿工们的结果可能如下:
只有一种结果符合约束条件:既不是樱花,也不是梨子,而是一只海豚。
因为第二名矿工找到了正确的散列值,因此他将获得奖励。这种奖励包括全新的比特币,这也即是为什么这个过程被称为“挖矿”。矿工们在发现新的比特币,如同之前的人们挖掘黄金一样。
如果开矿过程发生的过快,系统就会被比特币所淹没,进而导致通货膨胀。为了预防这种情况发生,比特币软件是用可调节逻辑编写而成。一旦发现挖取散列太过容易,比特币系统就会选择更为严格的选择条件。
你可以想象一下,在我们的表情式区块链中,区块被开发得过快的情形。为了解决这个问题,约束条件可能被调整为:“下一个区块,散列值必须是动物,并且必须有爪子”。
矿工们运行他们的散列函数,获得了以下结果:
这些结果都不符合有爪子的动物,所以矿工们需要再一次尝试:
基于上述约束条件,第三个矿工找到了正确的答案:熊是有爪子的动物。然后,这个矿工可以将散列值与区块内的数据一同广播到区块链世界中。由于散列函授可以快速运行,其他采矿者可以在区块上运行散列函数,并验证这个散列值是否满足约束条件。之后,他们就会将区块添加到自己的区块链副本中,这意味着他们将或多或少保持同步,并开始为下一个区块收集交易。
此时,区块链的散列值显示如下,我转给你的5美元的交易的区块被称为“熊”。
公钥密码学
散列值只是比特币系统所依赖的其中一个数学概念。公钥密码术是另一种。
研究密码学的人们经常使用“爱丽丝”和“鲍勃”作为解释概念的两位角色。现在,我将用他们来帮助解释公钥密码学的基本逻辑。
设想一下,爱丽丝想交给鲍勃一个装有秘密文件的公文包。如果爱丽丝和鲍勃有互相匹配的密钥,事情很简单:她可以将公文包上锁,并用钥匙把它锁起来,然后将它给鲍勃。
当鲍勃收到公文包时,他会有自己的钥匙解锁,因为这两把钥匙相同,于是鲍勃会得到包中的秘密文件。这个过程被称为对称密码术。
但是通常而言,人们互相发送的秘密东西没有对应的匹配密钥,因为要安全传递密钥并不容易。因此,如果爱丽丝有给鲍勃发送密钥的私人且安全的方式,她同样也可以用其来传输文件。
所以,爱丽丝和鲍勃不需要共同拥有这个锁的密钥。而是他们彼此都有自己的钥匙和自己的锁,这意味着他们不需要考虑传递钥匙的事情。
它是这么运作的:
爱丽丝用钥匙锁起了带有挂锁的公文包,并将其传递给鲍勃。当鲍勃收到爱丽丝的公文包时,他无法解开爱丽丝的挂锁。但是,他将其添上了自己的挂锁。
……并将其返还给爱丽丝:
然后爱丽丝用她的钥匙将挂锁从公文包上摘下来:
公文包上现在只有一个挂锁:鲍勃的。爱丽丝将公文包寄回给鲍勃:
鲍勃可以轻易打开他自己上锁的公文包,并顺利拿出里面的文件。
现在,爱丽丝和鲍勃不需要再秘密分享同一把钥匙。他们只需要拥有自己的挂锁和自己的钥匙。
但是如果对方不是你认为的那个人呢?万一发生了什么奇怪的事故,比如鲍勃被一头牛所取代了呢?
那么接下来,将发生这些事情:
1. 爱丽丝把带有挂锁的公文包寄了出去。她以为寄给的是鲍勃,但是却寄给了一头奶牛。
2. 这头牛,以令人惊讶的灵巧度,将它的挂锁锁在了公文包上,然后将其寄回给爱丽丝。
3. 爱丽丝很高兴看到公文包带着“鲍勃”(实际上是奶牛的)挂锁回来了,她打开自己的挂锁并将其寄送回去。
4. 这头奶牛拿回公文包,打开了自己的锁。
5. 牛把秘密文件吃掉了。
没有人希望他们的秘密被一头牛消化掉,所以我们需要采取一个步骤来保护机密数据:鲍勃确保爱丽丝知道他的挂锁是什么样子,所以当她重新拿回公文包时,能够验证这个新锁是否属于鲍勃。
事实上,鲍勃能够复制几个他的挂锁,并将其公开。每个人都知道鲍勃的挂锁是什么样子并不重要,因为他是唯一可以用钥匙解锁的人。同时,这也让爱丽丝认出了鲍勃的锁。她可以在打开自己的锁之前,检查第二个挂锁是否真的属于鲍勃。
如果我们需要处理的是物理挂锁和密钥,那么很难做到复制和分发挂锁。但是当我们以数字化方式进行处理的时候,我们使用的是数字密码和数字锁,即是数值。
挂锁代表的数字是公开的。密钥代表的数字是私有的。这个被称为“私钥”的私人数字可以用来“打开”公共锁。
这即是公钥密码术。
人们小心翼翼地保护着他们的私钥,因为私钥可以解锁任何相对应的公锁。(在密码学中,这种解锁过程有时被称为签名。)而人们会广泛散布他们的公钥,这样其他人就知道什么被锁住了。
在比特币系统中,公共密码学被用来证明所有权。为了讨论其是如何工作,我们首先需要需要了解一些术语。在比特币中,有私钥、公钥和地址。
与爱丽丝与鲍勃的秘密文件不同,比特币系统的密钥并不用来加密任何东西。不存在人们需要解锁的秘密公文包。相反,钥匙被用来证明所有权。
在比特币的世界里,爱丽丝并没有一个需要传递给鲍勃的秘密公文包。相反,她有一个放着挂锁和比特币的玻璃盒子。
为了将比特币传递给鲍勃,爱丽丝必须做两件事:
1. 爱丽丝必须把鲍勃的挂锁放在自己的箱子里。这很简单,因为鲍勃的挂锁实际上是一个公开数值。这样,鲍勃可以通过解锁自己的挂锁来证明自己的所有权。
2. 爱丽丝必须证明这个盒子放置的挂锁是她的,而不是别人的。她需要用钥匙打开自己的挂锁(一个不对外公开的一长列数值)。
然后,当鲍勃决定将这些比特币传递给另一个人(我们暂且称他为卡洛斯)时,他会做同样的事情:将卡洛斯的公锁放置其中,然后用自己的私钥签署交易。
在这种情况下,挂锁到底意味着什么?广义地讲,即是公钥。但是比特币协议在公钥加密的基础上进行变体,代替了鲍勃公钥本身,爱丽丝可以将鲍勃的比特币地址包含在内。比特币地址是由公钥延伸而来,因此就如同爱丽丝把鲍勃的挂锁放在盒子里一样。实际上,单个公钥可以生成无限多个地址。因此,如果鲍勃希望每次都使用不同的地址,他也可以这么做。
让我们回到我要转给你5美元这件事情上。我把它发送到你的比特币地址上,你的比特币地址以数字化的方式与你的私钥相连,那么你将在这个地址中获取比特币。
为了花掉这5美元,你需要进行一个新的交易,包括一个属于收件人的地址,然后用你的私钥签署。这相当于把收件人的挂锁挂在公文包上,然后打开你的挂锁。
使用地址的一个有趣的副作用,比特币几乎是匿名的。
因为你的地址上使用的是假名,所以它使用的笔名。比特币与你的名字无关,其所需要的是你的私钥。
所以,只要你拥有私钥,你就能得到比特币。你能用它做什么呢?
(在我的下篇文章中,我们将了解比特币和区块链是如何被用来赚钱的,以及这些技术是如何支持起新的金融工具的。)
原文链接:
编译组出品。编辑:郝鹏程
标签: 鲍勃
②文章观点仅代表原作者本人不代表本站立场,并不完全代表本站赞同其观点和对其真实性负责。
③文章版权归原作者所有,部分转载文章仅为传播更多信息、受益服务用户之目的,如信息标记有误,请联系站长修正。
④本站一律禁止以任何方式发布或转载任何违法违规的相关信息,如发现本站上有涉嫌侵权/违规及任何不妥的内容,请第一时间反馈。发送邮件到 88667178@qq.com,经核实立即修正或删除。