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

背景信息

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

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

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大小的最大限制,并且让合约更方便地更新功能。

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

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

以太坊巨鲸从 Bitfinex 转移了超8000万美元的ETH:金色财经消息,以太坊巨鲸从 Bitfinex 转移了价值 80,656,629 美元的以太坊,交易地址为:0x4862733b5fddfd35f35ea8ccf08f5045e57388b3。[2022/4/19 14:32:34]

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

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

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

ENS 发起新提案,计划将过期域名的临时溢价从 2000 美元提高到 10 万美元:1月10日消息,以太坊域名项目ENS 现已在Snapshot发起对最新治理提案的投票,计划将过期域名的临时溢价起始价格从 2000 美元提高到 10 万美元,每小时下调150美元,并在28天后降低为0,以防止域名“狙击”的情况。[2022/1/10 8:37:41]

整个钻石模型类似下图:

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

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]

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

事件分析

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

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

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

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

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

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

相关信息

TheSaudis合约地址:

0xe21ebcd28d37a67757b9bc7b290f4c4928a430b1

用户Rightblock地址:

0x80266b1e3f0C2cAdAE65A4Ef5Df20f3DF3707FfB

项目方更新合约的交易:

0xbc559a72f73e6c9a53416fd13a3ebaaa76dca5855ff8b79511585f514eaf2390

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

银河链

DOT零知识证明在Web3中的五大实用案例

撰写:MagikInvest?零知识证明是正在开发的最重要的加密货币技术之一,以下是零知识证明使dApps更加高效、更隐私和更去中心化的五种方式:1.链上多人游戏——DarkForestDarkForest是一个链上的多人游戏.

USDC解读 USDD:穿过脱钩幻觉 寻找真实的稳定币

“人不能两次踏入同一条河流。”前有UST的崩盘,而上月中旬孙哥的USDD也经历了一定程度的价格偏离。USDD会重蹈覆辙吗?很自然的会联想到这个问题。面对市场的担忧,USDD官方发了一封公开信,对外界的质疑作了系统的解答.

Filecoin关于以太坊转POS后中心化风险的担忧

1、目前看到比较普遍的误解是Lido如果质押的ETH超过51%,会产生中心化风险。关于这个Lido的顾问hasu在一次采访中给出了比较系统的解答,概括来说:1.1、Lido不是一个实体,而是一个中间层协议,或者简单理解为一个“联盟”,

[0:0ms0-3:944ms