火星链 火星链
Ctrl+D收藏火星链
首页 > Bitcoin > 正文

GAS:以太坊 Gas 费为何阻碍了 DeFi 发展?怎么办?

作者:

时间:1900/1/1 0:00:00

一览以太坊扩展性的挑战。

撰文:RemcoBloemen,0x技术专家编译:LeoYoung

你最近要是用了DeFi产品,一定会因高额交易费望而却步。现在为以太坊交易支付几十到上百美元交易费再正常不过。以当前的费率,只有「巨鲸」交易才能获利。就忘了那些所谓的「让没有银行账户的人享受金融服务」(banking-the-unbanked)或「构建普惠大众的无需许可金融基础设施」这些高尚的目标吧。以太坊变成了富人的乐园。

小额交易手续费有时会高达10%

高额交易费的背后是区块链可扩展性问题。这个问题众所周知,甚至还有一个专门维基百科页面。可扩展性是目前区块链发展的最大限制,除此之外还有确定性时间长、易出现抢先交易、跨链互操作性等问题。

我们想要创造一个所有价值可自由流动的代币化世界,区块链的局限却正在阻碍我们实现这一使命。这就是为什么0xLabs专门成立工程师团队,力图解决这些局限性的问题。通过我们的研究,我们希望通过本文来探讨以太坊的局限性,及其如何影响DeFi用户。此外,本文也会简单论及下一代区块链。在未来,我们还将撰写文章,探讨不同的解决方案Layer2,并演示我们满足DeFi需求的策略。

首先要说明,以太坊交易的大小以gas计算。区块中收集交易,大约每13秒一个区块。每个区块所容纳的交易数量空间有限,也就是「gas上限」。目前每个区块大约有1,200万gas交易空间。纯ERC-20代币转账大约需要五万gas。也就是每个区块可容纳最多240笔代币转账,约每秒18笔转账。DeFi转账通常涉及多笔代币转账和簿记,造成交易成本翻倍,进而限制区块吞吐量。「gas上限」和区块时间意味着需要持续提供交易所需的gas。

首先,我们来看以太坊历史上gas供应及其使用如何增长。

Gas使用

每天以太坊上约有六千区块挖出,有几十亿价值gas交易空间。主要由于「gas上限」增加,gas交易数量也随着时间改变、增加。同时,交易消耗总gas费也会随着以太坊上的交易增多、变大而增长。

回顾以太坊整个历史的gas供应和消费,如下图:

从上图可以看出,以太坊是企业级应用,因为办公时间应用最高

拜占庭(Byzantium)、君士坦丁堡(Constantinople)和缪尔冰川(MuirGlacier)硬分叉之前,以太坊gas供应有几次断续下跌。这都是以太坊「难度炸弹」的影响。

ARK Invest新任首席未来学家:比特币和以太坊不是竞争关系:金色财经报道,ARK Invest新任首席未来学家Brett Winton表示,市场上有一种看法,认为比特币和以太坊是相互竞争的,这并不真实,实际上在以太坊合并后更不真实。Winton认为,比特币本身是最有可能赢得货币革命的。协议的保守性实际上意味着随着时间的推移,它很有可能取代二线货币作为媒介交换。他指出,相对于权益证明来说,工作量证明是一个更强大的去中心化机制。因此,当以太坊转移到权益证明时,会出现各种潜在的好处和有趣的事情,但它实际上会使竞争空间更加隔离。(The Block)[2022/9/13 13:25:00]

在「冰河时代」,出块时间大幅增加,造成单日出块量减少,gas供应降低。当然这种情况非常不受欢迎,迫使网络硬分叉来调整。这样做的目的就是:迫使硬分叉带来升级改进,防止陷入创新停滞。伊斯坦布尔(Istanbul)硬分叉没有重设「难度炸弹」,所以很快进行了缪尔冰川硬分叉。即将进行的柏林(Berlin)硬分叉考虑更改这一机制(EIP2515)。

看用量情况,以太坊自从2017年ICO热潮以来,gas用量始终占60%以上。之后「gas上限」几次增长到四倍,每次上限增长后gas用量也成比例增长。过去几个月,以太坊用量一直卡在95%。

要理解以太坊gas用量为何不会超过95%,需要先了解「空块」(emptyblock)和「叔块」(ommerblock)的概念。

「空块」和「叔块」

以太坊历史上,即使需求再高,gas用量也从未超过上限95%。让人惊讶的是,剩余5%浪费在完全空的区块。这些空块定期出现,大约每二十个块有一个。有交易要付款进入打包入块,为什么还会有人要挖空块?先看以下数据:

空块率随着时间稳定增长,目前是5%。所有矿池的空块率相等,所以挖空块的不会是恶意矿工。相反,真实原因可能是出块过快。如果挖块时间低于六秒,那获得空块的概率便会几何增长。

一个解释就是,矿工一获得新区块头,在完整个区块没打包完成前便开始挖下一个区块。这种操作在比特币里称为SPV挖矿,让矿工可以没完成一个区块验证可即刻开始找下一个区块,但只能加入空区块。新区块完全打包完成后,就可以添加下一个完整区块,并切换去挖。

这种解释的进一步证据就是,如果同一矿工快速连续挖到两个区块,空块率就会降低25%。

以太坊测试网已成功过渡到权益证明(PoS):金色财经报道,据trustnode最新消息,以太坊测试网 Kiln 上线后,目前已经成功过渡升级到完整的权益证明(full Proof of Stake)共识机制。以太坊开发人员 Tim Beiko 表示,验证者正在生成合并后的区块,这些区块中包含交易,而且网络非常稳定,超过 2/3 的验证者可以正确完成交易确认。据悉,开发人员已经确认以太坊测试网节点正在从 RPC 调用中获取指令,即质押者,而不是矿工。截至目前,过渡到权益证明共识机制的以太坊测试网上已经有超过106,000 个验证者,以及 340 万枚测试网 ETH。如果一切顺利的话,以太坊过渡到权益证明机制可能会在今年 6 月活 7 月进行。[2022/3/16 13:58:50]

挖空块的另一种方法就是,在挖上一个区块的同时,处理新区块。这就造成同时挖出多个区块。如果出现此类情况,以太坊会选出一个主干区块,把其他区块标记为「叔块」(ommer)。挖到「叔块」的矿工仍旧可以得到小额奖励。这种情况出现的比率稳定:

2018年gas用量达到峰值期间,「叔块」率也到新高,但之后占比降到所有挖出区块的5%。这与矿工可能此时更改挖矿策略造成空块率升高相吻合。

空块率对以太坊可扩展性的伤害没有立即表现出来,但确实有影响。自从拜占庭升级的EIP-100提案,难度调整维持一定主干链区块和「叔块」比率。所以「叔块」率高就表示浪费的「叔块」增多,主链增加的块减少。这就表现为每日出块时间延长,每日总gas量减少。

「叔块」或空块都是以太坊网络的重要健康指标。任何一个指标增长,都意味着每日用于交易的总gas减少。「叔块」率分析是支持EIP2028和1559研究的主要部分。意外的是,这两个EIP都没提到空块率,而且研究存在方法缺陷。用逻辑回归等恰当的统计学方法分析「叔块」率和空块率,这样更严谨的分析会更好。

有方法可以降低空块率和「叔块」率。推定根本原因就是,由于网络和处理延迟,矿池没有最新的状态可用。一个简单但不太让人满意的解决方案就是,让矿池更中心化,最近的状态就会集中在一起。

更去中心化一点的解决方案就是bloXroute那样,创建矿池间专用连接。受「间谍挖矿」(spymining)启发,可以让矿池预先分享目前在挖的区块。其他矿池会准备可能会挖的后续区块。矿池成功挖完自己的块后,就已经知道后续可以挖哪些块,立即切换。在堆栈上方,改进节点通讯协议和处理算法也有效,这些地方仍有改进空间。最终,降低空块率和「叔块」率才能单日提升最多5%gas供应量。

以太坊桥TVL达到229.5亿美元:金色财经报道,Dune Analytics数据显示,以太坊桥当前TVL达到229.5亿美元。其中锁仓量最高的5个桥分别是Avalanche Bridge(59.87亿美元)、Polygon Bridges(52.69亿美元)、Fantom Anyswap Bridge(35.61亿美元)、Ronin Bridge(31.28亿美元)、Arbitrum Bridges(30.06亿美元)。[2022/2/22 10:07:16]

所以似乎有95%gas上限,但如果有人想要使用超过95%的量怎么办?

Gas价格

以太坊gas上限到顶会怎样?矿工可以自由选择打包交易,但实际上矿工按「高gas费优先原则」打包交易,因为这样利润最高。这样就产生对可用gas的第一价格拍卖现象。

Gas价格已成为「完美非弹性供应量」的教科书范本。随着网络使用率超过80%,涨到95%位置,gas价格明显增加。任何潜在需求增加只会增加价格,直到价格赶退需求,降回相同水平。

让价格下降的唯一方式就是增加gas供应,或降低需求,而最近gas上限增加不足以有效降低gas价格。

乍一看,对以太坊都兴趣增加,只会推升价格,不会造成用量增长。实际上,高价值使用会驱逐低价值使用,便宜的游戏类非同质化代币(NFT)交易减少,大额DeFi交易更多。

提案EIP1559意在使短期内gas供应更加弹性。在需求高峰期,可以加大区块容量。这就有助于保持高峰gas价格平稳,可以更快打包交易。但这样无法改变长期供应量不具弹性的问题。

根据提案EIP-1559,长期仍有固定gas发行率,意味着gas价格会持续上升,直到需求足够小。EIP-1559仍旧鼓励同一区块内支付溢价的优先打包处理。这就意味着抢先交易、gas竞价和矿工牟利的情况仍旧存在。

图中的数字代表下个区块内可打包交易的最低价格。你愿意等得越久,gas价格会越低。历史数据表明,若你愿意等两分钟或更久,那价格便会很低。EIP-1559有助于降低溢价,便于更快处理交易。

因此,gas上限促使gas价格上升,那我们该如何提高上限?

Gas上限

矿池确定gas上限。下面简要概述矿工和矿池工作原理:几乎所有矿工都会把算力资源聚集一起。矿工们不会冒着长期没有收获的风险单独去到下一个区块,而是将资源聚集而获得稳定收入。矿池来验证每个矿工贡献的算力,再继续挖下个区块,这种方式推动了矿池发展。大型矿池最终会挖得较大份额区块。

以太坊测试网Goerli已达到伦敦升级区块高度:官方消息,北京时间11时19分39秒,以太坊测试网Goerli达到伦敦升级区块高度5062605。[2021/7/1 0:19:35]

下面来看以太坊上矿池份额的发展情况:

星火、Ethermine和鱼池三家获得主要区块。

除了进行硬分叉外,矿池运营者有重要治理责任:他们可以设置以太坊gas上限。与出块时间和gas价格不同,gas上限由每个区块各自确定。新gas上限限于上一区块的0.1%,所以每个区块仅能做出微小浮动。要是三家矿池一致同意快速复利滚动单边浮动,两个半小时gas上限就能翻倍或减半。要是意见不一致,gas上限就是矿池规模的加权平均数。

目前由于缺少矿工实际操作的详细信息,我们会用简单的方法:投票系统。希望未来我们可以软分叉,变为更精确的算法。

以太坊设计原理

以太坊早期矿工设定gas上限的方式是「补缺解决方案」。很多「补缺解决方案」足够好,就变成了备用参数。EIP1559建议采用不同机制,目前正在讨论在柏林分叉时应用。这之前,矿池运营者可像OPEC控制石油产量一样控制gas供应量。

Ethermine矿池运营者

最近两大矿池一致决定提升gas产量25%,颇有争议。目的本是通过增加gas供应来缓解高交易费压力。目前我们所看到的,交易需求增长快过gas上限增长速度。这就造成价格暂时趋缓,最终还是会上升。

提高gas上限会对以太坊安全带来巨大隐患。如上所述,gas上限会增加「叔块」率和空块率。正常交易负载下,这一增长很小。但对于安全问题,我们不关心正常行为,只关心糟糕情况下的不利行为。Perez和Livshits(2019年)研究了这种糟糕情况,结果就是同等gas成本下,糟糕时的交易要比正常交易慢百倍。需要九十秒区块才能填满交易。这就造成节点同步滞后,矿池挖「叔块」和空块。至本稿发布,问题已有缓解,但不足以避免。这就引致两位节点主开发者PéterSzilágyi和AlexeyAkhunov批评提高gas上限的决定。

所以,gas上限促使gas价格上升。似乎我们不该一味增加gas上限。那该怎么做?或许可以降低交易所需的gas成本?

Gas成本

交易的gas成本主要由EVM运行成本组成。交易是由众多EVM操作组成,每次运行成本由EIP和硬分叉决定。过去几次硬分叉中,有些操作的gas成本已经增加(EIPs150、160、1884),有些降低(EIPs1108、2028、2200)。计划中的柏林硬分叉也在在考虑变更一些特定操作的gas成本。

以太坊开发者寻求将其案件转移至纽约南区法院之外的其他法院审理:正在保释中的以太坊基金会(Ethereum Foundation)前特别项目负责人Virgil Griffith正寻求将其案件转移至纽约南区法院以外的其他法院进行审理。Griffith的辩护律师Brian E. Klein表示,其计划就更改审判地点提出动议。注:去年11月29日,纽约南区美国检察官办公室和联邦调查局宣布,已逮捕并指控以太坊开发者Virgil Griffith违反美国制裁法,前往朝鲜提供一个使用加密货币和区块链技术来逃避制裁的演示和建议。今年1月,Virgil Griffith保释出狱。(Inner City Press)[2020/5/30]

所有变更的目标是要让费用更准确反应操作的真实成本。这就意味着,随着计算机和算法变快,计算运行成本会降低。

而存储操作成本有所不同。存储与检索成本视链上状态大小而定,而以太坊状态大小在持续增加。改善存储设备或数据库不会抵消状态规模的增加。

这就意味着,存储仍旧是DeFi应用的大额成本。创建新的余额要两万gas,修改现有余额要五千gas。转账至少要修改两次余额,汇兑至少要修改四次,DeFi交易所需的状态费用更高。似乎没有简单方法能降低相关存储量,有需求,存储费就会上升。好的一面,Layer2扩展解决方案偏向轻量存储和高计算量,似乎更有优势。

最后,随着gas上限提高,也会出现相同的安全担忧:糟糕情况影响大。本地优化gas成本达到当前操作的平均成本很危险。

这样就很清楚为何以太坊扩展性的问题这么棘手。在给出解决方案前,还需提及目前以太坊伤害DeFi用户的另一局限之处。

矿工牟利

区块打包者遵守共识规则。共识规则保证交易选择和排序等重要自由。对于普通代币转账,问题不大。但对交易所等DeFi交易,抢先交易就有很高经济价值。目标交易两面受攻击,便会出现更复杂的牟利行为。Daian等人(2019)称之为「矿工牟利」(minerextractablevalue)。

矿池似乎不会恶意使用自己的交易排序自由,但仍可以用其牟利。矿池有可能使用Geth按gas价格排序交易。这就会产生gas价格拍卖,最高竞价交易优先。这会造成不良影响,任何人都可以通过高竞价抢先交易。竞争交易者持续竞价让gas价格升高,直到交易利润完全抵消gas费。目前,所有牟利都会变为交易费落入矿工口袋。

其他情况下,恰好接着一笔交易会有价值,例如价格预言机更新后第一个清算仓位。这称为「back-running」,结果也是矿工获益。

大价差、价格偏离、高手续费及更多失败交易,最终会让DeFi用户受损,矿工牟利。要有更好的DeFi体验,这个问题就得解决。解决这个问题就要限制交易排序自由,例如要求一个区块内最低gas价格的交易优先。

现在已完全了解以太坊的局限,及其如何影响DeFi。当然所有致力于扩展性的明星团队终将解决这个问题,对吧。

强化底层,着眼二层

有很多出众的团队致力于不同可扩展性解决方案。解决方案有两种:Layer1和Layer2。Layer1解决方案的目标是构建扩展性更好的以太坊,Layer2解决方案是要在以太坊的基础上构建更具可扩展性的基础设施。

从最明显的问题开始:提升现有以太坊的性能——这是Eth1x要做的事情。改进以太坊客户端性能,仍旧可以有很多提高。糟糕的是,Eth1x几乎没有得到任何应有的支持,所有进展很慢。

要了解Eth1x可以达到何种性能,可以先来看看Solana。Solona吞吐量可达到以太坊千倍以上,还有提升空间。这种方法的主要劣势是,运行全节点的硬件要求很高。

多数其他解决方案都有三个共同点:

使用WebAssembly作为虚拟机,极简状态架构,和最重要的分片。目前以太坊上的所有交易都按序列执行。交易排序毫无疑问是区块链的关键。这种模式的缺点是,很难并行处理,所以投入更多资源也无法轻松解决可扩展性问题。这就是下一代区块链Eth2.0要解决的。通过更改交易执行方式,让交易平行处理。将区块链分为多个松散连接的域,也就是称作「分片」的处理程序,来实现这一方案。一个分片内的交易仍旧按顺序排列,但分片之间是异步进行。这就允许所有分片平行运行,依分片数量扩展网络。用以分离的域不一定与分片相匹配,同一个分片可以有多个域,甚至可以迁移域,达到负载平衡。如需深入了解分片技术,读者请浏览Near协议的「夜影」论文。下一代区块链主链从哪里分为域何时分为域,视情况而定。第二代区块链可看作是从细粒化到粗粒化光谱。

两个项目各占粒度光谱两边:Dfinity在细粒度一端,每个代理人有自己的域,每次代理人交互都是异步。Near协议细粒度化稍小,每个合约都有自己的域。粗粒度一端是波卡,其域是就是整个分片,这种情况称为「平行链」更准确。从DApp开发者角度判断以太坊2.0为时尚早。Eth1EE将为粗粒度,有与分片一致的界限,目前的以太坊会成为一个分片。细粒度解决方案的优势是透明;合约间调用无论是否跨分片边界,都能看上去一样。这就进而允许在分片间移动合约来轻松平衡负载。

缺点是跨域交易不再是原子化,而是变成并行,其中部分不可撤销。Dfinity和Near中显示合约间调用为async,返回约定等待await。await期间所有发生的交易都会写入链上。之后其他人的交易可以叠加之上。这时候之前的所有交易就不能撤销。await最终确认后,可返回合约调用成功或失败指令。有多个提案避免这一情况,让跨分片获得一定原子化,但这样也有劣势。拥抱非原子化似乎是自然结果。

对于DeFi,异步transferFrom调用构成很大挑战。设想双方进行简单交易,Alice和Bob想要用ETH和DAI交易。基本合约应该是:

但现在我需要处理错误。如果第一次交易失败,我们可停止交易。如果第二次交易失败,就需要将1个ETH退给Alice。问题是,这时Bob可能已经把那1个ETH花了。解决这个问题的一个方式就是托管。

这样就行了,没人会损失。但现在Bob就对Alice的交易有了专属自由选择权。Alice的代币被托管,不会再进行其他交易,也尚未保证与Bob的交易一定会成功。解决这个问题可以对违规者惩罚。而DeFi交易会很贵,就难以确定多少惩罚额度合适。解决这个问题可以要求市场各方最开始都在一个存款合约存入资金托管。而这样又变成中心化状态,根本上就不需要分片了。

另一个需要注意的是,这些并发问题到底能多复杂。真实交易中,也有需要更新的序列填充状态(fill-stateoftheorder),这就让协议更加复杂。相比并发漏洞,困扰以太坊1.0的重入攻击漏洞便不足为奇。并发漏洞为不确定性,测试中也不会发生。从上述简单交易可知,要解决这个问题就需要重新思考基础架构,唯一可靠的方式就是打翻重来。

交易是DeFi构建的基础,是一系列处理程序。我们已知道交易所交易簿如何构成挑战。自动做市商交易所就较为简单,因为有托管储备金在,但储备金余额形成妨碍并行的瓶颈。即使最快的传统交易所,结算也没有并行,在单一匹配引擎排序完成。如需详细了解传统交易所工作原理,BrianNigito的演讲非常棒。

这并不意味着这些问题无解。最简单的解决方案就是这些所有协议在每个分片部署独立的实例,让套利者保持彼此间同步。或许可以得到性能足够的单独同步分片纳入所有DeFi交易,这样就无需担心并发的问题。

本文深入探讨了以太坊扩展DeFi应用方面的局限性。如上所述,这问题复杂而不可一蹴而就。之后我们会撰写另外一篇文章探讨Layer2特定解决方案,并演示0x自己的策略。

参考

1.DanielPerez&BenjaminLivshits(2019).“BrokenMetre:AttackingResourceMeteringinEVM.”

2.Daianetal.(2019).“FlashBoys2.0:Frontrunning,TransactionReordering,andConsensusInstabilityinDecentralizedExchanges.”

3.BrianNigito(2017).“HowtoBuildanExchange.”

4.DannyRyan(2020).“TheStateofEth2,June2020.”

5.ScottShapiro&WilliamVillanueva(2020).“ETH2Phase2WIKI.”

6.NearProtocolshardingdesign

标签:GAS以太坊DEFIEFIMEGASHIB以太坊官网入口defi去中心化交易所下载NINEFI

Bitcoin热门资讯
ASI:Sashimi发布6条提案,社区成员需在10小时内提供反馈

据官方消息,跨链Sushi项目Sashimi公布6项提案,并认为需要立即采取行动。社区成员需在10小时内表达各自意见以便进行相关修改.

1900/1/1 0:00:00
数字资产:以太坊短期价格分析:9月11日

免责声明:以下文章试图分析以太坊短期市场中的新兴模式及其对价格的影响。以太坊突破阻力位360.13美元,并一直走高。以目前的交易价格约为367.48美元,ETH可能已经接近趋势反转.

1900/1/1 0:00:00
TPS:关于开启DIA/USDT交易对公告

尊敬的LOEx用户:DIA技术升级已完成,应项目方要求,LOEx国际站将于2020年9月14日10:00开启DIA/USDT交易对.

1900/1/1 0:00:00
INE:关于下线BHC、SAVE、BEET及DAPS的公告

亲爱的用户:DigiFinex将于2020年09月18日18:00(GMT8)下线BHC/USDT,SAVE/USDT,BEET/USDT和DAPS/USDT交易对并关闭充币服务.

1900/1/1 0:00:00
USD:中币(ZB)现已开放USDT-DeFi挖矿

尊敬的中币用户:中币DeFi一站式挖矿将于香港时间9月11日20:00开放USDT-DeFi挖矿,目前不限制总额度、单人额度和存币时间。用户存入USDT参与DeFi挖矿,每日收入DeFi币.

1900/1/1 0:00:00
全球观察区定于今日12:15开放SUN交易并开启SUN新币挖矿

尊敬的用户:火币全球站“全球观察区”将于9月11日12:15(GMT8)开放SUN(SUN)的交易业务.

1900/1/1 0:00:00