2.1 智能合约 - JoanJiao/TokenEconomyBook_Chinese GitHub Wiki

智能合约是由分布式账本处理的软件。它是一种权限管理工具,可以通过 Internet 固化(formalize)和执行不受信任的参与者之间的协议,并具有内置的合规性和控制性。智能合约可以降低两方之间简单协议、组织章程或创建不同类型代币的固化和执行成本。

你会与一个你素未谋面、因此不认识也不信任的人签订合同吗?你会成为外国小公司的投资者吗?你会同意借钱给陌生人,比如危地马拉的农民、中国的老师或英国的收银员吗?或者你会为通过互联网购买 1 欧元的商品订立具有法律约束力的合同吗?比如从艺术家那里购买歌曲?上述所有案例的答案可能是否定的,因为建立必要的法律合同以确保你的交易的成本太高。或者,你可以使用受信任的中介来解决此类合同,并为其服务支付结算费用。亚马逊、eBay、Airbnb 和 Uber 等许多 Web2 科技巨头的商业模式都是由于缺乏可信赖的原生价值结算层和以用户为中心的身份系统而建立的。智能合约与以用户为中心的身份系统相结合,可以为这两个问题提供解决方案。他们可以正式确定人员和机构之间的关系以及他们拥有的资产,完全是 P2P,而不需要受信任的中介。

尽管智能合约的概念并不新鲜,但区块链网络似乎是智能合约实施的催化剂。更原始的智能合约形式是自动售货机,交易规则被编程到机器中。你可以通过点按你想要的产品对应的数字来选择产品并投钱进去。如果你投入足够多的钱,机器就会被编程为弹出产品。如果没有,你就不会收到产品,或者如果机器中没有该产品,你将获得退款。自动售货机使某些街头小贩过时了,它们扩展了服务,提供了 7x24 不间断服务,而不是像人工操作的供应商那样营业时间有限。

自主执行协议(Self-Enforcing Agreements)

智能合约是一种自我执行的协议,协议被固化到软件中。软件代码中包含一组规则,智能合约的各方同意在这些规则下相互交互。当预定义规则被满足时,该协议将由区块链网络的多数共识自动执行。智能合约提供了有效管理代币化资产和两方或多方之间访问权限的机制。如果满足特定的预定义条件,可以将其视为解锁价值或访问权限的密码盒。因此,智能合约提供了一种公开且可验证的方式,将治理规则和业务逻辑嵌入到几行代码中,并通过 P2P 网络的多数共识进行审计和执行。

图 2.1 智能合约

可以从区块链网络内部(其他智能合约)和外部(外部数据源)的实体调用智能合约。外部数据传送(feeds),即所谓的“预言机”(Oracles),将与智能合约相关的数据从链下世界注入智能合约。他们可以实时跟踪协议的执行情况,因此可以节省成本,因为合规和控制是即时发生的。智能合约降低了协议的交易成本。具体来说,它们降低了 (i) 达成协议、(ii) 固化和 (iii) 执行的成本。如果实施得当,智能合约可以提供优于传统合同法的交易安全性,从而降低审计和执行此类协议的协调成本。智能合约还绕过了组织的委托代理困境^1,提供了更高的透明度和问责制,并减少了官僚主义(了解更多:第 2 部分 - DAO 的制度经济学)。

“智能合约”一词本身有点令人遗憾,因为智能合约既不是特别智能,也不反映法律合约:(i)智能合约只能像编码它的人一样聪明,受限于其在编写代码时考虑到的所有可用信息;(ii) 虽然如果满足某些条件,智能合约可能具有强制执行法律合同的潜力,但我们首先需要解决许多技术法律问题,这需要时间以及律师和软件开发人员之间的跨学科讨论。

此外,智能合约的安全性仍然是一个需要在技术层面解决的问题。需要实施更复杂的合同条款,以使智能合同符合法律合同,包括分布式的争议解决机制。虽然此类发展可能需要更多时间才能成熟,但一些有趣的争议解决方案已经在开发中,例如 “Kleros”、“Openlaw” 或 “Jur”。在接下来的几年里,我们可能会看到法律合约和智能合约的融合 在撰写本书时,这方面的最佳实践仍然很少,仍然需要一个集体学习的过程。该技术目前仍处于初期阶段,仍然需要采用法律标准。

产业应用案例

智能合约的应用案例有简单的有复杂的。它们可用于简单的经济交易,例如从 A 向 B 汇款。智能合约还可用于注册任何类型的所有权和产权,例如土地登记和知识产权,或管理共享经济的智能访问控制。应用领域包括银行、保险、能源、电子政务、电信、音乐和电影业、美术、移动、教育等领域。每个协议、流程、任务或付款都可以集中管理。许多传统的中介机构,如律师、经纪人、银行家或公共管理人员,以及互联网平台可能都不再需要,或者至少它们的一些服务可能会过时:汽车可以使用智能合约在加油时支付自己的账单,或者自己在充电桩充电。发票可以在产品装运到达时结算。可以对代币化证券形式的智能股票进行编程,以自动支付股息(了解更多:第 4 部分 - 资产代币和部分所有权)。

智能合约可以为共享经济提供原生结算层,目前结算层还是由互联网平台运营商代理和处理的。智能合约支持的 P2P 支付特性降低了交易成本,这意味着小额支付在经济上可能比现在更可行。^2 两个互不信任的对等方之间的智能访问控制可以为共享经济提供一个切实可行的解决方案,而无需集中式平台提供商,他们目前拥有着我们太多的数据,也获得了因此而创造的巨大经济价值。这可能会导致共享经济的大爆发:公寓、汽车、洗衣机、自行车、割草机——一旦所有这些设备都标有自己的区块链地址(或 DID),它们就可以通过充当数字锁的智能合约来进行管理。

智能合约的一个更复杂的例子是自主管理森林的应用案例,例如“Terra0”,用以太坊区块链上的智能合约管理德国森林树木的砍伐与销售。通过无人机和卫星来监测森林的生长并触发智能合约中的事件,例如砍伐和出售木材的分包协议。

此外,智能合约可用于众多参与者之间、商品或服务供应链中更复杂的协议,或用于管理一群拥有相同利益和目标的人,而无需传统的中心化机构。去中心化自治组织 (DAO) 就是这样一个例子,它可能代表了最常见的复杂智能合约形式。智能合约在此正式确定了组织的治理规则——如章程、管理法规、程序规则——并用自我执行的代码取代日常的运营管理。

正如我们所知,智能合约和 DAO 也可能颠覆社交媒体。 基于 Web2 的社交媒体网络以数据的形式从用户那里获取租金,然后将其货币化。在 Web3 中,智能合约可以启用以目的为导向的生态系统,在该生态系统中,用户可以通过获得网络代币奖励来从他们的网络活动中受益。其中一个例子是“Steemit”,这是一个分布式的社交网络,以 DAO 为组织形式,并使用网络代币激励用户做出贡献(阅读更多:第 4 部分 - Steemit)。

智能合约和分布式账本也可以成为“物联网”中机器对机器结算的催化剂。然而,这就要求该物联网中的所有物品都具有区块链身份,因此可以被唯一地寻址。每台机器或其他物理实体的可寻址性都需要防篡改。这可以通过使用所谓的“加密加速器(crypto accelerator)”(也称为“数字孪生 digital twin”)标记或给物体加上芯片来实现。加密加速器是一个小型微控制器,经过优化以运行最重要的加密算法。它可以有一块水果上的贴纸大小,因此可以作为供应链透明度等应用案例的基础。借助数字孪生,任何物理实体都可以发送唯一的数字签名,或者发送和接收代币。以这项技术的当前发展速度来预测未来,并考虑到与物联网、大数据和人工智能等其他新兴技术的融合,我们现在可以设想一个个人、组织和机器都可以无摩擦、低成本地自由交互的新兴世界。

此外,智能合约还可用于创建和管理可以代表任何资产或访问权限、甚至激励行为的加密代币。代币可能会成为智能合约最重要的应用之一,可能会彻底改变我们所知道的资产管理。这就是为什么本书的最后两部分完全专注于代币这一主题。

预言机(Oracles)

区块链网络和智能合约无法从其网络外部访问数据。为了知道该做什么,智能合约通常需要以数据传送的形式从外部访问与合同协议相关的信息,也称为“预言机”。这些预言机是向智能合约提供外部信息的服务,这些信息可以触发智能合约的预定义操作,进而导致账本的状态更改。这些外部数据一般来自软件(大数据应用程序)或硬件(物联网)。

  • 软件预言机: 处理来自在线资源的信息数据,例如温度、股票或商品价格、航班或火车到达时间等。

  • 硬件预言机: 一些智能合约需要直接来自物理世界的信息,例如,汽车越过障碍物,运动传感器必须检测车辆并将数据发送到智能合约,或供应链行业中的 RFID 传感器。

  • 入站预言机(inbound oracles):提供来自外部世界的数据。

  • 出站预言机(outbound oracles):为智能合约提供向外界发送数据的能力。

  • 基于共识的预言机:从 “Augur” 或 “Gnosis” 等人类共识和市场预测获取数据。然而,仅使用一种信息来源可能是不可靠的,因为市场可以被操纵;可能需要预言机的评级系统。例如,如果五分之三的预言机可以确定事件的结果,则不同预言机服务的组合可能会进一步提高数据的可靠性。

预言机的主要挑战是人们需要信任这些外部信息源,无论它们来自网站还是传感器。由于预言机是不属于区块链共识机制的第三方服务,因此它们不受此公共基础设施提供的底层安全机制的约束。可以复制站在合约和预言机之间的“中间人攻击(man-in-the-middle attacks)”^3。 “第二层”的稳健性保证至关重要。可以使用不同的可信密码工具和计算技术作为解决这些问题的一种方式。如果预言机的安全性无法得到充分保障,它将成为广泛实施智能合约的阻碍。

需要注意的是,智能合约不会等待来自外部来源的数据流入系统。合约必须被调用,这意味着一个人必须花费网络资源来调用外部世界的数据,这会导致网络交易成本。在以太坊的场景下,这将是 “Gas” 的成本。

以购买二手车为例

如果两个人,比如 Alice 和 Bob,彼此不认识也不信任,他们通常需要一个受信任的第三方作为中介来验证交易并执行交易。借助智能合约和区块链网络,他们就不再需要那些可信赖的中介机构来清算或结算他们的交易。以买卖汽车为例:如果 Alice 今天想从 Bob 那里购买汽车,则需要一系列受信任的第三方来验证这笔交易。该流程因国家/地区而异,但始终涉及至少一个但通常更多受信任的第三方:机动车辆登记机构,以及公证人和/或保险公司。这可能是一个复杂而漫长的过程,包括由此产生的费用。如果所有相关当局和公司都使用分布式账本,则可以使用智能合约来正式确定有效汽车销售的所有规则,包括购买汽车保险单等附加服务的结算。如果 Alice 想使用智能合约从 Bob 那里购买汽车,潜在的过程可能如下所示:

  • Bob 将使用互联网找到一项服务,在该服务中他可以发布他的二手车并使用智能合约定义销售条款——例如,在某个去中心化版本的 eBay 上。这一步与今天没有什么不同,但基于智能合约的服务需要与 Web3 兼容,才能与区块链网络进行通信。这种智能合约服务还可能提供一个智能车库,该车库也与区块链网络进行通信。因此,Bob 需要下载一个带有内置钱包的 Web3 软件,这将为他提供一个独特的区块链身份——一个带有相关公私钥对的区块链地址(了解更多:第 1 部分 - 密码学)。

  • Alice 也将像今天一样使用互联网。她将在网络上搜索去中心化版本的 eBay,Bob 将他的汽车贴在那里。Alice 还需要下载与 Web3 兼容的浏览器。

  • 如果 Alice 找到她喜欢并想要购买的汽车——比如 Bob 的车——她会点击“购买”,基于智能合约的服务将使用区块链网络来检查 Bob 是否是汽车的所有者,并且 Alice 是否有足够的可用资金。关于这两种状态的信息——Bob 声称要出售的汽车的所有权,以及 Alice 拥有的代币数量——都记录在账本上。单击“购买”按钮后,智能合约服务还可能让她选择保险计划,选择的保险公司也在账本上注册并与提供此保险的智能合约服务相关联(在这样的未来情境下,保险计划可能会即时计算,其中费率将基于汽车的数据和 Alice 的驾驶历史)。

  • 如果网络确认这两种状态都是真实的——Alice 有足够的资金,并且 Bob 确实是汽车的所有者——区块链网络将 Alice 注册为汽车的新所有者,并且他们的资金余额会自动更新:Bob 现在的账户里多了 20,000 个代币,而 Alice 的钱包里少了 20,000 个代币。 然后,Alice 会收到车库智能锁的访问代码。此外,Alice 现在还在她选择的汽车保险公司注册,这是她在购买汽车时选择的,同时触发了另一个智能合约。

  • Bob 现在可以将他的车停在车库里。他的汽车在区块链上也有一个独特的身份,现在的状态将被登记为停在车库里,Alice 将收到一个通知,告诉她在哪里可以用她的访问代码来取车。

  • Alice 现在可以在指定的车库取车,由连接到区块链的智能锁保护,并由 Bob 和 Alice 使用的智能合约管理。她可以用她的私钥解锁车库,这表明她是汽车的合法拥有者。这辆车是她的,登记在她名下,而且有保险。

图 2.2 在 Web2 时代购买一辆二手车

图 2.3 在 Web3 时代购买一辆二手车

使用智能合约,如果监管环境允许,我们现在可以避免某些机构的人工干预,如机动车管理局、保险公司,以及在某些国家,还有公证人。每台运行区块链协议的计算机都将能够检查某人是否是汽车的合法所有者。一旦汽车配备了使用智能合约进行访问控制的数字钥匙,偷车就不会像今天那么容易了。某些自动化流程还需要将智能合约与来自外部软件和硬件的数据传送相融合,例如在车库拍摄照片以监控汽车状态的情况。作为车主,你还可以使用智能合约授权他人驾驶你的汽车,将他们的区块链身份注册到你汽车的智能合约中。

智能合约的安全性是大规模应用的一个重要问题: (i) 预言机的安全性:确保来自链下来源的数据是可信的; (ii) 安全编码和形式验证:根据行为规范对代码进行计算机辅助检查和测试; (iii) 程序安全和争议解决:额外的链上和链下机制,用于解决智​​能合约运行时使用引起的投诉或意外情况。从安全的角度和市场采用的角度来看,替代目前使用的智能合约编程语言可能是一个有趣的方面。智能合约与法律合约的融合是另一个需要跨学科研发的重要问题。此外,智能合约的设计方式应使个性化数据仅向参与该过程的需要了解明确信息的参与者透露。智能合约需要符合隐私保护法规(设计隐私)。

如上所述,许多智能合约用例只能与大数据应用和“物联网”等其他技术相互作用。这种技术的相互作用可以为未来几十年的全新产品、服务和资产类别铺平道路。然而,这也可能引发许多社会政治问题。一旦所有物品都被标记了唯一的区块链地址(身份),可以在区块链网络中被唯一引用,并且如果它们或多或少地由智能软件控制,那么这些设备就可以成为人机经济(man-machine economy)中的自主经济代理。然而,(i)我们是否以及如何将任务从人类转移到机器,(ii)这种发展可能产生什么样的社会政治影响,以及(iii)在设计此类系统之前,我们需要对如何在社会中塑造这类现象进行公开的讨论。

智能合约的历史

虽然“智能合约”一词自第一个比特币和以太坊出现以来变得更加主流,但它是由 Nick Szabo 在 1996 年首次创造的,因此先于区块链网络的发展。Szabo 指出,在 Web 的早期,数字革命不仅会创造新的制度,而且还会使经济和社会关系正式化。二十年后,以太坊出现了,并带来了这一术语的复兴。 Szabo 通过数字合同附带的自动验证和执行功能来证明“智能”一词的合理性:自动执行协议条款的数字交易日志,旨在履行商定的合同条款。完全使用计算机代码自动管理所有相关方的关系和义务。

与使用现有法律体系的工具通过反应程序来保证合同安全的传统合同相反,智能合同(根据 Szabo 的说法)可以通过自动机制主动防止这种反应性的“事后”安全性。制造潜在违约也有可能但成本高昂。萨博指出,现有法律制度的反应性程序可以最小化,但永远不会完全消除。为了提供这种主动安全级别,智能合约应该是自动的并且 (a) 可观察的、(b) 可验证的和 (c) 可执行的。无论如何,Szabo 警告说 (d) 必须通过仅向有权查看数据的缔约方披露必要的数据来保证数据的隐私。

Szabo 非常具体地描述了如何在技术上将这些关系形式化,并列出了可以使用的各种加密方法,例如公钥加密和数字签名,特别是盲签名 ^4 和零知识证明密码技术。^5 Szabo 描述的其中一些密码技术方法可以在比特币的实现中找到。然而,与中本聪和许多其他比特币和替代区块链网络(如以太坊)的早期开发者相比,Szabo 在他的思维过程中更有远见。虽然他在 1996 年提到了更多隐私保护方法,如盲签名和零知识证明,但这些方法只是慢慢地进入区块链世界。这种隐私保护技术也有可能满足欧盟通用数据保护条例 (GDPR) 中规定的“设计隐私”的要求,比目前大多数国家使用的加密方法要好得多 - 最先进的区块链网络(了解更多:第 1 部分 - 密码技术)。

Szabo 表示,要让智能合约“以自主执行代码的形式嵌入到现实世界中”,它们必须被设计得值得信赖和抗攻击,既能防止故意攻击,也能防止无意破坏。然而,当时的 Szabo 并不知道如何完全去中心化信任,并使这样的系统能够抵抗女巫攻击,因此描述了可信中介的必要性。他描述了潜在攻击者的经济效用函数,并在概述解决方案时提到了理论计算机科学和信息安全的概念。 1998 年,他继续将围绕智能合约的想法发展为 P2P 价值转移的现实应用。他想出了一个可以像黄金一样抗通胀的电子现金的想法,他称之为“比特黄金”。 Bit Gold 从未实施,因为 Szabo 没有找到一种方法来用抗女巫攻击的系统取代受信任的中介。十年后,比特币的重大突破正是通过引入“工作量证明”解决了这个问题。

Szabo 设想了诸如法律、经济学和密码学等不同科学领域的交叉以形成智能合约,但他批评说这些学科之间几乎没有交流。然而,他并不是第一个考虑合同自动化的人。两年前,Ian Grigg 描述了他对李嘉图合约的看法,具体说明了如何使现实世界的合约机器可读和机器可执行。他想创建一个系统,允许在执行协议之前保持人类对合同意图和结果行为的可读性,同时通过哈希函数和数字签名等加密技术优化机器身份验证和处理。他的目标是保证法律文件和相关事项的链接和处理,以提供比传统法律程序更高的透明度和安全性。第一个智能合约和李嘉图合约的混合解决方案是 “Openbazaar”,这是一个 P2P 电子商务平台,已经与 Ricardian Contracts 合作。

自以太坊项目出现以来,“智能合约”一词经历了复兴。以太坊将智能合约编程的概念与处理协议的底层区块链网络分离。与比特币不同,以太坊协议旨在提供一种节省成本的基础设施,人们只需几行代码就可以创建任何类型的智能合约。以太坊启发了更多项目在类似的智能合约区块链网络上工作,例如 “EOS”、“Cardano” 或 “Waves”,所有这些网络都具有不同程度的技术成熟度、可扩展性、网络安全性,并且经常使用不同的智能合约语言。

本节概要

智能合约是由分布式账本处理的软件。它是一种权限管理工具,可以通过 Internet 固化和执行不受信任的参与者之间的协议,并具有内置的合规性和控制性。

智能合约可以降低两方之间简单协议、组织章程或创建不同类型代币的固化和执行成本。

“智能合约”一词最早由 Nick Szabo 于 1996 年创造,早于区块链网络的发展。当 Szabo 指出数字革命不仅会创造新的制度,还会使经济和社会关系形式化时,还是 Web 的早期阶段。

智能合约用例从简单到复杂。智能合约最复杂的形式是去中心化的自治组织。同时,智能合约也可用于创建代币。

智能合约有可能颠覆许多行业,包括银行、保险、能源、电子政务、电信、音乐和电影行业、美术、移动、教育等领域。

预言机提供智能合约所需的外部数据,并在满足预定义条件时触发智能合约执行。预言机是查找和验证现实世界事件并将此信息提交给智能合约的服务,它会自动触发区块链上的状态更改。预言机的主要任务是以安全和可信的方式将这些值提供给智能合约。这些数据流来自软件(大数据应用程序)或硬件(物联网)。

章节引用和延伸阅读

脚注