背景信息
2022 年?7 月 10 號,一個火熱的 NFT 項目 TheSaudis 開啟了 freemint 活動(白名單用戶可以免費鑄造其 NFT)。而就在 mint 活動結束后,一位名叫 RIGHTBLOCK 的用戶在市場上大量地拋售該 NFT,項目方發現后迅速鎖定到了該用戶并對合約進行改動以此來將該用戶手里的大量 NFT 轉移回來,他們之后承諾會將這些 NFT 回饋給社區用戶。
那么為什么項目方可以將該用戶手里的 NFT 轉移呢?經過我們的分析發現該 NFT 項目的合約采用了 EIP-2535 協議也叫做鉆石協議,項目方利用該協議重寫了合約的功能,以此來實現這些 NFT 的轉移。接下來慢霧安全團隊將會為大家介紹下這個鉆石協議(EIP-2535)的細節。
ENS 發起新提案,計劃將過期域名的臨時溢價從 2000 美元提高到 10 萬美元:1月10日消息,以太坊域名項目ENS 現已在Snapshot發起對最新治理提案的投票,計劃將過期域名的臨時溢價起始價格從 2000 美元提高到 10 萬美元,每小時下調150美元,并在28天后降低為0,以防止域名“狙擊”的情況。[2022/1/10 8:37:41]
EIP-2535 是以太坊上一個將合約進行代碼模塊化組合的提案,其目的是為了讓大型的智能合約突破 24kb 大小的最大限制,并且讓合約更方便地更新功能。
要理解鉆石協議,首先有幾個相關的概念定義需要知道:
鉆石(diamond): 鉆石可以理解為代理合約(Proxy),也是與用戶進行交互的主合約
應用研究機構 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]
切面(facet): 正如真正的鉆石有不同的側面一樣,一個鉆石合約也有著不同的面,鉆石合約的每個功能所需要調用的合約對應一個切面,所以也可以理解為實現合約 (Implementation)
Audius、DODO、Livepeer 等應用從 The Graph 托管服務遷移到主網:6月11日消息,區塊鏈數據索引項目 The Graph (GRT)表示,Audius、DODO、Livepeer、mStable、Opyn、PoolTogether、Reflexer 和 UMA 等應用現已完全從 The Graph 的托管服務遷移到主網,成為 The Graph 主網上的 10 個子圖,且均可使用 GRT 來支付網絡使用費。[2021/6/11 23:29:40]
鉆石切割(diamondCut): 鉆石協議標準擴展了一種叫鉆石切割的功能,其主要作用從鉆石中增加、替換或刪除切面和功能,可以理解為合約的升級 (Upgrade)
放大鏡(The Loupe): 鉆石協議標準中的放大鏡功能主要是返回關于切面的信息和鉆石存在的功能,這些信息是保存在鉆石合約內部的存儲結構——DiamondStorage 中
聲音 | BM:從 EOS 回到 ETH 就像從光纖回到了撥號一樣:據 IMEOS 報道,BM 昨夜在推特發了兩條推文,分別表達了 EOS 的領先和 DPOS 的優勢
1.用戶回饋使用 EOS 幾個月后重新使用 ETH 就像是從光纖回到了撥號一樣。一旦你在 EOS 上,你永遠都不想在回去。
當計算或算法發生巨大突破時,工作證明就變得完全中心化...無論技術發展如何,DPOS 都會一直保持去中心化。你可以輕松分叉 DPOS,但創建新的抗性工作證明非常困難。[2019/4/15]
整個鉆石模型類似下圖:
通過使用鉆石標準規范去創建鉆石合約,這個合約可以像使用當前合約的代碼一樣使用任何數量的其他切面合約的代碼。
在該鉆石合約中不同的函數功能需要調用對應的不同的切面合約的代碼來實現,并且可以利用鉆石切割的功能來對鉆石合約中的函數功能進行修改(添加、替換或刪除)。
這與市面上大多數使用一個代理合約和一個實現合約來實現交互與升級的方式有所區別。
事件分析
接下來回頭分析下 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
Tags:THENFTAmondiamondethereumpandaNFTD幣Diamond HandsDiamond Launch
據媒體報道,2022年6月16日,某數字藏品平臺發文稱,針對將發售的新一期數字藏品采取原價退款保護機制,以保證用戶權益不受損失,玩家可在藏品開啟贈與后15天內申請退貨退款。這在國內尚屬首例.
1900/1/1 0:00:00關于NFT資產和元數據的重要性現如今你應該已經有所耳聞。說的更具體些,NFT資產和元數據儲存在哪里?這是最終的決定性因素,決定你的NFT能持續多久,是否能夠永存,或者是否會在某天突然消失?本文將.
1900/1/1 0:00:00頭條 ▌OpenSea已裁員約20%金色財經消息,NFT市場OpenSea聯合創始人兼首席執行官Devin Finzer周四宣布,該公司已裁員約20%.
1900/1/1 0:00:00Web3.0游戲的經濟機制則與傳統游戲大相徑庭,我們建議游戲廠商在Web3游戲中構建三幣或四幣系統,但其經濟模型不能對傳統游戲進行簡單直接地“復制粘貼”,否則只能是失敗的.
1900/1/1 0:00:00隨著傳統銀行業受到新興技術和不斷發展的商業模式的挑戰,摩根大通一直在尋求擁抱顛覆性趨勢。盡管作為一家老牌銀行,但這家金融巨頭從未回避多元化和嘗試現代技術,這從他們的創新和投資戰略中可以看出.
1900/1/1 0:00:00今天,我們深入研究底層橋的安全性并涵蓋以下內容:?1.?當用戶使用橋時會發生什么2.?我們所說的安全性是什么意思3.?我們會看到哪些類別的橋 4.?橋的安全性比較 5.?可擴展性——你可以搭橋的.
1900/1/1 0:00:00