背景信息
2022年7月10号,一个火热的NFT项目TheSaudis开启了freemint活动。而就在mint活动结束后,一位名叫RIGHTBLOCK的用户在市场上大量地抛售该NFT,项目方发现后迅速锁定到了该用户并对合约进行改动以此来将该用户手里的大量NFT转移回来,他们之后承诺会将这些NFT回馈给社区用户。
那么为什么项目方可以将该用户手里的NFT转移呢?经过我们的分析发现该NFT项目的合约采用了EIP-2535协议也叫做钻石协议,项目方利用该协议重写了合约的功能,以此来实现这些NFT的转移。接下来慢雾安全团队将会为大家介绍下这个钻石协议的细节。钻石协议介绍
1亿枚USDT从Tether Treasury转移至未知钱包:据Whale Alert,1亿枚USDT从Tether Treasury转移至未知钱包。[2021/2/1 18:38:22]
EIP-2535是以太坊上一个将合约进行代码模块化组合的提案,其目的是为了让大型的智能合约突破24kb大小的最大限制,并且让合约更方便地更新功能。要理解钻石协议,首先有几个相关的概念定义需要知道:钻石:钻石可以理解为代理合约,也是与用户进行交互的主合约切面:正如真正的钻石有不同的侧面一样,一个钻石合约也有着不同的面,钻石合约的每个功能所需要调用的合约对应一个切面,所以也可以理解为实现合约钻石切割:钻石协议标准扩展了一种叫钻石切割的功能,其主要作用从钻石中增加、替换或删除切面和功能,可以理解为合约的升级放大镜:钻石协议标准中的放大镜功能主要是返回关于切面的信息和钻石存在的功能,这些信息是保存在钻石合约内部的存储结构——DiamondStorage中整个钻石模型类似下图:
2997万枚USDT从Tether Treasury钱包转出,价值3003.6万美元:据Whale Alert数据显示,北京时间08月16日02:25, 2997万枚USDT从Tether Treasury钱包转入TWchzs开头地址,按当前价格计算,价值约3003.6万美元,交易哈希为:14ea2f05130b9c04b5f56aa1c9e1309405fc070f53d600e8446df313b68921ba。[2020/8/16]
通过使用钻石标准规范去创建钻石合约,这个合约可以像使用当前合约的代码一样使用任何数量的其他切面合约的代码。在该钻石合约中不同的函数功能需要调用对应的不同的切面合约的代码来实现,并且可以利用钻石切割的功能来对钻石合约中的函数功能进行修改。这与市面上大多数使用一个代理合约和一个实现合约来实现交互与升级的方式有所区别。
2000万枚USDT从Tether Treasury钱包转出至火币交易所:Whale Alert数据显示,北京时间6月6日11:02前后,2000万枚USDT从Tether Treasury钱包转至以TQN3Fd开头的未知地址,随后该未知地址将2000万枚USDT转至火币交易所。按当前价格计算,价值约2012.60万美元,交易哈希为: 2c01eda3ddd8e95013d42a023a82a8f2d36987f9c217c2e1e6cf290de052d30f。[2020/6/6]
Bitfinex季报:Bitfinex从Tether购买USDT:Bitfinex股东季度报告中指出:“自4月份以来,绝大多数Tether发行都是通过Bitfinex进行的。Bitfinex以美元银行余额的形式持有绝大多数客户美元余额,Bitfinex通常只持有不到2000万的客户提款。当余额接近零的时候,Bitfinex将Bitfinex银行账户的资金(通常是2000万美元)转移到同一家银行的Tether银行账户,以便从Tether公司购买额外的Tether。当这种情况发生时,现金从Bitfinex的资产负债表中被记入(或删除),并将(或添加)到Tether 的账户中。”[2017/12/7]
事件分析
接下来回头分析下TheSaudis这次事件中的一些细节,在该项目的DiamondCutFacet.sol合约中,可以看到实现了diamondCut功能的函数。
该函数首先会调用LibDiamond库的enforceIsContractOwner函数来判断调用者是否是合约的owner,如果是owner调用的话会调用LibDiamond库的diamondCut函数来实现钻石合约的功能更新。
跟进到该函数我们发现钻石切割会根据传入的不同的action来判断进行添加、替换或删除功能,故接下来跟进看看项目方调用该函数的交易。
我们发现传入了新的切面合约0x70d8ccaf6b50b051ab1e8fa238626163e45a8b03,传入的action设置为1则应该是调用了replaceFunctions来实现替换功能。
从replaceFunctions函数中可以分析出该函数首先会为传入的地址新增一个切面,接着从存储中循环读取传入的每个函数选择器对应的旧的切面进行删除,并为这些函数的切面添加为传入的新的切面地址。至此可得知TheSaudis项目方就是利用了钻石切割函数来重写了转账功能,以此来将用户RIGHTBLOCK手中的NFT转移回自己的账户。相关信息
TheSaudis合约地址:0xe21ebcd28d37a67757b9bc7b290f4c4928a430b1用户Rightblock地址:0x80266b1e3f0C2cAdAE65A4Ef5Df20f3DF3707FfB项目方更新合约的交易:0xbc559a72f73e6c9a53416fd13a3ebaaa76dca5855ff8b79511585f514eaf2390
标签:THEHERETHERETHGuarded Ethertogetherbnb更新了吗togetherbnb手游下载eth钱包地址泄露
已经是亿万富翁的企业家SamBankman-Fried有了一个全新的身份:加密领域的白衣骑士,在比特币和不同财产纷纷崩溃的“加密冬天”中,SBF乘胜追击,为自己的初创公司争取时间.
1900/1/1 0:00:00“这将是一个重大的测试,比我们以前做过的任何测试都要大。”在2022年5月的ETH上海Web3.0开发者峰会上,维塔利克·布特林(VitalikButerin,俗称V神)公告了以太坊合并升级已经.
1900/1/1 0:00:00NFT数据日报是由Odaily星球日报与NFT数据整合平台NFTGO合作的一档栏目,旨在向NFT爱好者与投资者展示近24小时的NFT市场整体规模、交易活跃度.
1900/1/1 0:00:00作者|Azuma编辑|郝方舟出品|Odaily星球日报Crypto世界对周期性循环并不陌生,自比特币诞生以来,这个行业已经历了多轮牛熊交替,也总是能够在沉浮与混乱之间找到新的生机.
1900/1/1 0:00:00近日相信加密从业者都被美国财政部海外资产控制办公室制裁TornadoCash协议的消息刷屏。在制裁下,美国个人和实体被禁止与TornadoCash相关地址进行区块链或业务互动,否则可能会因违规而.
1900/1/1 0:00:00Odaily星球日报译者|念银思唐管理规模约8.5万亿美元的贝莱德已经推出了一个私人信托基金,为美国的机构客户提供比特币的直接敞口.
1900/1/1 0:00:00