接触区块链的,经常会听到智能合约这个词,那什么是智能合约?今天就来了解了解。

比特币引领区块链,以太坊复活智能合约

1994 年,计算机科学家和密码学家 Nick Szabo 首次提出“智能合约”概念,它早于区块链概念的诞生,几乎与互联网同龄。

Szabo 描述了什么是“以数字形式指定的一系列承诺,包括各方履行这些承诺的协议”。虽然有它的好处,但智能合约的想法一直未取得进展——一个重要原因是因为缺乏能够支持可编程合约的数字系统和技术。

直到 2008 年,第一个加密货币比特币出现,同时引入了现代区块链技术。区块链最初是以比特币的底层技术出现的,但是智能合约在 2008 年依然无法融入比特币区块链网络。五年后,以太坊创始人 Vitalik Buterin 发布了白皮书《以太坊:下一代智能合约和去中心化应用平台》, 作为首个支持“图灵完备”智能合约的区块链网络,以太坊掀开了以智能合约为代表的区块链 2.0 时代的序章。从此,涌现出了各种不同形式的智能合约,其中以太坊智能合约使用最广。

智能合约是什么

智能合约是一种特殊协议,旨在提供、验证及执行合约。

智能合约的英文是 Smart Contract,这里的智能 Smart 不等同于人工智能的 Artificial Intelligence。Smart 的意思是聪明的、灵活的,还远远未达到 Intelligence 的级别。中文的翻译有点误导的意思。

智能合约本质上是一个数字协议,数字协议在我们日常生活很常见,比如信用卡自动还款服务就是一个数字协议,在某一个时间(还款日),条件满足(储蓄卡余额比信用卡还款金额要多)的情况下,计算机系统会自动完成这笔交易。自动售货机也是一个数字协议,当选择商品,付钱后,如果付的钱足以支付该商品,那么售货机会弹出想要的商品,如果钱不够则运行另一套逻辑。

所以,智能合约就是一段计算机程序,程序中预先设定好了合约双方的职责和要执行的条件,一旦满足条约中的条款,程序会自动执行。只是与传统数字协议不同的是,智能合约是运行在区块链上的。

站在程序员的角度去理解智能合约,可以类比为一个类实例化对象,唯一的区别是这个对象永远存在区块链网络中(除非程序进行自毁)。

智能合约是怎么运行的

智能合约一定要在区块链上么? 并不是,就像上面说的信用卡自动还款、自动售货机的例子。但是运行在传统的计算机方式中存在合约被恶意篡改之类风险,还有一个重要的信任问题。在信用卡自动还款的例子中,因为是银行的服务,有银行背书,许多人相信银行。如果把这个服务放在淘宝、京东这类网店上,还会有人相信么? 即使从技术角度来说实现这种服务也并不难。

所以相对于传统的方式,区块链去中心化、不可篡改、过程透明可追踪、去信任等优点,天然适合于智能合约。智能合约也是区块链被称之为“去中心化的”重要原因,它允许我们在不需要第三方的情况下,执行可追溯、不可逆转和安全的交易。

基于区块链的智能合约构建及执行主要分为如下几步:

构建 → 存储 → 执行

  1. 多方共同制定合约内容,将编写好的智能合约代码上传到区块链上,全网的验证节点都会收到编写好的合约。
  2. 智能合约会定期检查是否存在相关事件和触发条件,满足条件的事件将会推送到待验证的队列中。比如每月10号信用卡还款日,这个事件就是智能合约的触发条件。
  3. 区块链上的验证节点先对该事件进行签名验证,以确保其有效,等大多数验证节点对该事件达成共识后,智能合约将成功执行,并通知用户。
  4. 合约成功执行后将移出区块,未执行的合约则继续等待下一轮处理,直至成功执行。

智能合约的代码是具体如何运行的,不同区块链运行的方式不同,像以太坊是运行在以太坊的 EVM 中,超级账本 Fabric 是运行在 dcoker 中。

基于区块链乌托邦式的智能合约虽然能够解决当前传统计算机合约下的许多问题,但是现阶区块链段智能合约仍然有一些缺点。

  • 区块链不可篡改的特性,智能合约一旦上链就不容易修改,这使得修改代码变得困难。
  • 区块链公开透明的特性,使得所有的私人信息都进入了公共领域。对于想要完全隐私的企业和个人来说,缺乏保密性是使用智能合约的一大缺点。
  • 区块链上的智能合约只是将信任问题进行了转移并没有得到解决,比如房产交易合约,房屋归属权上链的首要条件是现实生活中房产交付确认同样是必须的输入信息。也就是,区块链无法解决外部虚假信息的录入。

互联网从诞生到成熟这条路走了有三十年,对于仅活跃几年的区块链智能合约,未来的路依旧会很漫长。