作者Olivier Rikken是阿姆斯特丹咨询公司Axveco的管理者及区块链和业务流程管理的思想领袖。
在这篇文章当中,Rikken指出了有关智能合约技术常见的三大错误认识。
智能合约是区块链发展当中最有前途的想法之一。
密码学大牛 尼克.萨博(Nick Szabo)在他1994年编写的论文“智能合约”中首次提到了这一概念,萨博将这一概念描述为“执行合约条款的计算机交易协议”。而在今天,以太坊区块链的崛起,推进了智能合约概念的发展和部署。
然而,这也导致了很多人对智能合约的概念产生了误解。(对于那些不熟悉智能合约的来说,这篇文章提供了很好的介绍)。
在我们进入主题之前,我想要的说的是,我相信智能合约的可能性及应用数量会是巨大的,它可以成为各行各业真正的游戏改变者。但我注意到,行业当中有很多人对智能合约不是很了解,它到底是什么,它们是如何工作的,以及可以用来做什么?
以下是我遇到的最常见的三个问题:
1. “智能合约只是代码,不是合约”
有些人经常会引用“智能合约既不是智能的,它们也不是合约,它们只是愚蠢的代码”这句话。
在很多情况下,这可能是真的,比如当你创建一个去中心化的应用,它不涉及价值传输时。然而,在其他情况下,智能合约可以比传统合约拥有更多的性质。
当我们查看常规合约时,合约的语义是由两个主要要素组成的:
- 操作语义(Operational semantics),这是一个合约的操作解释。它描述了商定的以及被各方采用的精确行动的解释。这通常可被编程为一个智能合约。
- 指称语义(Denotational semantics),整个合约的非操作性法律解释,包括但不限于,任何引用的其他文件、管辖权等。这给予了合约一个解释,能够让律师理解它。此元素在大多数情况下并不会包含在智能合约当中,尽管引用可通过在代码中添加注释的方式来完成。
为什么人们要首先建立合约?主要是因为,他们不完全信任对方会执行协议(尽管存在着口头协议),或作为给第三方的证据,证明货物的转让是合法的。
记住合约语义的操作元素,如果一个智能合约是双方或者多方当事人之间的协议结果,并且它已被各方“签署”了,其可被视为一个传统合约的操作语义(虽然是以一种陌生的语言编写的)。
处理冲突几乎与所有的传统合约一样,例如通过法院、进行调解等。
主要的区别是,在许多情况下,价值转移是自动合约执行已发生后的结果。
2. “智能合约可以完全自主操作”
这是第二种关于智能合约的常见误解。
人们经常会有这样一个看法:一个智能合约可以积极地扫描其环境,并执行相应的变化,即智能合约可以主动查询外部数据库,并根据查询结果改变自己的状态。
区块链的本质是由交易驱动的,智能合约同样也是如此,因此智能合约也是被动的。
智能合约的代码只在交易调用或消息发送给智能合约时才会执行。从一个外部账户(由自然人或公司拥有的)发送一笔交易,或另一个智能合约(这个其他的智能合约是由一笔交易或其本身的消息所触发的)发送一个信息给这个智能合约可触发智能合约的执行。
此外,智能合约在执行过程中提供的信息是相当有限的。
正如在以太坊论文中提到的,“这种执行需要是完全确定的,其唯一的环境是区块链上的区块位置以及所有可用的数据 ”,此外,“它不仅是沙盒的,实际上是完全隔离的,这意味着在EVM虚拟机中运行的代码不能访问网络、文件系统或其他进程。智能合约与智能合约之间的访问甚至也存在着限制。”
可用的数据,是在交易或消息中发送给合约的数据,加上存储(状态)以及合约内存中的数据。
当然,也有智能合约可以调用其他智能合约(如读取其他智能合约的余额),很多专家并不推荐re-entrancy
这种方式,他们认为这只能作为最后的手段。
此外,智能合约只能做基本的计算,如增加、减去以及划分。它们无法执行大数据分析。
因此,当涉及到设计过程的智能合约时,你要知道,在这个时候,它们是被动的,它们只能做一些基本的计算,只具备有限的互动可能性。这里描述的例子,主要是基于以太坊的智能合约,这就引出了最后一个常见的认知错误。
3. “这个智能合约”
没有所谓的这个智能合约(THE smart contract)。
正如人们经常错位地谈论(THE blockchain)区块链,这不是指一个特定的区块链(如比特币、以太坊、超级账本等),同样的错误也经常发生在智能合约身上。
大多数区块链根本不适合开发智能合约,如果它们这样做,也只能是非常有限的形式,或通过侧链解决方案来完成。
因此,当涉及到设计需要智能合约的解决方案时,就不会有这个智能合约(THE smart contract)的事情了。为了创建一个能满足你的需求的智能合约,在决定使用哪种区块链时,就要非常地小心。