智能合约是区块链技术的重要组成部分,但对于非技术人员来说,每次看到智能合约的介绍就相当头大。现在,这篇文章将用非常简单的语言向各位老铁解释“什么是智能合约”,保证你看得懂。
//本文翻译自William Rode的博文《Blockchain for non-techies: 3. Smart contracts》,略有删减。仅代表作者观点,不代表万向区块链立场。
//原文链接:https://hackernoon.com/blockchain-for-non-techies-3-smart-contracts-104f77277297
以太坊区块链和比特币区块链的区别在于,在以太坊上的某些账户不是由人控制,而是由这些账户中的一组指令控制。下面是以太坊区块链上的一段记录。在下图中,账户B,E和G由指令而不是由人来控制:
这组被设置在账户中的指令被称为智能合约。这些指令只是计算机代码,基本上就是一套逻辑。如果有交易发生,智能合约可以:
1、执行计算
2、存储信息
3、发送交易到另一个账户
代码帐户不受任何人控制,它是完全自治的!原始代码由人所写,但是一旦智能合约代码上传到区块链上,只有账户中的逻辑才能控制该账户的行为。
一个正常的合约在现实世界中具有法律效力。如果合约双方没有遵守合约中的规定,那么可以用法律来促使合约双方履行自己的责任和义务。
而智能合约不需要任何人来遵守和维护,它只是一组自动执行的指令。智能合约在现实世界中没有优先级,它只能用于区块链上给另外的账户发送交易。
“智能合约”这个名字具有争议性。其中一个原因是智能合约不一定很智能。它仅仅是一组任何人都可以写的指令,而且人们很擅长创造一些相当愚蠢的智能合约。另一方面,这个名字也具有一定的误导性,因为它不是一个真正的合约,至少不是传统意义上的需要遵守和维护的合同条款。
代码就是法律
签订一般合约时,有几个因素至关重要。最关键的部分是理解合约中所写的内容,合约用法律术语规定了你所承诺的条款和协议,因此理解这些法律语言,就显得很重要。这也是为什么你在签订一个合约前,会很仔细地阅读其中的条款。比如,你永远不会签署一份让你提供你的孩子作为服务费用的协议。
其次,合约中的条款受到现行法律的约束。这意味着,如果仅通过查看合约内容,你不能确定合同条款将会如何实现。即使你同意将你的第一个孩子作为服务费用支付,法律也不会允许你这么做。因此,在签订合约时,理解现行法律是怎样规定的非常重要。
法律作为一种保护措施,使合约按照预期而不是书面形式实现。当你出售你的所有财产并将你的家人卖给债务人,也依然不能满足协议中规定的条款和义务时,另一方最终也不会完全得到合约中规定的报酬。与不能履行其协议规定的义务的人签订合同的风险称为交易对手风险,在签订合同时这点也是必须考虑进去的。
最后,即使你理解了合同内容和现行法律,你还需要信任法律主体。有时候,法理≠事实,这就是为什么你在和一个“腐败王国”的国王签合约时会犹豫。写在纸上的合约,即使有法律约束,也不一定可靠。
所以,在这些因素上,智能合约有什么不同吗?智能合约本质上由两个元素组成:
1、代码以及代码是如何被安排的
2、区块链的不变性
就像正常合约一样,在与智能合约进行交互时,理解智能合约的实际内容非常重要。但和普通合约不同的是,智能合约的内容是用计算机代码编写的,并由计算机解释。那么智能合约代码实际上是什么样子?下面是一个例子(你不用理解它,只要知道它是这样的就行):
智能合约代码是你在与智能合约交互时注册的条款和条件。只要你信任智能合约所在的区块链,你就知道代码将完全按照程序执行,因此不存在违反协议的情况。然而,需要注意的是,按编程工作并不意味着如果代码中存在错误,它也能达到预期结果。
智能合约的应用
正如我之前说的,智能合约是一组用计算机代码编写的,驻留在区块链上的指令。这些代码可以用无数种方式编写,就像阐述一般合约的条款可以用无数种组词方式一样。但以何种方式编写代码,我们并不关心,也没有意义。那什么才有意义呢?
在回答这个问题之前,让我们退后一步,考虑一下区块链的潜在应用。比特币白皮书发布后,人们开始意识到使用相同的底层技术可以维护其他类型的协议。人们设想了很多其它种类的协议(应用),这些协议规定了不同类型资产的所有权以及协议如何更新的规则,比如数字身份、非虚拟资产的确权、数据存储等等。
但我们面临一个挑战,在以太坊出现之前,每个区块链都是在考虑只有一个应用程序的情况下建立的。每一个新的应用都需要一个新的区块链,而创建一个新的区块链需要很多资源,因为参与者需要开始维护一个新的协议。
智能合约改变了这个问题。定义一个区块链功能的规则可以复制到一个区块链上的智能合约中。这意味着,不用为每种类型的应用程序构建全新的区块链,可以通过使用智能合约将几种类型的应用程序添加到一个区块链中。
也就是说,在一个区块链上你就可以拥有多种类型的区块链应用程序。一个指定不同类型资产所有权的区块链应用,在本质上只是一个描述“谁拥有什么”的列表。这个信息可以包含在智能合约中,而不是为这个应用程序创建一个新的区块链。和区块链一样,智能合约本质上只是账户及其所有权的列表,智能合约的规则对列表的有效更新做了规定。
智能合约还允许用户创建更小的协议,这对于没有智能合约功能的区块链永远不可行。想象一下,如果我想和一个没见过面的网友打赌,我们可以制定一个智能合约,将我们的打赌资金锁定10天,到期后自动支付给赢了的人。这是一个非常小的应用,为这个特定用例创建一个全新的区块链没有任何意义,但是通过现有区块链的基础设施创建一个智能合约却不用费多少事。以太坊区块链上已经有很多应用案例,智能合约与区块链形成了互补的应用程序生态系统。
区块链是一种以分布式的方式维护协议的新方法。智能合约使得任何人都可以在区块链这个大的协议中定义自己的协议。目前尚不清楚未来哪些协议将由区块链维护,但智能合约使任何人都可以更容易地创建它们认为有前途的应用程序。
本篇分享结束。欢迎关注本简书号,第一时间获取区块链干货!
网友评论