一文看懂 IoTeX、DePHY 和 peaq 等基礎設施的運轉原理
撰文:Pika,Sui 公鏈大使、DePIN 研究員
編輯:Faust,極客 web3
導語:儘管 DePIN 賽道在當下十分火熱,但 DePIN 相關的物聯網設備要大規模接入到區塊鏈,仍存在技術上的障礙。一般而言,若要將物聯網硬體接入到區塊鏈中,要經歷以下三個關鍵階段:
硬體設備的可信任運行;
收集驗證並提供數據;
將數據分發到不同應用。
這三個階段中存在不同的攻擊場景與反制手段,需要引入各種機制設計。本文從項目工作流程與協議設計的角度,回顧分析了物聯網設備從可信任產生數據,驗證存儲數據,通過計算產生證明,和向區塊鏈 rollup 數據的整個流程。如果你是 DePIN 賽道的創業者,希望本文可以在方法論和技術設計上對你的項目發展有所幫助。
下文中,我們以空氣質量檢測的場景為例,結合 IoTeX、DePHY、peaq 這三個 DePIN 基礎設施進行分析,向大家闡明 DePIN 基礎設施是如何工作的。此類基礎設施平台可以對接物聯網設備與區塊鏈 /Web3 設施,幫助項目方快速啟動 DePIN 應用類項目。
硬體設備的可信任運行
硬體設備的可信任,包括設備身份的信任與程序執行可驗證無篡改的信任。
DePIN 的基礎工作模式
在大多數 DePIN 項目的激勵方案裡,硬體設備的運行者會對外提供服務,以此為籌碼向激勵系統索要獎勵,比如在 Helium 中,網絡熱點設備通過提供信號覆蓋,來獲取 HNT 獎勵。但在從系統中獲取激勵前,DePIN 設備需要先出示證據,證明自己的確按要求付出了一定「努力」。
這類用於證明自己在現實世界中提供了某類服務、進行了某些活動的證明,被稱為物理工作證明(Proof of Physical Work, PoPW)。在 DePIN 項目的協議設計中,物理工作證明占有舉足輕重的地位,相應的也存在各種攻擊場景與對應的反制手段。
DePIN 項目要依托於區塊鏈完成激勵分發與代幣分配。類似於傳統公鏈中的公私鑰體系,DePIN 設備的身份核驗流程中,也需要使用公私鑰,私鑰用於生成和簽署「物理工作證明」,公鑰則被外界用於驗證上述證明,或作為硬體設備的身份標籤 (Device ID)。
除此之外,直接用設備的鏈上地址接收代幣激勵並不方便,因此 DePIN 項目方往往在鏈上部署一個智能合約,合約中記錄著不同設備持有人的鏈上賬戶地址,類似於數據庫中一對一或多對一的關係。這種方式下,鏈下物理設備應當收到的代幣獎勵,可以直接打到設備持有人的鏈上賬戶裡。
女巫攻擊
絕大多數提供激勵機制的平台,都會遇到「女巫攻擊」,就是說有人可能操控大量的賬號或設備,或是生成不同的身份證明,偽裝成多個人,拿多份獎勵。以我們前面提到的空氣質量檢測為例,提供此服務的設備越多,系統分發出去的獎勵也越多。有人可以通過技術手段,快速生成多份空氣檢測數據以及對應的設備簽名,製造大量的物理工作證明來獲利,這會使 DePIN 項目的代幣陷入高通脹,所以要制止此類作弊行為。
所謂的反女巫,如果不採用 KYC 等破壞隱私性的方法,最常見的措施就是 POW 和 POS,在比特幣協議中,礦工要付出大量的算力資源,才能獲得挖礦獎勵,POS 公鏈則直接讓網絡參與者質押大量的資產。
在 DePIN 領域中,反女巫可以歸結為「抬高物理工作證明的生成成本」,由於物理工作證明的生成,依賴於有效的設備身份信息(私鑰),所以只要抬高身份信息的獲得成本,就可以防止某些低成本生成大量工作證明的作弊行為。
針對上述目標,一種相對有效的方案是,讓 DePIN 設備生產商壟斷身份信息的生成權限,對設備進行定制化處理,為每部設備錄入唯一的身份標籤。這就好比,由公安局統一記錄全體公民的身份信息,只有在公安局數據庫裡可查的人,才有資格領取政府補貼。
(圖片來源:DigKey)
在生產環節,DePIN 設備廠商會使用程序在足夠長的時間裡生成根密鑰,然後隨機選擇根密鑰使用 eFuse 技術寫入到芯片中。這裡要科普下,eFuse(可編程電子熔斷器)是在集成電路中存儲信息的電子技術,錄入的信息通常無法被篡改或擦除,具有較強的安全保障。
在這種生產流程下,設備持有者和生產商都無法獲知設備的私鑰,以及根密鑰。硬體設備可以在 TEE 的隔離環境中,從根密鑰導出並使用工作密鑰,包含簽署信息用的私鑰,和交由外界驗證設備身份的公鑰。TEE 環境外的人或程序都無法感知到密鑰的細節。
上述模式下,如果你想獲取代幣激勵,必須要從專屬廠商那裡購買設備。女巫攻擊者若想繞開設備廠商,低成本生成大量的工作證明,就需要破解廠商的安全系統,將自己生成密鑰的公鑰註冊到網絡許可設備中去,女巫攻擊者很難低成本發起攻擊,除非設備生產廠商監守自盜。
而一旦人們發現設備廠商有作惡的可疑跡象,可以通過社會共識的方式對 DePIN 設備生產廠商進行曝光,這往往會使得 DePIN 項目本身連帶遭殃。但多數情況下,設備廠商作為 DePIN 網絡協議的核心受益方,大多沒有作惡動機,因為讓網絡協議井然有序運轉的話,賣礦機賺的錢會比 DePIN 挖礦賺的錢多,所以他們更多會傾向於不作惡。
(圖片來源:Pintu Academy)
如果硬體設備不是由中心化生產商統一供應的,那麼當任意一台設備接入 DePIN 網絡時,系統要先確認該設備具有協議要求的特性。比如,系統會檢查這些新加入的設備,有沒有專屬的硬體模塊,沒有此類模塊的設備往往無法通過認證。而要讓設備擁有上述硬體模塊,要花費一定的資金,這就抬高了女巫攻擊的成本,進而達到反女巫的目的。在這種情況下,還是正常運行設備而非製造女巫攻擊更為明智和穩妥。
數據篡改攻擊
讓我們腦洞一下,如果某台設備收集到的空氣質量檢測數據,其波動性越強,系統就認為數據更有價值,並為此提供更多獎勵,那麼任何設備都有充足的動機偽造數據,讓其故意表現出高波動性。即便是由中心化廠商做身份認證的設備,也可以在數據計算過程中「夾帶私貨」,對收集到的原始數據進行改寫。
該如何保證 DePIN 設備是誠實可信的,沒有對收集到的數據進行肆意修改呢?這需要用到可信固件 (Trusted Firmware) 技術,其中較為出名的是 TEE(Trusted Execution Environment), 還有 SPE(Secure Processing Environment)。這些硬體層面的技術,可以保障數據在設備上按照事先驗證過的程序來執行,計算過程中沒有「夾帶私貨」。
(圖片來源:Trustonic)
這裡簡單介紹下,TEE( 可信執行環境 ) 通常是在處理器或處理器核心中實現的,用於保護敏感數據,執行敏感操作。TEE 提供了一個受信任的執行環境,其中的代碼和數據能夠受到硬體級別的安全保障,以防止惡意軟體、惡意攻擊或未經授權的訪問。比如, Leger, Keystone 這些硬體錢包都有使用到 TEE 技術。
大多數現代芯片都支持 TEE,尤其是針對移動設備、物聯網設備和雲服務的芯片。通常情況下,高性能處理器、安全芯片、智能手機 SoC(系統級芯片)和雲伺服器芯片都會集成 TEE 技術,因為這些硬體涉及的應用場景,往往對安全性有較高的追求。
但是,不是所有的硬體都支持可信任固件,一些較低端的微控制器、傳感器芯片和定制的嵌入式芯片可能缺乏對 TEE 的支持。對於這些低成本芯片,可以通過探針攻擊等手段去獲取芯片內留存的身份信息,進而偽造設備身份和行為。比如,攻擊獲取到芯片上保存的私鑰數據,然後使用私鑰對篡改或偽造的數據進行簽名,偽裝成設備自身運行生成的數據。
但探針攻擊依賴於專門設備和精確的操作、數據分析流程,攻擊成本過高,遠高於從市場上直接獲取這類低成本芯片的成本。相比於通過探針攻擊等手段破解偽造低端設備的身份信息來獲利,攻擊者會更願意直接購買更多台低成本的設備。
數據源攻擊場景
前面提到的 TEE 可以保證硬體設備如實的生成數據結果,只能證明數據在輸入到設備內部後,沒有被惡意的處理,但無法確保數據在進行計算處理前,其輸入源頭可信,這其實類似於預言機協議面對的難題。
比如,某台空氣質量檢測儀,被放置在了排廢氣的工廠附近,但有人在夜裡用密閉的玻璃罐把空氣質量檢測儀罩起來,那麼這台空氣檢測儀獲取的數據必定不真實。但上述攻擊場景往往無利可圖,攻擊者大多數時候沒必要這麼做,因為是費力不討好。對於 DePIN 網絡協議而言,只要設備滿足誠實可信的計算過程,付出了滿足激勵協議所要求的工作量,理論上就該獲得獎勵。
方案介紹
IoTeX
IoTeX 提供了 W3bStream 開發工具,將物聯網設備接入到區塊鏈和 Web3 當中。在 W3bStream 物聯網端的 SDK 中, 包含了通信和消息傳遞、身份和憑證服務以及密碼學服務等基本組件。
W3bStream 的 IoT SDK 對加密功能的開發非常完善,包含多種加密算法的實現,比如 PSA Crypto API, Cryptographic primitives, Cryptographic services, HAL, Tooling, Root of Trust 等模塊。
有了這些模塊,可以在各種硬體設備上,用安全或欠安全的方式去對設備產生的數據進行簽名,並通過網絡傳遞到後續數據層供驗證。
DePHY
DePHY 在物聯網端提供了 DID(Device ID) 認證服務。DID 由生產商鑄造,每一個設備都有且僅有一個對應的 DID。DID 的元數據可以自定義,可以包含設備序列號、型號、保修信息等等。
對於支持 TEE 的硬體設備,最開始由生產商生成密鑰對,使用 eFuse 將密鑰寫入芯片中,而 DePHY 的 DID 服務,可以幫助生產商根據設備公鑰來生成 DID.而生產商生成的私鑰除了被寫入到物聯網設備,就只有生產商持有。
由於可信任固件可以實現安全可靠的消息簽名與硬體端私鑰保密,如果人們發現網絡中存在作弊生成設備私鑰的行為,基本就可以認為是設備生產商在作惡,就可以溯源到對應的生產商身上,實現信任溯源。
DePHY 的用戶在買入設備後,可以獲取設備的激活信息,再調用鏈上的激活合約,將硬體設備的 DID 與自己的鏈上地址關聯綁定,進而接入到 DePHY 網絡協議中。物聯網設備經過 DID 設置流程後,就可以實現用戶與設備之間的數據雙向流動。
當用戶通過鏈上賬戶向設備發送控制指令時,流程如下:
確認用戶擁有訪問控制權限。由於設備的訪問控制權限以 metadata 的形式寫在 DID 上,可以通過檢查 DID 來確認權限;
允許用戶和設備開通私密通道建立聯接來支持用戶控制設備。DePHY relayer 除了 NoStr relay 外,還包含 peer-to-peer 的網絡節點,可以支持點對點通道,由網絡裡的其他節點幫忙中繼流量。可以支持用戶在鏈下實時控制設備。
在物聯網設備向區塊鏈發送數據時,後續數據層會從 DID 上讀取設備的許可狀態,只有通過註冊被許可的設備才能上傳數據。比如被生產商註冊過的設備。
這個 DID 服務另一項有意思的功能在於提供了物聯網設備的功能特性 (trait) 認證。這項認證可以識別出物聯網硬體設備是否具有某些特定功能,達到足以參與特定區塊鏈網絡的激勵活動的資格。比如一台 WiFi 發射器,通過識別到具有 LoRaWAN 的功能 (trait),可以認為具有提供無線網絡連接的作用,也就可以參與到 Helium 網絡中。類似的,還有 GPS trait, TEE trait 等。
在拓展服務方面,DePHY 的 DID 還支持參與質押,鏈接可編程錢包等,方便參與鏈上活動。
peaq
peaq 的方案比較奇特,它的方案分為三個等級,分別是源自設備的認證、模式識別校驗、基於預言機的認證。
1.源自設備的認證。peaq 同樣提供了生成密鑰對,在設備上使用私鑰簽署信息,將設備地址 peaq ID 綁定用戶地址等功能函數。但是,在他們的開源代碼中卻找不到可信固件的功能實現。peaq 簡單的使用私鑰對設備信息進行簽名的認證方式,並不能保證設備的誠信運行和數據未經篡改。peaq 更像是一個樂觀 Rollup,默認設備不會作惡,然後在後續階段去驗證數據的可信狀況。
2.模式識別校驗。第二個方案是結合機器學習、模式識別。通過學習之前的數據得到模型,當新的數據輸入時,與先前的模型做比較,判別是否可信。但統計模型其實只能識別出異常數據,並不能判斷物聯網設備是否誠實運行。
比如,城市 A 中的某台空氣質量檢測儀放置在了地下室,收集產生的數據與其他空氣質量檢測儀都不一樣,但並不代表數據偽造,設備仍在誠實運行。另一方面,只要收益足夠大,黑客們也願意使用 GAN 等方法,生成機器學習難以鑑別的數據,尤其是判別模型公開共享的情況下。
3.基於預言機的認證。第三個方案是他們會挑選一些更受信任的數據源作為預言機,與其它 DePIN 設備收集上來的數據進行比較驗證。比如,項目方在城市 A 部署了一台精確的空氣質量檢測儀,其他空氣質量檢測儀收集的數據如果偏差太大,就被認為不可信。
這種方式一方面給區塊鏈引入並依賴權威,另一方面,也可能因為預言機數據源的採樣偏差,而使得整個網絡數據採樣都出現偏差。
就目前的資料來看,peaq 的基礎設施,在物聯網端無法保證設備和數據的可信任。(注:筆者查閱了 peaq 的官網、開發文檔、Github 倉庫,以及一份僅有的 2018 年白皮書草稿。即使向開發團隊發送郵件,也未能在發稿前得到更多補充說明資料)
數據的產生與發布(DA)
DePIN 工作流程中第二個階段主要是收集、驗證物聯網設備傳遞過來的數據,保存起來向後續階段提供數據,要確保數據能完整無誤、可被還原的發送給特定接收方,這被稱為數據可用性層 (DA 層 )。
物聯網設備往往通過 HTTP, MQTT 等協議,將數據和簽名認證等信息廣播出去。而 DePIN 基礎設施的數據層在接收到設備端的信息時,需要驗證數據的可信度,把通過驗證的數據匯集存儲起來。
這裡介紹下,MQTT(MQ Telemetry Transport) 是一種輕量級的、開放的、基於發布 / 訂閱模式的消息傳輸協議,旨在用於連接受限的設備,如傳感器和嵌入式系統,在低帶寬和不穩定網絡環境下進行通信,非常適合物聯網 (IoT) 應用程序。
在驗證物聯網設備消息的環節,會包含設備可信執行的認證和消息的認證。
設備可信執行的認證可以結合 TEE.。TEE 通過將數據收集代碼隔離在設備的受保護區域中,確保了數據的安全收集。
另一種方式是零知識證明,這種方法使得設備能夠證明其數據收集的準確性,同時又不洩露底層數據的細節。這種方案因設備而異,對於性能強大的設備,可以在本地生成 ZKP,對於受限制的設備,則可以進行遠程生成。
在認證了設備的信任之後,使用 DID 去驗證消息簽名,就可以確定消息是由該設備產生。
方案介紹
IoTeX
在 W3bStream 中,分為可信任數據收集、驗證,數據清洗,數據存儲這三個部分。
- 可信數據的收集、驗證使用了 TEE 和零知識證明的方法。
- 數據清洗是指將來自不同類型設備上傳的數據格式統一化、標準化,便於存儲和處理。
- 數據存儲環節,允許不同應用項目通過配置存儲適配器來選擇不同的存儲系統。
在當前的 W3bStream 實現中,不同的物聯網設備可以直接把數據發送給 W3bStream 的服務終端,也可以先把數據通過伺服器收集後,再發送給 W3bStream 的伺服器終端。
在接收到傳入的數據時,W3bStream 會像一個中心分發調度器那樣,將傳入的數據分發給不同的程序去處理,而W3bStream 生態內的 DePIN 項目,會在 W3bStream 上申請註冊, 並定義事件觸發邏輯 (Event Strategy) 和處理程序 (Applet).
每部物聯網設備都會有設備賬戶 (device account), 歸属于一個而且也只能有一個 W3bStream 上的項目。因此,當物聯網設備的消息傳遞到 W3bStream 服務端口時,可以先根據註冊綁定信息,重定向到某個項目,並驗證數據的可信。
至於前面提到的事件觸發邏輯,可以定義從 HTTP API 終端、MQTT 話題接收到的數據信息,以及檢測到區塊鏈上的事件記錄,檢測到區塊鏈高度等可以被觸發的事件 (Event triggers) 類型,並且綁定對應的處理程序去處理。
處理程序 (Applet) 中定義了一個或多個執行函數,被編譯成了 WASM 格式。數據的清洗和格式整理就可以通過 Applet 去執行。處理之後的數據被存放到由項目定義的 key-value 數據庫中。
DePHY
DePHY 項目採用了更為去中心化的方式來處理和提供數據,他們稱之為 DePHY 消息網絡 (DePHY Message network)。
DePHY 消息網絡由無許可的 DePHY 中繼節點 (relayer) 組成。物聯網設備可以通過任意一個 DePHY 中繼節點的 RPC 端口將數據傳入,傳入的數據會先調用中間件,結合 DID 去驗證數據可信任。
通過信任驗證的數據需要在不同的中繼節點之間同步,形成共識。DePHY 消息網絡採用了 NoStr 協議來實現。NoStr 原本的用途是用於構建去中心化的社交媒體,還記得之前有人用 NoStr 代替 Twitter 而大火麼,用在 DePIN 數據的同步中居然也巧妙的合適。
在 DePHY 網絡中,每台物聯網設備存儲的數據片段,都可以被組織成一棵 Merkle 樹,節點間會彼此同步這棵 Merkle 樹的 root,以及整棵樹的 tree 哈希。當某個 Relayer 得到上述 Merkle Root 和 Tree 哈希後,可以快速定位還缺少哪些數據,方便從其他 Relayer 中獲取補齊。這種方法能異常高效地達成共識確認 (Finalize)。
DePHY 消息網絡的節點運行是 Permissionless 的,任何人都可以質押資產並運行 DePHY 網絡節點。節點越多,網絡的安全性越高,可訪問性就越強。DePHY 節點可以通過 zk 條件付款 (Zero-Knowledge Contingent Payments) 的方式,獲得獎勵。也就是說,有數據索引需求的應用,在向 DePHY 中繼節點請求數據時,根據可否檢索到數據的 ZK 證明,來決定向中繼節點支付多少費用。
同時,任何人都可以接入 DePHY 網絡來監聽、讀取數據。項目方運營的節點可以設置過濾規則,只儲存與自己項目相關的 DePIN 設備數據。由於沉澱了原始數據,DePHY 消息網絡可以作為後續其他任務的數據可用層。
DePHY 協議會要求中繼節點在運行時至少把接收到的數據在本地存儲一段時間,再把冷數據要轉存到 Arweave 這種永久性的存儲平台上。如果全部數據都當作熱數據去處理,最終會抬高節點的存儲成本,進而提高全節點運行門檻,使得普通人難以運行全節點。
通過冷熱數據分類處理的設計,DePHY 能大大降低消息網絡中全節點的運行成本,更能應對海量的物聯網數據。
peaq
前面的兩種方案都是把數據的收集存儲放在鏈下去執行,然後 Rollup 到區塊鏈上去。這是因為物聯網應用產生的數據量本身極大,同時又有通信延遲的要求。如果在區塊鏈上去直接去執行 DePIN 交易,數據處理能力有限而且存儲成本很高。
單是等待節點共識就帶來不可忍耐的延遲問題。peaq 卻另辟蹊徑,自己搭建了一條公鏈,直接承載和執行這些計算和交易。它是基於 Substrate 開發的,當主網實際上線後,承載的 DePIN 設備增多,將會因為 peaq 的性能瓶頸,最終無法承載那麼大量的計算和交易請求。
由於 peaq 沒有可信任固件的功能,基本無法有效驗證數據的可信。在數據存儲方面,peaq 直接在開發文檔中介紹了如何給基於 substrate 的區塊鏈接入 IPFS 分佈式存儲。
將數據分發到不同應用
DePIN 工作流程中的第三階段,是根據區塊鏈應用的需求,將數據可用層的數據抽取出來,通過執行運算或零知識證明,把執行結果高效地同步到區塊鏈上。
方案介紹
IoTeX
W3bStream 把這一階段稱為數據證明聚合 (Data Proof Aggregation)。這部分網絡由許多聚合器節點 (Aggregator Nodes) 組成一個計算資源池 (computing resource pool), 給所有的 DePIN 項目共享調用。
每個聚合器節點會在區塊鏈上記錄自己的工作狀態,是忙碌還是空閒。當有 DePIN 項目的計算需求過來時,根據鏈上的狀態監控 (monitor) 選擇空閒的聚合器節點去處理。
被選中的聚合器節點,會先從存儲層檢索需要的數據;然後根據 DePIN 項目的需求對這些數據做運算,並且生成運算結果的證明;最後把證明結果發送到區塊鏈上給智能合約去驗證。完成工作流程之後,聚合器節點重新回到空閒狀態。
而聚合器節點在生成證明時,會用到分層聚合電路 (layered aggregation circuit)。分層聚合電路包含四個部分:
- 數據壓縮電路:類似於 Merkle 樹,驗證所有收集的數據都來自特定的 Merkle 樹根。
- 簽名批驗證電路:批量驗證來自設備的數據的有效性,每個數據都與一個簽名相關聯。
- DePIN 計算電路:證明 DePIN 設備按照特定計算邏輯正確執行了一些指令,例如在醫療健康項目中驗證步數,或者在太陽能發電廠中驗證產生的能量。
- 證明聚合電路:將所有證明聚合成一個單一的證明,以供 Layer1 智能合約最終驗證。
數據證明聚合對於確保 DePIN 項目中計算的完整性和可驗證性至關重要,為驗證鏈下計算和數據處理提供了可靠和高效的方法。
IoTeX 的收益環節也主要在這一階段,用戶可以通過質押 IOTX 代幣,運行聚合器節點。越多聚合器的參與,也就能帶來更多的運算處理能力,形成算力充足的計算層。
DePHY
在數據分發層面,DePHY 提供了協處理器來監聽 DePHY 消息網絡的 finalized 消息,進行狀態遷移 (State change) 後,將數據打包壓縮並提交到區塊鏈。
狀態遷移是用於處理消息的類智能合約的函數,由不同 DePIN 項目方定制,還包括 zkVM 或 TEE 的計算打包數據處理方案。這部分由 DePHY 團隊向 DePIN 項目方提供項目腳手架 (Scaffold) 來開發和部署,具有很高的自由度。
除了 DePHY 提供的 co-processor, DePIN 項目方也可以根據項目腳手架將 DA 層的數據接入到其他基礎設施的計算層,實現上鏈。
綜合分析
儘管 DePIN 賽道火熱,但物聯網設備要大規模接入到區塊鏈,仍存在技術上的障礙。本文從技術實現的角度,回顧分析了物聯網設備從可信任產生數據,驗證存儲數據,通過計算產生證明和向區塊鏈 rollup 數據的整個流程,從而支持將物聯網設備集成到 Web3 應用中。如果你是 DePIN 賽道的創業者,也希望本文可以在方法論和技術設計上能對項目發展有所幫助。
在選擇分析的三個 DePIN 基礎設施中,peaq 依然像六年前網上的評論一樣,is just hype. DePHY 和 IoTeX 都選擇了鏈下收集物聯網設備數據,然後 rollup 到鏈上的工作模式,能夠在低時延、保證設備數據可信的條件下,將物聯網設備數據接入到區塊鏈。
DePHY 和 IoTeX 又各有側重,DePHY 的 DID 包含了硬體功能 trait 的驗證,雙向數據傳輸等特點,DePHY 消息網絡更注重於去中心化的數據可用層,更多是作為低耦合的功能模塊與 DePIN 項目結合;IoTeX 的開發完整度很高,有完整的開發工作流程,更側重於給不同事件綁定處理程序,偏向計算層。DePIN 項目方可以根據實際需求,選擇不同的技術方案去組合。