—— 以太坊的基本设计原理 (2015 年 3 月) 从以太坊发展初期开始,由矿工设置 Gas 上限就是一个权宜之计。由于其它方案都不够好,这个权宜之计就一直延续了下来。EIP 1559 提出了一个不同的机制,目前社区正在讨论是否将其加入柏林硬分叉。在那之前,矿池运营者可以像 OPEC (石油输出国组织)管理石油开采那样管理 Gas 供应。 Ethermine 矿池运营者 最近,全球最大的两个以太坊矿池做出了一个有争议的决定,将每日 Gas 产量提高 25% 。此举的目的是通过增加 Gas 供应量来抑制过高的交易费。到目前为止,我们发现,再怎么提高 Gas 上限,也跟不上用户对交易需求的增长速度。这就意味着,Gas 价格在经历短暂下降后,最终还是会再度回升。
提高 Gas 上限会给以太坊带来很高的隐形安全成本。正如我们所见,提高 Gas 上限会提高叔块率和空块率。在交易负载量正常的情况下,这一影响不大。但是出于安全性考虑,我们只对极端情况感兴趣,并不关心正常情况。根据 Perez 和 Livshits (2019)的研究,在最糟糕的情况下,如果生成一批处理效率极低的交易(在 Gas 成本相同的情况下,处理这类交易的速度比普通交易慢 100 倍),并将其打包到区块内,节点需要花 90 秒的时间来处理这个区块,从而导致节点落后,矿池挖出大量空块和叔块。自这项研究发布以来,已经出现了一些缓解措施,但是问题并未得到彻底解决。因此,两位主要的节点开发者 Péter Szilágyi 和 Alexey Akhunov 批评了关于提高 Gas 上限的决定。 因此,达到 Gas 上限时,Gas 价格就会上涨,而且我们似乎不应该进一步提高 Gas 上限。那么我们还能采取什么措施?我们能够降低交易所需的 Gas 成本吗? Gas 耗用量交易的 Gas 消耗量基本上就是其 EVM 操作的消耗量。一笔交易是由许多 EVM 基本操作组成的,而每一个操作的 Gas 耗用量都通过 EIP 和硬分叉来治理的。在过去的硬分叉中,主要操作的 Gas 消耗量有升(EIPs 150、160、1884)有降(EIPs 1108、2028、2200)。计划中的 「柏林」 硬分叉也在考虑引入几个 Gas 消耗量变更(EIPs 1380、1559、2046、2565、2537)。 所有这些变更的目的都是为了让手续费能更精确地反映操作的真实成本。因为计算操作的成本会随着计算机性能和算法效率的提升而变得更低。但存储操作的成本则完全不同。存储和查找操作的成本会跟随区块链状态规模的变动而变动,而以太坊的状态规模是一直在变大的。这种增长不会因为存储设备的升级或者数据库技术的改变而改变。 这就意味着存储仍然会是 DeFi 成本中的一大块。创建一个新的余额需要 2 万 Gas,而修改一个已有的余额要耗费 5 千。一笔转账至少要改变两个月,一次交换则要改变至少 4 个,更复杂的 DeFi 交易会包含更多昂贵的状态操作。看起来实在不容易降低相关存储的数量和成本,这个趋势九头牛都拉不回来。但好消息是,Layer-2 扩展方案会尝试做成存储粗放且计算密集的,看起来会更讨喜一些。 最后,提高区块的 Gas Limit 也同样有安全性方面的隐忧:提高 Gas Limit 是有效果的办法中最差的。单纯根据当前真实操作的平均成本来改变 Gas 消耗量也是非常危险的(Naively optimizing the Gas cost for the current true average cost of operations is very dangerous.)。 到此为止,为什么扩展以太坊是一个棘手的问题,已经很显然了。在我们讨论大家提出的解决方案以前,我们希望再探讨一个当前以太坊可能伤害 DeFi 用户的缺点。 矿工可抽取价值区块生产者虽然受到共识规则的限制,但共识规则也为他们提供了一些重要的自由(freedom),比如交易选择和排序。对于一般的代币转账来说,生产者的自由并不会造成很大影响,但对于 DeFi 交易比如交易所交易来说,抢跑(front-running,指发送 Gas Price 更高的交易来抢先使交易上链)可能收获巨大的经济价值。更复杂的问题是,一笔目标交易被夹在两笔交易中间,像夹三明治一样。Daian et al. (2019) 将能够从抢跑交易中获得的价值称为矿工可抽取价值(miner extractable value)。 没有证据表明现在的矿池在恶意利用他们的交易排序自由,但如果他们做过,也必然是有获利的。矿池一般都使用 Geth 客户端,该客户端会根据 Gas Price 来排序交易(见 1,2)。这导致了 Gas 的价格竞拍,对 Gas 出价最高的交易能最先打包上链。这一机制的负面效果是,任何人都能通过提高出价来抢跑一笔交易。相互竞争的交易者会持续提高出价,直至交易的利润被 Gas 费完全耗尽。到了这个时候,交易可获得的所有价值都会变成 Gas 费,进到矿工的口袋(译者注:这是一个理论上的结果,也是 「矿工可抽取价值」 概念的由来;实际上,高 Gas 费的交易可能很快就会打包上链,而不会存在相互竞争的交易者像拍卖那样安逸地相互出价;所以矿工可抽取价值也没有想象中那么高,毕竟矿池之间有竞争)。 另一方面,让自己的交易紧跟在另一笔交易之后上链,可能也是有价值的,比如在价格信息传输机制更新信息后第一个清算仓位(liquidate a position)。这个叫做 back-running,最后也会变成矿工的收益。 矿工可抽取价值最终是从普通的 DeFi 用户处得来的,表现是更大的价差、更差的价格、更高的手续费,以及更多失败的交易。要想获得更好的 DeFi 体验,就应该解决这个问题。解决办法之一是限制交易排序自由,比如要求一个区块里的交易按 Gas Price 由低到高排序。 (责任编辑:admin1) |