随着区块链技术的普及和应用不断深入,新兴的智能合约技术在学术界和产业界吸引了广泛的关注。本文通过对智能合约的定义、工作原理以及智能合约与区块链的关系进行了梳理,讨论了智能合约的发展趋势与展望,以期为未来智能合约的关键技术研究提供有益的启发与参考。
一、智能合约的定义
“智能合约”(smart contract)这个术语至少可以追溯到1995年,是由多产的跨领域法律学者尼克·萨博(Nick Szabo)提出来的。他发表在自己网站的几篇文章中提到了智能合约的理念。他的定义如下:“一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。”
1、承诺
一套承诺指的是合约参与方同意的(经常是相互的)权利和义务。这些承诺定义了合约的本质和目的。以一个销售合约为典型例子:卖家承诺发送货物,买家承诺支付合理的货款。
2、数字形式
数字形式意味着合约不得不写入计算机可读的代码中。这是必须的,因为只要参与方达成协定,智能合约建立的权利和义务,是由一台计算机或者计算机网络执行的。
01
达成协定
智能合约的参与方什么时候达成协定呢?答案取决于特定的智能合约实施。一般而言,当参与方通过在合约宿主平台上安装合约,致力于合约的执行时,合约就被发现了。
02
合约执行
“执行”的真正意思也依赖于实施。一般而言,执行意味着通过技术手段积极实施。
03
计算机可读的代码
合约需要的特定“数字形式”非常依赖于参与方同意使用的协议。
3、协议
协议是技术实现(technical implementation),在这个基础上,合约承诺被实现,或者合约承诺实现被记录下来。选择哪个协议取决于许多因素,最重要的因素是在合约履行期间,被交易资产的本质。再次以销售合约为例:假设,参与方同意货款以比特币支付,选择的协议很明显将会是比特币协议,在此协议上,智能合约被实施。因此,合约必须要用到的“数字形式”就是比特币脚本语言。比特币脚本语言是一种非图灵完备的、命令式的、基于栈的编程语言。
通俗来说,智能合约就是计算机中的一段代码,这段代码定义了一个协议,就像现实世界中的合同。当满足一定条件时间后(比如合同到期,乙方违约等),合约自动执行,中间无需第三方参与。
综上所述,智能合约是区块链的核心构成要素(合约层),是由事件驱动的、具有状态的、运行在可复制的共享区块链数据账本上的计算机程序,能够实现主动或被动的处理数据,接受、储存和发送价值以及控制和管理各类链上智能资产等功能。
二、智能合约与区块链的关系
尼克萨博关于智能合约的工作理论迟迟没有实现,一个重要原因是因为缺乏能够支持可编程合约的数字系统和技术。区块链技术的出现解决了该问题,不仅可以支持可编程合约,而且具有去中心化、不可篡改、过程透明和可追踪等优点,天然适合于智能合约。因此,也可以说,智能合约是区块链技术的特性之一。
如果说区块链1.0是以比特币为代表,解决了货币和支付手段的去中心化问题,那么区块链2.0就是更宏观的对整个市场去中心化(最典型的就是以太坊),利用区块链技术来转换许多不同的数字资产而不仅仅是比特币,通过转让来创建不同资产的价值。区块链技术的去中心化账本功能可以被用来创建、确认、转移各种不同类型的资产及合约。几乎所有类型的金融交易都可以被改造成在区块链上使用,包括股票、私募股权、众筹、债券和其他类型的金融衍生品如期货、期权等。
智能合约看上去就是一段计算机执行程序,满足条件时即可准确自动执行,那么为什么用传统的技术为何很难实现,而需要区块链等新技术呢?传统技术即使通过软件限制、性能优化等方法,也无法同时实现区块链的特性:一是数据无法删除、修改,只能新增,保证了历史的可追溯,同时作恶的成本将很高,因为其作恶行为将被永远记录;二是去中心化,避免了中心化因素的影响。
基于区块链技术的智能合约不仅可以发挥智能合约在成本效率方面的优势,而且可以避免恶意行为对合约正常执行的干扰。将智能合约以数字化的形式写入区块链中,由区块链技术的特性保障存储、读取、执行整个过程透明、可跟踪、不可篡改。同时,由区块链自带的共识算法构建出一套状态机系统,使得智能合约能够高效地运行。
智能合约为静态的底层区块链数据赋予了灵活可编程的机制和算法,并为构建区块链2.0和3.0时代的可编程金融系统与社会系统奠定了基础;将有助于促进区块链技术在各类分布式人工智能系统中的应用。
三、智能合约的工作原理
基于区块链的智能合约包括事务处理和保存的机制,以及一个完备的状态机,用于接受和处理各种智能合约;并且事务的保存和状态处理都在区块链上完成。事务主要包含需要发送的数据;而事件则是对这些数据的描述信息。事务及事件信息传入智能合约后,合约资源集合中的资源状态会被更新,进而触发智能合约进行状态机判断。如果自动状态机中某个或某几个动作的触发条件满足,则由状态机根据预设信息选择合约动作自动执行。
智能合约系统根据事件描述信息中包含的触发条件,当触发条件满足时,从智能合约自动发出预设的数据资源,以及包括触发条件的事件;整个智能合约系统的核心就在于智能合约以事务和事件的方式经过智能合约模块的处理,出去还是一组事务和事件;智能合约只是一个事务处理模块和状态机构成的系统,它不产生智能合约,也不会修改智能合约;它的存在只是为了让一组复杂的、带有触发条件的数字化承诺能够按照参与者的意志正确执行。
基于区块链的智能合约构建及执行分为如下几步:
多方用户共同参与制定一份智能合约;
合约通过P2P网络扩散并存入区块链;
区块链构建的智能合约自动执行。
四、智能合约的发展趋势
在法律层面,考虑到智能合约意思表示真实性不足、存在不可预见情形、难以追责、缺乏事后救济等法律问题,在很长一段时间内,智能合约将与传统合约互为补充,协同进步:对智能合约来说,为充分保障其法律效力,智能合约将逐步深入对法律法规的理解,建立智能合约条款语言的审查和转化标准,减少语言转化过程中的翻译误差并形成规范的合约法律审计标准;对传统合约来说,为应对智能合约催生的新型法律应用场景,需对现行法律进行补充、调整,以《合同法》为例,今后需明确在何种情况下可认定智能合约由当事人意思表示一致、合意达成的。
在性能和隐私安全层面,目前智能合约受到区块链系统本身性能限制,尚无法处理复杂逻辑和高吞吐量数据,缺乏隐私保护,更无法实现跨链,第二层扩展解决方案(Layer 2 scaling solution,Layer2)是大幅改善区块链及智能合约性能的可行办法,以Taxa区块链为例,它们的基本思路是通过可信硬件为智能合约创造隔离的链下执行环境, 公有链作为“共识层”记录最终的通证(Token)支付和合约状态转换结果,借此将智能合约的执行与公有链的共识机制分离,实现部分链上操作的链外管理,促成高性能、高隐私、可跨链的智能合约。
下一步,需要研究智能合约的跨平台部署问题,在跨链共识过程中的智能合约如何在多种不同的区块链平台上进行部署并自动、安全运行。智能合约运行过程中,由于代码不可避免的可能存在漏洞或恶意攻击,需要结合合约审计,提升智能合约的安全性和代码审查智能化。同时需要研究智能合约的形式化验证,利用精确的数据方法和强大的分析工具在合约的设计、开发、测试过程中验证智能合约是否满足公平性、正确性、可达性、有界性和无二义性等预期的关键性质,以规范合约的生成和执行,提高合约的可靠性和执行力,支持规模化智能合约的高效生成。
在智能层面,目前的智能合约仅是一系列的“If-Then”式情景-应对型规则,并不具备真正意义上的智能性。我们相信,随着以深度学习、认知计算为代表的人工智能技术的发展,未来的智能合约将具备感知、学习、推理等传统意义上智能,即这些智能体可由BDI(信念Belief、愿望Desire 和意图Intention)模型来表述。更进一步,众多智能合约智能体通过协作和演化形成复杂社会系统,该系统具有高度的社会复杂性和工程复杂性,因此不可避免地具有“默顿系统”不确定性、多样性和复杂性等特性。区块链技术有望实现软件定义的去中心化社会系统,特别地,可以利用智能合约将各项管理规则、奖惩标准等以程序化代码的形式部署上链,任何组织和个体均需在既定规则下行事,否则将会承担相应后果。如此一来, 就有望将“默顿”社会系统转化为可全面观察、可主动控制、可精确预测的“牛顿”社会系统。
最后,区块链网络上大量自治节点的自主运行以及节点间通过智能合约的互动协作,使得该分布式系统健壮的同时兼备较高的灵活性。譬如,未来DAO(分布式自治组织)中的软件代理将会在得到授权后替代人类经理人负责组织协调和业务决策,并向其他的软件代理学习并彼此展开竞争。一定周期后,软件代理还会自动评估收益率并对决策做出调整。这将有助于区块链技术适应各类复杂多变的应用场景,进一步促进分布式人工智能的发展,为未来可编程社会奠定基础。
总之,随着区块链技术的普及和应用不断深入,新兴的智能合约技术在学术界和产业界吸引了广泛的关注。本文通过对智能合约的定义、工作原理以及智能合约与区块链的关系进行了梳理,讨论了智能合约的发展趋势与展望,以期为未来智能合约的关键技术研究提供有益的启发与参考。