20世纪90年代,Nick Szabo首次提出智能合约的概念。当时,他把智能合约定义为通过结合协议与用户界面,规范和保障计算机网络安全的工具。
Szabo探讨了把智能合约运用于合同协议相关各领域的潜在用途,例如信用体系、支付流程和内容版权管理。
在加密货币领域,智能合约可界定为运行在区块链中的应用或程序。通常,它们作为一种遵循特定规则强制执行的数字化协议发挥作用。这些规则由计算机代码预定义,经所有网络节点复制和执行。
区块链智能合约支持创建去信任化协议。这意味着合约双方通过区块链做出承诺,而无需相互了解或信任。双方确定,如果没有达到条件,合约不会执行。此外,使用智能合约不再需要中间机构,从而显著降低运行成本。
虽然智能合约已由比特币协议支持多年,但借由以太坊创造者兼联合创始人Vitalik Buterin之手才普及开来。值得注意的是,各个区块链实施智能合约的方式有所不同。
本文将重点介绍运行在以太坊虚拟机(EVM)中的智能合约,而以太坊虚拟机是以太坊区块链的重要组成部分。
简单来说,智能合约是一种确定性程序,会在满足某些条件时,执行特定任务。因此,智能合约系统通常遵循“如果……就……”的条件语句。虽然“智能合约”这个概念已广为人知,但它其实既非法定合约,也不智能。它们只是运行在区块链分布式系统中的一段代码。
在以太坊网络中,智能合约负责执行和管理用户(地址)彼此交互时的区块链操作。智能合约以外的地址称为“外部账户(EOA)”。因此,智能合约由计算机代码控制,而外部账户(EOA)由用户掌控。
以太坊智能合约基本上由合约代码和两个公钥组成。第一个公钥由合约创建者提供,另一个公钥即为合约本身,用作每个智能合约的唯一数字标识符。
所有的智能合约部署都通过区块链交易进行,只有在外部账户(EOA)或其他智能合约被调用时才会激活。但是,智能合约一般由外部账户(EOA),即用户首次触发。
以太坊智能合约具有以下常见特征:
分布式。智能合约在以太坊网络的所有节点中复制和分布。这与其他基于中心化服务器的解决方案截然不同。
确定性。满足要求时,智能合约仅执行预先设计的操作。而且,无论由谁执行,结果均保持一致。
自主性。智能合约相对于“自执行”程序,会自动完成各种任务。大多数情况下,未触发的智能合约保持“休眠”状态,不会执行任何操作。
不变性。智能合约在部署后无法更改。只有实现特定功能后,智能合约才可“删除”。所以,我们不妨说,智能合约提供防篡改代码。
定制化。部署之前,智能合约通过各种各样的方式编码。因此,可用于创建种类繁多的去中心化应用程序(DApp)。这与以太坊属于图灵完备区块链这一事实息息相关。
去信任化。在无需相互了解或信任的情况下,两方或多方可通过智能合约交互。此外,区块链技术将确保数据准确无误。
透明性。智能合约的基础是公共区块链,因此源代码不仅不可篡改,而且对所有人公开透明。
一经部署,以太坊智能合约无法再添加新的函数。但是,只要合约创建者在代码中预留了“SELFDESTRUCT”函数,该函数之后即可“删除”智能合约,并用新合约取而代之。如代码中未预留该函数,则智能合约无法删除。
值得注意的是,通过所谓的可升级智能合约,开发人员对合约的不变性可进行更灵活的操作。创建可升级智能合约的方式多种多样,每种的复杂程度都有所不同。
举个简单的例子,假设一个智能合约划分为多个较小的合约。某些部分设计为不可变更,而其他部分启用“删除”函数。也就是说,部分代码(智能合约)可删除和替换,而其他功能保持不变。
作为可编程代码,智能合约高度可定制,设计方式众多,提供丰富多样的服务和解决方案。
作为去中心化和自执行程序,智能合约可提高透明度并降低运行成本。根据具体实施情况,智能合约还可提高实施效率并降低繁琐费用。
涉及到两方或多方的资金转账或交易,智能合约尤为实用。
换句话说,智能合约可针对丰富的用例量身打造,包括创建代币化资产、投票系统、加密货币钱包、去中心化交易平台、游戏和移动App。智能合约还可与其他区块链解决方案共同部署,覆盖医疗保健、慈善、供应链、治理和去中心化金融(DeFi)等领域。
以太坊区块链发布的代币遵循ERC-20标准。该标准规定所有以太坊代币的核心功能。因此,这些数字资产通常称为“ERC-20代币”,在现有加密货币中占有很大的比重。
许多区块链公司和初创公司都部署了智能合约,以便在以太坊网络中自主发行数字代币。代币发行后,大多数公司通过首次代币发行(ICO)来分配自家的ERC-20代币。大多数情况下,使用智能合约即可通过去信任化的方式,有效实现资金交易和代币分配。
智能合约由人工编写的计算机代码组成。代码会存在缺陷与漏洞,将带来诸多风险。按照理想的做法,智能合约应由经验丰富的程序员编写部署,涉及敏感信息和巨额资金时更该如此。
除此之外,有人认为中心化系统就能提供智能合约的绝大多数解决方案和功能。主要区别在于智能合约运行于分布式P2P网络中,而不是中心化的服务器。而且,智能合约以区块链系统为基础,因此往往不可篡改或难以更改。
智能合约的不变性优势明显,但在某些情况下却适得其反。例如,去中心化自治组织“The DAO”于2016年惨遭黑客攻击,数百万枚以太币(ETH)不翼而飞,其原因就是智能合约代码存在缺陷。
由于智能合约不可变,开发人员无法修复代码。这最终导致了硬分叉,第二个以太坊链由此诞生。简言之,一条链(当前以太坊区块链的一部分)“恢复”到黑客攻击之前的原样,将资金返还原主。另一条链(现在称为“以太坊经典”)则决定不干预黑客攻击,坚称区块链中发生的事件永远不应并篡改。
需要注意的是,该问题并不是由以太坊区块链造成,而是因智能合约的错误执行所引发。
智能合约的另一局限性则与其不明确的法律效应相关。智能合约在大多数国家都处于灰色地带,而且还不适用于当前的法律框架。
例如,许多合约要求交易双方需通过恰当的实名认证且年龄超过18周岁。但区块链技术具有匿名性,加之缺少中间机构,就会与合约要求相冲突。应对该问题的解决方案未来或许会出现。但智能合约运行于无国界的分布式网络中,法律执行难度非常大。
有些区块链爱好者把智能合约视为即将取代现有大部分商业和官僚系统的自治解决方案。虽然这个想法可能会实现,但要成为常态还任重而道远。
智能合约确实是一项有趣的技术。但是,分布式、确定性、透明性和不变性等特征有时反而降低了智能合约的吸引力。
智能合约的本质弊端在于其并不能很好地解决诸多现实问题。事实上,有些机构目前使用传统的服务器解决方案才是权宜之计。
与智能合约相比,中心化服务器的维护更容易,成本更低,并且在速度和跨网络通信(互操作性)方面往往具有较大优势。
毫无疑问,智能合约对加密货币领域产生了深远影响,也确实为区块链领域带来了重大变革。终端用户不一定直接与智能合约交互。但在不久的将来,智能合约的应用会更广泛,将覆盖金融服务、供应链管理等各个领域。
智能合约和区块链几乎共同颠覆了当今社会的所有领域。但只有时间才能证明,这些突破性技术是否能突破重重障碍,最终实现大规模普及。