丁丁打折网 - 网友优惠券分享网站,有688999个用户

京东优惠券 小米有品优惠券

当前位置 : 首页>web3>以太坊坎昆升级:开发者必看安全指南

以太坊坎昆升级:开发者必看安全指南

类别:web3 发布时间:2025-09-22 02:45

好的,这是根据你的要求重写后的文章:

坎昆升级在即:开发者需要关注的安全要点

以太坊坎昆升级即将到来,这次升级包含了多个EIP(以太坊改进提案),旨在提升以太坊的可扩展性,特别是降低Layer2的交易成本和提升交易速度。本次升级计划于3月13日在以太坊主网上激活。在升级之前,开发者们需要仔细检查以下安全注意事项,以确保他们的智能合约能够平稳过渡。

EIP提案回顾

EIP-1153:瞬时存储操作码

EIP-1153引入了瞬时存储操作码,它允许智能合约在交易执行期间存储数据,但这些数据在交易结束后会被自动清除。这种存储方式比传统的存储方式更便宜,因为它不需要访问磁盘。开发者可以通过TLOADTSTORE操作码来访问瞬时存储。这个提案旨在为以太坊交易执行中的多个嵌套执行框架之间的通信提供一个高效的解决方案。

EIP-4788:信标链区块根暴露

EIP-4788旨在将信标链区块的哈希树根暴露于EVM(以太坊虚拟机)中,允许智能合约访问这些根。这样做可以无需信任地访问共识层状态,支持多种应用场景,如staking pools、restaking结构、智能合约桥、MEV缓解等。该提案通过一个智能合约存储这些根,并使用环形缓冲区来限制存储消耗。

EIP-4844:分片Blob事务

EIP-4844引入了一种新的事务格式,称为"分片Blob事务",旨在扩展以太坊的数据可用性。这项提案通过引入包含大量数据的"blob-carrying transactions",这些数据不能被EVM执行访问,但可以访问其承诺。这种格式与将来全分片使用的格式完全兼容,为扩容提供了临时的缓解。

EIP-5656:内存复制指令

EIP-5656引入了一种新的EVM指令MCOPY,用于高效复制内存区域。这项提案旨在降低在EVM上执行内存复制操作的开销,通过MCOPY指令直接实现内存之间的数据复制。MCOPY允许源地址和目标地址重叠,旨在提升包括数据结构构建、内存对象的高效访问和复制在内的多种场景的执行效率。

EIP-6780:修改SELFDESTRUCT操作码

EIP-6780修改了SELFDESTRUCT操作码的功能。在这个提案中,SELFDESTRUCT只会在与合约创建相同的交易中删除账户和转移所有代币,除此之外,执行SELFDESTRUCT时,合约将不会被删除,只是将所有代币转移到指定目标。这一改变是为了适应未来Verkle树的使用,旨在简化EVM实现,减少状态变化的复杂性,同时保留SELFDESTRUCT的部分常用场景。

EIP-7516:Blob基础费用指令

EIP-7516引入了一个新的EVM指令BLOBBASEFEE,用于返回当前区块执行中的blob基础费用值。这个指令与EIP-3198中的BASEFEE操作码相似,不同之处在于它返回的是根据EIP-4844定义的blob基础费用。这个功能使得合约可以编程地考虑blob数据的费用,例如,允许rollup合约无需信任地计算blob数据使用成本,或者基于此实现blob费用期货,以平滑blob数据成本。

官方披露的安全考量

EIP-1153

开发者在使用瞬时存储时,需要了解瞬时存储变量的生命周期。由于临时存储会在交易结束时自动清除,因此开发者可能会试图避免在调用过程中清除插槽以节省Gas。然而,这可能会阻止在同一事务中与合约进行进一步的交互(例如,在重入锁的情况下)或导致其他错误。

EIP-4844

此 EIP 使每个信标块的带宽要求最多增加约 0.75 MB。这比当今区块的理论最大大小(30M Gas / 每个 calldata 字节 16 Gas = 1.875M 字节)大 40%,因此它不会大幅增加最坏情况下的带宽。

EIP-5656

客户端应注意其实现不使用中间缓冲区,因为这是潜在的拒绝服务 (DoS) 向量。大多数用于移动字节的语言内置函数/标准库函数在这里都具有正确的性能特征。

EIP-6780

以下应用场景将受到影响:

  • 使用CREATE2在同一位置重新部署合约,以使合约可升级。不再支持此功能,应改用ERC-2535或其他类型的代理合约。
  • 如果合约依赖于通过以SELFDESTRUCT合约作为受益人燃烧代币,则合约不是在同一交易中创建的。

智能合约相关风险

EIP1153

设想使用操作码TLOADTSTORE的两种场景:

  • 被调用合约使用该操作码
  • 发起调用合约使用该操作码

风险1:

相比于传统的 SSTORESLOAD,新增的瞬态存储主要改变了数据的存储期限,tstore存储的数据通过tload进行读取,在一笔交易执行结束后该数据将会被释放,而不是同sstore一样写入合约被永久性的记录。开发者在使用该操作码时应该认清该操作码的特性,以免错误的使用导致数据不能正确的写入到合约中而造成损失。另外,tstore的数据属于私有变量,仅合约本身可以访问。如果想要外部使用该数据只能通过参数的形式进行传递或暂存到一个public stroage变量中。

风险2:

另一个潜在风险是,如果智能合约开发者不正确管理瞬态存储变量的生命周期,可能导致数据在不应该的时间被清除或错误地保留。如果合约期望在事务的后续调用中使用存储在瞬态存储中的数据,但未能适当地管理这些数据的生命周期,可能会在不同调用之间错误地共享或丢失数据,从而导致逻辑错误或安全漏洞。

EIP-6780

该提案改变了之前selfdestruct操作码的行为,不销毁合约,仅转移代币,仅与自毁同一交易中创建的合约才会被销毁。这个EIP的影响相对较大。

create2在同一地址重新部署合约,以使合合约升级。不再支持此功能,应改用 ERC-2535 或其他类型的代理合约。

智能合约中的SELFDESTRUCT操作允许合约销毁,并将合约余额发送给指定的目标地址。在这种情况下,合约使用SELFDESTRUCT销毁代币,并将销毁的代币发送给了合约。但是该合约仅能是在同一笔交易中创建的合约(同一笔交易中由本合约或其他合约创建的合约)。否则将仅转账代币而不销毁合约(例如自毁且受益者为自毁合约,这将会不产生任何改变)。这将会影响一切依赖于selfdestruct进行操作的合约。

一种类似于 1inch CHI Token的Gas Token的工作原理:保持一个偏移量,始终在此偏移量处执行 CREATE2SELFDESTRUCT。在此更新之后,如果当前偏移量的合约尚未正确自毁,则之后的CREATE2 将不能成功的部署合约。

扩展阅读

坎昆升级将进一步增强以太坊的竞争力。但此次升级对核心智能合约层的改动带来了风险,这会影响现有的DApps的安全运行。在进行智能合约开发的过程中,这些改变以及可能引发的风险同样需要被高度关注。

  • Cancun Network Upgrade Specification
  • EIP-1153
  • EIP-4788
  • EIP-4844
  • EIP-5656
  • EIP-6780
  • EIP-7516

希望这个版本更符合你的要求!

丁丁打折网©版权所有,未经许可严禁复制或镜像 ICP证: 湘ICP备20009233号-2

Powered by 丁丁打折网本站为非营利性网站,本站内容均来自网络转载或网友提供,如有侵权或夸大不实请及时联系我们删除!本站不承担任何争议和法律责任!
技术支持:丁丁网 dddazhe@hotmail.com & 2010-2020 All rights reserved