请选择 进入手机版 | 继续访问电脑版
开启辅助访问
链路首页链路财经的所有资讯均来自网络投稿,不代表本公司任何投资暗示。有侵权者请联系jubao@linksfin.com删除
2019
10/16
22:31
分享
评论
  • 注:以下内容中,图灵不完备 == 非图灵完备,根据上下文选择性使用其中之一。

    本文结论部分主要来自论文《智能合约需要图灵完备吗》的总结,部分观点取自《精通以太坊》作者,少部分来自本人,并且不做严格分类,请酌情斟酌。

    1.图灵不完备其实更难

    为什么大家都说图灵完备好?

    首先想象一下自己被问到这个问题的情形:你认为图灵完备图灵不完备哪种更好?

    在对此概念完全不知道的情况下,大多数人更愿意选择图灵完备,认为这更厉害。事实上,对于(绝)大多数的程序员来说,也会倾向于认为图灵完备。

    因为从名称上来看,图灵完备 vs. 图灵不完备仿佛天然可与完美 vs. 缺陷相类比。

    从定义上来说,图灵完备表示:能够计算一切可计算的问题。图灵完备来自于这个叫图灵的人设想的一种机器:

    绿色的格子表示无限长度的磁带(那个年达常用存储介质),磁带上记录着0或者1,上面带轮子的机器可以对磁带有三种操作:

    • 移动

    这样的系统就是一个能够计算任何可计算问题的系统了,也称作为图灵完备

    看起来是不是很不复杂,也很好实现?

    现代的打印机都是图灵完备的

    循着上面的定义来看,实现图灵完备反而是比较简单的事情。甚至是现在家用的打印机都是图灵完备的。这么说,能打消一种图灵完备很牛的固有印象嘛…

    在现代程序语言设计中,实现它的图灵完备性有完整的套路可以遵循,并不难也并不新奇,现代的程序语言几乎都自带一个特性,就是图灵完备。

    物依稀为贵。

    图灵不完备更难实现

    反观图灵不完备,意味着一种克制。

    实现图灵不完备,才需要我们花费更多心思,来好好设计,在功能实现和安全上做好权衡。

    2.安全还是要复杂

    图灵完备条件下,确实想要什么都可以有什么。但”林子大了什么鸟都有”的规律同样支配着区块链世界。一直以来,都有两种视角:区块链平台需要提供的是通用世界计算机 vs. 专用计算机。

    以太坊在最初宣传自己的时候,也是主打世界通用计算机 + 图灵完备的要点,刚好针对的是比特币脚本非图灵完备。

    但是这个很早就引发了大家的争论,因为,图灵完备意味着更多的可被黑客攻击的点。

    以太坊的发展过程中,比较大的黑客攻击事件,如the DAO事件,也”得益于”智能合约语言Solidity的图灵完备性。

    在思考这个问题的时候,我想起来曾经听到的吴伯凡老师的认知负资产的理论,认知负资产是被其他人洗脑和hack的把柄。

    区块链平台要满足的是两个需求的平衡:

    • 功能上能满足

    • 安全上有保障

    如果能保证功能性,但是不保证安全也会面临很多灾难。

    如果仅仅保护安全,但是功能上实现不了也是很废物。

    功能 vs. 安全

    在功能和安全上,我们需要的是平衡。我觉得以太坊在这方面也开了一个很好的先例,双轨并行。

    一方面,通过Solidity这种图灵完备的语言,来编写需要复杂逻辑的智能合约来满足需求。

    另一方面,使用Vyper这种非图灵完备的语言,在有限制的情况下,提供更高的安全性。

    世界因为有了多种因素的权衡,才有了更多的可能性。本文也并非贬低图灵完备,更多是为了让人们认识到二者的真正区别,而不是望文生义。

    2.真实的世界

    严格一点说,在53757份智能合约中,只有6.9%的合约(用了while循环)用到了图灵完备的特性。宽泛一点说,有35.3%的合约需要用到图灵完备特性。

    非图灵完备的语言写出来的合约简单易测算,图灵完备的语言下能够实现更复杂的合约逻辑。

    不过我们需要想到,能否用非图灵完备的语言完成这6.9%的功能?显然是难以做到的,因此,我们不能说直接用非图灵完备的语言来取代图灵完备的语言,而是寻求二者的共存。

    3.总结

    本文要点:

    • 图灵完备不一定强于图灵不完备,图灵完备实现比较简单,图灵不完备实现更难

    • 对以太坊上的大部分合约分析下来发现,大部分合约不需要用到图灵完备

    • 图灵完备会给攻击者提供更多的入手点,相当于认知负资产

    • 非图灵完备能够降低复杂性,系统更安全

    • 智能合约是一种专用场景,非通用场景

    • 区块链上,图灵完备非常危险

    换句话说,大部分合约不需要图灵完备的特性,只有极少部分需要图灵完备。

    解决方法不是一刀切,只用图灵完备语言或者非图灵完备语言,而是充分发挥社区的积极性,实行两条腿走路的战略,一条腿图灵完备,另一条腿非图灵完备。

    权衡是一个永恒的主题,这么多优秀的大脑通过互联网在集思广益,并通过区块链这种神奇的协作方式联系在一起,未来非常可期。

    当然,阅读完本文,其他一切都不重要,重要的是,以后想起图灵完备时,会下意识想起,我曾记得一个观点是,非图灵完备更牛呢?至于怎么个牛法,那也不是很重要了。

    参考

    https://hackernoon.com/ethereum-turing-completeness-and-rich-statefulness-explained-e650db7fc1fb
    https://levelup.gitconnected.com/should-smart-contracts-be-non-turing-complete-fe304203a49e
    Do Smart Contract Languages Need to be Turing Complete, Marc Jansen, Farouk Hdhili, Ramy Gouiaa, Ziyaad Qasem
    https://vyper.online

    END.

主题帖 14 关注 0 粉丝 0
情感指数

链路大数据分析置信度 89.98 %

TA的主题帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表