美文网首页区块链学习区块链研习社区块链研究
区块链中的智能合约和图灵完备

区块链中的智能合约和图灵完备

作者: 云天明ytm_ltd | 来源:发表于2017-06-11 10:30 被阅读273次

智能合约(smart contract)

“智能合约”是尼克·萨博1995年提出的概念:

“一个智能合约是一套以数字形式定义的承诺(promises) ,包括合约参与方可以在上面执行这些承诺的协议。

这里涉及几个关键词:
承诺:签约双方的权利和义务
协议:是承诺实现的技术语言
数字形式:智能就是可编程,因此必须被计算机系统接受并且执行。
有一个不错的比喻,智能合约有点类似数据库中的存储过程,但是比起存储过程更加智能。存储过程是sql语句集,被编译后存储在数据库中。用户使用时调出存储过程名称和参数来使用它。智能合约也是语句集,被编译后命名为合约名称,该合约在指定时间段满足触发条件后自动执行。

智能合约是存储在区块链上的一段代码,它们可以被区块链上的交易所触发,触发后,这段代码可以从区块链上读取数据或者向区块链上写入数据。
从本质上讲,这些自动合约的工作原理类似于其它计算机程序的if-then语句。智能合约只是以这种方式与真实世界的资产进行交互。当一个预先编好的条件被触发时,智能合约执行相应的合同条款。

理想状态下的智能合约,就是一台图灵机,是一段程序,甚至是人的化身,他能够与账本直接交互,最后成为经济活动的参与者,比如可以接收和存储价值,可以临时保管资产,按照事先的规则执行账本操作。
这是理想状态下的智能合约,现实世界中还远未能如此智能。

1)智能合约的应用依赖于基于区块链资产的数字化,但是目前来讲,这种数字化程度还远远不够。
2)智能合约只能被动响应外部访问请求,根本无法做到内部合同条款的自动执行。外部请求一般都是中心化的,这进一步会极大降低智能合约作为一个去中心化系统的有效性。

图灵完备(Turing completness)

图灵完备是智能合约的理论基础。

什么是图灵机?

图灵机是1936年阿兰·图灵提出了一种抽象的计算模型。
刘未鹏的解释:

图灵机的定义形象的说来就像老式的电传机:一个读写头,一根纸带(可能任意长),读写头不断读取纸带上的符号,并根据内在的状态转换规则转换当前状态,同时进行一些动作,譬如插除或改写当前字符,向前/向后移动读写头或保持不动等。

图灵机

图灵机是那个年代用数学方式实现自动计算的实践。

什么是图灵完备和图灵不完备?

图灵完备意味着你的语言可以做到能够用图灵机能做到的所有事情,可以解决所有的可计算问题。
图灵不完备也不是没有意义, 有些场景我们需要限制语言本身. 如限制循环和递归, 可以保证该语言能写的程序一定是终止的。
理解一下,就是说图灵完备的语言,有循环执行语句,判断分支语句等。理论上能解决任何算法。但有可能进入死循环而程序崩溃。
图灵不完备,应该是不允许或限制循环。可以保证,每段程序都不会死循环,都有运行完的时候。

比特币脚本语言考虑了安全等问题,设计是图灵不完备的,而以太坊宣称自己采用的是智能合约语言,是图灵完备的。

而图灵完备语言最显著的一个特点是支持循环,所谓循环,就是程序能不断执行下去。那么在区块链支撑的分布式环境下,矿工如何判断一个程序何时结束呢?而图灵计算理论,也有人证明过,要证明一个程序能不能终止是不可能的(图灵停机问题),所以这种“智能合约”语言需要保证所写出的程序不能存在死循环。
这也是为什么以太坊语言会加入gas(汽油)的原因,通过加入gas,程序每个运算过程都会消耗一定成本,从而不会无限制地执行下去。

参考内容:
什么是智能合约?
http://www.8btc.com/what-are-smart-contracts-in-search-of-a-consensus
智能合约其实没那么智能 李白话日常公众号
http://mp.weixin.qq.com/s/ajBrSn2RBCPUIzEF7RgUkg
图灵机杂思,刘未鹏
http://blog.csdn.net/pongba/article/details/621723
以太坊“图灵完备”是什么意思?
http://blog.sina.com.cn/s/blog_4ebdf17e0102wqyn.html
什么是图灵完备智能合约 李白话日常公众号
http://mp.weixin.qq.com/s/Mn80C-HtrqAGYl67pXrsKw

推荐一篇文章(比较长,需要耐心),有助于理解上述概念:
图灵机与计算问题

相关文章

网友评论

    本文标题:区块链中的智能合约和图灵完备

    本文链接:https://www.haomeiwen.com/subject/yxfhqxtx.html