火星链 火星链
Ctrl+D收藏火星链
首页 > 火币下载 > 正文

以太坊:V神:值得考虑删除的 EVM 功能

作者:

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

特别感谢 Micah Zoltu 提出的一些建议

到 2020 年,我们对如何设计智能合约和区块链协议的理解已经远超 2013-15 年。因此,如果我们在 2021 年从头开始搭建以太坊,我们就不会引入很多早期添加的功能了。然而从一条正在运行的、拥有活跃生态的区块链中移除功能,远比在一个新系统中不添加它们要难得多。

有些 “缺陷功能” 是无害的。有些可以安全而缓慢地移除或改进。还有些已经深深地嵌入到了太多的应用中,以至于根本改不动(例如 EVM 的 256 位字长)。另一方面,也有一些功能要么已经被移除,要么已经被改进,要么即将被移除(例如对状态树格式的改进、用 SSZ 编码规则代替 RLP 等)。

但是还有一些中间情况:有些功能过于复杂,对生态的发展造成了中等程度的伤害,我们可以移除它们,但是需要冒一点风险。如果我们移除这些功能,可能会有少量的应用被破坏。但是不移除的话,它们会继续拖累生态。

就跟别的 “长痛短痛” 抉择情形一样,人们很容易低估短痛带来的长期收益。特别是在我们的情况中,由于解决复杂情况的代码已经写好了,所以感觉保留它们不需要付出任何成本。但实际上有两个重要的成本要考虑:

为协议开发新实现的成本

若要改变功能 B,但 B 会跟没必要存在的复杂功能 A 交互,可能会产生 “交互 bug”

V神:EIP 1559将缓解以太坊当前面临的三大问题 新方案将更易被矿工接受:EIP 1559被认为是以太坊的下一个大手术,对此,以太坊联合创始人V神(Vitalik Buterin)整理了一份常见问题解答对EIP 1559做出详细阐述称,EIP 1559将缓解以太坊当前面临的三大问题:1.交易费用水平的波动性与交易的社会成本之间的不匹配。从直觉上看,这种费用调整机制在短期内看就像是一个固定费用,而从长远来看,它代表着一个上限。在基本上公链会并存的背景下,固定费用可能要比设置一个上限要更好。2.第一价格拍卖机制的效率低下问题。EIP 1559用一个固定价格的销售来代替拍卖(除非在短期内,区块完全填满,直到费用赶上),从而消除了第一价格拍卖机制的低效性,并使费用估算变得非常简单。3.无区块奖励区块链的不稳定性问题。EIP 1559创建了一种类似于永久性区块奖励的机制,从而缓解了仅收费区块链(指没有新区块奖励的区块链)的许多不稳定问题,而无需实际永久发行。

V神表示,新方案将更易被矿工接受。据悉,EIP 1559是旨在改变以太坊费用市场的提议,主要的变动涉及:1.目前1000万 gas限额会被两个数值所取代,一个是“长期平均目标”(1000万),另一个是“每个区块的硬上限”(2000万);2.交易需要支付一个基础费用(BASEFEE,它会被燃烧掉),该费用按区块进行调整,目标是确定一个value值,使得区块gas平均使用量保持在1000万左右。[2020/5/6]

以重新设计状态树为例:若以太坊的状态越是遵循一些简单的恒常性质(invariants),那么替换更高效的双层十六进制 Patricia 树就会越容易。然而在现实情况中,因为SELFDESTRUCT操作码可以在单笔事务中不受限制地删除大量存储插槽,这给改良状态树带来了很大的困难。另一个例子是 2300 gas 津贴机制(见下文)使 gas 重新定价变得更复杂。

声音 | V神:联盟链需要解决扩展性、隐私、合规等问题:今日,以太坊联合创始人Vitalik Buterin在深圳大学的分享会中就联盟链话题表达了看法。Vitalik Buterin表示,尽管联盟链很久之前就已被提出,但是想要很好地实现我认为很困难,最终还是要从应用角度、价值信息的验证开始入手。我对于联盟链主要有三点问题:一是可扩展性问题,联盟链短期内在可扩展性问题方面有比较明显的优势,现在的公有链性能支撑不了大多数应用,但是我认为五年后可以实现;第二点是隐私的问题,这一方面联盟链和公有链没有特别大的区别,特别对于一些企业和竞争对手而言联盟链不能很好的解决隐私问题;第三个问题是合规问题,去中心化和中心化问题,联盟链未必是最优解决方案,是否合规最终取决于应用本身,而不取决于是联盟链还是公链。。[2019/9/23]

"合并"(放弃 eth1 的 PoW 链,并将其状态导入 eth2 的 PoS 信标链的事件)可能是我们扯掉一些痛苦绷带的最后机会,这篇文章就是解释这样做的理由。

合并是进行最后一轮不兼容更新的一个非常自然的时间节点,有以下几个理由:

合并后构建的客户端很可能不处理 PoW 链,而是专门验证 PoS 信标链。因此,如果在合并时或合并前去除不必要的复杂功能,客户端最容易从中受益,因为它们根本不需要实现这些功能。(从技术上讲,即使是在合并前建立的客户端也可以设计成只处理最近 1-2 个硬分叉之后的数据,但是 “PoS 信标链作为一条独立的链而不需要处理 PoW 链上过于久远的数据” 的说法更容易让人接受)

现场丨V神:对以太坊可以有的多个期待:金色财经现场报道,在9月18日的2019第五届区块链全球峰会上,以太坊创始人Vitalik Buterin介绍了未来对以太坊可以有的期待:更好、更可信的数据来源,让应用更好更便捷地与真实世界连接;以太坊上的PoS和分片扩容技术;更多智能钱包、智能融资合约等等;现有的交易所可用零知识证明提高自身的安全性;去中心化应用会比中心化的应用更友好。[2019/9/18]

以太坊已经发生了很大的改变,社区对这将是 “以太坊的一次重大升级” 达成了共识。特别是 “在分片和合并完成之前会出现快速的进化,但合并之后就会趋于稳定” 的观点也得到了社区的一致认可。

必要的向后不兼容的改变(例如,BLOCKHASH 操作码不再是一个好的随机性来源)已经发生了。

这篇文章将介绍一些可以考虑删除的功能的例子。

这是什么?当一个合约调用另一个合约时,被调用的合约会得到 2300 gas 用于执行非常有限的操作(足够做一点计算和生成一条日志,但不够写满一个存储槽)

为何引入?最初是为了让智能合约钱包在收钱时能自动生成一条日志。后来还被用于实现 “守卫” 功能以防止合约收到 ETH。

有何问题?

由于它设置的是固定的 gas 数量,因此只要 gas 价格可以调整,人们就没有办法确定这些 gas 到底能支持什么类型的计算。

声音 | V神:若市场有效,DAI的失效风险减去USDC的失效风险造成了一半的收益率差异:推特网友在V神发起的关于DAI高贷款年利率的投票下回复称:请研究下USDC的贷款利率,例如ETHLend,它与DAI的利率水平相当,因此我认为这说明人们对DAI失效的担忧较少,利率高是因为市场无效。 对此V神回复称,Compound 和ETHLend上的USDC利率约为6-7%。因此,如果这是一个有效市场,意味着DAI的失效风险减去USDC的失效风险造成了一半的(收益率)差异,而USDC的失效风险或Compound的失效风险造成了另一半的差异。 对冲基金Three Arrows Capital首席执行官Su Zhu评论道:DAI的流动性也相当差,交易价为1.01(美元)。目前正在借出USDC、并在为是否转向借出DAI以获得更高收益而争论不休的人,必须首先为DAI支付1%的溢价。 据此前消息,V 神今日在推特发起关于“DAI的贷款年利率与美国10年国债收益率差距”的投票,V神指出,将DAI贷款给Compound可以提供11.5%的年利率,而美国10年期国债收益率仅为1.5%。对于出现此差异的原因,超半数用户认为DAI随时可能崩盘的风险导致了它的高年利率。[2019/8/24]

它并没有很好地满足设计意图,有两个原因。首先,很多用户仍然在使用外部账户,而外部账户并不会生成日志。其次,SELFDESTRUCT操作码绕过了津贴机制。从长远来看,通过账户抽象化,外部账户的作用将被弱化,并且SELFDESTRUCT操作码可能将被移除,但是在这两件事完成之前,它都只是一个不充分的解决方式。

声音 | V神:通过回滚区块链找回被盗比特币带来的附带损失是巨大的:V神今日发推回应赵长鹏不通过回滚区块链找回被盗比特币的时候表示,“以太坊曾经做过不符合规则的状态改变”“由此带来的附带伤害将是巨大的,甚至是致命的”。

V神所说“不符合规则的状态改变”一事是指:2016年6月15日,因the DAO漏洞,以当时价格来算价值近6千万美元的以太币被盗,V神提议进行软分叉来将所有被盗的币都将“冻结”在那个地址上,再进行一次硬分叉将这些以太币找回。由此ETC的分叉币ETH产生了。[2019/5/8]

如何移除?有两种可能 —— 要么将 2300 改成 0(不支持子执行(child execution))要么不限制数量(子执行可以从父执行中获得全部的 gas 可用额度)

移除有何副作用?

如果我们移除子执行,那么这将需要在合约调用中添加一个笨拙的二分处置(two-clause mechanic),即 0 gas 解释为 0,任何其他数字解释为 “发送所有的 gas”。它还会破坏反接收守卫功能和日志记录。

如果我们在执行中允许子执行获得全部的 gas,那么通过调用发送 ETH 会变成一个需要信任的操作,恶意合约可能会借此扰乱一些应用。不过,Solidity 文档已经建议大家用 withdrawal 模式代替transfer,这样就不会有任何风险了。

如何消除顾虑?

让所有的 ETH 转账,无论是来自调用还是SELFDESTRUCT(如果保留的话),都生成一条日志,这样钱包就不需要生成日志了

增加一条规则,对于提供 0 gas 的调用,可看做是一个 “可以生成日志的STATICCALL”。这样就复制了在 gas 津贴的执行环境里实际做到的功能。

这是什么?GAS?操作码允许合约查看当前的执行环境中还剩多少 gas 可用。CALL?允许调用者为子上下文提供固定数量的 gas。

为何引入?反对让?CALL?将父环境中剩余的全部 gas 都交给子环境的最主要原因是避免 “不可信任的调用”:即发送者不信任接受者的调用。一个简单的例子是发送 ETH 给参与方的金融机制。另一个例子是 M-of-N 外部价格信息的输入机制(oracle),通过调用一些合约,在获得所有合约回复后取中位数作为输出。

其实绝大多数不可信任调用的用例都可以通过其他方式绕过去。对于转账,Solidity 文档已经建议大家用 withdrawal 模式代替?transfer。M-of-N 外部价格信息的输入机制可以很容易地通过为每一个外部输入单独创建一笔交易实现。

这会让 gas 重定价变得很难做,当操作码的gas消耗量发生变化,固定 gas 数量的调用可能会不够用。

让?CALL?可以自动将父环境的所有可用 gas 额度都交给子环境。GAS操作码只需简单地返回交易的初始 gas 数量。

我们知道的 “不可信任调用的合法用例” 主要是第三方赞助调用(译者注:即元交易)。第三方发布一笔事务,事务中包含你希望的调用,当调用发生后,可以自动地向你扣费(你会公布授权他们这样做的签名)。这对用户没有任何 ETH 的智能合约钱包、混币者的隐私保护以及其他一些用例都很有用。我们需要一个有限 gas 数量的调用以确保最终的支付语句真正被调用,而不会因为 gas 不足而被回退。

矿工可以直接充当中介,如果交易最终没有付钱给他们,他们就可以直接丢弃事务。参见 Phil Daian 的工作,他创建了一个由第三方机器人构成的生态,矿工可以自动产生 “安全” 的批量交易。

在协议内增加一个明确的 “第三方付款人” 的交易类型。参见 EIP 2711 的例子。

还请注意,如果我们想要走得更远,我们还需要调整 63/64 规则使得如果子调用失败,父调用也彻底失败(所以连 1/64 都不剩)。这可能会破坏更多的用例(“如果子调用失败就仅执行一个简单的操作”),但它将确保当 gas消耗量发生变化时只会引起一种类型的行为变化(原本成功的交易现在会失败)。

请看这篇文章。

这是什么?调用SELFDESTRUCT销毁一个合约,或者将一个存储槽设置为零,会退回 15000-25000 gas。退款会在事务执行的最后触发,并抵扣发送者需要支付的费用。

为何引入?激励应用开发者践行 “良好的状态卫生”,清除不再需要的存储插槽和合约。

在实践中,几乎没有人真正践行良好的状态卫生。这是因为激励不够高,不值得为此增加代码的复杂度甚至带来安全风险。

退费机制使得 GasToken 兴起。GasToken 有利于将低费率时期的 gas 调配到高费率时期使用,但是它不利于网络,特别是加重了状态规模的膨胀,并使低效的 gas 使用方法阻塞了区块链。

它加剧了区块大小的波动,使一个区块实际上的理论最大 gas 消耗量几乎是字面意义上区块 Gas 上限的两倍。这并不致命,但仍然不可取,特别是考虑到,在 EIP-1559 实施后,退款机制可以使网络的实际 Gas 使用量长期维持高水平,阻碍 1559 机制的运行。

如何移除?只要把退款功能从协议中完全删除。

我们可以相当确信,没有任何应用会因此无法使用,因为退款只在执行结束后触发,所以取消退款并不会改变任何执行的可用 gas 数量。

GasToken 将变得毫无用处

在 gas 价格反常时,应用失去了降低费用的能力。好在这个功能目前最主要的用户是 defi 的套利机器人,而套利机器人之间的 gas 价格竞争是一种零和活动,不过还不清楚移除这个它们用于竞争的武器会造成什么全局性的不利影响。

Gastoken 在他们的网站上已经警告过,未来的协议变更可能会使 GasToken 无效,所以用户不会觉得惊讶

我们可以提前公布变更时间

相比上面列举的,我对移除以下功能会带来多少价值缺乏信心,不过还是值得列出一个清单。

RIPEMD160 预编译:这是一个非标准的哈希函数,很少有项目使用(除了与比特币交互的应用)。我们可以用链上部署的合约进行替换,对于真正需要高效验证的项目,可以直接使用 ZK-SNARK。

动态跳转:使用变量作为跳转目标会使代码的分析和操作变得更加困难(例如,无法简单地替换操作码序列,或者预置一些代码)。去掉动态跳转,只允许相对偏移的静态跳转,并且为子程序提供一些专用的指针方案(指针不作为整型暴露)可以解决这个问题。然而,这将是一个底层的改变,可能会破坏许多自定义的合约,所以其收益/成本比似乎不如这个列表中的其他项目。

MODEXP 预编译:对于大整数计算来说,这显然是一个错误的 “基本元件”,并且其 gas 消耗的计算方案也相当复杂。更好的选择是:(i) 用预编译的 ADD、MUL 和 MOD 作为替代的基本原语,并用这些预编译的指令编写用于替代 MODEXP 的实现,或者 (ii) 将 EVM384 扩展到更多的长度(256,384,512,768,1024 ... 8192)

标签:GAS以太坊DAIETHMEGASHIB币怎么得到以太坊币的钱MDAI价格IETH币

火币下载热门资讯
SCR:Scroll联合创始人张烨:Scroll的设计与架构

9月22日,在由万向区块链实验室主办的第八届区块链全球峰会上,以太坊扩容项目Scroll联合创始人张烨发表《Scroll的设计与架构》主旨演讲.

1900/1/1 0:00:00
BSP:艺术NFT开放市场风云录

自从今年 2 月 NFT 破圈以来,关于它的报道数不胜数。在不少媒体笔下,NFT 是神奇的、是充满科技光环的、是有超越性的.

1900/1/1 0:00:00
WEI:为什么NFT会是新型的社交网络?

上周末我发现有一堆“死亡僵尸 (THE DEAD) 在推特关注我,到处都是顶着这个头像的人: 外行人:这个绿色的家伙是一个 CryptoPunk (加密朋克).

1900/1/1 0:00:00
Proof:金色观察|Moonbirds母公司发布未来规划 a16z解释为何领投5000万

2022年8月30日,蓝筹NFT Moonbirds和PROOF Collective背后母公司PROOF举办了Future PROOF社区直播活动.

1900/1/1 0:00:00
PDO:数据告诉你 以太坊2.0质押的去中心化程度几何?

原文标题:《Nansen | 数据的背后:以太坊 2.0 会带来什么改变?》零售和机构用户对以太坊 2.0 的质押兴趣继续上升,他们的每一笔存款都会推动以太坊 2.0 走向或远离去中心化.

1900/1/1 0:00:00
元宇宙:即将到来的5个有意义的NFT项目

NFT占据了当下热点新闻的头条。当我们进入Web3.0时代时,如果不了解数字货币和价值交换手段,你就无法理解互联网的未来.

1900/1/1 0:00:00