关于货币,你需要知道:其实我们真正需要的钱是“无形的”

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

/**/

第1章 比特币和区块链

比特币的首要影响是,它创造了一种绝对安全的数字财产转移方式。当一个互联网用户将独特的数字财产转移给另一个互联网用户后,即使所有人都知道进行了数字财产转移,但没有人能挑战此数字财产转移的合法性。对于比特币的这一突破性影响,再怎么赞扬都不为过。

——马克·安德森,安德森·霍洛维茨基金(Andreessen Horowitz)的联合创始人

可信的第三方是安全漏洞。我想让任何涉足区块链的人都记住这一点。这一点基本上是整个设计的关键。

——尼克·萨博,Bit Gold的创造者

2008年万圣节,一位自称中本聪的计算机科学家发表了《比特币白皮书》。比特币是一种加密数字货币,人们无须通过银行、信用卡或其他金融机构就可以进行兑换。没有人知道中本聪到底是谁,但收到他邮件的人都不能忽视这个名字。

通过一封电子邮件,中本聪向全世界介绍了区块链和加密数字货币。目前这两项技术已经家喻户晓了。但要了解这两项技术,我们就必须从了解这位神秘计算机科学家的发明开始。

纸币的弊端

纵观人类历史,主要存在两种持有货币的方式:拥有实物货币(现金、金币、牛、盐等),或者将钱存在像银行这样的可靠机构。

这两种货币持有方式都有各自的问题。

像现金、牛这样的实物货币所具有的弊端是显而易见的:它们很容易被偷,不能用于在线交易,也很难用于异地结算(与国外的卖家交易),常常被伪造,其存储和运输也比较麻烦。

由中间人调度的货币

为了解决上面这些问题,人类发明了由类似银行或地方长官等受信任的机构调度的货币。银行账户、银行贷款、信用卡、支票等都属于这一类。通过信任中央机构或中间人,你可以解决大部分实物货币存在的问题。

● 把钱存入银行必定比把钱放在家里安全。

● 可以进行快速的在线支付,此时付款就像让你存钱的银行和收款方存钱的银行更新你们的账户余额一样简单(你们的存款余额只是某个数据库里的数字)。

● 当一个受信任的权威机构能准确地追踪每个人有多少钱时,伪造货币就变得很困难了。(由于没有关于每个人有多少现金的中央记录,所以识别假币的唯一方法就是你自己能区分假币和真币。)

● 如果你信任中间人能保管你的钱,你就不需要随身携带它们了。

这种由中间人调度货币的方式超级了不起。人们仍在使用现金,而且一些商店只收现金,这是有缘由的:由中间人调度的货币必须通过中间人,这导致这一类货币具有以下几个缺点。

第一个缺点是,当你的钱通过中间人流转时,你必须遵守他们的规则,这一般意味着你必须支付费用。当你用信用卡付款时,商家并不会收到全款,由于它们必须向信用卡组织支付费用。维萨信用卡、万事达信用卡、发现卡的费率一般为1.5%~2.5%,运通卡的费率为2.5%~3.5%。[1]

用贝宝进行国际汇款的费率为3%,如果你是商家,接受贝宝付款也将花费你3%的费用。通过西联汇款[2]、速汇金[3]、Xoom或其他汇款业务进行跨国汇款的费率也是百分之几。

目前你清楚为什么许多商店只收现金,或者针对信用卡消费设置最低消费额度了吧。

第二个缺点是,只有获得使用权限,才能使用由中间人调度的货币。这意味着世界上20亿没有银行账户的人不能进行任何涉及银行账户的交易,拥有不良信用或无信用的人不能使用信用卡。

第三个缺点是,在你把钱委托给中间人的同时也把你的个人数据委托给了它们。银行擅长保管你的钱,但是金融机构在保障数据安全方面表现不佳。2014年,黑客窃取了美国摩根大通银行1亿名客户的数据。2019年,美国Capital One银行的1亿名客户的出生日期、地址等敏感信息被窃取。更不用说美国最严重的数据泄露事件之一了:美国征信巨头Equifax泄露了近1.5亿美国人的包括社会安全号码在内的个人数据。

简而言之,实物货币是不安全的、使用不便的,而且容易被伪造,无法用于在线交易。由中间人调度的货币解决了上面这些问题,但其本身也在使用费用、使用权限和数据安全漏洞等方面存在缺点。但是,我们必须在二者间做出选择。

无形性

但是,如果你仔细想想,你就会发现我们真正需要的货币是无形的。由中间人调度的货币通过引入中间人为货币的无形性提供了可能:如果你委托机构为自己管理和转移资金,你就不需要持有实物货币了。但是,中间人也有自己的缺点。有没有办法在保留无形性的同时去掉中间人呢?换句话说,你能拥有一种既无形亦无中间人的货币吗?

你也许看出我们的意思了。实际证明,比中本聪发明比特币早几个世纪,人们就发明了一种无形的、不需要中间人的货币形式。为了见到这项发明的使用者,我们必须了解一下位于太平洋中部的密克罗尼西亚联邦的雅浦岛。

雅浦岛石币

雅浦岛上的流通货币是一种被称为“雅浦岛石币”的巨型石环。这种石头币很大:有些直径达3米,与卡车的重量差不多。雅浦岛上的每个部落里都散落着许多块石币。

你能想象到,部落居民无法拖着这些巨大的石币来进行交易。他们会一起记住每块石币由谁拥有,并且在心里记下关于每块石币的交易记录。例如,如果酋长的女儿从木匠那里买了一艘船,她会告知部落居民,她拥有的那块石币(如海滩上的那块)目前归木匠了。部落居民再相互告知:酋长女儿在海滩上的那块石币目前归木匠所有。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

雅浦岛上的一种传统的货币形式——雅浦岛石币。

来源:维基媒体

如果木匠之后想把那块石币给别人,部落居民会同意,由于每个人的心理记录都表明,那块石币目前属于他。简单来说,如果大多数村民认同某人拥有一块石币,那么他就可以花掉它。

无形的

雅浦岛石币这种货币系统最令人印象深刻的部分是,所有的经济活动都可以在石币完全不移动的情况下发生。你可以拥有一块石币,即使它距离你的房子超级远。实际上,即使你的石币曾经存在过却再也找不到了,你也可以用它们。在几百年前,一艘载着一块雅浦岛石币的船在海岸外沉没了。当地的部落居民推断那块石币必定还在海底的某个地方,所以他们就用那块石币进行交易,好像什么事也没发生过一样。

换句话说,在雅浦岛石币这种货币系统中,石币的物理位置及其移动根本不重大。这与传统的实物货币系统形成了鲜明的对比。在传统的实物货币系统中,货币的物理位置及其移动超级重大:你唯一拥有的钱就是放你家里或随身携带的钱,而你唯一的付款方式就是把实物货币交给别人。

这意味着,雅浦岛石币是无形的,它很像我们存在银行里的钱。我们知道它是无形的:钞票放在哪里并不重大,甚至它们有时根本就不“存在”,即当你给别人转账的时候,没有有形的钱币被移动。

无中间人的

更重大的是,雅浦岛石币这种货币系统是民主的。如果大多数人认同你拥有某块石币,那你就的确拥有它。不像由中间人调度的货币系统那样——将你的钱委托给某个人或机构,雅浦岛石币被委托给了整个部落的居民。

相比由中间人调度的货币系统,这种由部落居民来确定谁拥有石币的民主的、共识的货币系统有许多优势。想象一下,在另一个不同的社会里,关于交易和石币拥有权的正式记录由酋长保管,而非由部落居民通过共识集体保管。(这个社会中的雅浦岛石币系统很像由中间人调度的货币系统,酋长的角色类似于银行。)那么,酋长可以很轻易地迫使每个部落居民在进行一笔交易时付给他一些费用,通过抹去交易记录来窃取石币,弄丢记录(从而使当地的经济陷入停滞),等等。

因此,雅浦岛石币这种货币系统既是无形的,也没有中间人。当地部落居民在不依赖中间人的时候享受到了由中间人调度的货币系统的便利性:不需要拖着巨大的石币到处跑。雅浦岛石币是我们前一节讨论过的“两全其美”的货币系统的一个例子。

从雅浦岛石币这种货币系统汲取的经验是,无形的货币体系要求信任。只有当你信任某物或某个人会准确记录你的钱时,你才会放弃对你的钱的实际控制。雅浦岛石币的创新之处在于,你意识到你可以信任系统,而不是中间人。在雅浦岛上,值得信赖的系统就是雅浦岛部落居民共享的交易心理记录。通过信任一个由一群遵循共享规则的人构建的共享的、共识驱动的系统,而不是一个人或一个实体,你可以得到不需要中间人的无形的货币。

比特币的区块链

我们不知道中本聪在开发比特币时是否研究过雅浦岛石币,但比特币和雅浦岛石币超级类似。

比特币是一种加密数字货币,所以它是无形的,而且它在理论上是不涉及中间人的,由于它不依赖记录人们资金余额的银行等金融机构。相反,比特币依赖的是存储了一份共享的日志或账本的由位于世界各地的计算机组成的网络,这份共享的账本记录了每笔交易的情况。这种所谓的“共享公共账本”被称为区块链,它基本上是雅浦岛部落居民对交易情况的共享记忆的高科技版本。

简而言之,比特币是对互联网友善的现代版雅浦岛石币。与雅浦岛石币一样,比特币是无形的,理论上不涉及中间人,这使得它成为我们传统货币体系的一个令人信服的替代选择。而传统货币体系要求你在实物和中间人中做出选择。

共享的谷歌工作表

另一种更专业的方式是将区块链看作一个巨大的电子表单。这个电子表单由世界上的所有人共享,每笔交易占一行。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

这是对比特币区块链的简单解读,它是一个由全世界所有人共享的表单。

(当然,你肯定想让这个表单的模式为“只添加”:你不会愿意流氓用户改变过去的交易记录。)

试着设想一下,每个比特币用户的计算机上都有一份这样的电子表单。每当有人进行新的交易时,这笔交易将被广播给每个比特币用户,每个比特币用户的计算机都将下载新版本的电子表单。

挖矿

制作这样一个记录每笔交易记录的电子表单的明显缺陷是,有些人可能尝试通过此渠道花他们不拥有的钱。显然,需要有人在交易被提交前对其进行验证,以筛选并剔除这些有问题的交易。

在由中间人调度的货币系统中,银行或金融机构会做验证工作。如果你的账户里没有足够数额的钱,银行不会让你把钱转给朋友。但是在比特币这种货币系统里,你不能让某个值得信任的人做验证工作,这违背了没有中间人的初衷。

相反,比特币将这种验证工作外包给社区成员。所有比特币用户都可以使用他们的计算机来验证挂起的交易,并且只将有效的交易添加到区块链上。为了提高效率,交易被分成区块,每个区块有几千笔交易。

激励

验证交易的计算工作当然是有报酬的,比特币系统必须投入一些钱来激励验证者。如果你验证完一个区块的交易,你就会从这个区块的每笔交易中赚取一些费用,比特币系统也会向你支付固定数量的比特币,即所谓的区块奖励。区块奖励中的比特币在验证之前并不存在,而是由比特币系统凭空创造出来的。

由于比特币自认为是“数字”黄金,验证者投入工作来挖取全新的货币,这个验证过程被称为“挖矿”,而验证者被称为“矿工”。(你在用计算机挖矿,而不是用镐和铲子,但它们的商业模式大致一样。)

所以,如果回到我们之前提到的电子表单并想让它看起来更像一个真正的区块链,我们要向下图这样为表单添加区块ID、挖矿费用和区块奖励等列。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

一个更先进的比特币区块链模型,包含了矿工、挖矿费用和区块奖励。

因此,比特币用户C开采了包含三笔交易的区块B1,获得了28个比特币:25个比特币来自区块奖励,其余3个比特币来自每笔交易各1个比特币的挖矿费用。

突击测试:假设5个比特币用户(A、B、C、D和E)一开始各有100个比特币,那么他们在完成上表中的交易后各拥有多少比特币呢?

答案:

● A向B发送10个比特币,支付1个比特币的挖矿费用,向D发送15个比特币,支付1个比特币的挖矿费用,向E发送5个比特币,支付1个比特币的挖矿费用,收到10个比特币。这意味着A最后拥有77(100-10-1-15-1-5-1+10)个比特币。

● B收到A发送的10个比特币,并向C发送2个比特币(外加支付1个比特币的挖矿费用)。所以B目前有107(100+10-2-1)个比特币。

● C从B1区块获得28(25+1+1+1)个比特币,所以他有119(100+28+2-10-1)个比特币。

● D目前有109(100+15-5-1)个比特币。

● E从B2区块获得28个比特币,所以他有138(100+5+28+5)个比特币。

区块和链

我们给出的电子表单模型就是一个区块链的模型。它是简化版的。真正的比特币区块链不会以类似电子表单的格式存储区块。

相反,比特币的区块链以线性“链”的方式存储区块,每个区块在数学上都指向前一个区块。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

区块链以线性“链”的方式存储区块。“Txn”是比特币交易的缩写。每个区块都指向前一个区块,但计算机科学家一般会画出这样的链条,箭头从一个方块指向下一个方块,这样更直观。

通过这种方式,即使没有对区块进行明确的编号,区块的顺序也是清晰的。设想一下,你拿起一本平装本小说,把所有的书页都撕下来,把所有的页码和章节号也都撕掉。然后,你把书页撒得满地都是。

不过,您依旧可以将书页按顺序整理成册,由于每页的内容都隐含了前一页中发生的事情。(例如,如果第X页的结尾讲述的是一个角色开车去法院,而第Y页的开头讲述的是这个角色走进法院,那么可以肯定第Y页紧跟在第X页之后。)

哈希

当然,比特币没有“情节”的概念,因此区块之间用数字相互联系。具体来说,比特币使用一种叫作哈希的数学技术。例如,把单词、数字、比特币区块等一堆信息输入一个哈希算法中,这个算法会输出一个简短的信息“指纹”。

实则,人类一直在使用哈希,列如首字母组合。一个很长的英文名字很容易被压缩成几个字母。例如,将“John Fitzgerald Kennedy”这个长长的名字变成“JFK”这个简短的名字。

其中有一个输入(全名)、哈希函数(获取某人姓名首字母的过程)和一个输出或哈希值(首字母)。

计算机使用更多样化的哈希函数,其中最流行的是MD5算法和SHA-256算法,它们的核心思想是一样的:大数据输入变成短输出。

在比特币中,每个区块都有一个相关的哈希。每个区块的哈希部分基于它的前一个区块的哈希。通过这种方式,每个区块都指向它的前一个区块。所以,如果你有一个无序的区块列表和与它们相关的哈希表,你可以很容易地对区块进行排序,这就像一个人可以通过查看情节来排列书页一样。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

区块由它们的哈希连接在一起。每个哈希都是根据前一个区块的哈希计算得到的。

哈希表中的数字和字母是怎么回事?哈希是用十六进制[4]编写的。实则际字符长度也比4个字符长得多,但我们的缩短版作为举例已经足够用了。

因此,比特币以区块的形式批量处理交易,并且以链的方式将它们彼此连接起来。区块遇见链。

分支和欺诈

让我们回顾一下们基于哈希的区块链系统,你会注意到它实际上并不需要将区块放入线性的链中。没有什么能阻止在一个给定的区块之后紧接着出现两个或更多的区块。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

多个区块可以将任何给定的区块作为它们的前一个区块,因此区块链的确 可以分支。图片改编自:中本聪

区块树

因此,区块链不必定是线性链。实际上,区块链一般不是线性链。区块链看起来更像“区块树”,有“树干”和“树枝”,如下图。

当两个矿工同时挖出一个区块时,区块树有时会产生一个新的分支。这种情况很少见,但的确 会发生。当这种情况发生时,两笔交易会从最近的交易中分离出来,一个新的区块分支就诞生了。

但是,与雅浦岛石币系统一样,比特币需要一个单一的、线性的交易历史。这不允许多个分支共存。(设想一下,你能告知某人,“在一个历史记录中,我有500美元,但在另一个记录中,我有600美元”吗?)

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

区块链可以有许多分支,就像一棵树一样(设想一下,底部的区块在地面上,此图看起来很像一棵树)。最长的分支被认为是“正式的”。来源:维基媒体。

最长链原则

为了保证线性的正式历史,比特币使用了名为“最长链原则”的经验法则。这条法则指出,拥有最多区块的“区块树”的分支就是正式的区块链。最长链决定了你有多少钱、过去发生过什么交易等。如果某件事不在最长链上,它就不会发生。

在比特币用户的计算机上运行的比特币软件,只向在最长链上添加一个区块的矿工支付报酬,从而贯彻最长链原则。这一般足以使矿工们保持秩序。(不过,它有一个副作用。如果两个矿工同时开采出一个区块,就会产生两个分支,但只有一个分支会胜出,成为最长链。另一个分支成为“孤儿”并被抛弃,而在挖掘出该分支底部区块的不幸矿工将得不到任何钱。这种“孤儿”事件一天会发生好几次。)

挖矿劫持

但是最长链原则依旧存在安全漏洞。如果一个不正当的矿工创造了一个新分支,并且能比其他矿工更快地挖掘区块,从而使他的分支比合法的分支更长,那该怎么办呢?嗯,不正当的矿工的分支将成为最长链,所以它将成为正式的区块链。他的欺诈链上的所有区块将成为正式历史,而合法链上的一些区块将被扔掉。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

攻击者如何通过比其他人更快地挖掘区块来劫持区块链。

当然,让骗子控制区块链会造成许多混乱,这也可能导致欺诈。设想一下,不正当的矿工用比特币购买了数千美元的商品,并把交易放在区块链上。然后,他执行攻击,建立一个比正式区块链更长的新链。他支付给商家的交易数据将被丢弃,由于这些交易数据所在的区块不在最长链上。这就好像他一开始就没有付款一样。所以,他最终得到了所有的商品,但从来没有为它付钱!

随机值游戏

如何阻止这样的攻击?让攻击者很难比诚实的矿工更快地挖出区块是个办法。为此,中本聪的设计是,挖出一个区块需要花费超级多的时间。

中本聪的设计从交易着手。还没有被纳入区块链的交易被搁置在交易池等待审核和确认。交易池也被称为内存池。如果你想要挖掘一个区块,你就要从中选择几千条交易,验证它们,然后才能挖掘出你的区块。

在完成上述操作后,你所要做的就是为你的区块生成一个哈希,之后就可以把这个区块放在区块链上,并且得到你的奖励。

但是生成哈希并不是一件容易做到的事。哈希函数需要三个输入:前一个区块的哈希、交易和一个你选择的被称为随机值(nonce[5])的特殊数字。

问题是,输入不同的随机值将输出不同的哈希值,而只有当哈希以正确数量的“0”开头时,你才被允许将区块添加到区块链中。所以,如果你选择的随机值不能产生正确的哈希,你就必须一次又一次地尝试。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

哈希函数使用3个输入来生成一个区块的哈希。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

改变随机值会输出一个完全不同哈希。

猜测和检验

困难的是,哈希中没有明显的模式。无法根据哈希函数的输入预测哈希,即使对输入进行很小的更改,也会使输出完全不同。如果你用流行的MD5哈希函数处理单词“cat”,你会得到这个不可思议的输出:

d077f244def8a70e5ea758bd8352fcd8

而输入“bat”的MD5哈希大相径庭:

5f3f4681121b460e3304a1887f42f1c3

更重大的是,计算机运行的哈希函数往往是所谓的单向函数,即在给定输入的情况下很容易计算得到输出,但在给定输出的情况下,猜测输入几乎是不可能的。

人名的首字母缩写也是这样的。如果看到一个名字的首字母缩写为“GMD”,你无法马上猜出这个人的全名是什么。[6]

这意味着“破解”哈希函数的唯一方法是猜测所有的输出。所谓“破解”哈希函数就是根据输出计算出输入。强行破解计算机的哈希函数是超级困难的。破解比特币的SHA-256哈希函数将花费数百万年的时间,成本极有可能达到数百万美元甚至数十亿美元。[7]

换句话说,你不能尝试逆向找到正确的随机值。所以挖掘一个区块的唯一方法就是一遍又一遍地猜,直到你猜中,这就像玩数字彩票一样。我们称之为随机值游戏。

动手试一试

模拟这个游戏很有意义。请访问网站md5online.org,它允许你通过MD5哈希函数运行文本。你的挑战是选择一个随机值,当它放在“hello”之后时,产生一个以“0”开头的哈希。

你可以从将随机值设为“1”开始,此时你的输入是“hello1”,文本“hello1”的MD5哈希是:

203ad5ffa1d7c650ad681fdff3965cd2

不行。你可以将“2”作为随机值,而文本“hello2”的MD5哈希是:

6e809cbda0732ac4845916a59016f954

这也不行。

如果你持续将随机值增加1,你最终会发现,第一个以“0”开头的哈希的随机值是“33”。文本“hello33”的MD5哈希是:

005529451481309d2b8f708bbb81ea41

成功!

这并不难,从数学上来说,这应该不难。MD5哈希函数是用十六进制编写的,这意味着每个数位上的值都是16个可能字符(0~9和a~f)中的一个。这意味着平均每进行16次尝试,你将获得一次成功。从“1”开始尝试是不糟糕的,由于我们试了33次才得到一个成功的哈希。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

续表

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

输出的哈希实际上是随机的,所以必须不断猜测随机值,直到得到一个幸运的哈希。第一次输出成功的哈希的随机值是“33”。

目前设想一下,如果你必须选择一个随机值,让它产生一个至少有4个零开头的哈希。那么,每164个,即65536个随机值中只有一个随机值能产生一个成功的散列。如果你好奇的话,我们可以告知你,产生有4个零开头的哈希的最小的随机值是105484,文本“hello105484”的MD5哈希是:

0000049898 d233686087e44bc2a1c97a

这个哈希的开头有5个零。别担心,我们是用代码来猜测到这个随机值的。

尝试通过猜测正确的随机值来挖掘比特币就更难了。在撰写本书时,你每尝试一个随机值,只有大约66000000000000000000000(660万亿亿)分之一的概率挖掘一个区块。660万亿亿与宇宙中星星的数目相去不远。

“武装”自己

对于猜出一个合适的随机值并挖掘一个区块的困难程度,再怎么夸张地形容也不过分。如果你试着用一台MacBook运行挖掘算法,你可能要花200万年才能猜出一个成功的随机值。

出于一些显而易见的缘由,专业的矿工不会使用笔记本电脑来挖矿。他们购买的是功能强劲的计算机,这种计算机配备有专用的计算机芯片(ASIC[8]),这种芯片针对比特币的哈希算法进行了高度优化。用来挖矿的ASIC能以惊人的速度猜测随机值,但它们不能做其他事情。[9]

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

一个专门运行比特币哈希算法的ASIC。来源:维基媒体

这种配有ASIC芯片功能强劲的计算机都超级强劲,但成本高昂。一台售价2000美元的中型的、配备ASIC芯片的挖矿计算机每秒可以输出大约56万亿个哈希,这意味着它每秒可以尝试输入56万亿个随机值。但是由于很难猜测出正确的随机值,所以即使有这么强劲的硬件,成功挖掘一个区块也需要大约38年的时间。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

AntMiner S17 Pro是一台价值2000美元的计算机,每秒可以输出56万亿个哈希。来源:MiningCrate

换句话说,挖掘比特币就像用几十年的时间盲目地投掷一个有数万亿个面的骰子,希望你能幸运地掷到你想要的那一面。

工作证明

如果这个系统看起来很浪费金钱、时间、精力,那是由于它本身的确 如此,而且它被设计成这样是为了让区块链不容易被劫持。

由于挖矿工作最困难的部分是猜出正确的随机值,而能否猜出正确的随机值取决于尝试的次数,因此拥有更强性能的计算机的人更有可能获得正确的随机值,从而挖出一个区块。你的计算机的性能越强劲,你就能越快地挖出区块。

从另一个角度来看,你的挖矿速度与你控制的哈希能力的比例[10]成正比。

回想一下前面的恶意的矿工想开挖一条比合法区块链长得多的诈骗链的例子。要做到这一点,他的挖矿速度需要比其他所有诚实的矿工的速度总和还快,所以他需要控制世界上超过50%的哈希能力。这种攻击被称为51%攻击。51%攻击是可能实现的,但它的代价也是高昂的,这个恶意的矿工需要购买所有这些配备了ASIC的超级计算机。而且,除非这个恶意的矿工能够控制51%的哈希能力,否则他就没有机会篡改区块链。

简而言之,要挖掘比特币,你就必须投入大量的工作和资金。由于工作量庞大,比特币挖掘系统被称为工作证明。赢家是那些为挖矿付出最多努力的人。如果挖矿像运行几行代码一样简单,那么攻击者就可以很轻易地劫持区块链。而通过随机值游戏来加大挖矿难度是比特币阻止攻击者的一种方式。

凭证

凭证是比特币和区块链拼图上的最后一块碎片。如何确保没有人以你的名义发送错误的交易?在由中间人调度的货币系统中,你只有在登录你的账户后才能支付或汇款。你的用户名和密码等账户信息,是由信用卡组织或银行等受信任的金融机构保存的。

当然,比特币的意义在于去中间人。因此,用户名和密码(你需要委托受信任某些组织来保存它们)可以不起作用。实际上,根本不应该有一个“注册”的中心场所。那么该如何让比特币用户管理他们的比特币呢?

去中心化的账户

比特币依靠数学和概率学实现账户的去中心化。实现没有中间人的去中心化的注册的首要方法是,让用户自行选择用户名和密码。但是由于没有中央服务器,用户无法检查他们想要的用户名是否已经被其他用户注册了。这个问题的解决方案是,让用户从数万亿个随机的“用户名”中选择一个。面对数量庞大的用户名,用户选到一个已经被选过的用户名的概率微乎其微。

下一个难题是如何在没有中央服务器的情况下提供检查密码的系统。比特币系统通过运行根据用户的“密码”计算用户的“用户名”的单向函数(就像前面提过的哈希函数)来解决这个问题。用户为了证明自己拥有一个“用户名”,他必须提供输入函数后能被转换为“用户名”的“密码”。(请记住,根据“用户名”猜出“密码”是不可能的。)

我们之所以把“用户名”和“密码”放在引号里,是由于比特币不使用这些术语。

比特币要用到私钥。私钥是一个只有你才应该知道的长且完全随机的字符串。它一般是52位的由字母和数字组成的字符串。这种编码方式被称为Base58[11]。私钥在比特币中扮演着密码的角色。

可以用私钥运行一个被称为椭圆曲线数字签名算法的单向函数来生成一个被称为公钥的中间数字(intermediary number)。

然后运行比特币挖矿中著名的SHA-256和RIPEMD-160这两个单向函数,并且进行更多的数学调整,以获得一个压缩版本的公钥。这个公钥被称为比特币地址。比特币地址是一串由字母和数字组成的26~35位字符串,也是由Base58这种编码方式生成的。比特币地址是比特币最接近用户名的东西:它是公开的,能用来识别你的身份。

你可以在generatepaperwallet.com这个网站上随机生成自己的比特币私钥和地址。(人们一般会忽略公钥,由于它是一个中间数字)。使用该工具,我们可以得出一个私钥:

L3QwdtohEnUvkUDXH6KDyN1RLF2uLYNQ1qeyp8mmL6cNvZsk orDW

和一个地址:

12zQuwSVdSo7YhU6sjLnYuni2K24jZR8AA

我们目前可以使用这些凭证来接收和发送比特币了。注意,私钥和地址是由算法生成的,因此你甚至可以在不连接互联网的情况下生成它们。你不需要为它们做登记。

交易签名

一旦有了私钥和地址,你就可以开始发送和接收比特币了。为了证明你是一笔交易的发送方,你可以使用自己的私钥在交易上创建一个“标记”,从而对交易进行数字“签名”。任何人都可以使用你的公钥(当然可以,由于它对所有人是可见的)来确认应用标记的人是你,但是没有人可以根据标记反向推出你的私钥。

这个系统的工作原理就像我们在支票、法律文件等上面使用的墨水签名一样。任何人都可以看到你的签名。你可以将一个新签名与一个已知真实的签名进行比较,以检查它们是否由同一人签署。而且,最重大的是,你不可能仅仅通过观察就伪造签名。

透明的保险箱

实际上,比特币比传统的用户名—密码方案更高级。由于所有的交易记录都在区块链上公开展示,所有人都可以查看任意地址的交易记录和比特币余额。我们喜爱把比特币“账户”比喻成透明的保险箱:任何人都能看到里面有多少钱,但只有拥有私钥的人才能使用这些钱。

关于货币,你需要知道:实则我们真正需要的钱是“无形的”

我们生成了一个随机的私钥和地址。不要把钱发送到这个地址,由于任何有这个私钥的人都可以获得里面的钱。这张图片叫作纸钱包。你可以打印出你的私钥,这样就可以把它保存在一个安全的地方了。

这是一项非凡的创举。除了雅浦岛石币,其他任何形式的货币都无法提供这种透明度。它为分析师提供了一种了解比特币经济状况的有力方法,有助于追踪使用比特币的网络犯罪分子,并且能轻松证明你进行了交易。但显而易见的是,这意味着用户没有那么多的隐私了。

将“密码”嵌入货币

退一步说,你会注意到比特币背后隐藏着许多数学原理:用于挖矿的哈希函数、用于生成密钥和地址的单向函数,以及用于证明身份的数字签名。这些都属于密码学范畴。密码学是一门通过将信息编码或加密成攻击者无法逆向求解的格式来保证信息安全的科学。

因此,比特币被称为加密数字货币。中本聪的观点是,密码学让你拥有一种既安全又透明的货币。这就是比特币的核心。


[1] 较高的费率是美国许多商店不接受运通卡的缘由。

[2] 西联汇款(Western Union)是西联国际汇款公司的简称,是世界上领先的特快汇款公司,迄今已有150年的历史,拥有全球最大、最先进的电子汇兑金融网络,代理网点遍布全球近200个国家和地区。中国光大银行、中国邮政储蓄银行、中国建设银行、浦发银行等多家银行是西联汇款的中国合作伙伴。使用这种方式支付大致要花费15分钟的时间。

[3] 速汇金(MoneyGram)是一种个人间的环球快速汇款业务,可在十余分钟内完成由汇款人到收款人的汇款过程,具有快捷便利的特点。速汇金是与西联汇款类似的一家汇款机构。速汇金在国内的合作伙伴有中国银行、工商银行、交通银行、中信银行。

[4] 有关十六进制和其他数字系统的知识,见附录A。

[5] “nonce”这个词来源于“number used only once”(只用一次的数值),由于你试了一次,如果不行就得把它扔掉。

[6] 你是否也很好奇呢?我们猜测这是默默无闻的美国第11任副总统乔治·米夫林·达拉斯(George Mifflin Dallas)的名字缩写。

[7] 具体的难度取决于输入文本的复杂程度。如果你的密码是“hello”,然后使用SHA-256算法进行哈希处理,你的密码很容易被破解。由于互联网上可能有人发布了“hello”经过SHA-256算法处理的哈希值。在谷歌上对哈希进行简单的搜索就会显示输入。

[8] ASIC的全称为Application-Specific Integrated Circuit,指的是专门设计用来完成特定计算任务的集成电路。

[9] 还有其他类型的ASIC,如专门用于机器学习或图像处理的ASIC,但是在加密数字货币的相关文章中,这个术语总是指专门用于挖矿的芯片。

[10] 即与所有比特币矿工的计算机的哈希能力的总和对比。

[11] 有关Base58和其他数字系统的知识,见附录A。

© 版权声明

相关文章

暂无评论

none
暂无评论...