背景信息
2022 年?7 月 10 號,一個火熱的 NFT 項目 TheSaudis 開啟了 freemint 活動(白名單用戶可以免費鑄造其 NFT)。而就在 mint 活動結束后,一位名叫 RIGHTBLOCK 的用戶在市場上大量地拋售該 NFT,項目方發現后迅速鎖定到了該用戶并對合約進行改動以此來將該用戶手里的大量 NFT 轉移回來,他們之后承諾會將這些 NFT 回饋給社區用戶。
那么為什么項目方可以將該用戶手里的 NFT 轉移呢?經過我們的分析發現該 NFT 項目的合約采用了 EIP-2535 協議也叫做鉆石協議,項目方利用該協議重寫了合約的功能,以此來實現這些 NFT 的轉移。接下來慢霧安全團隊將會為大家介紹下這個鉆石協議(EIP-2535)的細節。
Fantom 基金會從 SushiSwap 上撤回了近 45 萬枚 MULTI 的流動性:5月24日消息,據 Lookonchain 監測,Fantom 基金會地址從 SushiSwap 上撤回了 449,740 枚 MULTI(價值約 240 萬美元)的流動性。[2023/5/24 22:15:10]
EIP-2535 是以太坊上一個將合約進行代碼模塊化組合的提案,其目的是為了讓大型的智能合約突破 24kb 大小的最大限制,并且讓合約更方便地更新功能。
要理解鉆石協議,首先有幾個相關的概念定義需要知道:
鉆石(diamond): 鉆石可以理解為代理合約(Proxy),也是與用戶進行交互的主合約
切面(facet): 正如真正的鉆石有不同的側面一樣,一個鉆石合約也有著不同的面,鉆石合約的每個功能所需要調用的合約對應一個切面,所以也可以理解為實現合約 (Implementation)
美國、歐盟政府承諾從 SWIFT 系統中刪除“選定的”俄羅斯銀行:金色財經報道,美國和歐盟今日宣布了一項計劃,從環球銀行金融電信協會(SWIFT)中刪除一組俄羅斯銀行。SWIFT支撐著全球金融系統,每日處理數百萬條安全消息,幫助銀行管理世界各地的交易。該組織在聲明中表示,“我們承諾確保將選定的俄羅斯銀行從 SWIFT 中刪除。這將確保這些銀行與國際金融體系脫節,損害它們在全球運營的能力。”此外,該組織還承諾對俄羅斯央行采取行動。 “我們承諾采取限制性措施,阻止俄羅斯中央銀行以破壞我們制裁影響的方式部署其國際儲備。”(theblockcrypto)[2022/2/27 10:18:55]
鉆石切割(diamondCut): 鉆石協議標準擴展了一種叫鉆石切割的功能,其主要作用從鉆石中增加、替換或刪除切面和功能,可以理解為合約的升級 (Upgrade)
ENS 發起新提案,計劃將過期域名的臨時溢價從 2000 美元提高到 10 萬美元:1月10日消息,以太坊域名項目ENS 現已在Snapshot發起對最新治理提案的投票,計劃將過期域名的臨時溢價起始價格從 2000 美元提高到 10 萬美元,每小時下調150美元,并在28天后降低為0,以防止域名“狙擊”的情況。[2022/1/10 8:37:41]
放大鏡(The Loupe): 鉆石協議標準中的放大鏡功能主要是返回關于切面的信息和鉆石存在的功能,這些信息是保存在鉆石合約內部的存儲結構——DiamondStorage 中
整個鉆石模型類似下圖:
實力派 | 范瑞彬:FISCO BCOS的設計邏輯主要從 5個方面出發:在今日“金色實力派”線上訪談中,針對海創鏈CEO張弢提出的“微眾銀行聯合金鏈盟開源工作組研發并開源的FISCO BCOS的設計邏輯是什么?”的問題,微眾銀行分布式商業科技發展部副總經理、區塊鏈負責人范瑞彬表示,FISCO BCOS在設計上主要從5方面出發考量:1、安全。全方位的安全防護(覆蓋網絡、主機、存儲、應用等),要避免短板和破窗。同時針對聯盟鏈的場景,專門支持了準入機制,CA認證、密鑰管理等關鍵能力。2、隱私保護。完整支持了國密算法體系(包括SM1、SM2、SM3、SM4等)。同時支持了權限管理、群簽名、環簽名、同態加密、零知識證明等隱私保護功能。3、性能。在工信部信通院的評測中單鏈TPS超2w,而且還支持了并行計算和分布式存儲,包括多鏈、跨鏈、熱點賬戶、多群組等一整套完整的解決方案,具備靈活高效的平行擴展能力。4、易用,提供開源的中間件平臺,讓使用者更便利的學習上手、開發、調試、部署、運營、監控、審計等。5、可靠,架構設計上要達到金融級水準的高可靠性。除了架構設計本身保證可靠,通過開源,更多人可以使用,促進更多的應用落地,用實踐來檢驗和加速推動FISCO BCOS的成熟可靠。[2019/12/18]
通過使用鉆石標準規范去創建鉆石合約,這個合約可以像使用當前合約的代碼一樣使用任何數量的其他切面合約的代碼。
在該鉆石合約中不同的函數功能需要調用對應的不同的切面合約的代碼來實現,并且可以利用鉆石切割的功能來對鉆石合約中的函數功能進行修改(添加、替換或刪除)。
這與市面上大多數使用一個代理合約和一個實現合約來實現交互與升級的方式有所區別。
事件分析
接下來回頭分析下 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
原文標題:《NFT 玩家的共識分片:金錢、社區與文化》原文作者:sleepy0x13.eth在 Crypto 領域,當我們提到「分片」時,人們通常想到的是區塊鏈分片技術.
1900/1/1 0:00:00原文標題:《NFT 金融化:早期領域的發展機會》原文作者:lingchenjaneliu(推特ID) & FundamentalLabs 概括 金融化將非流動性資產轉化為可交易的證券.
1900/1/1 0:00:00本文詳細講解了 KingData Freemint Tool的各項功能,將有助于用戶從小白進階成高端金狗玩家.
1900/1/1 0:00:00以太坊虛擬機(EVM)是區塊鏈開發者中的事實標準,它背后有一個巨大的社區支持。這導致其他兼容以太坊虛擬機的區塊鏈也開始探索這個系統,而非以太坊虛擬機兼容的區塊鏈則在此基礎上建立以太坊虛擬機兼容層.
1900/1/1 0:00:00原文:DeFi Surfer巴菲特曾公開說:比特幣可能是老鼠藥的平方。當前的法幣和金融系統存在根本性的缺陷。加密貨幣,特別是比特幣,為個人和國家提供了一種有趣且可能越來越有吸引力的替代系統.
1900/1/1 0:00:00Meta Platforms Inc.的加密貨幣項目曾經令該公司創始人馬克·扎克伯格(Mark Zuckerberg)在國會飽受攻擊,現在,該項目的剩余部分也將正式關閉.
1900/1/1 0:00:00