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

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

作者:

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

背景信息

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

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

波场链上1700万枚USDT从Tether Treasury转至币安:Whale Alert数据显示,北京时间8月6日14:27,波场链上1700万枚USDT从Tether Treasury转至币安交易所(TNMDwbH开头地址)。[2020/8/6]

EIP-2535是以太坊上一个将合约进行代码模块化组合的提案,其目的是为了让大型的智能合约突破24kb大小的最大限制,并且让合约更方便地更新功能。要理解钻石协议,首先有几个相关的概念定义需要知道:钻石:钻石可以理解为代理合约,也是与用户进行交互的主合约切面:正如真正的钻石有不同的侧面一样,一个钻石合约也有着不同的面,钻石合约的每个功能所需要调用的合约对应一个切面,所以也可以理解为实现合约钻石切割:钻石协议标准扩展了一种叫钻石切割的功能,其主要作用从钻石中增加、替换或删除切面和功能,可以理解为合约的升级放大镜:钻石协议标准中的放大镜功能主要是返回关于切面的信息和钻石存在的功能,这些信息是保存在钻石合约内部的存储结构——DiamondStorage中整个钻石模型类似下图:

1000万枚USDT从Tether Treasury钱包转入Huobi交易所:据WhaleAlert数据显示,北京时间07月06日15:18,1000万枚USDT从Tether Treasury钱包转入Huobi交易所,按当前价格计算,价值约1005.1万美元。[2020/7/6]

通过使用钻石标准规范去创建钻石合约,这个合约可以像使用当前合约的代码一样使用任何数量的其他切面合约的代码。在该钻石合约中不同的函数功能需要调用对应的不同的切面合约的代码来实现,并且可以利用钻石切割的功能来对钻石合约中的函数功能进行修改。这与市面上大多数使用一个代理合约和一个实现合约来实现交互与升级的方式有所区别。

1000万枚USDT从Tether Treasury转出:据Whale Alert数据,北京时间04月03日01:39, 1000万枚USDT从Tether Treasury转入0x8bb0开头地址,目前价值约1001.7万美元,交易哈希为:0xf02806e8095c5fdcc8a3fa41ec974382ef6b680fc4a1cd5b0ecef4f384001848。[2020/4/3]

事件分析

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

1000万枚USDT从Tether Treasury钱包转出:据Whale Alert监测,北京时间4月1日08:15,以太坊链上1000万枚USDT从Tether Treasury钱包转入0x8bb0开头地址。[2020/4/1]

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

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

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

从replaceFunctions函数中可以分析出该函数首先会为传入的地址新增一个切面,接着从存储中循环读取传入的每个函数选择器对应的旧的切面进行删除,并为这些函数的切面添加为传入的新的切面地址。至此可得知TheSaudis项目方就是利用了钻石切割函数来重写了转账功能,以此来将用户RIGHTBLOCK手中的NFT转移回自己的账户。相关信息

TheSaudis合约地址:0xe21ebcd28d37a67757b9bc7b290f4c4928a430b1用户Rightblock地址:0x80266b1e3f0C2cAdAE65A4Ef5Df20f3DF3707FfB项目方更新合约的交易:0xbc559a72f73e6c9a53416fd13a3ebaaa76dca5855ff8b79511585f514eaf2390

标签:THEREASDTETHtogetherbnb怎么开启HCREAglobalusdtokenEthical翻译

Polygon热门资讯
NFT:Uniswap入局NFT市场,NFT交易平台打响产品攻防战

7月7日,UniswapLabs在社交媒体向用户征求NFT产品功能意见,这预示着Uniswap的NFT交易业务进入上线倒计时.

1900/1/1 0:00:00
NFT:新项目 | Center:像使用Google一样搜索NFT

“百度一下,你就知道。”搜索这一产品在Web2的世界里已经存在二十余年了,人们对“搜索”的认知是根深蒂固的.

1900/1/1 0:00:00
比特币:Grayscale:回顾加密市场周期历史,2022年的熊市何时结束?

背景2008年10月31日,赛博朋克邮件列表中出现一条消息,内容如下:“我正在开发新的电子支付系统,完全点对点,且没有中间方.

1900/1/1 0:00:00
ENS:深度解析ENS域名:后来者还有何机会呢?

ENS在上线至今5年多的时间里,已从最初的以太坊地址解析逐步发展为Web3世界的名片,并且随着ENS的发展采用以及Web3的变革极有可能成为Web3中的.com顶级域.

1900/1/1 0:00:00
ODA:新项目 | Qoda:Moonbeam上的固定利率借贷协议

目前DeFi借贷市场形式较为单一,各大借贷协议基本是「可变利率」;反观传统借贷市场,则主要以「固定利率」贷款为主,固定利率也更受传统用户青睐,规模更大.

1900/1/1 0:00:00
LDO:因缺乏财务规划,Lido Finance在熊市“卖币度日”

7月26日,去中心化质押流动性解决方案LidoFinance完成「国库多元化#2」投票,共计609名社区成员参与.

1900/1/1 0:00:00