前段时间出现了美链BEC合约漏洞事件,以及最近对DApp的一段长时间思考,对于具体场景下应用合约打造DApp,需要追本溯源先去了解【智能合约】,为什么出现了合约漏洞事件,看过技术分析文章,是因内存溢出没有引用安全计算库做加减乘除算法到处溢出,使得一行代码视为无效被虚拟机忽略跳过,直接造成了该代币被大量抛售价格变成0。对于目前的合约来说,一旦出现漏洞将造成项目方毁灭性打击,那为什么会出现漏洞,不是“智能”合约吗?其实这里所讲的智能,并非人工智能那样的智能,在英文里智能合约是Smart,人工智能是Intelligent,单词的语法和用途可以查一查牛津词典,其实这里的智能合约和智能手机的“智能”是一个意思,是对电子化产品的一个统称,不具备自我学习自我进化的“智能”。
什么是智能合约?
智能合约的理念可以追溯到1994年,几乎与互联网同时出现。曾经为比特币打下基础,从而备受广泛赞誉的密码学家尼克·萨博(Nick Szabo)首次提出了“智能合约”(smart contract)这一术语。他对于智能合约的定义是:“一个智能合约是一套以数字形式定义的承诺(promises),包括合约参与方可以在上面执行这些承诺的协议。
从本质上讲,这些自动合约的工作原理类似于其他计算机程序的if-then语句。智能合约只是以这种方式与真实世界的资产进行交互。当一个预先编好的条件被触发时,智能合约便执行相应的合同条款。
萨博的智能合约理论之所以还没有运用,是因为到今天还没有支持可编程交易的数字金融系统,也就是还没有真正触发到支付领域。比特币的出现和广泛应用使得合约突破了实质性发展,改变了现状,让萨博的理论有了重生的机会。智能合约在区块链上得到了蓬勃发展,甚至代表了区块链2.0时代。
智能合约三要素
传统意义上的合约是双方或多方通过执行与不执行来换取某些条件,参与方要么是互相了解彼此要么是一方权威一方有需求,任何一方必须信任对方并履行义务。比较而言,智能合约最大不同在于无须再信任彼此,因为合约是由代码定义且由代码(强制)执行,一旦部署上链就完全自动无法修改无法篡改无法干预。
之所以如此是因为智能合约的三个要素:自治、自足和去中心化。
自治表示合约一旦启动就会自动运行,就会运行每个矿工节点上面,发起者是无法进行任何的干预;其次,智能合约能够自足以获取资源,也就是说通过提供服务或者发行资产来获取资金,当需要时会使用这些资金;最后,智能合约是去中心化分布式的,通过网络节点来自动运行。
用一个形象的说法来比喻智能合约,假设商场里的一台自动售货机是由智能合约编写,输入相同指令行为总会得到相同的结果。当你塞入一些钱并做出选择后,你选择的物品就会掉出。机器绝不可能违反预定程序来执行,也不会仅仅执行一部分(只要它没有被损坏)。一个智能合约也同样是如此,一定会按照预先设定的代码来制定。在区块链和智能合约的世界中,“代码即法律”,无论怎么编写,它都会被执行。在某些情况下,这可能是好事也可能不是;无论是与不是,都将会是一种全新的情况,我们的社会在智能合约普及之前还有一段较为漫长的适应阶段。
代码即法律
Code is Law, Code is World,这是对未来世界的一个激进畅想,目前只是一个口号,智能合约是一段自动执行的程序是由代码编写而成,但不具备现有法律框架所参考的依据;而且智能合约并不是意味着能够实现一切所不能做到的事情,事实上,它们能够以最大限度地减少信任的方式来解决一些普通事情。最小化信任能够让事情变得更加便捷,因为其通过全自动执行替代了人的自主判断。
未完,待续……接下来讲一讲智能合约在哪些领域哪些场景下会大放异彩。
参考资料
《区块链社会:解码区块链全球应用与投资案例》