区块链中最有发展前景的应用是智能合约。
这个概念首先由密码学家尼克Szabo在他1994年的文章《智能合约》中进行了详细的阐述,他认为这是一个“执行合约条款的计算机化的交易协议”。今天,以太坊区块链的兴起有利于在公共环境中更容易地开发并部署这个概念。
然而,大家对智能合约的概念还是较为混乱的。(对于那些不太熟悉智能合约的人,这篇文章提供了一个很好的介绍)。
但在我们深入分析之前,我认为智能合约有很多可能性和用例,同时可以在各行各业中成为游戏规则的改变者。然而,通过和各种公司合作探寻智能合约的可能性,我发现许多人都还处于努力了解智能合约概念、运作方式以及作用的阶段中。
以下是我遇到的三个问题:
1、“智能合约只是代码,不是合约”
一种常见的说法是“智能合约既不智能也不是合约,它们只是愚蠢的代码”。
在许多情况下,这可能是真的,就像你在创建一个不涉及价值转移的去中心应用程序一样。然而,在其他情况下,智能合约可以具有常规合约的许多特征。
当我们看待常规合约时,合约的语义包括两个主要元素:
1、操作语义,这是关于合约的操作性解释。其中描述了相关各方商定的精确行为,通常这些行为可以编程到智能合约中。
2、指称语义,即整个合约的不可操作性的法律解释,包括但不限于对其他文件、管辖权等的所有参考资料。这是对律师将会阅读的合约的解释。这个元素在大多数情况下不会包括在智能合约中,虽然引用可以作为注释添加到代码中。
为什么人们会在一开始就制定合约?主要是因为他们不完全信任对方执行的协议(尽管有任何口头协议),或者作为第三方证明货物转让是否合法的证据。
考虑到这一点以及合约语义的操作元素,如果智能合约是两个或更多参与方之间协议的结果,并且由所有各参与方“签署”(通过积极地交易到智能合约),那么可以被视为构成了传统合约的操作语义,尽管是用不熟悉的语言编写的。
处理冲突的方法几乎可以遵循与所有传统合约相同的路径,即通过法院,调解等。
但是主要的区别在于,在很多情况下,由于自动执行合约而导致的价值转移已经发生了。
2.“智能合约可以完全自主运行”
这是第二个误解。
最常见的错误之一是人们认为智能合约可以主动扫描其环境并根据相应的变化改变执行操作,即智能合约主动查询外部数据库并根据查询的结果改变其自己的状态。
区块链在本质上是事务驱动的。智能合约也是如此,因此智能合约是反应性的。
智能合约的代码仅在需要交易或将消息发送到智能合约的时候才会被执行。这可以通过从外部账户(由自然人或公司拥有)发送事务或通过另一个智能合约发送信息给这个智能合约(这另一个智能合约可以通过事务或信息本身来触发)来完成。
此外,智能合约在执行期间可用的信息相当有限。
如在以太网文档中所述,“这种执行需要完全的确定性,其唯一的环境是区块链上区块的位置和所有可用的数据”。此外,“这不仅是沙箱化的,而且是完全隔离的,这意味着在EVM内运行的代码无法访问网络、文件系统或其他进程。智能合约甚至只能有限的访问其他智能合约。
可用数据是在事务或消息中发送到合约的数据,以及合约的存储(状态)和存储器中的数据。
虽然智能合约可以调用其他智能合约(例如其他智能合约的阅读余额),专家们都不建议重入,因为他们认为这是在不得已的时候才能采取的措施。
此外,智能合约只能做基本的计算,如加、减和除。他们不能执行大数据分析。
因此,当涉及到设计智能合约流程时,他们是被动的,只有有限的信息,只能做基本的计算,交互的可能性也有限。这里描述的例子主要是基于以太坊的智能合约,让我们来了解最后一点误解。
3、广义“智能合约”
没有广义的智能合约这种东西。
因为人们在谈论区块链的时候常常犯错,他们谈论的不是特定的区块链(例如比特币、以太坊、hyperledger等),智能合约也经常犯这样的错误。
大多数区块链根本没有智能合约的功能,或者即使有的话,形式也非常有限,或者是通过固定的侧链解决方案。
智能合约拥有的特征根据区块链的不同而不同。
因此,当涉及到设计需要智能合约的解决方案时,没有像智能合约那样的东西。为了创建一个满足要求的智能合约,决定使用哪条区块链时要非常小心和精确。