原文標題:《 A Guide to NFT Platform Security 》
原文來源:Immutable X
原文編譯:Captain Hiro
編譯標題:從共識機制和橋安全出發,探討五大NFT平台的安全性
對於任何軟件公司來說,安全是一個根本性的困難和不對稱的問題。而對於安全問題來說,是沒有什麼靈丹妙藥的——僅在上個月,就有幾家技術公司出現了明顯的漏洞(如Okta、HubSpot)。然而,加密貨幣的自我託管和不可逆的性質意味著安全漏洞可能會導致數十億美元的永久性損失。這種持續的風險對於具有長期雄心的NFT項目來說是一個巨大的挑戰。
數億美元的用戶資金損失嚴重損害了NFT 領域的聲譽,並嚴重損害了相關的公司和項目。這種風險對許多正在進入該領域的企業來說是不可接受的,特別是那些有現有客戶基礎、聲譽和法律義務的企業。因此,安全作為NFT 項目選擇平台的一個標準將變得越來越重要。
每個平台都有強烈的動機將自己定位為足夠安全。可事實是,所有的解決方案都是有交換條件的,重要的是項目需要對他們和他們平台的具體交換條件有一個非常清楚的了解。
我是Alex Connolly,Immutable 的首席技術官和聯合創始人——我們為大規模、高質量的NFT 項目(尤其是遊戲)建立了領先的平台之一。我想通過寫這篇文章,對一些最受歡迎的NFT 平台所做的選擇進行詳細且基本公正的評估,這些平台包括Ronin、Polygon、Immutable、Solana和Optimism。
我將特別專注於每個平台的底層安全的兩個核心要素:
1、共識安全:通過攻擊平台的節點/驗證者(例如通過51% 的攻擊)竊取資產的難度
2、橋的安全:將資產從以太坊轉移的機制的安全性。這通常是更大的擔憂,因為妥協通常會使用戶資金直接面臨風險
這篇文章將是對NFT 平台安全的一次深入探討,從而為相關項目負責人做出明智選擇提供必要的技術細節。如果你只是想簡單了解一些重點內容,可以看看下面這個表格。
接下來,就讓我們深入探討一些NFT 平台的安全性吧。
Ronin
Ronin 是由Sky Mavis Labs 創建的區塊鏈,目前專門為Axie Infinity及其生態系統提供動力。
共識安全
Ronin 是一個「側鏈」——一個擁有自己節點和共識機制的區塊鏈,但它與以太坊保持著官方「橋」的連接。 Ronin 是一個權力證明(POA)區塊鏈,它一有10 個節點,這些節點把自己的聲譽押在不會濫用權力的事實上。這與以太坊的測試網如Goerli(20 個節點的POA)相同。如果這些節點中的任何5 個(50% 以上)成為惡意的或妥協的節點,那麼它們將能夠對網絡進行51% 的攻擊,並通過雙花或其他攻擊竊取用戶的資金。一般來說,這被認為是一個極低的節點數量(比特幣有15000 個,以太坊有接近6000 個),並產生一個更中心化的網絡,從而換取更快更便宜的交易。此外,用戶不能運行自己的節點,Ronin 節點的源代碼是不公開的,因此Ronin 用戶無法對其進行審計。
橋安全
Ronin 的官方以太坊橋由5-9 的「多簽(multisig)」控制。多簽要求總共n 個密鑰持有者中的m 個簽名者批准每筆交易。在Ronin 中,每一個橋動作都需要得到這個多籤的批准。然而,沒有任何機制來檢查充值或提現是否真的有效——任何能夠接觸到9 把私鑰中的5 把的人都可以將Ronin 橋中持有的任何代幣的任何數額提取到任何以太坊地址上。這意味著該橋的任何用戶都是直接信任這個多籤的所有資金。
2022 年3 月,在一名黑客獲得了Axie 團隊持有的4 把私鑰和AxieDAO驗證器(節點)借給Axie 團隊的1 把私鑰(給他們5/9)後,這種信任被黑客竊取了6.25 億美元。我們目前所知的情況表明,這是一個典型的網絡安全漏洞,由於這些驗證器私鑰的中心化造成了嚴重的後果。 Sky Mavis 已經承諾償還那些損失的資金,並在未來三個月內達到21 個獨立驗證者,以確保Ronin 對未來的攻擊有更大的彈性,儘管在更強大的共識/橋機制和網絡的可擴展性之間可能會有權衡。
Polygon
Polygon 目前提供權益證明以太坊側鏈(PolygonPoS),以及專門的NFT 服務業務Polygon Studios,支持Skyweaver 和ZED RUN 等主要項目。 Polygon 正朝著提供一系列不同的擴展解決方案的方向發展,其中大部分是基於zk-rollup 技術(稍後討論),但目前只有Polygon PoS 是作為NFT 平台上線。
共識安全
Polygon PoS 是一條側鏈,其基本模式與Ronin 相似,只是Polygon 是一個「提交(commit)側鏈」,它定期將鏈上狀態的檢查點提交給以太坊。 Polygon PoS 共識有兩個主要組成部分。首先是Bor 鏈,這是Polygon 交易實際發生的地方:一個輪流的區塊生產者子集從更大的驗證者池中選擇,運行一個修改過的權威證明網絡,決定交易的包含和排序。然而,這個子集中只有一個區塊生產者(見PolygonScan 區塊驗證者)被選中,以提出64 個連續的區塊。
接下來是Heimdall 檢查點系統,更多的驗證者(目前上限為100 人)就Bor 區塊最後約30 分鐘的總結快照達成三分之二「權益證明」共識,並將該快照作為檢查點發佈在以太坊上。然而,雖然有100 個驗證者,但4 個驗證者控制了53% 的權益,7 個驗證者控制了67% 的權益(見這裡,點擊「顯示全部」並按權益排序),而所需的三分之二多數指的是權益,而不是驗證者的數量。這意味著,只有7 把私鑰被破壞,鏈上的所有資金,而不僅僅是橋上的資金,才能通過惡意檢查站被盜;而且質押者必須隨時保持他們的私鑰熱度。此外,由於法定人數需要三分之二的質押,而43% 的權益由3 個驗證人控制,因此只需破壞3 個熱錢包,就足以完全凍結提現和檢查點。
在2,307,879,127 美元的質押中,前7 名驗證者的質押是1,540,761,159 美元(~67%)
合約升級可以用來防禦惡意檢查點(假設它被足夠快地檢測到),但這有其自身的安全風險,我們接下來將會討論。
橋安全
Polygon 的橋與Ronin 的不同之處在於,檢查點系統消除了對獨立驗證器組簽署每筆充值和提款的需要。然而,這意味著橋的安全性完全依賴於Heimdall 和Bor 的共識,這很容易受到上述的攻擊。
此外,Polygon 使用5- 8 多籤來管理他們的橋樑智能合約,合約更新可以立即進行,沒有時間鎖定。這可以抵禦智能合約的錯誤或上文討論的質押權重(stakeweight)驗證器的妥協。其中4 把私鑰由Polygon 創始人持有,這種結構受到了社區內安全研究人員的強烈批評,因為只要有另外一把私鑰,就有可能通過惡意升級將Polygon 合約的所有資金(50 億美元以上)完全耗盡。然而,由於Polygon 的簽名者並不簽署每一筆充值和提線交易,這些管理密鑰能夠被保持在離線狀態,使得它們不太可能被破壞。
Immutable
Immutable 是一個用於構建高質量、高規模的NFT 項目的平台,如游戲。基於Immutable 的知名項目包括Illuvium、Gods Unchained、Ember Sword 和Guild of Guardians。
共識安全
Immutable 是一個zk-rollup,它使用StarkWare 的StarkEx 校驗器(prover)/驗證器系統構建。這意味著Immutable 預定一批第二層網絡(L2)交易,生成一個STARK 證明,證明這些交易是有效的,並將該證明提交給主網(L1)智能合約「驗證器」,該驗證器更新一些主網狀態(在我們的案例中,是包含數百萬用戶NFTs 餘額的merkle 樹的根)。重要的是,這比天真的批交易要好得多,因為STARK 證明的驗證成本與交易的數量呈亞線性擴展。
由於所有的狀態轉換都必須經過主網智能合約的驗證,即使Immutable 的系統被完全破壞,Immutable 也不可能將無效的交易嵌入到rollup 中,或者竊取資產。這是一個非常強大的安全屬性,也是Vitalik將rollup 描述為「在可預見的未來,以太坊的關鍵可擴展性解決方案」的部分原因。
然而,Immutable 作為一個「單一操作者」的rollup 運作(只有Immutable 可以訂購或證明交易)。這意味著Immutable 可以通過對交易進行前置處理或重新排序來提取礦工可提取價值(MEV)。目前,幾乎所有的rollup 都是「單一運營商」,儘管大多數都有計劃隨著時間的推移進行去中心化。
橋安全
rollup 使用了與側鏈根本不同的橋結構,因為他們在主網上保持了一個經過驗證的「狀態」,只有通過有效的證明才能更新。橋資金要求這個驗證狀態已經包括你的充值/提線,沒有多籤的攻擊(例如Ronin),也沒有辦法通過破壞驗證器來增加「假的」狀態轉換(例如Polygon),每筆交易都被驗證,就像它發生在主網上一樣。這種去信任的橋是為什麼rollup 被稱為「第二層網絡」的原因——它們的安全直接依賴於以太坊的共識,而不是一個單獨的具有信任橋接的共識機制。
在任何時候,用戶都可以提交一個「提現」交易,將他們的資金從第二層網絡過橋到主網。如果Immutable 將此交易納入已證明的狀態變化集,用戶就能以去信任的方式將他們的資金直接提現到以太坊。如果Immutable 不處理這個提現(不可用或故意審查),用戶總是能夠通過直接與主網橋合約進行交互來使用「全額提現」流。
如果這個新的「全額提現」請求沒有得到服務,交易所狀態將被凍結,所有用戶將能夠通過提供他們在狀態merkle 樹中的資產路徑來提現。確保用戶能夠訪問這些數據,即使Immutable 是惡意的或離線的,這就是「rollup 數據的可用性問題」。在標準的zk-rollup 結構中,這有一個簡單的解決方案:要求在允許狀態更新之前將必要的數據發佈到以太坊主網上。然而,這引入了一個小的線性gas 成本,許多應用程序不願意支付。這種成本在合併後不會改變,但會通過EIP-4488、原數據庫和(最終)分片等提議大幅減少,因為以太坊接受了它作為rollup 的基礎驗證和數據可用性層的角色。
然而,由於這些解決方案都沒有上線,而且在鏈上發布calldata 的成本對於像大規模NFT 鑄幣這樣的用例來說仍然令人望而卻步,Immutable 目前作為一個Validium rollup 運行。 Validium rollups 是zk-rollup,它不發布重建狀態所需的所有數據來換取更便宜的交易。為了確保這些數據即使在Immutable 離線或惡意的情況下仍然可用,Immutable 依靠一個「數據可用性委員會(DAC)」。
這個委員會的大多數成員(由著名的生態系統公司組成)和幾個「強制性」成員必須簽署每個批次,以證明他們有必要的數據。這與驗證人的多簽不同:只要任何一個DAC 是誠實的,用戶就能成功退出。即使發生數據扣留攻擊,整個DAC 和序列器被破壞,Immutable 仍然可以使用合約升級來防止贖金攻擊。
Immutable 的rollup 驗證器合約可以升級,但有14 天的時間限制,這將使用戶有機會在對新合約不滿意的情況下退出系統(即使Immutable 惡意審查交易)。
Immutable 正在向Volition 模式轉變,其中個別「金庫(vault)」(用戶、代幣、數量圖元)可以被標記為需要鏈上數據。由於存儲在rollup 中的大部分價值存在於大型代幣/ETH餘額或高價值的NFT,該價值可以存儲在相對較少的鏈上數據庫中。這種結構可能會讓rollup 金庫中的大部分價值得到鏈上數據的支持,減少數據可用性風險,同時保留做廉價、大規模NFT 鑄幣的能力,這對遊戲等項目來說至關重要。
Solana
Solana 作為一個完全獨立的主網區塊鏈運行,它特別關注通過定制的共識機制實現低成本、高規模的交易。
共識安全
Solana 目前有超過1500 個活躍節點,儘管它確實對這些節點提出了大量的硬件要求,以實現其較高的TPS(減少個人驗證交易的能力,這是區塊鏈去中心化的一個重要原則)。重要的是,由20 個節點組成的超級少數節點目前控制著超過33% 的SOL 質押。如果這些節點串通一氣,或被破壞,他們將能夠停止網絡或任意審查交易。
橋安全
作為一個完全獨立的主網,Solana 沒有與以太坊的官方橋。然而,對Solana 用戶來說,最流行的(和半官方的)橋是Wormhole,它允許資產在一些鏈上移動。 Wormhole 依賴於一組被稱為監護人(guardian)的驗證者,他們對所有橋行動達成三分之二加一的權威證明共識。目前有19 個活躍的監護人。由於Solana 和以太坊無法驗證對方的交易,橋合約在資產過橋時完全依賴於監護人的共識。這意味著,如果這些監護人中的三分之二被破壞,Wormhole 內的所有用戶資金都可能被盜。這種機制實際上與Ronin 使用的機制非常相似,不幸的是,監護人的私鑰也必須保持熱度以簽署新的交易。
在2022 年初,Wormhole 橋的一個錯誤使得3.25 億美元的用戶資金被盜。這實際上不是驗證器系統的妥協,而是發現了一個智能合約的錯誤,允許攻擊者欺騙橋在Solana 上發行沒有存入以太坊的ETH。 Jump Crypto 介入,使用戶得到補償,這令人驚訝地表明了加密貨幣中的資本的力量,但隨著領域的發展,這是一個完全不可持續的模式。這並不是對Solana 或Wormhole 的控訴,因為所有鏈上系統都容易受到智能合約漏洞的影響。雖然永遠不可能有保證,但最好是使用經過審計/正式驗證的合約,這些合約經得起時間和公眾審查的考驗,例如,Wormhole 在錯誤發生後受到了嚴格的審查,沒有發現進一步的錯誤。
Optimism
Optimism 是由Optimism PBC 開發的以太坊Optimistic rollup。它在2021 年8 月登陸主網,用於白名單項目,到目前為止,它上面NFT 項目的採用有限,儘管在Quixotic 等市場上有一個早期社區。
共識安全
Optimism rollup 工作類似於zk-rollups:收集交易並上傳所有這些狀態轉換的最終狀態的壓縮版本。然而,在zk-rollups 為每個狀態轉換提供「有效性證明」的情況下,Optimism 的rollup 轉換被認為是有效的,除非有人能產生一個「故障證明」,表明有無效的交易發生。如果有人能產生這樣的證明,他們會得到獎勵,而證明的發布者會受到懲罰。為了允許這種挑戰的發生,Optimism rollup 需要在交易完全結束前有一周的爭議時間延遲。這種非同步性引入了一類有趣的潛在經濟攻擊,而緩解這些攻擊是一個積極的研究課題。
然而,Optimism 的故障證明目前是禁用的——這意味著Optimism(或任何破壞Optimism 多籤的人)可以通過提交無效的狀態轉換來竊取所有的用戶資金。這是一個臨時狀態,一旦新的故障證明系統準備好了,就會升級,但在目前的狀態下對用戶資金構成了嚴重的危險。由於Optimism 是一個單一的序列器rollup,它也對潛在的MEV 提取開放。
橋安全
Optimism rollup 也提供了一個通往以太坊的去信任橋。然而,由於任何用戶都可以在1 週爭議期的任何時候挑戰該批次的有效性,被撤回到主網的資產至少會在這段時間內被鎖定。對於可替換的資產,可以使用「快速提線」來規避這種鎖定(在假設狀態轉換不包含欺詐性交易的情況下,有效地借給用戶)。然而,由於NFT 是唯一的,不能被替代,用戶必須等待整個爭議期(長達一周),然後才能將他們的資產轉移回以太坊主網。
Optimism(像所有Optimism rollup)要求將中間交易數據發佈在鏈上,以便能夠有效地挑戰——這產生了更高的費用,但規避了任何復雜的數據可用性結構,正如在分析Immutable 時討論的那樣。
核心平台之外的安全
如果你的項目安全通過其他機制受到損害,那麼擁有世界上最好的核心平台安全是不重要的。為了真正做出明智的決定,NFT 項目需要考慮共識和橋安全之外的各種因素,包括:
錢包安全:用戶密鑰是如何存儲的?如果這個存儲系統被破壞,會有什麼影響(例如,託管錢包供應商,本地錢包應用程序的一個作惡版本,瀏覽器擴展中的一個不良依賴)?
元數據安全:資產元數據(包括圖像)是如何存儲的?如果這些元數據由於妥協而被改變或替換,會有什麼市場影響?
項目安全:任何平台上的項目通常都為其項目保留一些管理私鑰。如果這些私鑰被洩露,會發生什麼?你的項目是否有主動監測漏洞的功能?你的平台是否支持密鑰管理的最佳實踐?
資金安全:大多數平台都會有大量的代幣儲備(例如,用於獎勵或補助)。這些資金是如何持有的?如何授權和執行從金庫的轉移?妥協會有什麼影響?
市場安全:支持該協議的市場如何保護用戶免受惡意交易,如山寨項目?
在這些層次中的任何一個出現紕漏,都可能使即使是最安全的底層平台的用戶受到傷害——任何人描述一個無懈可擊的項目顯然是錯誤的。不幸的是,當處理一個新的資產類別時,特別是一個增長如此迅速的資產類別,會有人不斷地尋找新的漏洞和利用點。在這樣的環境中,對這些權衡的有力理解對於為你的項目選擇正確的平台至關重要。
在Immutable,我們正在解決那些想要建立高質量、高規模、長期的NFT 項目(如游戲)的核心挑戰,包括上述的安全挑戰。如果你是一個建設者,我們很想和你展開對話。如果你想直接幫助我們解決這些問題,我們正在招聘幾乎所有的角色!
我還要感謝那些對這篇文章的不同部分提供反饋的人。 Kelvin Fichter(Optimism),Avihu Levy(StarkWare),Bartek Kiepuszewski(MakerDAO, L2 Beat),Philippe Castonguay(Horizon/Skyweaver)和Wormhole 團隊——文章出現的任何剩餘錯誤都是我造成的。