打字猴:1.703864213e+09
1703864213 数字现金公司的最后几年,它试图通过防侵入硬件来预防双重支付,不再把重心放在双重支付发生后的检测上。在这套系统里,有一种叫作钱包或者类似于卡片的设备。这个设备会记录你的账户余额。消费之后,余额减少;充值之后,余额增加。这个设备的用处是,没有人能够更改计数器数额,不管是通过物理手段还是电子技术。因此,当计数器归零时,倘若没有继续充值,用户都无法消费。
1703864214
1703864215 许多公司推出过带有防侵入硬件的电子现金系统。数字现金后来与一家叫CAFE的欧洲公司合作。另一家叫Mondex[1]的电子钱包公司也是基于这个想法创立的,后来被万事达收购。维萨(Visa)也有类似的系统,名为维萨货币(VisaCash)。
1703864216
1703864217 在使用电子钱包时,使用者既持有一张智能卡片,又拥有一个“读卡器”(wallet unit),两者均可进行充值。使用者之间直接可以互相进行支付。支付方将智能卡插入读卡器中,钱即转入读卡器。接受方将卡插入读卡器,钱就转入第二次插入的卡里。这一过程交换的是数字货币,是匿名的交换流程。
1703864218
1703864219 Mondex公司在几个地方推广其技术,其中一个城市正好离我的家乡安大略省圭尔夫市不远。你大概已经猜到,这项技术并没有被广泛使用。主要原因是,电子Mondex卡片跟现金类似,一旦丢失或者被偷,钱也就丢了。更有甚者,如果卡片发生故障,或者读卡器无法读卡,就没法知道卡里余额是多少。这种事情真正发生时,Mondex公司一般会自担损失。它们会假定卡里有余额并赔偿用户损失,这自然是一笔不小的开支。
1703864220
1703864221 此外,这个系统里的钱包反应比较慢。用信用卡或现金支付要快得多。商家都不喜欢拥有太多支付终端,对它们来说,一个信用卡POS机就够了。多重原因加在一起导致了Mondex公司的失败。
1703864222
1703864223 尽管如此,Mondex公司的用户卡是有小芯片的智能卡片,这项技术事实证明是相当成功的。如今,在很多国家,包括我所在的加拿大,每张信用卡和借记卡都采用了智能卡片技术。它们的目的不是防止双重支付。非现金技术中不会存在双重支付的问题,因为银行而不是卡片记录你的账户余额和可用信用。智能卡片的目的是用于认证,也就是说,它为了证明你知道自己账户的PIN。虽然用途不同,早在银行广泛采用该技术之前,Mondex公司就已经开始运用这项技术。
1703864224
1703864225 凭空发行货币
1703864226
1703864227 如果你有一个价值100美元的电子现金,那怎么能够保证它的确价值100美元呢?数字现金给出的答案很简单:要想获得一个价值100美元的电子现金,你必须从你的银行账户取现100美元,交给发行电子现金的银行。但要实现这个目的可以通过不同的方式,不同的公司采取的方法也各不相同。设想一个小概率事件:如果一个政府授权某家银行发行电子货币,凭空创造新电子现金,会怎么样呢?网格现金(NetCash)就是基于这一假设创立的,但是它并未真正实施过。电子黄金(E-Gold)则采用一套完全不同的体系,它在保险库中存入一定量的黄金,根据黄金价格发行电子货币。一家名为数字黄金(Digigold)的公司并不完全依赖黄金,但也有部分黄金储备。
1703864228
1703864229 归根结底,这些方式都是使电子货币的价值随美元或某种特定商品的价值而浮动。如果美元价值上升或下降,你的电子货币价值就相应地上升或下降。另一种比较激进的方案,就是使电子货币自成体系,其他货币不会影响其发行和价值。
1703864230
1703864231 要想创造一种自由浮动并且具有真实价值的虚拟货币,必须要设计出某种具有稀缺性的东西。其实,正是因为黄金和钻石的稀缺性,它们才会成为货币的储备。在虚拟世界,你可以这样设计你的系统,即虚拟货币只有在需要花一段时间解决了一定的数学计算(或“谜题”)之后方可生成,这样就保证了稀缺性。比特币体系中的“挖矿”就是这样的,我们会在第5章详细探讨。
1703864232
1703864233 通过解决数学计算来赋予虚拟货币价值,这一想法并不新鲜。早在1992年,密码学家辛提亚·沃克(Cynthia Dwork)和摩尼·纳欧尔(Moni Naor)首次提出这种方案,用来降低垃圾邮件问题。设想你每次发送邮件时,计算机都不得不花几秒钟的时间解决一道数学计算题目。如果你没能附上题目的答案,收件人的邮箱会自动忽略你发来的邮件。对于普通用户,因为他们发送邮件的频率不高,不会带来太大麻烦。但对于想同时发送成千上万垃圾邮件的人来说,解决大量的数学计算几乎是不可能的。1997年,亚当·贝克(Adam Back)在一个名为哈希现金(Hashcash)的体系中采用过类似设计。
1703864234
1703864235 要想阻止垃圾邮件,这些数学计算必须具备一定的特性。第一,垃圾邮件发送者解出一道题目之后,不能把这个答案附在他发送的其他邮件上。为了做到这一点,每封邮件会对应一个数学计算题目,题目内容取决于发件人、收件人、邮件内容和发送时间。第二,收件人无须重复解题的烦琐过程,就可以轻松地检查发件人附上的答案。第三,题目之间应是相互独立的,也就是说,解决一道题目不会减少解决其他题目所需的时间。第四,随着硬件性能的提升,解决数学计算变得越来越快、越来越容易,收件人必须要调整他们收到的答案的难度。通过密码学中的哈希方程(hash functions)设计的题目可以满足以上要求,我们将在第1章学习它。
1703864236
1703864237 比特币使用的数学计算与哈希现金的基本类似,只是进行了微小的改进。比特币能做的比哈希现金多得多,毕竟,要解释比特币需要一整本书呢!我之所以提这些,是因为哈希现金的创始人亚当·贝克曾经说过:“比特币只是把哈希现金进行通货膨胀控制得到的延伸产品罢了。”我觉得这话有点过分了,就像说:“特斯拉只是在轮子上加上电池而已。”
1703864238
1703864239 正如密码学里任何一个优秀的想法一样,数学计算题目有许多变体,每个变体具有些微不同的特性。其中一个构想来自维莱特(Rivest)和夏马尔(Shamir),他们提出了RSA加密系统(RSA中的R和S分别为Rivest和Shamir的首字母)。研究哈希现金之后我们发现,解决一系列数学计算题目的成本就是解决单个题目的简单叠加。但政府发行货币时,成本可不是这么计算的。单是纸币上的防伪技术,政府就需要投入巨大的初始成本来购买设备,施加安全措施等。但是一旦研发出了防伪技术之后,成本就会降低,印一张货币和印一百张的成本差别并不大。换言之,发行纸币的固定成本很高,但浮动成本很低。维莱特和夏马尔想要设计的数学计算题目具有类似的成本结构,这样,发行第一个电子货币需要巨大的计算量,但接下来就会变得很简单。他们的设计也运用了哈希方程,但使用方式不同。我们不打算讨论他们的详细方案,但他们要解决的问题是非常有趣的。
1703864240
1703864241 人们为什么没有广泛使用哈希现金来阻止垃圾邮件呢?也许是因为垃圾邮件问题还没有足够严峻。对大多数人来说,垃圾邮件只是个恼人的小问题,并没有严重到他们愿意用计算机算力来解决它。现在,我们有了垃圾邮件过滤器,能够有效地阻挡垃圾邮件。另外一个可能的原因是,哈希现金无法真正阻止垃圾邮件。特别是,现在大多数垃圾邮件发送人通过僵尸网络,用病毒大量入侵他人电脑,批量发送垃圾邮件。他们也可以通过这些电脑来获取哈希现金。所以,通过数学计算进行限制的想法还在不断发展中。在一些替代网络协议的构想中,如小型LT协议(MinimalLT),我们还可以看到这一思路。
1703864242
1703864243 把一切信息都记录在数据库账本中
1703864244
1703864245 区块链是比特币的另一项关键技术,它像一个数据库账本,安全记录所有的比特币交易信息。区块链的理论基础由来已久,可以追溯到哈勃(Haber)和斯托尔内塔(Stornetta)在1991年开始发表的一系列论文。他们提出的不是虚拟货币体系,而是一种可以安全地对数字文件进行时间戳记录的方法。时间戳是为了记录文件创建的大概时间。更重要的是,时间戳可以准确反映文件创建的先后顺序:如果一份文件比另一份文件更早创建,可以从时间戳中看出来。时间戳的安全性体现在文件的时间戳一旦生成,无法更改。
1703864246
1703864247 用户发送文件时,哈勃和斯托尔内塔设计的体系能够向客户提供时间戳服务。服务器收到文件时,它会用当时时间和指向之前文章的链接或者指针作为签名,来签名该文件并产生包含签名信息的认证,见图0.1。这里所说的指针,指向的不是一个具体地址,而是一串数据。也就是说,如果该数据被更改了,那么这个指针也就自动失效。在第1章,我们将学习如何使用哈希方程来创建这种指针。
1703864248
1703864249
1703864250
1703864251
1703864252 图0.1 链接的时间戳
1703864253
1703864254 注:要想对一份文件进行认证,时间戳服务器必须包括指向之前文件认证的哈希指针,当前时间和文件内容本身,并用这三条信息来对文件进行签名。
1703864255
1703864256 这种协议实现的效果是:每份文件的认证都确保了上一份文件内容的完整性。其实,反复运用这一理论:每次认证基本上都保障了这个认证点之前的所有文件和认证的完整性。假设这个系统中的每个用户都能记录包括自己的文件、之前和之后的文件的认证在内的几个认证信息,那么合起来,就可以确保整个文件系统不会被更改。特别是,文件的先后顺序被保存了下来。
1703864257
1703864258 随后的一篇论文提出了一个可以提升效率的方案:不必单独链接各个文件,而是把它们集合成块,然后在一条链中链接整个块。在每个块里,文件通过树状结构而非线性结构的方式相互链接。这一方法减少了在整个系统中查找特定文件所需的工作量。图0.2展示了这一混合而成的体系的工作方法。
1703864259
1703864260
1703864261
1703864262
[ 上一页 ]  [ :1.703864213e+09 ]  [ 下一页 ]