在比特币之前,有很多数字电子货币失败的尝试(本书的前言中提到了许多失败的案例)。比特币与大多数失败的尝试之间,最重要的区别在于去中心化。比特币去中心化的核心创新方法是使用区块链。
在这一节,我们会研究区块链技术如何在货币体系以外的领域里实现去中心化。本章我们会一直重复使用汽车的案例,这辆车的所有权是通过区块链来控制的。这个案例是我们在第9章中介绍的智能合约的概念里的具体体现。早在1990年年初,尼克·萨博(Nick Szabo)和其他几位创新性提出智能资产和管理智能资产的数字化合约,远远早于比特币。随着区块链的出现,这个想法变得越来越现实和具体。
令人鼓舞的案例
当代的汽车使用两种主要的加锁机制(locking mechanisms):门上的物理锁和通过电子锁住引擎不让发动的制动器。用户用遥控钥匙可以与汽车无线通信,根据遥控器与车的距离或者用户按下按钮的特定动作,来解锁车门和发动引擎。
为了防止假冒钥匙入侵,车钥匙的解锁机制需要加密。虽然安全专家发现很多最近使用的加锁机制存在很多问题,但是他们是有可能处理好这些问题的。一般来说,这些算法会使用对称钥匙加密技术。在我们这个案例中,用的是基于非对称加密技术的类似椭圆曲线数字签名算法的数字签名技术。加 入 会 员 微 信
在这个例子里,汽车储存了一份遥控器的公开密钥,用于打开车门和发动引擎。当遥控器请求开门的时候,汽车发送回随机数并要求遥控器用它储存的密钥签名。只有遥控器准确回复签名,车门才会被打开。到目前为止,这个原理和实际中的防盗机制没有什么大的区别。唯一的区别是,我们使用了很深的加密技术,安装起来比较昂贵。
实现智能
这次设计的智能汽车,是假设用来验证遥控器的公开密钥并不是靠汽车制造商永久地记录在汽车里;而是,智能汽车技术上可以不间断地,无线接收例如比特币一样的区块链上的新区块。当汽车在组装厂组装的时候,遥控器里第一个用户(比如组装厂的经理)的公开密钥通过特殊操作加入区块链。同时,这辆智能汽车也把该特殊操作的ID写入它自带的程序。
核心的思想是,汽车更改所有权的时候——从装配车厂到质量监控室到运输人员到汽车经销商到第一个所有者——也同时更新到区块链,区块链同时授权每一步的转换。值得注意的是,在这个模式下,授权用的遥控器没有跟着车走。每个人或者公司都有一个预先存在的遥控器(或者带着某种有遥控器功能的仪器)。这个遥控器里面有一个唯一的签名密钥。根据区块链的交易,签名密钥被激活或者被取消拥有这辆车的权利。这样的交易以车最新的交易ID为输入,同时设定一个新的公共密钥为输出ID。汽车目前的拥有者需要用私人密钥在这个输出ID上签名。
这种设计和我们在第9章讨论的智能资产相似,除了一个重大的区别: 区块链的交易不仅仅表示汽车所有权的变更,它还代表真正的汽车物理拥有权的转移。当汽车通过区块链转移的时候,前车主的遥控器无法工作,新车主的遥控器获得开门和启动引擎的权利。让所有权等同于使用权的技术有着深远的影响,这将促使强有力的去中心化。但是去中心化是否有用,这并不容易看清楚。我们将在11.4节回过头来讨论这个问题。
安全的交易
假设爱丽丝拥有一辆智能汽车想卖给鲍勃,能够数字化地转移汽车控制权会引起几个有趣的可能性。比如,爱丽丝也许正在国外旅行正需要钱来支付旅费,所以要卖掉停在她家后院车库的汽车。只要联上互联网,鲍勃就可以用比特币支付给爱丽丝车钱,爱丽丝可以远程通过区块链把车的所有权转移给鲍勃,鲍勃就可以开走这辆车。
然而,这样的交易存在一定的风险。如果鲍勃先支付,爱丽丝也许收了钱而不转移车的所有权。如果爱丽丝先转移车的所有权,鲍勃也许不付钱就把车开走了。即使假设爱丽丝在现场,也有可能另一方突然改变主意而撤销交易。这时候让不在场的第三方来调解争议也很困难。
我们之前多次碰到这种问题,包括在合币(第6章)和域名币(第10章)中。解决这类问题要使用同样的原则。只要支付的货币和汽车的拥有权同时存在相同的区块链,爱丽丝和鲍勃就可以产生一个不可分割的交易。这个交易同时转移汽车的所有权和车款。具体地说,这个交易规定两个输入:爱丽丝的所有权和鲍勃的支付款;规定两个输出:归鲍勃的所有权和归爱丽丝的支付款。这个交易需要双方提供输入要素,因此要求双方都要签名。如果只有一方签名,交易就无效。一旦一方签名,交易的细节就无法改变,除非这个签名无效。签过名的交易一旦对整个区块链广播,鲍勃只要等预设的几次确认(一般是6次),就可以拥有这辆车。鲍勃支付给爱丽丝的款项也同时被确认。两个确认是相辅相成,缺一不可的。
细心的读者也许注意到了一个微妙的问题。鲍勃可以收到爱丽丝签名的交易,自己也签名,但是不立即对外广播。等到爱丽丝卖东西的价格变了,鲍勃才把旧交易用原来的价格对外广播。所以为了避免这种问题,比较复杂的不可分割的交易里包括截止时间。过了截止时间后,爱丽丝可以发送输入她控制下的新地址,用来表示撤回她发给鲍勃的已经签过名的交易。
这是本章案例之一。我们将会在本章看到,很多其他案例使用区块链技术促使现实中的各种交易程序去中心化,从而达到不同种类的去中心化状态。其中,不可分割性(atomicity)是绝大多数案例共有的特性。也就是说,交易每一方的交割都是联系在一起的,所以它们都同时发生或者都不发生。不可分割性是区块链以外应用程序领域里重要的安全概念。