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