背景信息
2022 年?7 月 10 号,一个火热的 NFT 项目 TheSaudis 开启了 freemint 活动(白名单用户可以免费铸造其 NFT)。而就在 mint 活动结束后,一位名叫 RIGHTBLOCK 的用户在市场上大量地抛售该 NFT,项目方发现后迅速锁定到了该用户并对合约进行改动以此来将该用户手里的大量 NFT 转移回来,他们之后承诺会将这些 NFT 回馈给社区用户。
那么为什么项目方可以将该用户手里的 NFT 转移呢?经过我们的分析发现该 NFT 项目的合约采用了 EIP-2535 协议也叫做钻石协议,项目方利用该协议重写了合约的功能,以此来实现这些 NFT 的转移。接下来慢雾安全团队将会为大家介绍下这个钻石协议(EIP-2535)的细节。
应用研究机构 Other Internet 从 Uniswap 赠款计划获得 100 万美元赠款:11月25日消息,应用研究机构 Other Internet 从 Uniswap 赠款计划(Uniswap Grants Program,UGP)获得 100 万美元赠款,将用于在明年扩展其研究计划并在 Uniswap 生态系统中进行新的治理实验。
注,Other Internet 已于今年夏天完成对 Uniswap 链下治理和 Discord 社区的分析。[2021/11/25 7:10:00]
EIP-2535 是以太坊上一个将合约进行代码模块化组合的提案,其目的是为了让大型的智能合约突破 24kb 大小的最大限制,并且让合约更方便地更新功能。
要理解钻石协议,首先有几个相关的概念定义需要知道:
bant.io公司宣布将从 2021 年第四季度开始接受加密货币支付服务:金色财经报道,一家 B2B 多合一的潜在客户生成和销售加速服务公司bant.io在一份声明中宣布,它将从 2021 年第四季度开始接受加密货币支付服务。bant.io 创始人 Andrei Breaz 在接受采访时解释说:在过去五年中,我们创新了 B2B 潜在客户生成,同时提供了业内最灵活的付款计划之一。现在,通过接受除法定货币之外的加密货币,我们打算为我们的客户提供更加灵活和无缝的支付流程,这也将满足行业不断增长的需求。
bant.io 为世界各地的公司制定个人和独特的战略,以实现其销售目标并带来新的业务线索。(live bitcoin news)[2021/10/4 17:22:48]
钻石(diamond): 钻石可以理解为代理合约(Proxy),也是与用户进行交互的主合约
imToken Product Director产品总监:从 Layer2 账本本身看到潜在的商业模式:金色财经现场报道,7月9日,金色沙龙第66期Layer2-扩容“空间站”,探索更高维度的破局之道在杭州举办,imToken Product Director产品总监阿树演讲表示,如果我们认为区块链是世界账本,在此之上的Layer2不过是另外一份账本,那么我们应该寻找什么样的角度叙述 Layer2,才能触及原始的模样和看到未来的图景呢?账本会反映故事和商业,黄仁宇从《十六世纪明代之中国之财政与税收》看到明朝的衰败的缘由:税收低,货币不稳定才是导致衰败的起因。而记账形式的演进,从流水账到复式记账,让人类商业范围扩大和进化,那么作为世界账本的区块链会有什么样的未来?
所以我们可以从记账角度理解 Layer2 的本质模样,从 Layer2 账本本身看到潜在的商业模式。[2021/7/9 0:39:52]
切面(facet): 正如真正的钻石有不同的侧面一样,一个钻石合约也有着不同的面,钻石合约的每个功能所需要调用的合约对应一个切面,所以也可以理解为实现合约 (Implementation)
NuCypher 已将共享策略访问周期持续时间从 24 小时延长至 7 天:据官方消息,隐私基础设施 NuCypher (NU)的关于将共享策略访问周期持续时间以提升 Worker (节点运营方和质押者)潜在回报的第一项升级提案现已获得通过,且已执行。目前,NuCypher 已将周期从 24 小时延长至 7 天,可降低 Worker 在链上作出承诺所需的累积 Gas 成本。[2021/4/15 20:21:32]
钻石切割(diamondCut): 钻石协议标准扩展了一种叫钻石切割的功能,其主要作用从钻石中增加、替换或删除切面和功能,可以理解为合约的升级 (Upgrade)
放大镜(The Loupe): 钻石协议标准中的放大镜功能主要是返回关于切面的信息和钻石存在的功能,这些信息是保存在钻石合约内部的存储结构——DiamondStorage 中
整个钻石模型类似下图:
通过使用钻石标准规范去创建钻石合约,这个合约可以像使用当前合约的代码一样使用任何数量的其他切面合约的代码。
在该钻石合约中不同的函数功能需要调用对应的不同的切面合约的代码来实现,并且可以利用钻石切割的功能来对钻石合约中的函数功能进行修改(添加、替换或删除)。
这与市面上大多数使用一个代理合约和一个实现合约来实现交互与升级的方式有所区别。
事件分析
接下来回头分析下 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
通过分析加密融资数据网站 Dove Metrics 的所有数据,整理并汇编为这份 2022 年上半年 Crypto VC 融资报告.
1900/1/1 0:00:00黑客马拉松为Web3由概念转变为具有实际应用价值产品的提供了新思路。3D电影和Web3头像有什么共同之处?是不是觉得这个问题特别无厘头?然而答案是他们的确有共同之处——外表光鲜亮丽,实际上并无多.
1900/1/1 0:00:00要么像英雄那样死去,要么活得足够长,变成一个恶棍。——《黑暗骑士》随着美联储实施紧缩政策,市场流动性正在迅速枯竭。因此,加密货币市场也面临寒冬.
1900/1/1 0:00:00EraMeta是一个Web 3创建者的中心,并提供工具套件。本文选自7月18日EraMeta 发布在medium上的一篇文章,该文章介绍了他们的产品、服务、以及目标。以下是全文.
1900/1/1 0:00:00撰写:William M. Peaster以太坊的未来是通过 Rollup 扩展的,?而一类特殊的 Rollup——与以太坊虚拟机兼容的 ZK Rollup——是未来实现这一情景最有希望的方式.
1900/1/1 0:00:00原文作者:Jerry Sun,Messari 研究员原文编译:Karen受益于市场波动和健康的套利机器人活动,Uniswap 二季度交易活动的下降幅度小于整个加密货币市场.
1900/1/1 0:00:00