2

从信用到现金

现在让我们转到现金。我们先前比较了现金和信贷,并指出现金需要“自举”,但好处是它避免了买家拖欠债务的可能性。现金还有另外两个优势。第一个是更好的匿名。由于你的信用卡是以你的名义发行的,因此银行可以追踪你的所有支出。但当你用现金付款时,银行没有看到,而卖方也不需要知道你是谁。第二,现金可以在不需要第三方批准的情况下启用离线交易。也许后面他们还要去像银行这样的第三方存钱,但那就没有那么麻烦了。

 

比特币不完全具备这两个属性,但足够接近,这已经相当有用了。比特币并不像现金那样匿名。你不需要用你的真实身份来支付比特币,但可能你的交易可以通过巧妙的算法与公共交易账簿捆绑在一起,然后如果你不小心,它进一步与你的身份相关联。

比特币不能以完全离线的方式工作。好消息是,它不需要中央服务器,而是依靠一个具有弹性、互联网本身方式的对等网络。

最早将加密技术应用于现金的想法来自于1983年的大卫·肖姆(DavidChaum)。我们通过物理比喻来理解这一点。假设我开始分发一些附有我签名的纸,上面写着:“这张票据的持有者可以把它兑换成一美元”。人们如果相信我会遵守我的承诺,并考虑我的签名是不可伪造的,他们就可以像纸币一样传递这些纸张。事实上,纸币本身就是从商业银行签发的期票开始的。只有在最近的历史中,各国政府才着手集中货币供应,并要求银行合法赎回票据。

 

我可以用电子化的数字签名做同样的事情,但这会遇到恼人的“双花”问题——如果你收到一个代表虚拟现金单位的数据,则可以制作两个(或更多)副本,并将其传递给不同的人。为了更好的说明这一点,让我们稍微延伸一点,假设人们可以复制出完美的副本,而我们却无法分辨出来。这个世界的双花问题能被我们解决吗?

这里有一个可能的解决方案:把唯一的序列号放在我发出的每一个票据中。当你从某人那里收到票据时,请检查我的签名,你也可以打电话给我,询问该序列号的票据是否已经花了。在我说“不”的情况下,你接受这笔票据。我将在我的分类账上把这些序列号记录为已使用,如果你尝试花费该票据,则无法使用,因为收件人会打电话给我,我会告诉他们该票据已经使用。你需要做的就是定期为我带来你收到的所有票据,我将向你发送相同数量的新票据,并附上新的序列号。

这样方案完全OK。这在现实生活中很麻烦,但是我提供了一个简单的数字服务器来完成序列号的签名和记录。唯一的问题是,它不是真的现金,因为它不是匿名的——当我发给你票据的时候,我可以把序列号和你的身份对应起来,同时当别人兑换它时我可以做同样的事。这意味着我可以追踪你所有花钱的地方。

这就是Chaum的创新所在。他想通了如何既保持系统的匿名性,又可以通过发明以下等效的程序来防止双花问题:当我向你发出新的票据时,你来挑选序列号。你把它写在纸上,盖住它使我看不到。然后我会签署它,仍然无法看到序列号。这在密码学中被称为“盲签”。根据爱好选择一个长的、随机的序列号,以确保它很有可能是独一无二的。我丝毫不必担心你会选择一个已经被选中的序列号,你这样做只能在结算中发送你自己,最终会出现一个不能花费的票据。

这是第一次重要的数字现金提案。它有效,但仍然需要由一个中央权威机构(如银行)运行的服务器,并且需要每个人都信任该实体。此外,每个交易都需要这个服务器的参与才能完成。如果服务器暂时关闭,付款就会中断。几年后,在1988年,Chaum与另外两家密码学家Fiat和Naor合作提出了离线电子现金。最初看来这是不可能的:如果你尝试在两个不同的商店使用相同的数字票据或硬币,除非他们连接在相同的支付网络或中央机构,否则如何阻止他们?

这个聪明的想法是停止考虑如何阻止双重支付,而是当商家重新连接到银行服务器时把重点放在检测它。毕竟,这就是为什么即使天空中没有网络连接,你还可以在飞机上使用你的信用卡的原因。当航空公司能够重新连接到网络时,交易就会开始处理。如果你的卡被拒绝,你将欠该航空公司(或你的银行)的钱。如果你想到这一点,相当多的传统金融就是基于发现错误或损失的想法,来试图追回钱或惩罚犯罪者。如果你写一张个人支票,他们不能保证金额实际上在您的帐户,但如果支票跳票他们就会去找你。可以想象,如果离线电子现金系统得到广泛采用,法律体系就会认识到双重消费是一种犯罪行为。

Chaum,Fiat和Naor的检测双重支出的想法是一个复杂的加密艺术。在高水平上,它是这样实现的:发给你每个数字硬币都会对你的身份进行编码,除了你和银行之外,没有人可以解码它。每次你花你的硬币时,收件人将要求你对编码的一个随机子集进行解码,他们将保持这一记录。这种解码不足以让他们确定您的身份。但是,如果你双重消费,最终两个收件人都会去银行兑现他们的票据,当他们这样做时,银行可以把两块信息放在一起,以极大的概率对你的身份进行完全解码。

你可能想知道是否有人可以在系统中陷害你成为双重消费者。你和我一起花了一枚硬币,然后我转过身去,试图双重消费(不用银行兑换,直接用我的身份编码获得一个新的硬币)。这将不会起作用——新的收件人将要求我解码一个随机的子集,这几乎肯定不会与为你解码的子集相同,所以我将无法执行他们的解码请求。

多年来,许多密码学家已经看到了这种结构,并以各种方式对它进行了改进。在Chaum-Fiat-Naor的方案中,如果一枚硬币价值100美元,而您想要购买的成本仅为75美元,那么根本没有办法把这个硬币分成75美元和25美元。你唯一可以做的是回到银行,花费$ 100硬币,并要求一个$ 75硬币和一个$ 25硬币。但是Okamoto和Ohta的一篇文章使用“Merkle trees”来创建一个允许您细分硬币的系统。Chaum-Fiat-Naor的方案同时也为提高支付效率留下了很大的空间。特别的是,方案中应用的非零知识证明(最著名的由Brands、Camenisch, Hohenberger、Lysyanskaya发明),非常的富有成效。非零知识证明也已经应用在比特币中。

回到Chaum:他商业化了他的想法,于1989年组建了一家名为DigiCash的公司,可能是最早试图解决在线支付问题的公司。他们比我们刚刚讨论的诸如FirstVirtual、CyberCash等早五年时间。Digicash系统中的现金叫做Ecash,他们还有一个叫做cyberbucks的系统。几家美国的银行和至少一家芬兰的银行实际实施了他们的方案。这是在二十世纪九十年代,早于比特币很久很久,这可能会让将银行视为科技恐惧症,反创新的庞然大物的比特币爱好者异常的惊讶。

Ecash是基于Chaum的协议。客户是匿名的,所以银行无法追踪他们是如何花钱的。但是,ecash的商家并不是匿名的。他们必须在收到货币后立即换回硬币,所以银行知道他们什么时候做了什么等等。

比特币的漫漫长路(二)

图2:DigiCash的屏幕截图

图2显示了这个软件的界面。正如你看到的,它显示了你的余额以及你从银行发给你的所有硬币。既然没有办法分割你的硬币,银行会向你发出一整套硬币,价钱分一美分、两美分、四美分等等(以2为倍数)。这样,你(或者代表你的软件)就可以选择一套硬币来支付交易的确切金额。

 

当你想要交易的时候,比如说你想要向非盈利组织EPIC捐款,你需要点击一个会带你到Digicash网站的捐赠链接。然后,将打开一个反向Web链接回到你的计算机,这意味着你的计算机必须能够接受传入的链接并充当服务器。你必须拥有你自己的IP地址,且你的ISP将不得不允许传入链接。如果连接成功,ecash软件会在你的计算机上启动,你可以批准交易并支付现金。

 

Chaum拥有Digicash技术的几项专利,特别是其使用的盲签方案。这是有争议的,它阻止了其他人使用相同的协议开发电子货币系统。一大堆密码学家们就此挂上了所谓的Cypherpunks邮件列表来替换它。Cyperpunks是日本Satoshi Nakamoto后面向世界宣布的Bitcoin邮件列表的前身,这不是巧合。

 

解密高手破译ecash实现的一个版本的电子货币被称为magicmoney。它确实违反了专利,但被广而告之仅用于实验用途。这是一个有趣的软件,它的界面是基于文本的。你可以通过电子邮件发送交易。你只需将交易复制并粘贴到你的电子邮件中,然后将其发送给其他用户。希望你最好使用了端到端电子邮件加密软件(如PGP)来保护传输中的交易。

 

后来,Ben Laurie和其他很多人一起发展了一个叫Lucre的提案。Lucre试图以非专利-作保的方式取代ecash中的盲签方案,系统其他部分大致相同。

 

另外,伊恩·戈德伯格(Ian Goldberg)提出了一个提案试图解决不能分割硬币来找零的问题。他的想法是,如果商家还有一些硬币,那么他们可以向你发回硬币,以便你没有多余零钱时可以多支付,然后收到商家发回的硬币。但请注意,这引入了匿名问题。正如我们以前看到的那样,在ecash中,发送者是匿名的,但商家不是。当商家发回现金时,从技术上来说他们是发件人,所以他们是匿名的。但是你,作为必须将这笔现金退回银行的人,不是匿名的。没有办法设计这个系统而不破坏试图购买商品的用户的匿名性。所以,戈德伯格提出了一个提案,其中有不同类型的硬币来允许交易的发生,允许你改回去,并保持你的匿名。

 

现在我们来看看,为什么DigiCash失败了?DigiCash的主要问题是很难说服银行和商人采用它。既然没有很多商家接受ecash,用户当然也不想要它。更糟糕的是,它不支持用户和用户的交易,或至少支持的不是很好。它真正集中在用户对商家的交易上。因此,如果商人不在船上,就没有其他方法可以引导人们对系统感兴趣。所以一天结束时,DigiCash失败了,信用卡公司胜利了。

 

作为附注,比特币允许用户到商家和用户到用户的交易。实际上,协议没有与用户的概念分开的商家概念。对用户到用户的交易的支持可能有助于比特币的成功。从一开始就有一些事有助于你的比特币:把它发送给其他用户,社区试图鼓励对比特币的支持,让商家接受它。

 

在公司的后几年里,DigiCash还试用了防篡改硬件,试图防止双重支出,而不是仅仅检测它。在这个系统中,你会得到一个通常被称为钱包或某种卡片的小型硬件设备。该设备将跟踪您的余额,当您花费时余额减少,充值是余额增加。设备最关键的是,应该没有物理或数字的办法进入并篡改其计数。所以如果这个计数变为零,那么这张卡就停止支付,直到它被重新加载为止。

 

 

比特币的漫漫长路(二)

图3:电子货币系统,用户的卡和钱包。

图3显示了Mondex系统的用户端。有一个智能卡,一个钱包单元,他们都可以加载现金。如果您想进行用户之间的交易,那么提供者的用户将首先把卡片放入钱包中,并将钱从卡上转移到钱包上。然后接受者会将他们的卡片插进钱包中,你将钱移到第二张卡上。这是一种匿名交换数字现金的方法。

 

Mondex在一些社区试用了他们的技术。一个社区恰好是一个非常接近我长大的城市:圭尔夫,安大略。你可能已经猜到它并没有真正流行起来。Mondex卡的一个主要问题是它和现金极像——如果你失去他们或被盗,钱就丢失了。更糟糕的是,如果卡片有某种故障,读卡器不读取,则无法确定该卡是否有结余。在这些情况下,Mondex通常会cover成本,他们会假设卡被加载,并向用户赔偿了这笔钱。当然,这可能会使公司损失很多钱。

 

此外,钱包笨重而反应缓慢,用信用卡或现金支付要快得多。零售商也讨厌有几个付款终端,他们只想要一张信用卡。所有这些因素加在一起导致了Mondex的失败。

 

然而,这些卡是智能卡,这意味着它们上面具有小型微控制器,并且该技术已被证明是成功的。在今天的许多国家,包括加拿大在内的每一张信用卡和每一张借记卡现在都拥有智能卡技术。但它用于不同的目的。它不用于防双花问题,因为它不是一种基于现金的技术,因此不会出现这个问题。银行而不是你的信用卡,随时监控着你的余额或可用信用。相反,芯片是用于认证的,也就是证明你知道和你的帐户相关联的PIN。但是,Mondex这一技术很久之后才被银行业广泛采用。

 

区块链技术是比特币的底层技术,比特币是区块链的第一个应用。要想全面了解区块链技术,离不开对比特币的研究。wherein作为以区块链为基础架构的自治旅行社区,自然也就离不开对比特币的探索。