图灵完备与智能合约的安全性

2019-02-14 13:29 栏目:经验之谈 来源: 查看()
在嘉手纳,我们经常谈论区块链设计决策。我最近遇到的最深刻的设计决策之一是关于图灵的完整性,这在我们的一位开发人员最近的一篇文章中引发了争议。作为团队的非技术成员,我想了解图灵完整性的真正含义,为什么区块链社区在这个问题上存在分歧,以及为什么我们的工程师试图教育其他人关于安全情报合同编程的缺点。

图灵完备与智能合约的安全性

以下是我对揭示和理解智能合约安全性的核心属性的探索的简要总结。所以,如果你被像我这样的区块链系统的开发所吸引,特别是通过智能合约语言,希望这个故事能够提高你对图灵完整性如何影响智能合约安全性的理解。

图灵机促进图灵完成

在20世纪30年代,阿兰图灵提出了通用图灵机的概念。请注意,图灵机与第二次世界大战期间用于解决Enigma代码的设备不同。这是炸弹机。图灵机实际上是一个理论设备,一个数学计算模型,描述了我们今天所知的最强大的机械计算机。

那么通用图灵机和智能合约之间的关系是什么?

这可归因于“图灵完成”,这是描述可用于模拟图灵机的编程语言的属性。实际上,大多数现有的编程语言都是图灵完备的。图灵完整的智能合约机最着名的例子是以太坊虚拟机(EVM)。

“图灵完整的编程语言理论上可以表达计算机执行的所有任务;如果忽略有限内存的限制,几乎所有的编程语言都是图灵完备的。

这在实践中意味着什么?编程语言可以表达每个好的或坏的算法吗?

起初,这听起来像一个强大的功能。智能合约语言对于构建任何类型的应用程序都是普遍适用和灵活的,这当然是有益的。让我们考虑一下这种影响。

区块链智能合约的图灵完成

不幸的是,我不是智能合约设计领域的思想领袖,所以我转向互联网。初步研究得出了StackOverflow的完全无益的答案,或者像这样的图灵机器上的深入论文。这两种方法都没有通过编写智能合约的上下文来检查有问题的属性。

幸运的是,我很幸运能够在这个主题上拥有一位非常有资格和领导力的人物,Emily Pillmore,Kadena的高级程序员。我问她:“在区块链中,图灵完成和图灵不完整之间有什么区别?”她的回答:图灵不完整与区块链没有直接关系。在计算机科学中,抽象重写系统的一个特征是确保系统中的所有表达式都能以正常形式表示(即,可以简化)...图灵不完整性表示为语言中的表达式无法简化。这只是整个答案的一小部分!“对于像我这样的人来说,其余的答案同样令人费解。我问了一个问题“这是如何工作的?”并得到了一个全面而技术性的答案。好的,所以我想我会从不同的角度看待这个问题。也许如果我问一个关于这件事可以做些什么的问题,我可以更具体地理解它的行为。

我问过:“有没有例子可以说明:Turing不完整可以用在区块链上吗?” Emily的答案是:“不。我想不到需要Turing完整性的区块链用例.EVM不使用图灵的任何完整属性,因为它限制了通过气体模型的所有递归,这迫使递归在气体之前终止当气体耗尽时耗尽,或终止程序。事实上,EVM的气体模型模拟了图灵的不完整性,但事实并非如此。这就是为什么我说他们使用了图灵的所有缺陷(副作用,难以理解和不合理的代码,任意循环),但没有使用它的任何好处(不允许无限递归)。“啊,我理解!”这意味着当你有能力做更多的事情时,它也意味着更多的事情可以去图灵本身就更强大,但是如果你不能利用这个强大的优势,你就会不必要地暴露自己更多的攻击向量,因为增加的表面区域带来了许多额外的功能。

进一步明确区分功能:

·图灵完整语言总是具有条件重复或条件跳转的形式
·根据区块链设计,区块链可以通过气体等机制阻挡这些无限循环。

·因此,图灵完成带来了不必要的,艰巨的攻击面。风险很高,回报率很低,如下图所示。

图灵完备与智能合约的安全性

在发布时,有16种已知的Solidity攻击向量,这是智能合约中最受欢迎的特定领域编程语言,恰好是图灵完备的。如果图灵机不完整,则不太可能发生这些攻击中最昂贵的攻击。最值得注意的是,2016 DAO攻击——图灵完全支持可重入攻击,该攻击从该基金获得了360万ETH(约5000万美元),导致以太坊社区对整个网络进行评分。用来恢复他们喜欢的历史版本。最近,在2019年,君士坦丁堡的升级被暂停,因为它引入了一种新形式的再入袭击。

在设计智能合约等规避风险的技术时,最好避免让开发人员和用户面临不必要的潜在风险,这样他们可能有一天会想出一个用例来享受这些优势。毕竟,智能合约只不过是在区块链上运行的计算机程序。他们正在按要求这样做。使用它们时,您会面临所有可能输入的风险。不要相信未知程序员的逻辑,而是考虑信任图灵不完整的编程语言,即使使用这种语言也不会有危险的错误和漏洞。为了更加安全,请考虑信任使用智能合约安全性设计的图灵不完整语言。

当我继续理解这个主题时,我想知道你是否认为图灵完整的关键含义是我没有提及的。您是否发现在智能合约中使用图灵完成的好处?

微信二维码
售前客服二维码

文章均源于网络收集编辑侵删

提示:仅接受技术开发咨询!

郑重申明:资讯文章为网络收集整理,官方公告以外的资讯内容与本站无关!
NFT开发,NFT交易所开发,DAPP开发 Keywords: NFT开发 NFT交易所开发 DAPP开发