首页 » 新闻 >

商务白话“智能合约”

2021-01-15 18:00:44来源:财经网

作者:李力竞天公诚律师事务所合伙人

随着数字人民币大范围测试和区块链应用不断落地,“智能合约”作为一个与区块链技术高度关联的概念越来越频繁的出现在财经媒体,被越来越多的商务人士提及和讨论。

什么是智能合约?它跟自然语言合约之间有什么关系?将如何影响商务活动和人们的日常生活?是否需要符合法律法规、监管政策的要求呢?

下面就尝试着用商务人士易于理解的语言来解释一下智能合约的概念。

一、分布式账本上的会计准则

如果将区块链系统比作一个分布式电子账本,那么智能合约就相当于专门适用于这个电子账本的会计准则。

能运行智能合约的区块链,其数据库构成大概可分为两个部分:位于逻辑上层随交易不断变化的状态数据库,以及运行于系统底层按时序单向延伸的区块链。如果用会计账簿来类比,上层的状态数据库相当于科目余额表,专门负责记录各数据对象(会计科目)的状态信息(科目余额);底层的区块链则类似于会计凭证簿,按交易发生的时序记录各数据对象(会计科目)此消彼长的对应关系和变动过程(会计分录)。

那智能合约呢?它就大致相当于会计准则和财务制度,规范、控制着记账行为的基本业务逻辑。就像会计实践中人们根据会计准则填写凭证、记明细账一样,区块链节点根据智能合约处理计算输入信息,取得全网共识后再将运算结果写入状态数据库、将事务日志添加到区块链中。

二、智能合约的规制对象

智能合约的规制对象,其实就是区块链账簿中状态数据库存储的数据对象。

引入状态数据库,是区块链表达能力的一次质的提升,其实也是智能合约得以运用的前提。在比特币网络中,只有一个数据对象比特币,需要记录的信息也仅仅是比特币在收付主体之间的流转过程,因此,一条单向延伸的链状数据库就足够了。在智能合约时代,需要描述的数据对象不可限量,一维的链状数据库显然无法满足需求。因此,以太坊和Fabric等“2.0时代”的系统普遍引入了状态数据库,用它来专门记录业务对象的状态信息,然后再用区块链来记录状态数据库写操作的事务日志,从而将一维的区块链提升为二维的数据账簿,瞬间扩大了可记录的数据对象广度和业务逻辑深度。

我们还是拿财务账簿来类比。如果说区块链相当于一个单向无限延伸的会计凭证本的话,那么状态数据库就相当于一个超级会计科目余额表。根据会计主体的业务模式设置各类会计科目,从资产到负债和所有者权益,从收入到成本、费用和利润,用各会计科目的余额数据来描述对应经济资源的状态信息和法律属性;而各会计科目余额的变动过程、各科目之间此消彼长的对应关系,则依靠会计凭证来一一记录。

每一次科目余额的增减变化都会形成一张新的会计凭证,而每一张新的会计凭证都会对应着若干科目余额的变动。人们需要了解企业经济状况时,通过报表、报告了解会计科目的余额状态或者汇总信息,而当需要追溯某项经济资源的来源或者某个会计数据的推导过程时,则会通过明细账的指引到会计凭证中去审核检验。所以,从最底层的数据来源和逻辑构架来说,科目余额表加上会计凭证簿,这两者共同构成了现代企业会计账簿的信息基础。

那么,同样是收到一笔现金,为什么要把它记为销售收入,而不是短期借款?同样是支付一笔现金,为什么要记入长期待摊费用,而不能全部列入当期损益呢?这些问题的解决,在会计实践上,是会计人员根据会计准则的规定来完成的;放到区块链的技术背景下,其实是计算机节点根据智能合约的代码指令来逐一落实。

所以,智能合约规制的对象其实是记录在状态数据库中的数据对象,其代码逻辑则体现了相关应用场景的业务逻辑,而合约的执行结果(即相关数据对象在执行前后的状态值)最终会以事务日志的形式被记录在随时序单向延伸的区块链中。

另外,需要补充的是,区块链账簿中的业务数据并不是不能修改的,只是需要用“红字冲销”的方式留下修改痕迹,而作为记录这些工作痕迹的底层区块链却是绝对不可更改的,不论是其内容还是前后顺序。

三、消灭交割风险、杜绝权利瑕疵

防范交割风险,往往是商务合同中花费大量条款来实现的目标。然而,智能合约却天然的具备一项特殊的技能,可以从头杜绝、消灭交割风险。

原子性(Atomic)操作,是数据库编程的概念,讲的是对数据库进行操作时,一个事务(Transaction)所包含的所有步骤应当为不可分割的一个整体,要么所有步骤都执行完毕,要么就将数据库回滚到没有任何一个步骤被执行的初始状态,不能只执行一部分步骤而放弃其余,否则将破坏数据库业务逻辑的完整性。

用商务场景来解释,那就是杜绝“交割风险”。

证券市场上,假设交易双方合意采用“券款对付”的方式交割,那么所谓“原子性操作”就需要保证交割证券和支付对价这两个动作在一个事务中被完整执行,既不能只付款不付券,也不能只付券不付款,否则就会破坏“券款对付”这个交易双方已经达成合意的业务逻辑。

作为控制状态数据库读写操作流程的计算机程序,智能合约被各主流系统无一例外的设计为满足“原子性操作”的要求。因此,智能合约天生具备“消灭”交割风险的能力。

当然,现实生活中的交割风险并不总是“支付对价”那么简单,可能包括任命董事、更新股东名册等等动作,但不论包括多少项动作,在理论上和逻辑上,它们都可以囊括在智能合约的一个事务中靠一次原子性操作在区块链上实现。

区块链的记账流程强调“对账前置”,也就是在全网节点达成共识的基础上,才可能将一笔新的交易写进区块链。而“资产数字化”,在终极意义上则意味着将所有利害关系方所有可能的权利主张都描述到数字化资产的属性信息中去。到那个时候,如果一笔交易获得了全网共识,那就意味着所有利害关系方均对交易不持异议,也就是说标的资产在法律意义上不存在权利瑕疵。

所以,在资产全面数字化的时代,区块链的“对账前置”再加上智能合约的“原子性操”,基本上就可以“消灭”目前商业活动中“权利瑕疵”和“交割风险”这两项最重要、最常见的交易风险了。

四、智能合约的表达能力

既然智能合约有那么多的好处,那它的表达能力足够强、足够丰富么?能像自然语言合约那样准确、充分的描述商务活动的商业目标和业务逻辑吗?

这就需要聊聊“图灵完备”这个稍微艰涩的话题了。

跟会计账簿类似,日常生活中,人们的很多信息都可以用状态快照的方式进行记录。比较典型的例子就是电影或者短视频。拍摄时,记录下来的其实是一帧一帧的照片;播放时,按时序显示这些照片,在视觉暂存效应的影响下,人们就可以看到历史场景的再现,或者说历史上相关状态快照的变化演进过程。

人们用笔和纸算题,其实也可以用“状态及其改变过程”的思路来抽象和模拟。二十世纪伟大的数学家图灵将这一模拟方案和实施步骤撰写成了论文,描述了一种抽象的计算模型,被称为“图灵机”。

假设存在一条无限长的带格子的纸带、一套编码,以及一个带读写头、寄存器的可按既定算法和指令改变寄存器中状态信息并控制读写头沿纸带往复运动、定点读写的机器。人类的计算过程就被抽象为这个机器从纸带上读取信息、经运算改变寄存器状态,然后再控制读写头在纸带上移动、定点写入或擦除中间结果,然后再读取信息、运算、改变寄存器状态、再定点输出结果,这样一个不断循环往复的过程。

图灵机在现实世界最典型的实现就是电子计算机。由于并不存在无限长的“纸带”,因此,电子计算机通常被称为“有限状态机”,而可以控制计算机实现“图灵机”所有必要属性的编程语言就被称为“图灵完备”。

所有不包含人类情感、好恶、审美等主观因素的、可用数学抽象的可计算问题,都能通过图灵机来运算。逆否命题就是,图灵机没法运算的问题,都是不可计算问题,也就是人类通过笔和纸在人脑控制下无法计算的问题。

从以太坊开始,智能合约便采用图灵完备的脚本语言来控制、描述业务逻辑。理论上讲,一切可以用数学模型抽象为可计算问题的业务场景都能用智能合约来描述和实现。

那自然语言合约可以用智能合约来重述么?

笔者认为可以,不但可以,而且会更准确、更清晰、更没有歧义。

从合同内容来看,不论是合同标的、数量、质量、对价、期限、条件还是流程,基本上用数据对象、逻辑流程来抽象和描述都不是问题;对于签约主体,用电子签名、数字证书等方法来识别身份、校验权限也已是比较普及的技术。只有违约责任、争议解决等权利救济条款,与“对账前置”等区块链的技术特征存在一些本质矛盾,可能需要在正常的履约渠道之外,通过类似于“跨链”的技术才能实现。但话说回来,如果真是到了资产全面数字化、智能合约直接处分财产权利的那一天,是不是还需要事后的权利救济,如何评判、解决争议,可能还都是需要深入探讨的问题。

除了能充分表达自然语言合约的内容和逻辑以外,智能合约还有个特别需要强调的特点,那就是它语义的准确性和确定性。智能合约本质上是计算机程序,需要在计算机上运行,无论是多复杂的数据对象,最终都需要序列化成二进制编码,不管是多么复杂的算法,最终的进程走向都是个确定的路径。所以,智能合约不会像自然语言合同那样产生语义模糊问题,不会因为不同主体对条款含义的理解不同而发生纠纷,当然也就不会有“规避监管”或者“美化报表”的语义解释空间。

从另一个角度来说,语义的准确性和确定性也让智能合约缺乏弹性,为了逻辑周延,人们可能不得不花费大量的语句来穷举、遍历各种可能性,从而使得智能合约看起来内容冗长,不如自然语言合同那么概括和灵活。

五、智能合约的法律属性

智能合约是否也需要像日常合同一样,符合法律要求呢?

要回答这个问题,就不得不聊一聊著名的“The DAO”事件。

智能合约最初是由“以太坊”(Ethereum)引入到区块链领域的,由于它可以表达比“比特币”更丰富的业务逻辑,并且可以在全网节点自动运行,因此给“以太坊”赢得了“区块链2.0”的美名。

在去中心化的公有链上自动运行,可以表达丰富的业务逻辑,这两点曾经给人带来无穷的遐想,似乎所有能想得到的事情都可以交给智能合约去办,从此可以彻底杜绝内部人作恶、对手方风险等等商业问题。一夜之间,众多以以太坊为基础平台或技术内核的项目如雨后春笋般涌现,直至出现了人类历史上规模最大的众筹项目“The DAO”。

“The DAO”的英文全名翻译过来可以叫“去中心化自制组织”,通过ICO筹集到了当时价值1.5亿美元的以太币和比特币,其目的旨在让参与者可以通过投票方式共同决定被投资的项目,整个组织完全自治,所有行动和决策依靠代码编写的智能合约来实现。

The DAO的立意和初衷是美好的,用一种绝对民主化的方式来管理基金,依靠“不可篡改、无法阻拦、不可抵赖”的计算机代码来自动执行决策,一切似乎很完美。然而,让人扼腕的是,成立不到20天,The DAO就遭遇到了攻击。黑客利用一个函数漏洞,在不到3小时的时间里从资产池中转出了市值近6千万美元的以太币。为了挽回损失,以太坊最终以“硬分叉”的方式将整个区块链回滚到攻击之前的状态,而这种强力介入、硬性修改的做法却违背了区块链“去中心化、不可篡改”的基本原则,从而导致以太坊分裂为新链和旧链两条并行的链条。

The DAO事件发生后,人们开始用更审慎的态度看待区块链技术,开始深入的思考,智能合约是否应当符合法律的要求,利用漏洞来执行合约的攻击行为与全面推翻共识机制的“硬分叉”到底哪个违背了契约精神。

所以,智能合约需要符合法律要求么?

这个问题的答案其实取决于智能合约的应用场景、规制对象和执行方式。

这就好比用空白的本子记账,如果账上记录的仅仅是方便个人进行自我财务管理的日常收支开销,那记账的规则基本不会影响他人,自然不需要满足法律法规的要求;如果账上的记录将作为纳税凭证和依据,用于申报、征缴个人所得税,那么记账的规则就需要满足税法的要求,否则会影响国家的税收利益;如果这个账本记录的是具备法律效力的房屋产权,那么记账的规则就相当于一部《房屋登记管理办法实施细则》,任何记录的变化都意味着对房屋产权的直接处分,可能牵涉到所有权人、抵押权人、居住权人,甚至信托受益人、共同产权人、遗产继承人等等若干利害关系方。

“CODE IS LAW”。

说到这里,是不是对这句程序员的信条有了更加直观的认识?

没错。如果哪一天人类的资产和财富全面实现了数字化,完全在区块链网络上实现交易,那么指引、规制商事行为的法律法规就必然是计算机程序,或者更具体的说,必然是“智能合约”。

一个合理的估计是,随着法定数字货币的正式实施和资产数字化的深入发展,区块链技术与实体经济活动的耦合程度必然会不断加深,而智能合约作为直接描述、控制业务逻辑的规则载体,其法律属性也必然会随之发生深刻的变化。

初创期,区块链可能仅仅会被用来记录履约痕迹,与实体经济以“全脱耦”或“松耦合”的方式并行,智能合约则仅需以“记账规则”的方式出现,只要能准确无误的记录履约痕迹即可,合法性问题实质上还是指向自然语言合约和实体经济活动本身。

成长期,区块链逐步承担数字化资产的簿记功能,区块链账簿中的数据对象将逐渐拥有“财产权利”的法律属性,智能合约就可能从自然语言合约的“交割手段”、“履约方式”逐步过渡到全面替代自然语言合约,成为直接体现当事人契约意愿的载体和处分财产权利的规则。到了那个时候,智能合约的程序模块将类似于标准合同模板、资产簿记规则、组织章程等法律文件中的契约条款,供商业活动的参与方根据商业目的来选择适用,那么它不但需要符合法律法规的要求,而且在某种意义上将可能成为法律法规本身。

成熟期,区块链技术将推动商业模式发生深刻变化,信用证、支付宝这种依靠第三方主体信用解决贸易信任问题的商业模式将走下历史舞台,尽职调查、财务审计等对于历史记录真实性、合法性的校验工作可能不再需要,利害关系方之间的信任成本、交易成本将显著降低,贸易、投资、金融等商业活动的效率将获得革命性的提高。与之相适应,法律法规就需要不断修正以适应人类社会信用环境和商业模式的改变,财产法、合同法、组织法、证券法、票据法、诉讼法、破产法…难以计数的法律领域都可能面临着主动或被动的调整。在这个历史性变革的过程中,智能合约很可能成为推动或引导立法的重要因素和参考依据,智能合约中描述的商业模式、实施方案可能成为规范或标准,被纳入到法律法规的修正案当中。

让我们回过头来再审视一下“The DAO”事件。其实,它就是人们在没有做好技术、法律、救济措施等各方面准备之前,用区块链技术推动的财产组织法意义上的数字化资产试验。所谓“试验”,其重点并不在于创造了一种新的代币,而是在支付功能的基础上给代币添加了表决权属性,让代币持有者可以投票来影响基金的投资决策。

添加一项属性,看似很简单的业务逻辑,其实里面蕴含着很多的风险因素。代码有漏洞,这当然是导致失败的直接原因,但更深层次的原因也不容忽视。

当虚拟资产获得了社会公认的价值,那就必然需要考虑它的法律属性。代码所反映的业务逻辑是否准确、是否周延、是否安全、是否公正?代码错误的责任由谁承担?错误后果如何救济?这一系列的问题其实都需要给与充分的重视并事先获得法律上和技术上的解决方案。

不同行业的关注重点是不一样的,有时差别会非常之大。传参、校验、加密、解密、编码方案、吞吐效率…代码逻辑的注意力往往在技术领域,而智能合约恰恰需要兼顾甚至更加重视业务逻辑和法律逻辑。这可能是未来程序员、律师、会计师和各界商务人士需要共同面对的一次革命性挑战。

最后,尝试着给智能合约下个定义。

所谓智能合约,是指在区块链节点上运行的以图灵完备的编程语言开发的旨在通过控制、调整数据对象的状态信息来实现业务逻辑的计算机程序,它可能随着资产数字化的进程而获得越来越直接的法律属性,成为规制财产权利登记、流转、组织、交易等法律行为的规则载体。