搜索
首页web3.0以太坊坎昆升级前,项目开发者必看的几项安全检查

以太坊坎昆升级前,项目开发者必看的几项安全检查

Mar 07, 2024 am 10:13 AM
加密货币以太坊标准库以太坊坎昆升级以太币交易平台

长话短说:坎昆升级临近,本次升级主要包含六个EIP提出的执行层变更,EIP-1153、EIP-4788、EIP-4844、EIP-5656、EIP-6780和EIP-7516。EIP-4844是本次升级的主角,旨在提升以太坊的可扩展性,为L2降低交易成本、提升交易速度。坎昆升级已分别于1月17日、1月30日、2月7日在以太坊Goerli、Sepolia和Holesky测试网完成升级,并计划在3月13日在以太坊主网上激活。在升级前,Salus整理了此次升级的重要安全注意事项,供开发者自行检查。

以太坊坎昆升级前,项目开发者必看的几项安全检查

EIP提案回顾

EIP-1153

EIP-1153引入了临时存储操作码,这些操作码用于操作状态,其行为与存储几乎相同,但每笔交易结束后临时存储将被丢弃。这意味着,临时存储不会从存储中反序列化值,也不会序列化值到存储,因此,由于不需要磁盘访问,临时存储成本更低。通过两个新的操作码TLOAD和TSTORE(其中“T”代表“临时”),智能合约可以访问临时存储。这项提议旨在为Ethereum的交易执行中的多个嵌套执行框架之间的通信提供一个专用且高效的解决方案。

EIP-4788

EIP-4788旨在将信标链区块的哈希树根暴露于EVM中,以允许在智能合约内部访问这些根。这样做可以无需信任地访问共识层状态,支持staking pools、restaking结构、智能合约桥、MEV缓解等多种用例。该提案通过一个智能合约存储这些根,并使用环形缓冲区来限制存储消耗,确保每个执行区块只需常量空间即可表示这些信息。

EIP-4844

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

EIP-5656

EIP-5656引入了一种新的EVM指令MCOPY,旨在提高内存区域的高效复制。该提案的目的是降低在EVM上执行内存复制操作的成本,通过MCOPY指令实现内存数据的直接复制。MCOPY允许源地址和目标地址重叠,同时考虑了向后兼容性,旨在提高数据结构构建、内存对象访问和复制等多种场景的执行效率。

EIP-6780

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

EIP-7516

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

官方披露的安全考量

EIP-1153

智能合约开发人员应在使用前了解瞬态存储变量的生命周期。由于临时存储会在交易结束时自动清除,因此智能合约开发人员可能会试图避免在调用过程中清除插槽以节省 Gas。然而,这可能会阻止在同一事务中与合约进行进一步的交互(例如,在重入锁的情况下)或导致其他错误,因此智能合约开发人员应小心,仅在临时存储槽被保留时保留非零值。旨在供同一事务中的未来调用使用。SSTORE否则,这些操作码的行为与和完全相同SLOAD,因此所有常见的安全注意事项都适用,特别是在重入风险方面。

智能合约开发人员也可能会尝试使用瞬态存储作为内存映射的替代方案。他们应该意识到,当调用返回或恢复时,临时存储不会像内存一样被丢弃,并且应该在这些用例中优先选择内存,以免在同一事务中的重入时产生意外的行为。内存上的瞬态存储成本必然很高,这应该已经阻止了这种使用模式。内存中映射的大多数用法可以通过按键排序的条目列表来更好地实现,并且智能合约中很少需要内存中映射(即作者知道生产中没有已知的用例)。

EIP-4844

此 EIP 使每个信标块的带宽要求最多增加约 0.75 MB。这比当今区块的理论最大大小(30M Gas / 每个 calldata 字节 16 Gas = 1.875M 字节)大 40%,因此它不会大幅增加最坏情况下的带宽。合并后,区块时间是静态的,而不是不可预测的泊松分布,为大区块的传播提供了保证的时间段。

即使调用数据有限,此 EIP 的持续负载也比可降低调用数据成本的替代方案低得多,因为不需要将 Blob 存储与执行负载一样长的时间。这使得实现这些 blob 必须保留至少一段时间的策略成为可能。选择的具体值是MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS纪元,约为 18 天,与建议的(但尚未实施)执行有效负载历史的一年轮换时间相比,延迟要短得多。

EIP-5656

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

除此之外,对拒绝服务 (DoS) 和内存耗尽攻击的分析与其他接触内存的操作码相同,因为内存扩展遵循相同的定价规则。

EIP-6780

以下应用程序SELFDESTRUCT将被破坏,并且以这种方式使用它的应用程序不再安全:

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

如果合约依赖于通过以SELFDESTRUCT合约作为受益人燃烧以太币,则合约不是在同一交易中创建的。

智能合约相关风险

EIP1153

设想使用操作码TLOAD和TSTORE的两种场景:

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

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

风险1:

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

风险2:

另一个潜在风险是,如果智能合约开发人员不正确管理瞬态存储变量的生命周期,可能导致数据在不应该的时间被清除或错误地保留。如果合约期望在事务的后续调用中使用存储在瞬态存储中的数据,但未能适当地管理这些数据的生命周期,可能会在不同调用之间错误地共享或丢失数据,从而导致逻辑错误或安全漏洞。考虑到类似于Token项目的balance或者allowance数据未能正确的存储将会导致合约逻辑的错误,造成损失。或在对owner地址进行设置时使用了该操作码将会导致特权地址不能正确的被记录从而丢失对合约重要参数的修改。

考虑一个智能合约,该合约使用瞬态存储来临时记录一个加密货币交易平台上的交易价格。该合约在每笔交易完成时更新价格,并允许用户在短时间内查询最新价格。然而,如果合约设计没有考虑到瞬态存储在交易结束时被自动清除的特性,那么在一笔交易结束后到下一笔交易开始之前的这段时间内,用户可能会得到一个错误或过时的价格。这不仅可能导致用户做出基于错误信息的决策,还可能被恶意利用,影响平台的信誉和用户的资产安全。

EIP-6780

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

用create2在同一地址重新部署合约,以使合合约升级。不再支持此功能,应改用 ERC-2535 或其他类型的代理合约。(这可能会影响到使用create2实现可升级合约的链上合约的安全性)

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

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

该提案实施并不能导致直接对合约进行攻击,但会损害原有已部署的依赖selfdestruct操作的合约的正常逻辑(仅依赖自毁进行资金转移的合约不受到影响,如果后续操作必须要求自毁的合约被删除,则受到影响),导致合约非预期工作,仅对合约以及用户而言,可能导致合约的罢工,损失资金等危害(例如原本利用create2在原地址部署新合约,自毁原合约进行升级的合约,不再能够成功部署)。长远来看,修改某项操作码的功能可能会带来中心化的问题。

例如现有一个金库合约vault进行更新:

  • create2临时存储合约用来临时储备vault的资金

  • 自毁vault合约,资金转账到临时合约(仅转移了资金而没有销毁合约)

  • 在原地址create2新的vault合约(失败,因为原有vault合约没有被销毁)

  • 自毁临时合约将资金还给vault(资金损失,vault合约没有被创建)

扩展阅读

坎昆升级将进一步增强以太坊的竞争优势。但此次升级对核心智能合约层的改动带来了风险,这会影响现有的DApps的安全运行。在进行智能合约开发的过程中,这些改变以及可能引发的风险同样需要被高度关注。您可以与Salus联系获得风险检查或审计支持,也可以通过进一步阅读相关内容以了解变化。

Cancun Network Upgrade Specification

EIP-1153

EIP-4788

EIP-4844

EIP-5656

EIP-6780

EIP-7516

Metapod contract

GasToken2 contract

以上是以太坊坎昆升级前,项目开发者必看的几项安全检查的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:脚本之家。如有侵权,请联系admin@php.cn删除
在过去一周中,PI网络代币价格上涨了14%以上。在过去一周中,PI网络代币价格上涨了14%以上。Apr 16, 2025 am 11:22 AM

截至发稿时,PI于4月12日与ChainLink集成后,交易价格为0.6711美元。该公告导致PI价格上涨

当价格进入主要购买区时,有更多的理由对Sui看涨当价格进入主要购买区时,有更多的理由对Sui看涨Apr 16, 2025 am 11:20 AM

X,Frigg的分析师强调了对SUI网络价格轨迹乐观的多种原因。

比特币(BTC)情绪正在看涨,因为昨天从交流中撤出了超过4.67亿美元的加密货币。比特币(BTC)情绪正在看涨,因为昨天从交流中撤出了超过4.67亿美元的加密货币。Apr 16, 2025 am 11:18 AM

根据Intotheblock今天发布的数据,对比特币的情绪似乎在增强对看涨。

运动实验室和运动网络基金会已经对与Move代币有关的最近的营销违规行为进行了独立调查。运动实验室和运动网络基金会已经对与Move代币有关的最近的营销违规行为进行了独立调查。Apr 16, 2025 am 11:16 AM

NT Labs和运动网络基金会启动独立调查,以进行代币营销违规行为

一波资本从以太坊(ETH)流出,进入TRON [TRX]一波资本从以太坊(ETH)流出,进入TRON [TRX]Apr 16, 2025 am 11:14 AM

有15.2亿美元的Stablecoins迁移到TRON,投资者似乎赞成低成本的连锁店和超出传统美元支持资产的多元化。

咒语首席执行官约翰·帕特里克·穆林(John Patrick Mullin)烧毁了OM令牌的分配,以恢复投资者的信心咒语首席执行官约翰·帕特里克·穆林(John Patrick Mullin)烧毁了OM令牌的分配,以恢复投资者的信心Apr 16, 2025 am 11:12 AM

曼特拉(Mantra)首席执行官约翰·帕特里克·穆林(John Patrick Mullin)提议烧毁他对OM令牌的分配,此举旨在恢复该协议的原住民代币急剧崩溃之后,旨在恢复投资者的信心。

最近的市场变动和技术分析表明,Bonk可能正处于巨大的价格上涨的边缘,超过了Solana更广泛的生态系统。最近的市场变动和技术分析表明,Bonk可能正处于巨大的价格上涨的边缘,超过了Solana更广泛的生态系统。Apr 16, 2025 am 11:10 AM

Bonk价格回收的技术设置根据著名的加密分析师Altcoin Sherpa的说法,Bonk显示出潜在反弹的迹象。

证券化收购MG Stover的基金管理业务成为最大的数字资产基金管理员证券化收购MG Stover的基金管理业务成为最大的数字资产基金管理员Apr 16, 2025 am 11:08 AM

Securitize是最大的代币资产发行人之一,周二表示,已收购了MG Stover的基金管理业务

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境