第三章 区块链与可信任计算
现在,当我们在手机网络或者互联网上使用智能手机或者平板计算机时,这一交互的另一端运行在一台叫作“网站服务器”的计算机上。实际上,这些所有的机器的架构,都被设计成能够被一个人或者一组彼此知晓、信任对方的人控制。
从网站的用户或者应用的用户的角度讲,这一架构是基于对未知的拥有最高权限的管理员的完全信任。此管理员能够控制服务器上发生的任何事情:他们能够随意地读取、更改、删除或者限制服务器中的任何数据。即使加密发送的数据最终也是非加密的,也能够被控制。
现在我们完全信任网站服务器,也就是说,我们非常容易遭受来自服务器,或者更加准确地说,来自能够控制服务器的内部人或黑客的攻击,从而网站不能如实地执行我们的命令和保证支付安全等。如果服务器端的某人忽视或者篡改用户向服务器所发送的命令,没有可靠的机制来阻止他们,只有不可靠、成本高昂且限于一国之内的人类制度能够阻止他们。
网站服务器的脆弱性完全不同于传统的商业协议,例如电影院的售票。传统的商业协议分散一笔交易,从而没有内部员工能够以不被别人发现的方式偷取钱财或者资源。在电影院中没有一个能够不知不觉从顾客手中偷钱的“根管理员”。因为,不同于一个网站服务器,这些被称为财务控制的传统协议,能够安全地处理现金,为了看一场电影、在商店购物或者其他日常商业交易行为,你不需要填写一个表格。你只是使用现金交易,然后获得所购买的商品。虽然这一过程经常速度很慢,并不完美,但是它提供了安全性、财务控制和信托交易的可验证性,这一点优于网站服务器,并且能够减少顾客隐私泄露的风险。
在互联网上,我们不能进行现金交易,为了进行网上交易,我们不得不填写表格,从而使得我们更加容易遭受身份盗窃,超过边界和其他信任界限,许多种类的交易难以实现,甚至纯线上交易也不能实现。现在的计算机不值得完全信任,但是在许多重要任务上,它们比人类的速度快很多,所以我们大量地使用它们。我们以遭受身份欺骗和其他不断增加的灾难性攻击为代价,从计算机和公共网络中获得巨大利益。
而区块链正在开始改变这一切。
区块链计算机是虚拟计算机、云中的计算机。它被许多传统计算机所共享,依靠密码学和共识技术来保证安全。图灵完备的区块链赋予我们这一共享的计算机,早期的相关研究包括状态机复制,而当前的成果则是以太坊(Ethereum)——一个图灵完备的区块链。这些区块链计算机将允许我们将线上协议最重要的部分放到更加可靠和安全的基础上,使得我们以前不敢在全球网络上进行的基于信任的交互成为可能。
在个人计算机之前,袖珍计算器首先开启了有限的个人计算时代,比特币已经使用一个功能有限的区块链计算机开辟了可信任计算领域。比特币实现了一种货币,津巴布韦的人可以使用这种货币向阿尔巴尼亚人进行支付,不需要依靠任何本地的机构。比特币能够实现许多其他有趣的信任最小化(Trust-minimized)的操作,包括多重签名。但是比特币因其语言的限制和区块过小的存储(当前的上限仍为1MB),不能用于其他大多数基于信任的应用,比如在多个金融工具间分享抵押品的风险基金(Riskpools)这样的应用。
与网站服务器不同,区块链计算机被许多由数以万计的人控制的传统计算机分享。根据设计,每个计算机都检查其他计算机的工作,从而区块链计算机可能可靠地、安全地执行我们的命令。区块链技术也存在安全的上限,被称为匿名的和概率性的拜占庭共识(有时也被称为中本聪共识),最为人所知的安全限制是51%攻击,因此在这里我们不妨用“信任最小化”取代夸张的“无须信任”这一表达。在这一背景下,“信任”意味着需要信任远方的陌生人,从而更容易遭受他们的“背叛”所带来的伤害。
信任最小化的代码意味着你只需要信任代码本身,不需要信任远方任何特定计算机的所有者。阿尔巴尼亚的智能手机用户可以使用区块链与某个津巴布韦人控制的计算机进行交互,但是他们不需要以任何方式知晓或者信任彼此,他们也不需要依靠任何一个国家的机构,区块链计算机仍能够安全可靠地运行代码。无论计算机或者它们的所有者在哪里,它们分享的区块链计算机将按照共识技术所允许的可靠度和安全度执行。与网站服务器技术相比,区块链计算机提供了更好的可靠性和安全性。
与电影院的收银员和验票员不同,区块链包括数以千计的计算机,它们能够处理电子门票、钱和其他许多数字形式的物品。想象一下几千个戴着绿色眼镜的机器人,它们都在检查其他机器人的账单。单个机器人(或者它们的主人)不值得信任,但是所有的机器人都由数学算法进行协调,就会产生高度的可靠性和安全性。
区块链的支持者经常谈论“去中心化的”区块链和“中心化的”网站或者中心化的机构,并将其进行对比。实际上,与密码学相结合的包含了中本聪共识与高度分布化的技术组合而不仅仅只是去中心化,才是区块链更高可靠性和更低脆弱性的源头。密码学为所有的交易和数据更新提供了一个不可伪造的证据链。许多其他去中心化或者点对点(P2P)技术并没有能够提供像中本聪共识以及加密哈希链来保护这样的区块链的安全性、可靠性,但是它们却吹嘘自己也是区块链或者密码学货币。
当前比特币区块链的一大缺点是,在线分布式区块链计算速度比网站服务器慢很多,成本也更高。粗略估计,其计算速度为网站服务器的1/10 000,其成本比网站服务器高出10 000倍,或者等同于1985年在常规的计算机上运行程序的速度和成本。出于这个原因,我们只能在比特币区块链上运行部分需要最高的可靠性和安全性的应用:我称为信托代码(Fiduciary Code)。因为由不可靠和不安全的网站服务器运行信托代码所引起的人为问题的成本,经常比运行区块链代码所需硬件的成本更高,所以,当网站服务器的可靠性和安全性达不到要求时(如网站服务器经常达不到支付和金融合约所需的可靠性和安全性要求),在区块链上运行代码比在网站服务器上运行代码效果更好。而实际上更好的是,区块链使得新的基于信任的应用成为可能,这是我们以前不敢在网站服务器上做的事情。
我们运行什么种类的信托代码呢?我们仍正在构想新的应用,可行的应用将处于不断变化中,但是我们可以采用高效的思考方法,通过类比管理传统信托机构的传统法律条款来思考信托应用。信托代码将执行一些被传统认为只有商业法律才能实现的功能,但是可依靠软件安全可靠地跨越全球,而不用顾忌传统的管辖权。
(1)产权(注册资产)。链上(On-chain)注册可以为链下(Off-chain)资产提供合法的注册,也可以用于控制链上资产,从而为资产提供安全可靠的保管。我们可以将比特币这样的密码学货币认为是产权。区块链也可以控制硬件,此硬件控制着物理财产的功能及入口。
(2)智能合约。用户通过用户界面同意执行区块链代码,这些代码包括在不同的时间或者不同的条件下,转移钱或者链上资产,转移和确认其他种类的信息,以及结合“湿的”或者传统(链下)和“干的”(链上)性能。区块链能够将密码学货币作为抵押品,激励能够被参与方或者第三方链上确认的链下执行(Performance)。一个完整的区块链计算机能够将链上资产整合到由一个链控制的风险池中,该风险池在许多类似的金融合约中延伸,减少了需要存储在链上的抵押品的数量,同时将对链下抵押品的需要最小化。区块链也能使合约的搜索、谈判和确认阶段更加可靠和安全。有了链上智能合约,我们将能够通过按钮,而不是填写会泄露个人信息的表格或者购买和出售许多线上服务和金融工具。
(3)链上债券、信托等。这相当于智能合约的衍生。假设将钱存在区块链上,并被多重签名控制着。将拥有签名的债券放到区块链计算机上,是一个很容易落地的目标,也是智能合约的一种设计功能。但是当需要将股东投票、分红等各种机制共同放到区块链计算机上,形成一种被称为“分布式自治组织”(DAO)的组织结构时,则需要更多的努力与突破。
基于区块链可信任计算所开发的各种应用正在蓬勃发展,类似于以太坊那样更具延展性的独立的底层架构也在不断地被完善当中,本书也将在后面的章节继续揭示区块链的特点以及各项应用落地的可能。
本书评论