区块见闻 区块见闻
Ctrl+D收藏区块见闻
首页 > Bitcoin > 正文

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

作者:

时间:

背景信息

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

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

今日恐慌与贪婪指数为22,等级为极度恐慌:3月6日消息,今日恐慌与贪婪指数为22(昨日为22),恐慌程度不变,等级为极度恐慌。注:恐慌指数阈值为0-100,包含指标:波动性(25%)+市场交易量(25%)+社交媒体热度(15%)+市场调查(15%)+比特币在整个市场中的比例(10%)+谷歌热词分析(10%)[2022/3/6 13:40:15]

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

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

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

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

Yearn Finance宣布此前合并的各协议将独立运行,因造成社区混乱等问题:2月25日消息,收益聚合协议Yearn Finance发布公告表示,该项目曾在2020年底进行多个项目合并,包括SushiSwap、CREAM Finance、Akropolis、Pickle Finance等,尽管各个项目团队之间进行了强有力的协作并取得了许多成功,但这些项目从未成为真正的合并实体,这在各自的社区内造成了混乱、角色和责任的不确定性,并减缓了决策制定。

因此,未来每个协议将独立运行,同时与 Yearn 和彼此保持合作伙伴关系。此外,Iron Bank 还将作为一个独立项目运营,拥有自己的沟通渠道和前端,同时继续作为 Yearn Vaults 的流动性合作伙伴。(medium)[2022/2/26 10:16:46]

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

OKB突破6.4美元关口 日内涨幅为15.39%:OKEx数据显示,OKB短线上涨,突破6.4美元关口,现报6.402美元,日内涨幅达到15.39%,行情波动较大,请做好风险控制。[2020/9/14]

放大镜(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

标签:NFTAMOMONAmonDNFT价格Dinamo Zagreb Fan TokenPOKEMONDiamondDAO

Bitcoin热门资讯
Gavin Wood:波卡治理 v2 会有哪些变化?(上)

自 2020 年 7 月,波卡开启民主治理以来,波卡第一版链上治理体系已经顺利运行了近两年。在最近的一些会议上,Gavin 曾多次提到正在酝酿波卡的第二版治理体系,并透露新的治理体系会更加的去中心化,以及可能会不再有理事会(第一版治理体系中权力较大的组织)。

数字藏品平台现状:二级市场去泡沫明显 监管之下如履薄冰

数字藏品打响平台“保卫战”,藏品遇流动性滞缓危机,二级市场去泡沫明显,用户流失严重。而监管收缩也让数字藏品市场成为了刀尖上喋血的游戏。

SBF 对话 Real Vision 创始人:该如何看待如今的加密市场?

2022 年 7 月 5 日, 宏观机构 Real Vision 创始人 Raoul Pal 与 FTX 的联合创始人兼首席执行官 Sam Bankman-Fried 就宏观经济环境与加密市场进行深度讨论。 BlockBeats 节选部分对话,整理翻译如下: Raoul:在我们开始之前,我们想了解一下现在正在发生的混乱情况,以及你对市场的看法。

晚间必读5篇 | 如何构建加密银行系统?

1.以太坊2.0大变革 以太坊和 Miner 会走向何方? 自2015年以太坊主网上线以来,以太坊经历了大大小小几次迭代更新,目前以太坊已经经历了四个规划阶段(Frontier前沿、Homestead家园、Metropolis大都会、Serenity宁静)中的前三个阶段,以太坊即将迎来最终的阶段-Serenity宁静。

Web2.0的旧疾仍在威胁着新生的Web3.0

互联网刚兴起之时,电脑病、木马程序、垃圾钓鱼邮件等问题层出不穷,直到人手一只小狮子这种情况才得以改善。 经过二十余年的发展,时至2022年,面向互联网的攻击仍未停止。

银行入局数字藏品赛道 什么信号?

作 者丨胡天姣 尽管数字藏品当前在国内仍显“微妙”,但具有“官方”背景的各类发行主体参与步伐却在逐步加快。 去年至今,一系列“官方”数字藏品相继出现。