什么是图灵完备智能合约

图灵,不用多介绍,是计算机领域的大神级人物,他在科学、特别在数理逻辑和计算机科学方面,取得了举世瞩目的成就,他的一些科学成果,构成了现代计算机技术的基础。

因此,很多计算机领域的模型或者理论都是以“图灵”来命名的,最经典的一个概念是“图灵机”:

所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。

图灵机

说白了,图灵机模型描述的是一个计算程序,它可以像物理的电脑一样运作,完成一个电脑所能做的所有事情。而所谓图灵完备的编程语言,即是能够实现所有计算机可以实现的功能的编程语言。

一般来讲,我们平常使用的计算机编程语言,比如C,GO,Java都是图灵完备的,因为它们都可以最大限度发挥计算机的能力。这些都是单机的情况,而在分布式下的情况如何呢,比如下面这个图(图片来自前期“如何从零动手写智能合约”的千聊课程):

分布式架构下的编程

很显然,在单机的情况下,实现所需要的功能是主要目的,而在分布式情况下如何解决上图中的不一致的问题才是最关键的考量。

我们知道,比特币诞生之后,大家逐渐发现了其底层的区块链技术的巨大价值,同时认为区块链技术才是分布式环境下解决这种一致性问题、可信的技术体系。

这种分布式环境下实现一致性的语言现在都被统称为“智能合约”。比特币脚本语言就是这样一种语言,它实现了非常安全的数字货币计算模型,保证了在不需要第三方机构的情况下,两方之间可以进行价值的转移。

但是,现实世界的需求是极其庞杂的,为了满足未来将区块链技术应用于更多场景的可能需要,比特币脚本语言是远远不够的。这也是为什么以以太坊为代表的区块链技术,都宣称自己所采用的“智能合约”语言是图灵完备的主要原因。

所以以太坊朝着这个目标在前进,也正是由于这个平台的强大,目前基于以太坊开发的区块链应用越来越多。为什么呢?通过上面的介绍就知道,以太坊的“智能合约”语言是图灵完备的,而图灵完备的编程语言可以实现所有以前一个编程语言在单机上实现的功能,也即能尽最大限度满足现实应用场景的开发。

而图灵完备语言最显著的一个特点是支持循环,所谓循环,就是程序能不断执行下去。那么在区块链支撑的分布式环境下,矿工如何判断一个程序何时结束呢?而图灵计算理论,也有人证明过,要证明一个程序能不能终止是不可能的(图灵停机问题),所以这种“智能合约”语言需要保证所写出的程序不能存在死循环。

这也是为什么以太坊语言会加入gas(汽油)的原因,通过加入gas,程序每个运算过程都会消耗一定成本,从而不会无限制地执行下去。

或许你还有不少疑问,比如什么是图灵停机问题?以太坊的智能合约怎么实现的?以太坊的gas机制到底是什么?



作者:higer
链接:https://www.jianshu.com/p/d79c0c6e4b77
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

猜你喜欢

转载自blog.csdn.net/omnispace/article/details/80234144