从 The Saudis NFT 事件浅析 EIP-2535 钻石协议

慢雾科技發佈於 2022-07-12更新於 2022-07-12

文章摘要

2022 年 7 月 10 号,一个火热的 NFT 项目 TheSaudis 开启了 freemint 活动(白名单用户可以免费铸造其 NFT)。

背景信息

2022 年 7 月 10 号,一个火热的 NFT 项目 TheSaudis 开启了 freemint 活动(白名单用户可以免费铸造其 NFT)。而就在 mint 活动结束后,一位名叫 RIGHTBLOCK 的用户在市场上大量地抛售该 NFT,项目方发现后迅速锁定到了该用户并对合约进行改动以此来将该用户手里的大量 NFT 转移回来,他们之后承诺会将这些 NFT 回馈给社区用户。

那么为什么项目方可以将该用户手里的 NFT 转移呢?经过我们的分析发现该 NFT 项目的合约采用了 EIP-2535 协议也叫做钻石协议,项目方利用该协议重写了合约的功能,以此来实现这些 NFT 的转移。接下来慢雾安全团队将会为大家介绍下这个钻石协议(EIP-2535)的细节。

钻石协议介绍

EIP-2535 是以太坊上一个将合约进行代码模块化组合的提案,其目的是为了让大型的智能合约突破 24kb 大小的最大限制,并且让合约更方便地更新功能。

要理解钻石协议,首先有几个相关的概念定义需要知道:

钻石(diamond): 钻石可以理解为代理合约(Proxy),也是与用户进行交互的主合约

切面(facet): 正如真正的钻石有不同的侧面一样,一个钻石合约也有着不同的面,钻石合约的每个功能所需要调用的合约对应一个切面,所以也可以理解为实现合约 (Implementation)

钻石切割(diamondCut): 钻石协议标准扩展了一种叫钻石切割的功能,其主要作用从钻石中增加、替换或删除切面和功能,可以理解为合约的升级 (Upgrade)

放大镜(The Loupe): 钻石协议标准中的放大镜功能主要是返回关于切面的信息和钻石存在的功能,这些信息是保存在钻石合约内部的存储结构——DiamondStorage 中

整个钻石模型类似下图:

通过使用钻石标准规范去创建钻石合约,这个合约可以像使用当前合约的代码一样使用任何数量的其他切面合约的代码。

在该钻石合约中不同的函数功能需要调用对应的不同的切面合约的代码来实现,并且可以利用钻石切割的功能来对钻石合约中的函数功能进行修改(添加、替换或删除)。

这与市面上大多数使用一个代理合约和一个实现合约来实现交互与升级的方式有所区别。

事件分析

接下来回头分析下 The Saudis 这次事件中的一些细节,在该项目的 DiamondCutFacet.sol 合约中,可以看到实现了 diamondCut 功能的函数。

该函数首先会调用 LibDiamond 库的 enforceIsContractOwner 函数来判断调用者是否是合约的 owner,如果是 owner 调用的话会调用 LibDiamond 库的 diamondCut 函数来实现钻石合约的功能更新。

跟进到该函数我们发现钻石切割会根据传入的不同的 action 来判断进行添加、替换或删除功能,故接下来跟进看看项目方调用该函数的交易。

我们发现传入了新的切面合约 0x70d8ccaf6b50b051ab1e8fa238626163e45a8b03(未开源),传入的 action 设置为 1 则应该是调用了 replaceFunctions 来实现替换功能。

从 replaceFunctions 函数中可以分析出该函数首先会为传入的地址新增一个切面,接着从存储中循环读取传入的每个函数选择器对应的旧的切面进行删除,并为这些函数的切面添加为传入的新的切面地址。

至此可得知 The Saudis 项目方就是利用了钻石切割函数来重写了转账功能,以此来将用户 RIGHTBLOCK 手中的 NFT 转移回自己的账户。

相关信息

The Saudis 合约地址:

0xe21ebcd28d37a67757b9bc7b290f4c4928a430b1

用户 Rightblock 地址:

0x80266b1e3f0C2cAdAE65A4Ef5Df20f3DF3707FfB

项目方更新合约的交易:

0xbc559a72f73e6c9a53416fd13a3ebaaa76dca5855ff8b79511585f514eaf2390

你可能也喜歡

中国启动芯片光刻机生产:为何专家未急于喝彩

中国一家上海国企已启动沉浸式DUV光刻机的生产,这是制造现代半导体的关键设备。据匿名消息称,该公司计划在2026年生产约五台,2027年约二十台,首批设备将供应给中芯国际、华虹半导体和长鑫存储等企业。生产方为2023年注册、注册资本70亿元的上海艾盛纳电子科技集团,其整合了来自上海宇量昇科技及上海微电子装备等公司的研发团队。 然而,行业专家对此持谨慎态度。消息人士指出,艾盛纳的设备仍需大量测试,且远未达到行业领导者荷兰ASML的水平。分析师强调,小批量生产与具备大规模量产能力的商业可行设备存在本质区别,后者需要极高的良率、对准精度、产能和长期可靠性。专家提醒,过去关于中国在光刻领域取得突破的消息常被夸大,需等待独立验证。目前,ASML的市场主导地位并未受到实质性威胁。 专家认为,对ASML更现实的风险可能来自美国潜在的《MATCH法案》对其设备销售与服务的限制,而非中国当前的进展。艾盛纳设备的前景,最终取决于其能否实现真正的规模化量产,而非仅制造原型机。从宏观角度看,中国市场虽为ASML贡献了约14%的销售额,但并非决定性收入来源。历史经验表明,中国从实验室原型到稳定量产产品的过程往往耗时漫长,艾盛纳能否打破这一模式,需待2027年的实际交付情况来验证。

cryptonews.ru14 分鐘前

中国启动芯片光刻机生产:为何专家未急于喝彩

cryptonews.ru14 分鐘前

3%返现、6%年息与借记卡:埃隆·马斯克在美国推出X Money

2026年7月27日,社交媒体X(原Twitter)在美国推出内置金融服务X Money,目前仅向美国地区的Premium和Premium+订阅用户开放。创始人埃隆·马斯克强调了此举对平台的重要性。 服务核心是X Card借记卡,支持虚拟和实体金属卡形式,基于Visa网络。主要功能包括:用户间免费即时转账、大部分消费3%现金返还、全球ATM免费取现、免跨境手续费,以及支持Apple Pay/Google Pay。账户余额可享最高6.00%的年收益率(APY),Premium+用户直接获得,Premium用户需满足合格直接存款条件方可达成最高利率。 用户资金并非由X保管,而是存放在FDIC成员银行Cross River Bank,享受最高25万美元的存款保险。通过现金归集计划,资金可分散至多个合作银行,理论上能将总保险额度提升至1000万美元。服务还提供提前两天收到工资、电汇、支票邮寄和账单支付等功能。 安全方面,采用生物识别或设备PIN码的通行密钥登录,并支持自定义交易限额及Visa的零责任防欺诈政策。此次公开上线前,X已于2026年6月底在部分Premium+用户中进行了小范围测试。 分析认为,X此举延续了科技平台将金融功能整合进社交应用的尝试。与Meta曾推出但很快失败的Novi钱包不同,X Money选择通过与持牌银行合作的传统银行架构,而非自有加密货币,这降低了部分监管风险,但大规模处理用户资金仍将使其面临美国金融监管机构的密切关注。

cryptonews.ru1 小時前

3%返现、6%年息与借记卡:埃隆·马斯克在美国推出X Money

cryptonews.ru1 小時前

交易

現貨
活动图片