木星链 木星链
Ctrl+D收藏木星链
首页 > Luna > 正文

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

作者:

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

背景信息

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

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

DWF Labs 从 Floki 财库购买价值 500 万美元的 FLOKI 代币:5月25日消息,Shiba Inu 犬种主题项目 Floki 宣布于 Web3 投资公司 DWF Labs 建立战略合作伙伴关系,DWF Labs 已从 Floki 财库购买了价值 500 万美元的 FLOKI 代币,并将通过其网络和资源来帮助加速 FLOKI 代币的采用。[2023/5/25 10:40:31]

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

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

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

数据:7000 万 USDT 从 Tether 金库转至 Bitfinex:12月15日消息,Whale Alert 数据显示,北京时间 10:44:51,7000 万枚 USDT 从 Tether 金库转至加密交易所 Bitfinex。[2022/12/15 21:46:26]

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

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

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

Cosmos 创始人 Jae Kwon 从 AIB 及 ICF 基金会离职 全职开发 Gno 智能合约语言:Cosmos 创始人 Jae Kwon 宣布从 Cosmos 网络软件开发公司 AIB (All in Bits)及 The Interchain 基金会(ICF)离职,全职开发 Gno 智能合约语言。The Interchain 基金会是位于瑞士的非盈利基金会以支持 Cosmos 的生态建设,而 AIB 是负责开发 Cosmos 网络的软件开发公司,这意味着 Cosmos 创始人 Jae Kwon 将离开 Cosmos 生态中最核心的支持机构。Jae Kwon 表示,Gno 是适用于 Cosmos 生态的下一代的智能合约编程语言。[2021/2/15 19:47:00]

整个钻石模型类似下图:

14.7万枚LINK从 交易所转出 价值191万美元:据WhaleAlert数据显示,北京时间08月09日03:02, 14.7万枚LINK从交易所转入0x2906开头地址,按当前价格计算,价值约191万美元,交易哈希为:0xf973c51ad1718f2f42a72261ff3dc9dc4894fee329d150df39dee5cc84549cde。[2020/8/9]

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

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

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

事件分析

接下来回头分析下 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

标签:NFTTHEAmonCOSsnft币最新进展TogetherBNB和娜娜互动PolkamonCosmic Cow

Luna热门资讯
ENS:金色观察 | 熊市下的ENS热潮:周内注册量交易额齐升

以太坊名称服务(ENS)的注册量在过去的一周激增,数据显示过去7天注册了108,000个ENS域名.

1900/1/1 0:00:00
加密货币:Delphi Digital 万字长文:从游戏货币化谈起 聊聊加密游戏的现在与未来

注:原文出自 Delphi Digital 游戏团队。目录简介为什么谈游戏游戏货币化的历史区块链给游戏带来了什么当前的加密游戏使用加密货币来实现游戏货币化结语简介就目前而言,大多数游戏玩家讨厌加.

1900/1/1 0:00:00
GAM:如何让游戏中的随机因素重新赢得玩家信任

随机性的魔力自古代文明以来,对随机性的着迷一直是我们社会和娱乐机制的一部分。在早期的希腊和罗马文明中,当地的先知提供了看似随机的解决方案和理论,以描述从自然现象中感知的意义.

1900/1/1 0:00:00
META:金色观察 | 寻求重振业务增长 Meta推进数字藏品计划

尽管加密资产价格下跌,Meta正计划向其30亿用户推广数字收藏品,因为这家社交媒体集团寻求重振其增长.

1900/1/1 0:00:00
NAT:被欧美通缉 「加密女王」是比特币最大持有者之一?

来源:华尔街见闻近日,有「加密货币女王」之称的 Ruja Ignatova 被 FBI 列入十大通缉要犯名单.

1900/1/1 0:00:00
DAI:重新审视连续代币模型:「to Rug」还是「Not to Rug」为什么这是一个问题?

本篇文章包含了颇具价值的见解,尤其对于无政府资本主义理想者,那些用宏观经济来设计协议的这群人,或者那些在我们热爱的互联网上用钱包投票来减轻对机构资本主义控制的那些人.

1900/1/1 0:00:00