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

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

作者:

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

背景信息

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

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

Jack Dorsey:Damus 已从 Apple 应用商店下架:6月27日消息,Twitter 前 CEO Jack Dorsey 发推表示,开放社交应用 Damus 已从 Apple 应用商店中下架,以便无需银行、支付卡或政府许可即可向世界上的每个人提供小费。Jack Dorsey 还在推特上询问 Tim Cook 为何 Apple Pay 不支持比特币。[2023/6/27 22:03:51]

钻石协议介绍

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

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

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

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

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

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

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

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

整个钻石模型类似下图:

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

动态 | KARMA 从 EOS 离开转到 WAX:近期,KARMA 宣布了它准备从 EOS 迁移到 WAX,因为他们团队认为主网中仍存在一些问题,无法实现他们的目标。Karma 是 EOS 上第一个启动的社交网络应用,自发布以来就一直在推动着创新的,例如,他们创造了一种能为所有用户支付 RAM 的方式,并且是 EOS 上第一个启用“ We Pay CPU”的应用程序。让他们想要离开 EOS 的问题如下:

1、BP 对 EIDOS 状况和升级缺少沟通和反应

2、帐户创建的成本(约在 2.8-10.5 元间)

3、CPU /带宽的成本 -缺乏 WPS 功能

对于这个计划的实施,所有当前的 KARMA 用户将使用相同的公钥和相同数量的 KARMA 代币创建一个免费的 WAX 帐户。这样,用户的过渡将非常简单快捷,无需进行重大的更改。切换到 WAX 之后,EOS 上的所有 KARMA 代币将被冻结,不再被使用。[2019/12/2]

在该钻石合约中不同的函数功能需要调用对应的不同的切面合约的代码来实现,并且可以利用钻石切割的功能来对钻石合约中的函数功能进行修改。

动态 | 2千万枚 USDT从 Tether Treasury转至 Bitfinex交易所:据 Whale Alert监测,刚刚2千万枚 USDT从 Tether Treasury转至 Bitfinex交易所。[2019/7/4]

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

事件分析

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

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

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

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

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

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

相关信息

TheSaudis合约地址:

0xe21ebcd28d37a67757b9bc7b290f4c4928a430b1

用户Rightblock地址:

0x80266b1e3f0C2cAdAE65A4Ef5Df20f3DF3707FfB

项目方更新合约的交易:

0xbc559a72f73e6c9a53416fd13a3ebaaa76dca5855ff8b79511585f514eaf2390

标签:THENFTARMdiamondtogetherbnb游戏全攻略第二部分NFT2StakeGFARM2价格Black Diamond

MANA热门资讯
ETH:这一次 Crypto崩盘没有什么不同

撰文:TrevorChow2007年6月20日。那天,贝尔斯登(BearStearns)救助了旗下两家对冲基金.

1900/1/1 0:00:00
NFT:金色Web3.0日报 | HTC宣布推出首款元宇宙手机

DeFi数据1.DeFi代币总市值:392.2亿美元 DeFi总市值数据来源:coingecko2.过去24小时去中心化交易所的交易量:44.

1900/1/1 0:00:00
加密货币:“多米诺骨牌”接连倒塌 加密货币的下一个“爆炸点”会在什么地方?

今年以来,加密货币市场的悲壮真可谓是「闻者伤心听者流泪」,该市场市值已经降至9000亿美元左右,较年初蒸发超过2万亿美元.

1900/1/1 0:00:00
TOK:牛熊周期与加密的未来如何演变?看看红杉资本怎么说

红杉资本成立于1972年,到今年刚好50年,在全球风险投资领域,红杉资本是无可争议的带头大哥。自成立以来,红杉资本成功投资了苹果、思科、甲骨文、谷歌等巨头公司,见证了一个又一个传奇企业的闪耀时刻.

1900/1/1 0:00:00
比特币:你的加密钱包是你的 Web3 身份的关键

自互联网诞生之初,数字身份就一直是一个令人担忧的话题。Web2弥合了人们的线下生活、在线身份以及创意和消费习惯之间的差距,这已经让位于一个彻底集成的互联网体验,旨在尽可能个性化和有针对性.

1900/1/1 0:00:00
ROLL:Rollup 将是有主权的链

大多数应用都会被布署在rollup上,他们把Celestia用作共识层和数据可用层。作为首个为增加交易容量而提出的二层解决方案,rollup将是大多数区块链应用的家园,无论它们用Celestia.

1900/1/1 0:00:00