有关Gas价格的讨论——有关EIP150

叉叉XX   |     |   880 次阅读

原文:https://www.reddit.com/r/ethereum/comments/572n4q/on_gas_price_markets/
作者:Vitalik Buterin
发布时间:2016.10.12
译者:许昕&托亚&吕国宁

在EIP150中我们提议通过改变gas价格来缓解近期的DoS攻击问题,许多评论者都在询问:除了手动更改gas价格,有没有一种更通用的机制可以被嵌入系统来自动调节gas价格?EIP 150是为了解决硬盘访问这个类别的gas价格目前都被低估了的问题,但是随着科技的不断发展,未来可能会有更多新的不平衡点出现。例如十年之后网络带宽提升了50倍而算力仅提升了5倍?或者硬盘储存的价格越来越低甚至接近于0?再或者虚拟机被高度优化,以至于持续的访问不再像当下一样低效?

我们考虑了多种不同的解决方案,包括:

  • 矿工投票制 - 允许矿工来对每个独立opcode的价格进行投票
  • 市场化 - 允许交易来觉得选择哪种gas价格制度,并且允许矿工来选择他们支持的gas价格制度
  • 时间游戏 - 发明一种协议内的“提问-回答”算法来鼓励交易发送者找出那些需要较长时间来处理的交易,并用这些信息来决定哪个opcode的价格需要被提高

关于动态 gas 定价的方案,在2014年的时候的一个场景下就有过相关讨论。由于合约的预编译对客户端的执行有一定优化,所以针对预编译的合约执行应该自动降低 gas 的价格。但是相关的讨论和方案最终都被否决。主要的原因是这个新体系会被轻易利用受到攻击:心怀不轨的人可以建立一个平时可以正常运行的合约,但设置几个只有攻击者才知道得后门,这些输入会导致整个合约不可能被优化。如果让此类合约被建立并被接受为一个合理的未编译文件,那么它们会快速的变成DoS攻击的机会。另一种类型的危险存在于攻击者可以建立一种只有自己可以快速运行的合约,其他人都无法运行;这对于所有以时间为基础的解决方案来说都是一个阿喀琉斯之踵。因此,就目前的现状来说,只通过硬分叉来增加未编译文件是唯一可执行的解决方案。

从opcode的角度上看,那些论调中的许多不适用。没有人有能力去“创造自己”的opcode;我们所有的opcode都已经被包括在协议里面,因此一个攻击者发现某些隐藏的边界情况或者暗门的概率是很低的。因此,动态gas定价的方案事实上会有更高的概率取得成功。然而,即便是这样仍然存在一些问题有待解决。

  • gas限制的次要目的-许多定价提议认为gas限制只是为了限制区块处理时间。但是,gas时间表同时服务于其他重要的目的;一个特别重要的是区限制状态大小的增长,并且在未来限制用来证明一个区块的合理性所需的Merkle证明。允许矿工自由的选择gas时间表有可能会导致这些需求被忽略,因为个体矿工由于“公地悲剧”问题没有动机去注意这些问题。

  • 全局区块gas限制-一个全局gas限制存在,这个限制存在的目的是为了给验证区块的过程中所需要消耗的算力和其他资源的总量设置一个硬性上限。但是,假如矿工可以选择接受那些全部opcode都更加廉价的gas时间表,那么这会创造规避gas限制的机会。

  • 保证丧失-在尽可能的情况下不上调gas价格是最理想的,因为上调会使得所有使用固定gas的调用(call)不能正常运行。幸运的是,现在大多数调用(call)会直接把gas传递给被叫方(callee),但是在将来(换句话说,假如全功能高层语言普及之后)这个或许会改变。

然而,我们并没有发现一条“捷径”可以让我们走得太远:通过类别来区分gas价格。换句话说,与其让一个固定gas价格来包括所有运作,我们可以将gas价格以不同的类别区分:

  • 计算时间
  • 区块Merkle证明的大小
  • 加入历史的比特数据
  • 加入状态的比特数据
  • 污染布隆过滤器(bloom filter)
  • 交易数据/带宽

曾经已经存在一些提议来利用“租赁储存”结构来区分出储存造成的开销。但是我们理论上可以走得更远。一个明确可以做的改变是可以为计算和交易数据来做一个独立的gas价格表,然后让用户可以根据每一个单位的运营时间和每一个单位比特的数据来明确gas价格。交易数据仅在最高层级的运行时被收费,同时对于矿工来说是否来打包一个数据冗余的区块没有任何经济利益上的差别,所以之前提到的那些问题都不会发生。

我们也许可以做一个gas价目表,其中为与history、state和Merkle证明等相关的opcode强制一个最低的gas价格,然后允许一个动态机制来处理与执行时间相关的opcode部分。总的来说,我们需要依靠叔伯率(鉴于那些计算量或数据量较大的区块往往会变成叔伯块,所以矿工们有利益驱动来避免他们)来指导与计算、数据以及其他更严格的公式来限制更多其他层面等矿工没有私利来控制的资源消耗的gas价格。

如何建立一个上文提到的合理模型仍然是我们的一个研究主题;在EIP150硬分叉之时部署一个被完全研究透彻和检查的模型基本上是不太现实的,所以在一个短期的“星际争霸风格的再平衡”是目前唯一现实得推进方法。从长期看来,我们必定会找到让整个gas价目表更合理更机动的解决方案。

 
3 人喜欢