以太坊的图灵完整性
发布于 3 年前 作者 cheunghomie 715 次浏览 来自 以太坊

以太坊在一个名为以太坊虚拟机的状态机中执行存储程序,在内存中读写数据的能力,使其成为一个图灵完整系统,因此是一台通用图灵机。对于有限的存储,以太坊可以计算任何图灵机可以计算的算法。

以太坊的突破性创新是将存储程序计算机的通用计算架构与去中心化区块链相结合,从而创建分布式单状态(单例)世界计算机。以太坊程序“到处”运行,但却产生了共识规则所保证的共同(共识)状态。 图灵完备系统可以在“无限循环”中运行,这是一个用于描述不终止程序的术语(过分简化地说)。创建一个运行永不结束的循环的程序是微不足道的。但由于起始条件和代码之间存在复杂的相互作用,无意识的无限循环可能会在没有警告的情况下产生。在以太坊中,这提出了一个挑战:每个参与节点(客户端)必须验证每个交易,运行它所调用的任何智能合约。但正如图灵证明的那样,以太坊在没有实际运行(可能永远运行)时,无法预测智能合约是否会终止,或者运行多久。可以意外,或有意地,创建智能合约,使其在节点尝试验证它时永久运行,实际上是拒绝服务攻击。当然,在需要毫秒验证的程序和永远运行的程序之间,存在无限范围的令人讨厌的资源浪费,内存膨胀,CPU过热程序,这些程序只会浪费资源。在世界计算机中,滥用资源的程序会滥用世界资源。如果以太坊无法预测资源使用情况,以太坊如何限制智能合约使用的资源?

为了应对这一挑战,以太坊引入了称为 燃气 _gas_的计量机制。随着EVM执行智能合约,它会仔细考虑每条指令(计算,数据访问等)。每条指令都有一个以燃气为单位的预定成本。当交易触发智能合约的执行时,它必须包含一定量的燃气,用以设定运行智能合约可消耗的计算上限。如果计算所消耗的燃气量超过交易中可用的天然气量,则EVM将终止执行。Gas是以太坊用于允许图灵完备计算的机制,同时限制任何程序可以使用的资源。

欢迎使用OKX交易所
回到顶部