第三节
智能合约
智能合约(Smart Contract)是在区块链上运行的计算机程序。智能合约将协议条款写入代码,然后部署于分布式的区块链网络中。智能合约的执行是由代码控制在区块链上自动执行,因此承载于协议的交易是可追踪且不可逆的。智能合约能够允许广泛的匿名主体间在无须对手方身份背景信息和外部执行机制的情况下进行交易。
智能合约这一概念最早由尼克·萨博提出。萨博于1994年撰写了《智能合约》一文,介绍了智能合约的概念;又于1996年撰写了《智能合约:数字市场的基石》( Smart Contracts: Building Blocks for Digital Markets )一文,介绍了智能合约的一些特性和设计原则。简单来说,萨博通过这两篇文章设想了一类支持自动化和安全交易的数字市场,使人与人之间可以无须经由中介机构,以点对点的方式进行交易。
随着比特币的发展,人们已经认识到区块链可以用于开发更为广泛的行业和领域的去中心化解决方案。然而,比特币的体系结构只支持检查和验证货币交易,尚不足以支持其他各类应用程序,因此后来的区块链中创造性地引入了智能合约。正如在第三章第一节区块链部分所述,第一代区块链(比特币区块链)只支持支付活动,从第二代区块链以太坊开始,区块链开始具有可编程的属性,智能合约也就应运而生。根据第三方数据公司Dune统计,2022年以太坊上曾经运行过的智能合约总数已经超过5000万。
智能合约本质上是借助区块链技术实现信任机制的创新。传统合约的信任基础在于合同方对彼此的信任及对国家司法体制的信任。合同方对彼此的信任是指合约签订方相信对方会按约行使合同权利和履行合同义务。而对国家司法体制的信任在于通过指定和实施合同法为合约执行提供制度保障。在现实生活中,合同在签订生效后便具有法律效力,如果有一方不履行合同义务或违背合同条款,另一方就可以诉诸法院要求强制执行或获得赔偿,进而保障其合同利益。可见,法律威慑是传统合约方信任合约可执行的另一个重要原因。
而智能合约通过开源的、不可篡改的代码自动执行来提供陌生人之间交互的信任基础。一方面,智能合约的程序代码都是公开的,用户可以直接通过查阅代码来了解智能合约设定的权利义务内容,进而决定是否加入合约;另一方面,智能合约基于区块链技术,一经上链便不可更改,而且一旦达成合约初始设定的执行条件即自动执行,不受任何主体控制和干预,因而用户可以不考虑其他与智能合约交互用户的可靠性,便充分相信合约定会如约执行。总之,智能合约是部署在区块链上的计算机程序,这使人们无须相信对手方和某个第三方,而是可以通过直接相信代码来实现可靠的交互。
接下来,我们通过一些更形象的说明来介绍智能合约应用的技术过程。对此,以太坊的官方网站提供了一个非常恰当的比喻,即智能合约就像是一个“自动售货机”(Digital Vending Machine)。用户先选择自己需要购买的商品,自动售货机就会给出商品的价格;而后用户投入对应数量的货币,自动售货机就会提供对应的商品。智能合约也是如此——当合约条件被满足时,结果就会自动执行,而无须第三方力量的介入。同时,结果也是完全可预测的,就好比在自动售货机正常运营的情况下,消费者会期待它提供自己所选择的商品一样。
进一步地,我们将此代入加密数字货币交易的场景中来看,交易过程实际上是用户与智能合约进行交互的过程。用户先向智能合约发送信息,告知其自己希望兑换的代币种类和数量,而后智能合约通过计算告知用户目前的兑换比率等信息。用户在确认之后,就相当于把希望兑换的代币打入了智能合约。智能合约在获得用户的输入之后,根据预先设定的程序将兑换好的代币打入用户的地址,这就完成了一次代币交换的过程,中间无须任何第三方来保证交易的进行。
当然,对于以太坊的参与者来说,除了与已有的智能合约进行交互以外,参与者还可以自己编写智能合约上传到以太坊区块链。任何人都可以通过编写程序,以及支付一定的燃料费用,将智能合约部署到以太坊上。目前,智能合约编程语言中比较流行的是Solidity语言,但除此之外以太坊也支持Vyper、Yul、Fe等语言。这些编程语言有各自的特点,例如Solidity的教程和学习工具齐全,开发者社区较大;Vyper适合有过Python开发经验的开发人员,等等,用户可以根据自己的背景进行选择。
以太坊区块链上的智能合约都是公开的,所以具有非常好的组合性(Composability)。也就是说,部署在以太坊网络上的智能合约就像一块块积木一样,可以被自由组合构建成想要的样式。开发者在编写时可以直接调用其他智能合约,这极大地便利了智能合约的开发,也为智能合约带来了更多的可能性。实际上,代币标准本身也是一种智能合约,开发者可以根据需求实时进行设计与编写。例如ERC-20提供了一套基于以太坊网络的同质化代币发行标准,所谓同质,是指每个代币与另一个代币在类型和价值上完全相同。正因为采取了相同的标准,不同ERC-20代币之间的转换才能变得更加方便。后来,ERC-721还引入了非同质化代币标准,换句话说,这种类型的代币都是独一无二的,非常适合在提供收藏品、音乐会和体育赛事门票等内容的平台上使用。
去中心化金融能够脱离中心化机构的核心原因就是利用智能合约的自动执行,因此智能合约是去中心化金融的重要基础设施之一。除了完全自治且无须第三方中介机构的干预这一核心特征外,智能合约还具备其他优势,例如具有很高的透明度和非常优秀的组合性等,这些优势极大地促进了去中心化金融的繁荣。
总之,在智能合约的发展过程中,机遇与风险并存。一方面,智能合约是去中心化金融得以飞速发展的助推器,具有很强的灵活性,有助于在加密领域提升用户体验。另一方面,智能合约存在风险。智能合约本质上由人编写,可能存在逻辑错误等漏洞,又因为其具有开源特性,相较于有安全层保护的传统系统更容易受到黑客攻击,用户资产可能因此遭受损失。以闪电贷攻击(Flash Loan Attack) 为代表的一系列网络安全事件已经引起了业界和监管层的广泛关注。值得庆幸的是,开发者们也在采取行动应对智能合约风险。展望未来,我们相信智能合约会在更广泛的领域赋能传统行业的发展。