Title: 一文读懂区块链之 - 什么是图灵完备 Post by: dum306 on January 19, 2018, 03:00:40 AM 我们在看到区块链或比特币、以太坊相关的资料的时候,总是看到资料会提到,比特币不是图灵完备的,以太坊是图灵完备的。
那么,图灵完备是什么意思呢? 要解释清楚这个概念其实并不容易,需要读者了解很多其他的概念,如自动机、状态机等,但本文不会长篇大论对这些概念都去介绍,而是用尽量最简单的语言,使读者有一个简单的概念。 最简单的说法是,图灵完备意味着你的系统可以做到图灵机能做到的所有事,即可以解决所有的可计算的问题。 简单的理解就是,如果一个语言是图灵完备的,需要该语言支持循环语句,支持分支语句,支持循环和递归,理论上可以解决任何算法,但也有可能进入死循环而导致系统崩溃。 那么图灵不完备,就是限制了循环或者条件判断或递归,可以保证系统的每段程序都不会陷入死循环,都会有运行结束的时候。 所有的通用编程语言和现代计算机的指令集都是图灵完备的,也是当前这些通用语言或指令“可用”的最基本要求。 比特币脚本不是图灵完备的,因为它没有条件判断语句,不能执行循环,也不会产生递归。 以太坊是图灵完备的,因为它支持刚刚提到的这些特性,这可能也是使以太坊迅速发展壮大原因之一吧。但这并不是说图灵不完备就是不好的,而是各有各自的运行场景,各自满足了各自的某方面的需求。 比如从2008至2009年面世起,图灵不完备的比特币,已经近乎完美地运行了近十年,几乎没出过什么大的问题,也已经成为了目前市值最大的虚拟货币。 当然了,图灵完备只保证计算的可行性,但不会保证计算的效率,也不保证编程语言的可理解性和可维护性等。 就像比特币,虽然是图灵不完备的,但是为了解决安全性、重复支付等问题,采用了POW模式(挖矿),每秒只支持7笔左右的交易,这使它目前几乎不可能成为一个通用的支付工具,因为用的人一多起来,比特币网络就被卡成翔了,转一次币几天到不了账的情况也不是没有发生过。 而图灵完备的以太坊虽然处理交易的速度比比特币快得多,但在status众筹的时候依然卡得让人想捶电脑。 另外,也不是所有问题都是图灵完备就可以解决的,这里不再深入展开,有兴趣的读者可以自行探索,也欢迎随时与交流。 。 |