更新时间:2022-08-25 16:19
合约层封装区块链系统的各类脚本代码、算法以及由此生成的更为复杂的智能合约。如果说数据、网络和共识三个层次作为区块链底层“虚拟机”分别承担数据表示、数据传播和数据验证功能的话,合约层则是建立在区块链虚拟机之上的商业逻辑和算法,是实现区块链系统灵活编程和操作数据的基础。包括比特币在内的数字加密货币大多采用非图灵完备的简单脚本代码来编程控制交易过程,这也是智能合约的雏形;随着技术的发展,已经出现以太坊等图灵完备的可实现更为复杂和灵活的智能合约的脚本语言, 使得区块链能够支持宏观金融和社会系统的诸多应用。
区块链每个区块可编程、可嵌入代码的特性,合约层包含了脚本、算法、以及智能合约,可以简单的理解为是一份自定义的电子合同,之所以称为智能合约,是因为这份合约可以在达到约束条件自动触发执行,不需人工干预,也可以在不满足条件时自动解约,理论上可以触发执行事先约定好的一切条款。这也是区块链能够解放信用体系最核心的技术之一。以往的区块链是没有这一层的。所以最初的区块链只能进行交易,而无法用于其他的领域或是进行其他的逻辑处理。但是合约层的出现,使得在其他领域使用区块链成为了现实,比如用于IOT。以太坊中这部分包括了EVM(以太坊虚拟机)和智能合约两部分。
比特币采用一种简单的、基于堆栈的、从左向右处理的脚本语言,而一个脚本本质上是附着在比特币交易上的一组指令的列表。比特币交易依赖于两类脚本来加以验证,即锁定脚本和解锁脚本,二者的不同组合可在比特币交易中衍生出无限数量的控制条件。其中,锁定脚本是附着在交易输出值上的“障碍”,规定以后花费这笔交易输出的条件; 解锁脚本则是满足被锁定脚本在一个输出上设定的花费条件的脚本,同时它将允许输出被消费。 举例来说,大多数比特币交易均是采用接受者的公钥加密和私钥解密,因而其对应的 P2PKH (Pay to public key hash) 标准交易脚本中的锁定脚本即是使用接受者的公钥实现阻止输出功能,而使用私钥对应的数字签名来加以解锁。比特币脚本系统可以实现灵活的交易控制。例如,通过规定某个时间段(如一周) 作为解锁条件,可以实现延时支付;通过规定接受者和担保人必须共同私钥签名才能支配一笔比特币,可以实现担保交易;通过设计一种可根据外部信息源核查某概率事件是否发生的规则并作为解锁脚本附着在一定数量的比特币交易上, 即可实现博彩和预测市场等类型的应用;通过设定N个私钥集合中至少提供M个私钥才可解锁,可实现M − N 型多重签名,即N个潜在接受者中至少有M个同意签名才可实现支付。多重签名可广泛应用于公司决策、财务监督、中介担保甚至遗产分配等场景。比特币脚本是智能合约的雏形,催生了人类历史上第一种可编程的全球性货币。然而,比特币脚本系统是非图灵完备的,其中不存在复杂循环和流控制 ,这在损失一定灵活性的同时能够极大地降低复杂性和不确定性,并能够避免因无限循环等逻辑炸弹而造成拒绝服务等类型的安全性攻击。 为提高脚本系统的灵活性和可扩展性,研究者已经尝试在比特币协议之上叠加新的协议,以满足在区块链上构建更为复杂的智能合约的需求。以太坊已经研发出一套图灵完备的脚本语言,用户可基于以太坊构建任意复杂和精确定义的智能合约与去中心化应用,从而为基于区块链构建可编程的金融与社会系统奠定了基础。
智能合约概念最早在 1994 年由学者 Nick Szabo 提出,最初被定义为一套以数字形式定义的承诺,包括合约参与方可以在上面执行这些承诺的协议,其设计初衷是希望通过将智能合约内置到物理实体来创造各种灵活可控的智能资产。由于计算手段的落后和应用场景的缺失,智能合约并未受到研究者的广泛关注 。区块链技术的出现重新定义了智能合约。智能合约是区块链的核心构成要素 (合约层 ),是由事件驱动的、具有状态的、运行在可复制的共享区块链数据账本上的计算机程序 ,能够实现主动或被动的处理数据 ,接受、储存和发送价值,以及控制和管理各类链上智能资产等功能。智能合约作为一种嵌入式程序化合约, 可以内置在任何区块链数据、交易、有形或无形资产上,形成可编程控制的软件定义的系统、市场和资产。智能合约不仅为传统金融资产的发行、交易、创造和管理提供了创新性的解决方案,同时能够在社会系统中的资产管理、合同管理、监管执法等事务中发挥重要作用。具体说来,智能合约是一组情景 — 应对型的程序化规则和逻辑,是部署在区块链上的去中心化、可信共享的程序代码 。智能合约同样具有区块链数据的一般特征,如分布式记录、存储和验证,不可篡改和伪造等。签署合约的各参与方就合约内容、违约条件、违约责任和外部核查数据源达成一致,必要时检查和测试合约代码以确保无误后,以智能合约的形式部署在区块链上,即可不依赖任何中心机构地自动化代表各签署方执行合约。智能合约的可编程特性使得签署方可以增加任意复杂的条款 。智能合约的运作机理如图1所示: 通常情况下,智能合约经各方签署后 ,以程序代码的形式附着在区块链数据 ( 例如一笔比特币交易 )上,经 P2P 网络传播和节点验证后记入区块链的特定区块中。智能合约封装了预定义的若干状态及转换规则、触发合约执行的情景 ( 如到达特定时间或发生特定事件等 ) 、特定情景下的应对行动等。区块链可实时监控智能合约的状态,并通过核查外部数据源、 确认满足特定触发条件后激活并执行合约。
智能合约具有自治、自足和去中心化等特征。自治表示合约一旦启动就会自动运行,而不需要其他签署方进行任何干预;自足则意味着合约能够通过提供服务或发行资产来获取资金 , 并在需要时使用这些资金;去中心化则意味着智能合约是由去中心化存储和验证的程序代码而非中心化实体来保障执行的合约,能在很大程度上保证合约的公平和公正性。智能合约对于区块链技术来说具有重要的意义。一方面,智能合约是区块链的激活器,为静态的底层区块链数据赋予了灵活可编程的机制和算法,智能合约的自动化和可编程特性使其可封装分布式区块链系统中各节点的复杂行为,成为区块链构成的虚拟世界中的软件代理机器人,这有助于促进区块链技术在各类分布式人工智能系统中的应用,使得基于区块链技术构建各类去中心化应用 (Decentralized applica-tion,Dapp)、去中心化自治组织 (Decentralized autonomous organization,DAO) 、去中心化自治公司(Decentralized autonomous corporation,DAC) 甚至去中心化自治社会 (Decentralized autonomous society, DAS) 成为可能。就现状而言, 区块链和智能合约技术的主要发展趋势是由自动化向智能化方向演化。现存的各类智能合约及其应用的本质逻辑大多仍是根据预定义场景的 “IF-THEN” 类型的条件响应规则,能够满足自动化交易和数据处理的需求。 未来的智能合约应具备根据未知场景的 “WHAT-IF”推演、计算实验和一定程度上的自主决策功能,从而实现由“自动化”合约向真正的“智能”合约的飞跃。