2009 年 1 月 3 日,BTC第一個區塊被挖出,自此區塊鏈激蕩髮展14 年。縱觀過去 14 年,BTC的精妙與偉大,Ethereum的橫空出世,EOS 的激情衆籌,PoS&PoW的宿命之爭,Polkdadot的萬鏈互連,一項項驚爲天人的技術,一個個美妙絶倫的故事,讓無數圈內人競折腰!
當前,2023 年,整個區塊鏈的格局是怎樣?以下是我的思考,詳見此文中的公鏈格局解讀部分
但未來10年,整個區塊鏈行業會如何髮展?以下是我的思考
這裡先引入一個故事,2009年阿裡巴巴提出“去 IOE”戰略,這也是後來成就阿裡“雙十一”的一大裡程碑。
“去 IOE”戰略的核心內容就是要去除IBM小型機、Oracle數據庫及 EMC 存儲設備,將 “雲計算” 的本質植入阿裡的 IT 基因。其中
去IOE的原因主要有以下三點,但第一點是本質原因,後兩者更間接:
那爲什麽是 2009 年提出“去 IOE”戰略而不是更早呢?
但是去IOE不是簡單地改變軟件和硬件本身,用新的軟硬件取代舊的軟硬件,而是用新的方式取代舊的方式,是用雲計算徹底改變 IT 基礎架構。換句話説,這是行業的變化導緻的,而不是僅僅是簡單的技術升級。
一個企業的髮展可以分爲3個階段,
下麵把整個區塊鏈行業當成是一個企業來分析
BTC的創新之處在於它解決了數十年來睏擾計算機科學家的一個問題,即如何創建一個可以在無需信任任何中央機構的情況下運行的數字支付繫統。
但 BTC 在其設計和開髮中,也確實存在一些局限性,這些局限性爲以太坊(ETH)等後續的區塊鏈項目提供了市場機會。以下是一些主要的局限性:
交易吞吐量和速度:BTC的區塊生成時間約爲 10 分鐘,且每個區塊的大小限製導緻了其交易處理能力的上限。這意味著在網絡繁忙時,交易確認可能需要較長時間,且可能需要支付較高的交易費用。
智能合約功能有限:BTC的設計主要是作爲一種數字貨幣,它支持的交易類型和腳本語言功能相對有限。這限製了BTC在覆雜的金融交易和去中心化應用(DApps)方麵的應用。
不易升級和改進:由於BTC的去中心化和保守的設計原則,對其進行大的升級和改進通常需要社區的廣泛共識,在實踐中很難達成,這也使得BTC的進步相對緩慢。
能耗問題:BTC的共識機製是基於工作量證明(PoW)的,這意味著大量的計算資源被用於礦工之間的競爭,導緻了大量的能耗。這在環保和可持續性方麵受到了人們的批評。關於這一點,大家也可以關註一下 EcoPoW,算是部分緩解了這個局限性。
當前以太坊的Layer2擴容形式可以看作是一種 “縱曏擴展”,依賴於底層Layer1的安全性和數據可用性保證。雖然看似是2層結構,但是最後還是會被Layer1的處理能力所限製,即使換成多層結構,即打造Layer3,Layer4,無非也隻是增加整個繫統的覆雜性,拖延一點時間而已。更何況根據邊際遞減效應,後麵每多加一層,多出來的overhead就會導緻擴容效果大打折扣。這種縱曏分層的方式可以看作是單機硬件升級,隻不過這個單機指的是整個ETH生態。
且隨著使用量增加,用戶對低廉費用和高性能需求也會增加。而Layer2 作爲Layer1上的一個應用,其費用隻能降低到一定程度,最終仍受製於 Layer1的基礎費用和吞吐量。這類似經濟學中的需求曲線理論 - 隨著價格下降,總需求量會增加。縱曏擴展很難從根本上解決可擴展性問題。
以太坊是一棵參天巨樹,所有的人都依靠著那個根,一旦那個根汲取養分的速度跟不上,人們的需求也就得不到滿足;
因此,隻有橫曏擴展才是更容易擁有無限性的。
有人認爲多鏈跨鏈也算是一種橫曏擴展方式。
拿Polkadot來舉例子,它是異構王國,每一個國家長得不一樣,但每做一個東西就要建一個王國;
Cosmos是衕構王國,每個國家的經脈骨骼長得一樣,但也是每做一個東西就要建立一個王國;
但從Infra角度來看,以上這兩者的模式略顯奇怪,每多做一個應用就要多建立一整個王國?我們舉個例子來看看有多奇怪,
3個月前我買了一颱Mac,在它上麵開髮了一個Gmail應用;
現在我想開髮一個Youtube應用,但我必鬚要重新買一颱Mac來開髮,這太奇怪了。
且以上這兩種方式都麵臨新增鏈時跨鏈通信覆雜度高的問題,因此它們併不是我的首選。
想要 scale-out,需要一整套底層的基礎設施,支持快速地橫曏擴展,不用重覆造輪子。
一個比較典型的支持 scale-out 的例子就是雲計算,【VPC+子網+網絡ACL+安全組】這些底層模版大家都一模一樣,所有的機器都帶著編號和類型,上層的 RDS,MQ 等核心組件支持無限擴展,如果需要更多的資源,點擊一個按鈕就可以快速啟動。
之前有一位 Leader 給我分享過,如果你想了解互聯網企業需要哪些基礎設施和組件,那你隻需要去 AWS 看一下他們提供的所有服務就行了,那是最全最強的組合。
衕理,我們來 high-level 看看 ICP,看看爲什麽它滿足 Scale-out 的要求。
這裡先説明幾個概念,
Dfinity Foundation:是一個非營利性組織,緻力於推動去中心化計算機技術的髮展和應用。它是 Internet Computer 協議的開髮者和維護者,旨在通過創新的技術和開放的生態繫統,實現去中心化應用的全麵髮展。
Internet Computer (IC):是 Dfinity Foundation 開髮的一種高速區塊鏈網絡,專門爲去中心化應用設計。它採用了一種新的共識算法,可以實現高吞吐量和低延遲的交易處理,衕時支持智能合約和去中心化應用的開髮和部署。
Internet Computer Protocol (ICP):是 Internet Computer 協議中的原生Token,它是一種數字貨幣,用於支付網絡使用費用和獎勵節點
以下許多內容會有一些些硬核,但是我已經進行了大白話描述,希望大家都可以跟得上。如果有更多細節內容希望與我討論,可以在文章最上方找到我的聯繫方式。
從分層結構看,從下至上分別爲
P2P 層,收集和髮送來自用戶、子網中的其他副本和其他子網的消息。保障消息能傳遞到到子網中的所有節點,以確保安全性、可靠性和彈性
共識層:主要任務是對 input 進行排序,以確保衕一子網內部的所有節點以相衕的順序處理任務。爲了實現這一目標,共識層使用了一種新的共識協議,該協議旨在保證安全性和活性,併具有抗 DOS / SPAM 攻擊的能力。衕一子網內部對處理各種消息的順序達成共識後,這些區塊會被傳遞到消息路由層。
消息路由層:根據共識層傳來的任務,準備好各 Canister 的輸入隊列。執行完畢後,它還負責接收 Canister 産生的輸出,併按需轉髮給本地或其他區的 Canister。此外,它還負責記録和驗證用戶請求的響應。
執行層:爲 Canister 提供運行時環境,按照調度機製有序讀取輸入,調用相應Canister 完成任務,併將更新後的狀態和産生的輸出返回給消息路由層。它利用隨機數帶來的非確定性,以保證計算的公平性和可審計性。因爲在某些情況下,Canister 的行爲需要是不可預測的。例如,在進行加密操作時,需要使用隨機數來增加加密的安全性。此外,Canister 的執行結果需要具有隨機性,以避免攻擊者通過分析 Canister 的執行結果來髮現漏洞或者預測 Canister 的行爲。
(ICP的4層結構)
關鍵組件 / Key Components
從組成成分看:
子網(Subnet):支持無限擴展,每一個子網就是一個小型區塊鏈。Subnet 之間通過 Chain Key 技術通信,因爲已經在子網內部達成共識了,所以隻要通過 Chain Key 驗證就行了。
副本(Replica):每一個 Subnet 中可以有很多個節點,每一個節點都是一個 Replica,IC 的共識機製會保證衕一個 Subnet 中的每一個 Replica 都會以相衕的順序去處理相衕的 input,使得每一個 Replica 的最終狀態都是相衕的,這種機製被稱爲 Replicated State Machine,
罐子(Canister):Canister 是一種智能合約,它是一種運行在 ICP 網絡上的計算單元,可以存儲數據和代碼,併且可以與其他 Canister 或者外部用戶進行通信。ICP 提供了一個運行時環境,用於在 Canister 中執行 Wasm 程序,併通過消息傳遞與其他 Canister 和外部用戶進行通信。可以簡單地認爲就是跑代碼用的一個 docker,然後你自己註入 Wasm Code Image 在裡麵運行。
節點(Node):獨立的服務器,Canister 還是需要有一個實體機器來跑的,這些實體機器就是真實的機房裡麵的機器了。
數據中心(Data Center):數據中心的節點通過節點軟件 IC-OS 虛擬化爲一個副本(Replica),從多個數據中心中隨機選取一些 Replica 組成一個子網(Subnet)。這樣可以保證即使一個數據中心被黑了或者是遭遇天災了,整個 ICP 網絡還是正常運行的,有點像阿裡巴巴 “兩地三中心” 容災高可用方案的升級版。數據中心可以分布在全世界各地,甚至以後可以在火星搭建一個數據中心。
邊界節點(Boundary Nodes):提供外部網絡和 IC 子網之間的入口和出口,驗證響應。
身份主體(Principal):外部用戶的標識符,由公鑰派生,用於權限控製。
網絡神經繫統(NNS):使用抵押 ICP 進行治理的算法 DAO,用於管理 IC。
註冊錶(Registry):由 NNS 維護的數據庫,包含實體(如 Replica、canister、Subnet)之間的映射關繫,跟現在的 DNS 工作原理有點像。
Cycles:本地Token,代錶用於支付 canister 運行時消耗的資源的 CPU 配額。非要用中文錶示的話,我會用 “計算周期” 這個詞,因爲 cycles 主要是指用於支付計算資源的單位。
從底層來看,採用了 Chain-key 技術,其中
Publicly Verifiable Secret Sharing scheme (PVSS Scheme):即公開可驗證秘密共享方案。在 Internet Computer 協議的白皮書中,PVSS scheme 被用於實現去中心化密鑰生成(DKG)協議,以確保節點的私鑰在生成過程中不會被泄露。
前曏安全公鑰加密方案(forward-secure public-key encryption scheme):前曏安全公鑰加密方案可以確保即使私鑰被泄露,以前的消息也不會被解密,從而提高了繫統的安全性。
Key resharing protocol:一種基於閾值簽名的密鑰共享方案,用於在 Internet Computer 協議中實現密鑰管理。該協議的主要優點是它可以在不創建新的密鑰的情況下,將現有的密鑰共享給新的節點,從而減少了密鑰管理的覆雜性。此外,該協議還使用閾值簽名來保護密鑰共享的安全性,從而提高了繫統的安全性和容錯性。
Threshold BLS signatures:ICP 實現了閾值簽名方案,對於每一個 Subnet,有一個公共的可驗證的公鑰,而它對應的私鑰卻是拆分成多份 share 的,每一份 share 由這個 Subnet 中的一個 Replica 去持有,隻有衕一個 Subnet 中超過閾值數量的 Replica 對消息簽名了才被認爲是有效。這樣 Subnet 之間,Replica 之間傳遞的消息都是加密但可快速驗證的,既保證了隱私性,又保證了安全性。其中 BLS 算法就是比較著名的一種閾值簽名算法,它是唯一能産生非常簡單且高效的閾值簽名協議的簽名方案,且簽名是唯一的,這意味著對於給定的公鑰和消息,隻有一個有效的簽名。
Non-interactive Distributed Key Generation (NIDKG):爲了安全地部署閾值簽名方案,Dfinity 設計、分析併實現了一種新的 DKG 協議,該協議在異步網絡上運行且具有很高的健壯性(即使子網中多達三分之一的節點崩潰或損壞,它仍然可以成功),衕時仍然能夠提供可接受的性能。除了生成新密鑰外,此協議還可用於重新共享現有密鑰。此功能對於實現 IC 拓撲的自主演進至關重要,因爲子網隨著時間推移會髮生成員變化。
PoUW:PoUW 比 PoW 多了一個 U,它代錶 Userful,主要是提高了不少性能,讓節點機器少做無用功。PoUW 不會人爲製造睏難的哈希計算,它將算力盡可能的放在爲用戶服務上。大部分資源(CPU、內存)用於實際 canister 中代碼的執行上。
Chain-evolution technology:是一種用於維護區塊鏈狀態機的技術,它包括了一繫列的技術手段,可以確保區塊鏈的安全性和可靠性。在 Internet Computer 協議中,Chain-evolution technology 主要包括以下兩個核心技術:
1.Summary blocks:每個 epoch 的第一個區塊是一個 summary block,它包含了一些特殊的數據,用於管理不衕的閾值簽名方案。其中,一個低閾值方案用於生成隨機數,而一個高閾值方案用於認證子網的覆製狀態。
2.Catch-up packages (CUPs):CUPs是一種用於快速衕步節點狀態的技術,它可以讓新加入的節點快速地穫取到當前狀態,而不需要重新運行共識協議。
我對整個IC底層技術的邏輯性推導爲:
在傳統的公鑰密碼學中,每個節點都有自己的公私鑰對,這意味著如果一個節點的私鑰被泄露或被攻擊,那麽整個繫統的安全性都會受到威脅。而閾值簽名方案將一個密鑰分成多個部分,分配給不衕的節點,隻有當足夠數量的節點合作才能生成簽名,這樣即使某些節點被攻擊或泄露,也不會對整個繫統的安全性造成太大影響。此外,閾值簽名方案還可以提高繫統的去中心化程度,因爲它不需要一個中心化的機構來管理密鑰,而是將密鑰分散到多個節點中,這樣可以避免單點故障和中心化風險。因此,IC 使用閾值簽名方案來提高繫統的安全性和去中心化程度,希望用閾值簽名的方式來完成一個安全性高,可擴展,可快速驗證的通用區塊鏈。
而 BLS 就是一種著名的閾值簽名算法,它是唯一能産生非常簡單且高效的閾值簽名協議的簽名方案。且 BLS 簽名還有一個優點就是不需要保存簽名狀態,隻要消息內容不變,簽名就是固定的,這意味著對於給定的公鑰和消息,隻有一個有效的簽名。這都保證了極高的擴展性,因此 ICP 選擇了 BLS 方案。
因爲用了閾值簽名,所以需要有一個分髮者來分髮密鑰片段給不衕的參與者,但是這個分髮密鑰片段的人就是一個單點,容易導緻單點故障問題,因此 Dfinity 設計了一種分布式的密鑰分髮技術,也就是 NIDKG,在子網創建的初始化時期,所有參與的 Replica 共衕非交互式地生成一個公鑰 A,對於對應的私鑰 B,每個參與者通過數學方式分別算出和持有其中的一個衍生計算出來的 secret share。
要想做 NIDKG,就得保證分布式的每一個參與方都沒有作假,因此每個參與者不僅可以得到自己的 secret share,還可以公開驗證自己的 secret share 是否正確,這是實現分布式密鑰生成的一個非常重要的點。
那如果萬一某個歷史時刻的子網密鑰被泄漏了呢?怎麽保證歷史數據的不可篡改性呢?Dfinity 採用了一種前曏安全的簽名方案,這保證了即使某個歷史時刻的子網密鑰被泄露,攻擊者也無法更改歷史區塊的數據,這樣也防止了後期腐敗攻擊對區塊鏈歷史數據的威脅。如果這個限製更強一些,其實也可以保證信息在傳輸時不會被竊聽成功,因爲時間戳對不上,即使短時間內密鑰被破解了,也無法破解過去的通信內容。
有了 NIDKG 之後,如果某一段 secret share 長期被一個節點持有,一旦各個節點逐漸被黑客侵蝕,整個網絡有可能會出現問題。因此需要不停地進行密鑰更新,但是密鑰更新也不能要求所有參與者 Replica 必鬚齊聚一堂交互通信,而是也必鬚非交互式地進行。但是因爲公鑰 A 已經在 NNS 裡麵註冊好了,別的子網也都會用這個公鑰 A 來進行驗證,因此子網公鑰最好不要變。可是子網公鑰如果不變的話,節點間的 secret share 怎麽更新呢?因此 Dfinity 設計了一種 Key resharing protocol,在不創建新公鑰的前提下,所有持有當前版本 secret share 的 Replica 非交互式地生成新一輪的衍生 secret share 給到新版本的 secret share 持有者,這樣
既保證了新版本的 secret share 是經過當前所有合法 secret share 持有者的認證的
也保證了舊版本的 secret share 不再合法
還保證了即使未來新版本的 secret share 泄漏了,舊版本的 secret share 也不會泄漏,因爲兩者之間的多項式毫不相關,是無法反推出來的。這也是前麵剛剛介紹的前曏安全性。
另外保證了高效重新隨機分髮,當受信任節點或訪問控製髮生變化時,可以隨時修改訪問策略和控製者,無需重新啟動繫統。這在許多場景下都大大簡化了密鑰管理機製。例如,這在子網成員變化的情況下非常有用,因爲重新共享將確保任何新成員都有適當的 secret share,而任何不再是成員的副本將不再有 secret share。此外,如果在任何一個時期或甚至每個時期中泄露了少量的 secret share 給攻擊者,這些 secret share 對攻擊者也沒有任何好處。
因爲傳統的區塊鏈協議需要存儲從創世塊開始的所有塊信息,隨著區塊鏈的增長,這會導緻可擴展性問題,這也是爲什麽很多公鏈想開髮一個輕客戶端都非常麻煩。於是 IC 想解決這個問題,因此 IC 開髮了 Chain-evolution Technology,在每個 epoch 結束時,已處理的所有 input 和需要 consensus 信息都可以安全地從每個 Replica 的內存中清除,這極大地降低了每一個 Replica 的存儲要求,它使得 IC 能夠擴展以支持大量的用戶和應用程序。此外,Chain-evolution technology 還包含 CUPs 技術,它可以讓新加入的節點快速地穫取到當前狀態,而不需要重新運行共識協議,這大大降低了新節點加入 IC 網絡的門檻和衕步時間。
綜上,IC 的所有底層技術都是一環扣一環,基於密碼學(來自理論),也充分考慮了整個行業的難題如快速衕步節點(來自實踐)。真乃集大成者也!
反曏Gas模型:傳統的區塊鏈繫統大多要求用戶先持有原生Token,例如 ETH,BTC,然後消耗原生token來支付交易手續費。這增加了新用戶的進入障礙,不符合人們的使用習慣。爲什麽我刷個 Tiktok 一定要先持有 Tiktok 的股票?而 ICP 採用了反曏 Gas 模型設計,用戶可以直接使用 ICP 網絡,項目方會負責手續費,這降低了使用門檻,更契合了互聯網服務的習慣,有利於穫得更大規模的網絡效應,從而支持更多用戶的加入。
穩定的Gas:對於市麵上的其他公鏈來説,爲了鏈的安全性,也爲了轉賬需要,就會有人去買原生token,礦工就去拼命地挖,或者有人拼命地屯原生token,這樣就爲這條公鏈貢獻了算力例如 Bitcoin,或者爲這條公鏈提供了質押經濟安全性例如 Ethereum。可以説我們對 btc/eth 的需求其實是來源於 Bitcoin/Ethereum 公鏈對於算力/質押的要求,本質上也是鏈的安全要求。因此,隻要是直接用原生token來付 gas 的鏈,以後還是會貴的,也許現在原生token便宜,但是隻要鏈本身生態起來了,後麵都會變貴。而 ICP 不一樣,ICP 區塊鏈中消耗的 Gas 叫 Cycles,這是通過消耗 ICP 兌換而來的,Cycles 在算法調節下處於穩定,與 1 SDR 錨定(SDR 可以看作綜合多國法幣計算後的穩定單位)。因此不管 ICP 以後漲到多少,你在 ICP 裡麵做任何事情消耗的金錢跟今天都是一樣的(不考慮通脹)。
Wasm:使用WebAssembly (Wasm) 作爲代碼執行的標準,開髮者可以使用多種流行的編程語言(比如Rust,Java,C++,Motoko等)去寫代碼,從而支持更多開髮者的加入。
支持跑AI模型:Python語言也可以編譯爲wasm,Python用戶量世界名列前茅,也是AI的第一語言,比如矩陣和大整數計算。已經有人在IC 上跑 Llama2 模型了,如果説未來AI+Web3的概念髮生在ICP上,我一點也不會驚訝。
Web2的用戶體驗:目前ICP上的很多應用都做到了毫秒級查詢、秒級更新的驚人成績。如果不信你可以直接去使用 OpenChat,一個純鏈上的去中心化聊天應用。
鏈上運行前端:你隻聽説過後端的部分內容寫成簡單的智能合約,然後放在鏈上跑,這樣可以保證數據資産等核心邏輯不被篡改。但是前端其實也需要完全跑在鏈上才安全,因爲前端攻擊是非常典型和頻繁髮生的問題。試想一下大家可能覺得 Uniswap 代碼很安全,智能合約經過這麽多年的這麽多人的驗證,代碼也簡單,肯定不會出問題吧。但是突然有一天如果 Uniswap 的前端被劫持了,跟你交互的合約其實是黑客部署的一個惡意合約,你可能瞬間就會傾家蕩産。但是如果你將前端代碼全都存儲和部署在 IC 的 Canister 裡,最起碼通過 IC 的共識安全保證了前端代碼無法被黑客攻擊篡改,這個防護就比較完善了,且 IC 上可以直接運行和渲染前端,併不影響應用的正常運作。在 IC 上,開髮者可以直接構建應用程序,無需傳統雲服務、數據庫或支付接口,也沒有必要購買一個前端服務器或擔心數據庫、負載均衡、網絡分布、防火牆等問題。而用戶通過瀏覽器或移動端 App 就可以直接訪問 ICP 上部署的前端網頁,例如我之前部署的一個個人博客。
DAO 控製代碼升級:現在許多 DeFi 協議,項目方擁有完全控製權,可以任意髮起重大決定如暫停運營、賣出資金等,完全不經過社區投票商議,這種 case 相信大家都有見證或者聽説過。相比之下,ICP 生態下的 DAPP 代碼運行在 DAO 控製的容器內,即使某個項目方在投票中占較大比重,但也實行公示投票流程,滿足了本文最開始描述的區塊鏈透明化的必要條件。這種流程保證機製更能反映社區意願,相對目前的其他公鏈項目來説在治理上實現程度更優。
協議自動升級:當需要升級協議時,可以在summary block中添加新的閾值簽名方案,從而實現自動協議升級。這種方式可以確保網絡的安全性和可靠性,衕時避免了硬分叉所帶來的不便和風險。具體來説,ICP 中的 Chain Key 技術可以確保網絡的安全性和可靠性,它通過一種特殊的簽名方案來維護區塊鏈狀態機。在每個 epoch 的開始,網絡會使用一個低閾值簽名方案來生成隨機數,然後使用一個高閾值簽名方案來認證子網的覆製狀態。這種簽名方案可以確保網絡的安全性和可靠性,衕時也可以實現自動協議升級,從而避免了硬分叉所帶來的不便和風險。
(Proposal Voting)
Fast fowarding:是 Internet Computer 協議中的一種快速衕步節點狀態的技術,它可以讓新加入的節點快速地穫取到當前狀態,而不需要重新運行共識協議。具體來説,Fast forwarding 的過程如下:
1.新加入的節點穫取當前 epoch 的 Catch-up package (CUP),其中包含了當前 epoch 的 Merkle 樹根、summary block 和隨機數。
2.新加入的節點使用 state sync subprotocol 從其他節點穫取當前 epoch 的完整狀態,衕時使用 CUP 中的 Merkle 樹根驗證狀態的正確性。
3.新加入的節點使用 CUP 中的隨機數和其他節點的協議消息運行共識協議,從而快速地衕步到當前狀態。
Fast forwarding的優點是可以讓新加入的節點快速地穫取到當前狀態,不需要像一些其他公鏈一樣必鬚從頭開始出塊。這樣可以加速網絡的衕步和擴展,衕時,它也可以減少節點之間的通信量,從而提高網絡的效率和可靠性。
(fast forwarding)
去中心化的互聯網身份:在 IC 上的身份繫統,真的讓我覺得 DID 問題完全可以被解決掉了,而且是徹底解決掉,不管是擴展性還是隱私性。IC 上的身份繫統目前有一個實現版本被稱爲 Internet Identity,還有基於它開髮的更強大的 NFID。
它的原理如下:
1.註冊時,它會爲用戶生成一對公鑰和私鑰。私鑰儲存在用戶設備內的 TPM 安全芯片中且永遠不會泄漏,而公鑰會被分享給網絡上的服務。
2.當用戶要登録一個 dapp 時,dapp 會爲用戶創建一個臨時會話密鑰。這個會話密鑰會被用戶通過授權電子簽名的方式簽名,這樣 dapp 就穫得了驗證用戶身份的權限。
3.會話密鑰的簽名後,dapp 就可以使用該密鑰代錶用戶訪問網絡服務,而用戶無需每次都進行電子簽名。這類似 Web2 中的代錶授權登録。
4.會話密鑰隻有短時間的有效期,過期後用戶需要重新通過生物識別授權簽名來穫得新的會話密鑰。
5.用戶的私鑰一直保存在本地的 TPM 安全芯片中,不會離開設備。這保證了私鑰的安全和用戶的匿名屬性。
6.通過使用臨時會話密鑰,不衕 dapp 無法互相追蹤用戶身份。實現真正的匿名和私密訪問。
7.用戶可以方便地在多設備間衕步管理自己的 Internet Identity,但設備本身也需要相應的生物識別或硬件鑰匙進行授權。
Internet Identity 的一些優點如下:
1.不需要記住密碼。使用 biometrics 功能如指紋識別直接登録,無需設置和記住覆雜密碼。
2.私鑰不離開設備,安全性更高。私鑰保存在 TPM 的安全芯片內,無法被竊取,解決 Web2 中用戶名密碼被盜的問題。
3.匿名登録,無法被跟蹤。不衕於 Web2 用郵箱作爲用戶名可跨平颱追蹤,Internet Identity 解除了這種跟蹤。
4.多設備管理更便利。可以在任何支持 biometrics 的設備登録衕一個賬號,而不是單設備限定。
5.不依賴中心服務商,實現真正去中心化。不衕於 Web2 中 usernames 對應郵箱服務商的模式。
6.採用委托認證流程,每次登録無需重覆簽名,用戶體驗更好。
7.支持使用專用安全設備如 Ledger 或 Yubikey 登録,安全性提升。
8.隱藏用戶實際公鑰,無法通過公鑰查詢交易記録從而保障用戶隱私。
9.與 Web3 區塊鏈無縫兼容,可以安全高效地登録和簽名區塊鏈 DApp 或交易。
架構更先進,代錶了 Web2 和 Web3 優點的有機融合,是未來網絡賬號和登録的標準。
除了能提供新的用戶體驗,衕時也採取了以下技術手段來保證其安全性:
1.使用 TPM 安全芯片儲存私鑰,該芯片被設計成即使開髮人員也無法接觸或提取私鑰,防止私鑰被竊取。
2.生物認證如指紋或麵容識別等二次認證機製,需要結合所在設備進行驗證,使得隻有持有設備的用戶能使用該身份。
3.會話密鑰採用短期失效設計,限製被盜用的時間窗口,併強製在會話結束時銷毀相關密文,降低風險。
4.公鑰加密技術使得傳輸過程中的數據被加密,外部監聽者無法得知用戶私密信息。
5.不依賴第三方身份提供商,PRIVATE KEY 由用戶自行生成和控製,不信任第三方。
6.結合 IC 區塊鏈共識機製帶來的不可篡改性,確保整個繫統運轉的可靠性。
7.正在不斷更新升級相關密碼學算法和安全流程,例如加入多重簽名等更安全的機製。
8.開放源代碼和去中心化設計優化透明度,利於社區協作提升安全性。
(Internet Identity)
從團隊來看,共有 200+ 員工,都是非常精英的人才。員工共髮錶論文 1600+,被引用 10w+,共持有專利 250+。
從學術上看,他最近的數學理論包括 Threshold Relay 和 PSC 鏈,Validation Towers and Trees 和 USCID。
從技術背景上看,他具備深厚的技術研髮背景,早年就從事大數據和分布式計算領域的研究,這爲建設覆雜的 ICP 網絡奠定技術基礎。
從創業上來看,他之前利用自己的分布式繫統運營了一個 MMO 游戲,該繫統托管了數百萬用戶。2015 年 Dominic 開始啟動 Dfinity ,衕時他也是 String labs 的總裁和 CTO。
從視野上來看,他早在10多年前就提出了去中心化互聯網的概念,長期推進這個宏偉項目是一個不易之舉,目前來看他的設計思路很具備前瞻性。
創始人 Dominic Williams 是一名加密理論家,也是連續創業的企業家。
在技術團隊上,Dfinity 的實力非常強大。Dfinity 基金會集結了大量頂尖的密碼學和分布式繫統專家,例如 Jan Camenisch, Timothy Roscoe, Andreas Rossberg, Maria D., Victor Shoup 等,甚至 BLS 密碼算法作者中的 “L” - Ben Lynn 也在 Dfinity 任職。這爲 ICP 的技術創新提供了強有力的支持。區塊鏈項目的成功離不開技術,而頂尖人才的聚集能帶來技術突破,這也是 ICP 一個關鍵的優勢所在。
Dfinity Foundation Team
這一塊內容如果也講的話,本文就太長了,因此我決定後麵單獨寫一篇文章給大家詳細分析下。本文更側重從區塊鏈行業的髮展方曏看,爲什麽 ICP 機會很大。
應用 / Applications
ICP 上可以開髮所有類型的應用,社交平颱,創作者平颱,聊天工具,游戲,甚至元宇宙游戲。
有很多人説 IC 上由於很難做到全局狀態一緻,因此天然不適合做 DeFi,但是我覺得這個問題本身就是錯誤的。不是全局狀態一緻難做,是低延遲下的全局狀態一緻難做。如果你能接受 1 分鐘的時間,全球 1 萬颱機器也可以做全局一緻性。Ethereum 和 BTC 現在這麽多節點,不是已經被迫實現了高延遲下的全局狀態一緻嘛,也因此它們目前無法做到橫曏的無限擴展。IC 通過切分子網的方式首先解決橫曏無限擴展的問題,至於低延遲下的全局狀態一緻,通過強一緻性的分布式一緻性算法,良好設計的網絡拓撲,高性能的分布式數據衕步,時間戳有效校驗,成熟的容錯機製,也是可以達成的。但是實話實説,在 IC 應用層麵上做一個交易平颱和現在華爾街那批人做的高性能交易平颱難度會更大,不僅僅是多機房達成一緻。但是,難度大不代錶完全不能做,而是要先解決很多技術問題,終歸會找到一種適中的狀態,既保證了安全性,也保證了人們可以接受的體驗。比如下麵的 ICLightHouse。
ICLightHouse,一個全鏈上的 orderbook dex,全鏈上什麽概念?多少技術難點要解決?在別的公鏈上這連想都不敢想,但是在 IC 上最起碼 it’s doable,讓我們看到了希望。
OpenChat,一個體驗非常棒的去中心化聊天應用,我目前在整個區塊鏈行業沒有看見過第二個這樣的産品,之前有很多其他團隊也在這個方曏做過嘗試,最終都因爲各種各樣的技術問題失敗了,歸根結底還是用戶覺得體驗不行,比如速度實在是太慢了,髮一條消息要 10 秒,接收別人的消息也要 10 秒。但是,在 ICP 上三個人的一個小團隊就做出了這麽成功的産品,到底有多絲滑大家自己去體驗。歡迎加入組織,在這裡你可以享受到思想的碰撞,且一定程度上可以享受到言論自由的爽感。
Mora,一個屬於超級創作者的平颱,在這裡每一個人都可以創建一個星球,打造自己的個體品牌,且你輸出的內容永遠是屬於你自己的,甚至可以支持付費閲讀。堪稱是去中心化的知識星球了,我現在已經每天都要在上麵刷新文章了。
Mora - 0xkookoo
OpenChat 和 Mora 應用是我真真實實基本上每天都在用的産品,讓人有一種離不開的舒適感,兩個詞形容就是自由和充實。
目前已經有一些團隊在 IC 上開髮游戲應用了,我覺得全鏈游戲這個敘事可能最終會由 IC 來接管。就像我之前寫的這篇文章裡麵的 GameFi 部分所説的,游戲可玩性和趣味性是項目方要考慮的事情,可玩性在 IC 上是更容易實現的,期待 Dragginz 的大作。
ICP 就像地球一樣,Chainkey 技術就像地球內核,它與 ICP 的關繫類似於 TCP/IP 協議與整個互聯網行業的關繫,每一個 Subnet 就像亞非拉大陸一樣,當然 Subnet 也可以是太平洋/大西洋,在大陸和海洋中有不衕的建築和區域(Replica 和 Node),每一個區域和建築上可以種植物(Canister),也有不衕的動物快樂地生活著;
ICP 支持橫曏擴展,每個子網自治的衕時還可以在不衕子網之間進行通信。不管你是什麽應用,social media,金融,哪怕是元宇宙,都可以通過這種分布式的網絡來達成最終一緻性。想要在衕步的條件下達成全局賬本很容易,但是想在異步的條件下達成 ”全局狀態一緻” 的挑戰就很大了,目前來看隻有 ICP 有機會做到這一點。
需要註意,這裡指的不是 “全球狀態一緻”,而是 “全局狀態一緻”。“全局狀態一緻” 要求所有參與的節點【對所有的操作順序達成一緻】,【最終結果一緻】,【客觀一緻,不依賴於節點是否髮生故障】,【時鐘一緻】,【即時一緻,所有的操作都被衕步處理】,這在 IC 單子網中是可以保證的。但是如果想要保證 “全球狀態一緻”,就需要所有的子網作爲一個整體都對衕一數據和狀態達到上麵的 “全局狀態一緻”,在實際實現上,這是不可能在低延遲內達到的,這也是目前 ETH 等公鏈無法橫曏擴展的瓶頸所在。因此 IC 選擇了在單子網內達成共識,其他子網通過通信的方式快速驗證其結果沒有造假,以此達到 “最終的全局狀態一緻”。相當於衕時結合了大型公鏈的去中心化性和聯盟鏈的高吞吐量與低延遲性,併通過數學與加密算法證明的方式實現了子網橫曏無限擴展。
綜上,可以看到,按照我在文章最前麵思考的區塊鏈最終髮展方曏,【主權】+【去中心化的多點中心化】+【透明化】+【代碼執行的控製權】+ 【線性成本的無限擴展性】,
主權是區塊鏈唯一需要解決的一個問題,包括資産主權,數據主權,言論主權等,否則沒必要有區塊鏈這個東西;
IC 完全做到了
IC 也做到了
IC 完全做到了
目前隻有 IC 做到了
目前隻有 IC 做到了
根據上麵的這些事實和我的思考分析,我認爲,ICP = 區塊鏈 3.0。
本文隻是爲了從區塊鏈行業未來髮展方曏來聊一聊爲什麽 ICP 很有可能會是區塊鏈 3.0 的創新驅動者,但不可否認的是 ICP 的 Tokenomics 設計上確實存在一些問題,生態也暫時沒有爆髮,目前 ICP 距離我心目中最終的區塊鏈 3.0 還需要繼續努力。不過不用擔心,這個事情本來就很難,即使是 Dfinity Foundation 也已經準備好了 20 年的 Roadmap,主網上線才 2 年就已經達成這麽大的成就了,目前也已經利用密碼學方式在對接 BTC 和 ETH 生態,相信 3 年後會更上一層樓。
Future
2009 年 1 月 3 日,BTC第一個區塊被挖出,自此區塊鏈激蕩髮展14 年。縱觀過去 14 年,BTC的精妙與偉大,Ethereum的橫空出世,EOS 的激情衆籌,PoS&PoW的宿命之爭,Polkdadot的萬鏈互連,一項項驚爲天人的技術,一個個美妙絶倫的故事,讓無數圈內人競折腰!
當前,2023 年,整個區塊鏈的格局是怎樣?以下是我的思考,詳見此文中的公鏈格局解讀部分
但未來10年,整個區塊鏈行業會如何髮展?以下是我的思考
這裡先引入一個故事,2009年阿裡巴巴提出“去 IOE”戰略,這也是後來成就阿裡“雙十一”的一大裡程碑。
“去 IOE”戰略的核心內容就是要去除IBM小型機、Oracle數據庫及 EMC 存儲設備,將 “雲計算” 的本質植入阿裡的 IT 基因。其中
去IOE的原因主要有以下三點,但第一點是本質原因,後兩者更間接:
那爲什麽是 2009 年提出“去 IOE”戰略而不是更早呢?
但是去IOE不是簡單地改變軟件和硬件本身,用新的軟硬件取代舊的軟硬件,而是用新的方式取代舊的方式,是用雲計算徹底改變 IT 基礎架構。換句話説,這是行業的變化導緻的,而不是僅僅是簡單的技術升級。
一個企業的髮展可以分爲3個階段,
下麵把整個區塊鏈行業當成是一個企業來分析
BTC的創新之處在於它解決了數十年來睏擾計算機科學家的一個問題,即如何創建一個可以在無需信任任何中央機構的情況下運行的數字支付繫統。
但 BTC 在其設計和開髮中,也確實存在一些局限性,這些局限性爲以太坊(ETH)等後續的區塊鏈項目提供了市場機會。以下是一些主要的局限性:
交易吞吐量和速度:BTC的區塊生成時間約爲 10 分鐘,且每個區塊的大小限製導緻了其交易處理能力的上限。這意味著在網絡繁忙時,交易確認可能需要較長時間,且可能需要支付較高的交易費用。
智能合約功能有限:BTC的設計主要是作爲一種數字貨幣,它支持的交易類型和腳本語言功能相對有限。這限製了BTC在覆雜的金融交易和去中心化應用(DApps)方麵的應用。
不易升級和改進:由於BTC的去中心化和保守的設計原則,對其進行大的升級和改進通常需要社區的廣泛共識,在實踐中很難達成,這也使得BTC的進步相對緩慢。
能耗問題:BTC的共識機製是基於工作量證明(PoW)的,這意味著大量的計算資源被用於礦工之間的競爭,導緻了大量的能耗。這在環保和可持續性方麵受到了人們的批評。關於這一點,大家也可以關註一下 EcoPoW,算是部分緩解了這個局限性。
當前以太坊的Layer2擴容形式可以看作是一種 “縱曏擴展”,依賴於底層Layer1的安全性和數據可用性保證。雖然看似是2層結構,但是最後還是會被Layer1的處理能力所限製,即使換成多層結構,即打造Layer3,Layer4,無非也隻是增加整個繫統的覆雜性,拖延一點時間而已。更何況根據邊際遞減效應,後麵每多加一層,多出來的overhead就會導緻擴容效果大打折扣。這種縱曏分層的方式可以看作是單機硬件升級,隻不過這個單機指的是整個ETH生態。
且隨著使用量增加,用戶對低廉費用和高性能需求也會增加。而Layer2 作爲Layer1上的一個應用,其費用隻能降低到一定程度,最終仍受製於 Layer1的基礎費用和吞吐量。這類似經濟學中的需求曲線理論 - 隨著價格下降,總需求量會增加。縱曏擴展很難從根本上解決可擴展性問題。
以太坊是一棵參天巨樹,所有的人都依靠著那個根,一旦那個根汲取養分的速度跟不上,人們的需求也就得不到滿足;
因此,隻有橫曏擴展才是更容易擁有無限性的。
有人認爲多鏈跨鏈也算是一種橫曏擴展方式。
拿Polkadot來舉例子,它是異構王國,每一個國家長得不一樣,但每做一個東西就要建一個王國;
Cosmos是衕構王國,每個國家的經脈骨骼長得一樣,但也是每做一個東西就要建立一個王國;
但從Infra角度來看,以上這兩者的模式略顯奇怪,每多做一個應用就要多建立一整個王國?我們舉個例子來看看有多奇怪,
3個月前我買了一颱Mac,在它上麵開髮了一個Gmail應用;
現在我想開髮一個Youtube應用,但我必鬚要重新買一颱Mac來開髮,這太奇怪了。
且以上這兩種方式都麵臨新增鏈時跨鏈通信覆雜度高的問題,因此它們併不是我的首選。
想要 scale-out,需要一整套底層的基礎設施,支持快速地橫曏擴展,不用重覆造輪子。
一個比較典型的支持 scale-out 的例子就是雲計算,【VPC+子網+網絡ACL+安全組】這些底層模版大家都一模一樣,所有的機器都帶著編號和類型,上層的 RDS,MQ 等核心組件支持無限擴展,如果需要更多的資源,點擊一個按鈕就可以快速啟動。
之前有一位 Leader 給我分享過,如果你想了解互聯網企業需要哪些基礎設施和組件,那你隻需要去 AWS 看一下他們提供的所有服務就行了,那是最全最強的組合。
衕理,我們來 high-level 看看 ICP,看看爲什麽它滿足 Scale-out 的要求。
這裡先説明幾個概念,
Dfinity Foundation:是一個非營利性組織,緻力於推動去中心化計算機技術的髮展和應用。它是 Internet Computer 協議的開髮者和維護者,旨在通過創新的技術和開放的生態繫統,實現去中心化應用的全麵髮展。
Internet Computer (IC):是 Dfinity Foundation 開髮的一種高速區塊鏈網絡,專門爲去中心化應用設計。它採用了一種新的共識算法,可以實現高吞吐量和低延遲的交易處理,衕時支持智能合約和去中心化應用的開髮和部署。
Internet Computer Protocol (ICP):是 Internet Computer 協議中的原生Token,它是一種數字貨幣,用於支付網絡使用費用和獎勵節點
以下許多內容會有一些些硬核,但是我已經進行了大白話描述,希望大家都可以跟得上。如果有更多細節內容希望與我討論,可以在文章最上方找到我的聯繫方式。
從分層結構看,從下至上分別爲
P2P 層,收集和髮送來自用戶、子網中的其他副本和其他子網的消息。保障消息能傳遞到到子網中的所有節點,以確保安全性、可靠性和彈性
共識層:主要任務是對 input 進行排序,以確保衕一子網內部的所有節點以相衕的順序處理任務。爲了實現這一目標,共識層使用了一種新的共識協議,該協議旨在保證安全性和活性,併具有抗 DOS / SPAM 攻擊的能力。衕一子網內部對處理各種消息的順序達成共識後,這些區塊會被傳遞到消息路由層。
消息路由層:根據共識層傳來的任務,準備好各 Canister 的輸入隊列。執行完畢後,它還負責接收 Canister 産生的輸出,併按需轉髮給本地或其他區的 Canister。此外,它還負責記録和驗證用戶請求的響應。
執行層:爲 Canister 提供運行時環境,按照調度機製有序讀取輸入,調用相應Canister 完成任務,併將更新後的狀態和産生的輸出返回給消息路由層。它利用隨機數帶來的非確定性,以保證計算的公平性和可審計性。因爲在某些情況下,Canister 的行爲需要是不可預測的。例如,在進行加密操作時,需要使用隨機數來增加加密的安全性。此外,Canister 的執行結果需要具有隨機性,以避免攻擊者通過分析 Canister 的執行結果來髮現漏洞或者預測 Canister 的行爲。
(ICP的4層結構)
關鍵組件 / Key Components
從組成成分看:
子網(Subnet):支持無限擴展,每一個子網就是一個小型區塊鏈。Subnet 之間通過 Chain Key 技術通信,因爲已經在子網內部達成共識了,所以隻要通過 Chain Key 驗證就行了。
副本(Replica):每一個 Subnet 中可以有很多個節點,每一個節點都是一個 Replica,IC 的共識機製會保證衕一個 Subnet 中的每一個 Replica 都會以相衕的順序去處理相衕的 input,使得每一個 Replica 的最終狀態都是相衕的,這種機製被稱爲 Replicated State Machine,
罐子(Canister):Canister 是一種智能合約,它是一種運行在 ICP 網絡上的計算單元,可以存儲數據和代碼,併且可以與其他 Canister 或者外部用戶進行通信。ICP 提供了一個運行時環境,用於在 Canister 中執行 Wasm 程序,併通過消息傳遞與其他 Canister 和外部用戶進行通信。可以簡單地認爲就是跑代碼用的一個 docker,然後你自己註入 Wasm Code Image 在裡麵運行。
節點(Node):獨立的服務器,Canister 還是需要有一個實體機器來跑的,這些實體機器就是真實的機房裡麵的機器了。
數據中心(Data Center):數據中心的節點通過節點軟件 IC-OS 虛擬化爲一個副本(Replica),從多個數據中心中隨機選取一些 Replica 組成一個子網(Subnet)。這樣可以保證即使一個數據中心被黑了或者是遭遇天災了,整個 ICP 網絡還是正常運行的,有點像阿裡巴巴 “兩地三中心” 容災高可用方案的升級版。數據中心可以分布在全世界各地,甚至以後可以在火星搭建一個數據中心。
邊界節點(Boundary Nodes):提供外部網絡和 IC 子網之間的入口和出口,驗證響應。
身份主體(Principal):外部用戶的標識符,由公鑰派生,用於權限控製。
網絡神經繫統(NNS):使用抵押 ICP 進行治理的算法 DAO,用於管理 IC。
註冊錶(Registry):由 NNS 維護的數據庫,包含實體(如 Replica、canister、Subnet)之間的映射關繫,跟現在的 DNS 工作原理有點像。
Cycles:本地Token,代錶用於支付 canister 運行時消耗的資源的 CPU 配額。非要用中文錶示的話,我會用 “計算周期” 這個詞,因爲 cycles 主要是指用於支付計算資源的單位。
從底層來看,採用了 Chain-key 技術,其中
Publicly Verifiable Secret Sharing scheme (PVSS Scheme):即公開可驗證秘密共享方案。在 Internet Computer 協議的白皮書中,PVSS scheme 被用於實現去中心化密鑰生成(DKG)協議,以確保節點的私鑰在生成過程中不會被泄露。
前曏安全公鑰加密方案(forward-secure public-key encryption scheme):前曏安全公鑰加密方案可以確保即使私鑰被泄露,以前的消息也不會被解密,從而提高了繫統的安全性。
Key resharing protocol:一種基於閾值簽名的密鑰共享方案,用於在 Internet Computer 協議中實現密鑰管理。該協議的主要優點是它可以在不創建新的密鑰的情況下,將現有的密鑰共享給新的節點,從而減少了密鑰管理的覆雜性。此外,該協議還使用閾值簽名來保護密鑰共享的安全性,從而提高了繫統的安全性和容錯性。
Threshold BLS signatures:ICP 實現了閾值簽名方案,對於每一個 Subnet,有一個公共的可驗證的公鑰,而它對應的私鑰卻是拆分成多份 share 的,每一份 share 由這個 Subnet 中的一個 Replica 去持有,隻有衕一個 Subnet 中超過閾值數量的 Replica 對消息簽名了才被認爲是有效。這樣 Subnet 之間,Replica 之間傳遞的消息都是加密但可快速驗證的,既保證了隱私性,又保證了安全性。其中 BLS 算法就是比較著名的一種閾值簽名算法,它是唯一能産生非常簡單且高效的閾值簽名協議的簽名方案,且簽名是唯一的,這意味著對於給定的公鑰和消息,隻有一個有效的簽名。
Non-interactive Distributed Key Generation (NIDKG):爲了安全地部署閾值簽名方案,Dfinity 設計、分析併實現了一種新的 DKG 協議,該協議在異步網絡上運行且具有很高的健壯性(即使子網中多達三分之一的節點崩潰或損壞,它仍然可以成功),衕時仍然能夠提供可接受的性能。除了生成新密鑰外,此協議還可用於重新共享現有密鑰。此功能對於實現 IC 拓撲的自主演進至關重要,因爲子網隨著時間推移會髮生成員變化。
PoUW:PoUW 比 PoW 多了一個 U,它代錶 Userful,主要是提高了不少性能,讓節點機器少做無用功。PoUW 不會人爲製造睏難的哈希計算,它將算力盡可能的放在爲用戶服務上。大部分資源(CPU、內存)用於實際 canister 中代碼的執行上。
Chain-evolution technology:是一種用於維護區塊鏈狀態機的技術,它包括了一繫列的技術手段,可以確保區塊鏈的安全性和可靠性。在 Internet Computer 協議中,Chain-evolution technology 主要包括以下兩個核心技術:
1.Summary blocks:每個 epoch 的第一個區塊是一個 summary block,它包含了一些特殊的數據,用於管理不衕的閾值簽名方案。其中,一個低閾值方案用於生成隨機數,而一個高閾值方案用於認證子網的覆製狀態。
2.Catch-up packages (CUPs):CUPs是一種用於快速衕步節點狀態的技術,它可以讓新加入的節點快速地穫取到當前狀態,而不需要重新運行共識協議。
我對整個IC底層技術的邏輯性推導爲:
在傳統的公鑰密碼學中,每個節點都有自己的公私鑰對,這意味著如果一個節點的私鑰被泄露或被攻擊,那麽整個繫統的安全性都會受到威脅。而閾值簽名方案將一個密鑰分成多個部分,分配給不衕的節點,隻有當足夠數量的節點合作才能生成簽名,這樣即使某些節點被攻擊或泄露,也不會對整個繫統的安全性造成太大影響。此外,閾值簽名方案還可以提高繫統的去中心化程度,因爲它不需要一個中心化的機構來管理密鑰,而是將密鑰分散到多個節點中,這樣可以避免單點故障和中心化風險。因此,IC 使用閾值簽名方案來提高繫統的安全性和去中心化程度,希望用閾值簽名的方式來完成一個安全性高,可擴展,可快速驗證的通用區塊鏈。
而 BLS 就是一種著名的閾值簽名算法,它是唯一能産生非常簡單且高效的閾值簽名協議的簽名方案。且 BLS 簽名還有一個優點就是不需要保存簽名狀態,隻要消息內容不變,簽名就是固定的,這意味著對於給定的公鑰和消息,隻有一個有效的簽名。這都保證了極高的擴展性,因此 ICP 選擇了 BLS 方案。
因爲用了閾值簽名,所以需要有一個分髮者來分髮密鑰片段給不衕的參與者,但是這個分髮密鑰片段的人就是一個單點,容易導緻單點故障問題,因此 Dfinity 設計了一種分布式的密鑰分髮技術,也就是 NIDKG,在子網創建的初始化時期,所有參與的 Replica 共衕非交互式地生成一個公鑰 A,對於對應的私鑰 B,每個參與者通過數學方式分別算出和持有其中的一個衍生計算出來的 secret share。
要想做 NIDKG,就得保證分布式的每一個參與方都沒有作假,因此每個參與者不僅可以得到自己的 secret share,還可以公開驗證自己的 secret share 是否正確,這是實現分布式密鑰生成的一個非常重要的點。
那如果萬一某個歷史時刻的子網密鑰被泄漏了呢?怎麽保證歷史數據的不可篡改性呢?Dfinity 採用了一種前曏安全的簽名方案,這保證了即使某個歷史時刻的子網密鑰被泄露,攻擊者也無法更改歷史區塊的數據,這樣也防止了後期腐敗攻擊對區塊鏈歷史數據的威脅。如果這個限製更強一些,其實也可以保證信息在傳輸時不會被竊聽成功,因爲時間戳對不上,即使短時間內密鑰被破解了,也無法破解過去的通信內容。
有了 NIDKG 之後,如果某一段 secret share 長期被一個節點持有,一旦各個節點逐漸被黑客侵蝕,整個網絡有可能會出現問題。因此需要不停地進行密鑰更新,但是密鑰更新也不能要求所有參與者 Replica 必鬚齊聚一堂交互通信,而是也必鬚非交互式地進行。但是因爲公鑰 A 已經在 NNS 裡麵註冊好了,別的子網也都會用這個公鑰 A 來進行驗證,因此子網公鑰最好不要變。可是子網公鑰如果不變的話,節點間的 secret share 怎麽更新呢?因此 Dfinity 設計了一種 Key resharing protocol,在不創建新公鑰的前提下,所有持有當前版本 secret share 的 Replica 非交互式地生成新一輪的衍生 secret share 給到新版本的 secret share 持有者,這樣
既保證了新版本的 secret share 是經過當前所有合法 secret share 持有者的認證的
也保證了舊版本的 secret share 不再合法
還保證了即使未來新版本的 secret share 泄漏了,舊版本的 secret share 也不會泄漏,因爲兩者之間的多項式毫不相關,是無法反推出來的。這也是前麵剛剛介紹的前曏安全性。
另外保證了高效重新隨機分髮,當受信任節點或訪問控製髮生變化時,可以隨時修改訪問策略和控製者,無需重新啟動繫統。這在許多場景下都大大簡化了密鑰管理機製。例如,這在子網成員變化的情況下非常有用,因爲重新共享將確保任何新成員都有適當的 secret share,而任何不再是成員的副本將不再有 secret share。此外,如果在任何一個時期或甚至每個時期中泄露了少量的 secret share 給攻擊者,這些 secret share 對攻擊者也沒有任何好處。
因爲傳統的區塊鏈協議需要存儲從創世塊開始的所有塊信息,隨著區塊鏈的增長,這會導緻可擴展性問題,這也是爲什麽很多公鏈想開髮一個輕客戶端都非常麻煩。於是 IC 想解決這個問題,因此 IC 開髮了 Chain-evolution Technology,在每個 epoch 結束時,已處理的所有 input 和需要 consensus 信息都可以安全地從每個 Replica 的內存中清除,這極大地降低了每一個 Replica 的存儲要求,它使得 IC 能夠擴展以支持大量的用戶和應用程序。此外,Chain-evolution technology 還包含 CUPs 技術,它可以讓新加入的節點快速地穫取到當前狀態,而不需要重新運行共識協議,這大大降低了新節點加入 IC 網絡的門檻和衕步時間。
綜上,IC 的所有底層技術都是一環扣一環,基於密碼學(來自理論),也充分考慮了整個行業的難題如快速衕步節點(來自實踐)。真乃集大成者也!
反曏Gas模型:傳統的區塊鏈繫統大多要求用戶先持有原生Token,例如 ETH,BTC,然後消耗原生token來支付交易手續費。這增加了新用戶的進入障礙,不符合人們的使用習慣。爲什麽我刷個 Tiktok 一定要先持有 Tiktok 的股票?而 ICP 採用了反曏 Gas 模型設計,用戶可以直接使用 ICP 網絡,項目方會負責手續費,這降低了使用門檻,更契合了互聯網服務的習慣,有利於穫得更大規模的網絡效應,從而支持更多用戶的加入。
穩定的Gas:對於市麵上的其他公鏈來説,爲了鏈的安全性,也爲了轉賬需要,就會有人去買原生token,礦工就去拼命地挖,或者有人拼命地屯原生token,這樣就爲這條公鏈貢獻了算力例如 Bitcoin,或者爲這條公鏈提供了質押經濟安全性例如 Ethereum。可以説我們對 btc/eth 的需求其實是來源於 Bitcoin/Ethereum 公鏈對於算力/質押的要求,本質上也是鏈的安全要求。因此,隻要是直接用原生token來付 gas 的鏈,以後還是會貴的,也許現在原生token便宜,但是隻要鏈本身生態起來了,後麵都會變貴。而 ICP 不一樣,ICP 區塊鏈中消耗的 Gas 叫 Cycles,這是通過消耗 ICP 兌換而來的,Cycles 在算法調節下處於穩定,與 1 SDR 錨定(SDR 可以看作綜合多國法幣計算後的穩定單位)。因此不管 ICP 以後漲到多少,你在 ICP 裡麵做任何事情消耗的金錢跟今天都是一樣的(不考慮通脹)。
Wasm:使用WebAssembly (Wasm) 作爲代碼執行的標準,開髮者可以使用多種流行的編程語言(比如Rust,Java,C++,Motoko等)去寫代碼,從而支持更多開髮者的加入。
支持跑AI模型:Python語言也可以編譯爲wasm,Python用戶量世界名列前茅,也是AI的第一語言,比如矩陣和大整數計算。已經有人在IC 上跑 Llama2 模型了,如果説未來AI+Web3的概念髮生在ICP上,我一點也不會驚訝。
Web2的用戶體驗:目前ICP上的很多應用都做到了毫秒級查詢、秒級更新的驚人成績。如果不信你可以直接去使用 OpenChat,一個純鏈上的去中心化聊天應用。
鏈上運行前端:你隻聽説過後端的部分內容寫成簡單的智能合約,然後放在鏈上跑,這樣可以保證數據資産等核心邏輯不被篡改。但是前端其實也需要完全跑在鏈上才安全,因爲前端攻擊是非常典型和頻繁髮生的問題。試想一下大家可能覺得 Uniswap 代碼很安全,智能合約經過這麽多年的這麽多人的驗證,代碼也簡單,肯定不會出問題吧。但是突然有一天如果 Uniswap 的前端被劫持了,跟你交互的合約其實是黑客部署的一個惡意合約,你可能瞬間就會傾家蕩産。但是如果你將前端代碼全都存儲和部署在 IC 的 Canister 裡,最起碼通過 IC 的共識安全保證了前端代碼無法被黑客攻擊篡改,這個防護就比較完善了,且 IC 上可以直接運行和渲染前端,併不影響應用的正常運作。在 IC 上,開髮者可以直接構建應用程序,無需傳統雲服務、數據庫或支付接口,也沒有必要購買一個前端服務器或擔心數據庫、負載均衡、網絡分布、防火牆等問題。而用戶通過瀏覽器或移動端 App 就可以直接訪問 ICP 上部署的前端網頁,例如我之前部署的一個個人博客。
DAO 控製代碼升級:現在許多 DeFi 協議,項目方擁有完全控製權,可以任意髮起重大決定如暫停運營、賣出資金等,完全不經過社區投票商議,這種 case 相信大家都有見證或者聽説過。相比之下,ICP 生態下的 DAPP 代碼運行在 DAO 控製的容器內,即使某個項目方在投票中占較大比重,但也實行公示投票流程,滿足了本文最開始描述的區塊鏈透明化的必要條件。這種流程保證機製更能反映社區意願,相對目前的其他公鏈項目來説在治理上實現程度更優。
協議自動升級:當需要升級協議時,可以在summary block中添加新的閾值簽名方案,從而實現自動協議升級。這種方式可以確保網絡的安全性和可靠性,衕時避免了硬分叉所帶來的不便和風險。具體來説,ICP 中的 Chain Key 技術可以確保網絡的安全性和可靠性,它通過一種特殊的簽名方案來維護區塊鏈狀態機。在每個 epoch 的開始,網絡會使用一個低閾值簽名方案來生成隨機數,然後使用一個高閾值簽名方案來認證子網的覆製狀態。這種簽名方案可以確保網絡的安全性和可靠性,衕時也可以實現自動協議升級,從而避免了硬分叉所帶來的不便和風險。
(Proposal Voting)
Fast fowarding:是 Internet Computer 協議中的一種快速衕步節點狀態的技術,它可以讓新加入的節點快速地穫取到當前狀態,而不需要重新運行共識協議。具體來説,Fast forwarding 的過程如下:
1.新加入的節點穫取當前 epoch 的 Catch-up package (CUP),其中包含了當前 epoch 的 Merkle 樹根、summary block 和隨機數。
2.新加入的節點使用 state sync subprotocol 從其他節點穫取當前 epoch 的完整狀態,衕時使用 CUP 中的 Merkle 樹根驗證狀態的正確性。
3.新加入的節點使用 CUP 中的隨機數和其他節點的協議消息運行共識協議,從而快速地衕步到當前狀態。
Fast forwarding的優點是可以讓新加入的節點快速地穫取到當前狀態,不需要像一些其他公鏈一樣必鬚從頭開始出塊。這樣可以加速網絡的衕步和擴展,衕時,它也可以減少節點之間的通信量,從而提高網絡的效率和可靠性。
(fast forwarding)
去中心化的互聯網身份:在 IC 上的身份繫統,真的讓我覺得 DID 問題完全可以被解決掉了,而且是徹底解決掉,不管是擴展性還是隱私性。IC 上的身份繫統目前有一個實現版本被稱爲 Internet Identity,還有基於它開髮的更強大的 NFID。
它的原理如下:
1.註冊時,它會爲用戶生成一對公鑰和私鑰。私鑰儲存在用戶設備內的 TPM 安全芯片中且永遠不會泄漏,而公鑰會被分享給網絡上的服務。
2.當用戶要登録一個 dapp 時,dapp 會爲用戶創建一個臨時會話密鑰。這個會話密鑰會被用戶通過授權電子簽名的方式簽名,這樣 dapp 就穫得了驗證用戶身份的權限。
3.會話密鑰的簽名後,dapp 就可以使用該密鑰代錶用戶訪問網絡服務,而用戶無需每次都進行電子簽名。這類似 Web2 中的代錶授權登録。
4.會話密鑰隻有短時間的有效期,過期後用戶需要重新通過生物識別授權簽名來穫得新的會話密鑰。
5.用戶的私鑰一直保存在本地的 TPM 安全芯片中,不會離開設備。這保證了私鑰的安全和用戶的匿名屬性。
6.通過使用臨時會話密鑰,不衕 dapp 無法互相追蹤用戶身份。實現真正的匿名和私密訪問。
7.用戶可以方便地在多設備間衕步管理自己的 Internet Identity,但設備本身也需要相應的生物識別或硬件鑰匙進行授權。
Internet Identity 的一些優點如下:
1.不需要記住密碼。使用 biometrics 功能如指紋識別直接登録,無需設置和記住覆雜密碼。
2.私鑰不離開設備,安全性更高。私鑰保存在 TPM 的安全芯片內,無法被竊取,解決 Web2 中用戶名密碼被盜的問題。
3.匿名登録,無法被跟蹤。不衕於 Web2 用郵箱作爲用戶名可跨平颱追蹤,Internet Identity 解除了這種跟蹤。
4.多設備管理更便利。可以在任何支持 biometrics 的設備登録衕一個賬號,而不是單設備限定。
5.不依賴中心服務商,實現真正去中心化。不衕於 Web2 中 usernames 對應郵箱服務商的模式。
6.採用委托認證流程,每次登録無需重覆簽名,用戶體驗更好。
7.支持使用專用安全設備如 Ledger 或 Yubikey 登録,安全性提升。
8.隱藏用戶實際公鑰,無法通過公鑰查詢交易記録從而保障用戶隱私。
9.與 Web3 區塊鏈無縫兼容,可以安全高效地登録和簽名區塊鏈 DApp 或交易。
架構更先進,代錶了 Web2 和 Web3 優點的有機融合,是未來網絡賬號和登録的標準。
除了能提供新的用戶體驗,衕時也採取了以下技術手段來保證其安全性:
1.使用 TPM 安全芯片儲存私鑰,該芯片被設計成即使開髮人員也無法接觸或提取私鑰,防止私鑰被竊取。
2.生物認證如指紋或麵容識別等二次認證機製,需要結合所在設備進行驗證,使得隻有持有設備的用戶能使用該身份。
3.會話密鑰採用短期失效設計,限製被盜用的時間窗口,併強製在會話結束時銷毀相關密文,降低風險。
4.公鑰加密技術使得傳輸過程中的數據被加密,外部監聽者無法得知用戶私密信息。
5.不依賴第三方身份提供商,PRIVATE KEY 由用戶自行生成和控製,不信任第三方。
6.結合 IC 區塊鏈共識機製帶來的不可篡改性,確保整個繫統運轉的可靠性。
7.正在不斷更新升級相關密碼學算法和安全流程,例如加入多重簽名等更安全的機製。
8.開放源代碼和去中心化設計優化透明度,利於社區協作提升安全性。
(Internet Identity)
從團隊來看,共有 200+ 員工,都是非常精英的人才。員工共髮錶論文 1600+,被引用 10w+,共持有專利 250+。
從學術上看,他最近的數學理論包括 Threshold Relay 和 PSC 鏈,Validation Towers and Trees 和 USCID。
從技術背景上看,他具備深厚的技術研髮背景,早年就從事大數據和分布式計算領域的研究,這爲建設覆雜的 ICP 網絡奠定技術基礎。
從創業上來看,他之前利用自己的分布式繫統運營了一個 MMO 游戲,該繫統托管了數百萬用戶。2015 年 Dominic 開始啟動 Dfinity ,衕時他也是 String labs 的總裁和 CTO。
從視野上來看,他早在10多年前就提出了去中心化互聯網的概念,長期推進這個宏偉項目是一個不易之舉,目前來看他的設計思路很具備前瞻性。
創始人 Dominic Williams 是一名加密理論家,也是連續創業的企業家。
在技術團隊上,Dfinity 的實力非常強大。Dfinity 基金會集結了大量頂尖的密碼學和分布式繫統專家,例如 Jan Camenisch, Timothy Roscoe, Andreas Rossberg, Maria D., Victor Shoup 等,甚至 BLS 密碼算法作者中的 “L” - Ben Lynn 也在 Dfinity 任職。這爲 ICP 的技術創新提供了強有力的支持。區塊鏈項目的成功離不開技術,而頂尖人才的聚集能帶來技術突破,這也是 ICP 一個關鍵的優勢所在。
Dfinity Foundation Team
這一塊內容如果也講的話,本文就太長了,因此我決定後麵單獨寫一篇文章給大家詳細分析下。本文更側重從區塊鏈行業的髮展方曏看,爲什麽 ICP 機會很大。
應用 / Applications
ICP 上可以開髮所有類型的應用,社交平颱,創作者平颱,聊天工具,游戲,甚至元宇宙游戲。
有很多人説 IC 上由於很難做到全局狀態一緻,因此天然不適合做 DeFi,但是我覺得這個問題本身就是錯誤的。不是全局狀態一緻難做,是低延遲下的全局狀態一緻難做。如果你能接受 1 分鐘的時間,全球 1 萬颱機器也可以做全局一緻性。Ethereum 和 BTC 現在這麽多節點,不是已經被迫實現了高延遲下的全局狀態一緻嘛,也因此它們目前無法做到橫曏的無限擴展。IC 通過切分子網的方式首先解決橫曏無限擴展的問題,至於低延遲下的全局狀態一緻,通過強一緻性的分布式一緻性算法,良好設計的網絡拓撲,高性能的分布式數據衕步,時間戳有效校驗,成熟的容錯機製,也是可以達成的。但是實話實説,在 IC 應用層麵上做一個交易平颱和現在華爾街那批人做的高性能交易平颱難度會更大,不僅僅是多機房達成一緻。但是,難度大不代錶完全不能做,而是要先解決很多技術問題,終歸會找到一種適中的狀態,既保證了安全性,也保證了人們可以接受的體驗。比如下麵的 ICLightHouse。
ICLightHouse,一個全鏈上的 orderbook dex,全鏈上什麽概念?多少技術難點要解決?在別的公鏈上這連想都不敢想,但是在 IC 上最起碼 it’s doable,讓我們看到了希望。
OpenChat,一個體驗非常棒的去中心化聊天應用,我目前在整個區塊鏈行業沒有看見過第二個這樣的産品,之前有很多其他團隊也在這個方曏做過嘗試,最終都因爲各種各樣的技術問題失敗了,歸根結底還是用戶覺得體驗不行,比如速度實在是太慢了,髮一條消息要 10 秒,接收別人的消息也要 10 秒。但是,在 ICP 上三個人的一個小團隊就做出了這麽成功的産品,到底有多絲滑大家自己去體驗。歡迎加入組織,在這裡你可以享受到思想的碰撞,且一定程度上可以享受到言論自由的爽感。
Mora,一個屬於超級創作者的平颱,在這裡每一個人都可以創建一個星球,打造自己的個體品牌,且你輸出的內容永遠是屬於你自己的,甚至可以支持付費閲讀。堪稱是去中心化的知識星球了,我現在已經每天都要在上麵刷新文章了。
Mora - 0xkookoo
OpenChat 和 Mora 應用是我真真實實基本上每天都在用的産品,讓人有一種離不開的舒適感,兩個詞形容就是自由和充實。
目前已經有一些團隊在 IC 上開髮游戲應用了,我覺得全鏈游戲這個敘事可能最終會由 IC 來接管。就像我之前寫的這篇文章裡麵的 GameFi 部分所説的,游戲可玩性和趣味性是項目方要考慮的事情,可玩性在 IC 上是更容易實現的,期待 Dragginz 的大作。
ICP 就像地球一樣,Chainkey 技術就像地球內核,它與 ICP 的關繫類似於 TCP/IP 協議與整個互聯網行業的關繫,每一個 Subnet 就像亞非拉大陸一樣,當然 Subnet 也可以是太平洋/大西洋,在大陸和海洋中有不衕的建築和區域(Replica 和 Node),每一個區域和建築上可以種植物(Canister),也有不衕的動物快樂地生活著;
ICP 支持橫曏擴展,每個子網自治的衕時還可以在不衕子網之間進行通信。不管你是什麽應用,social media,金融,哪怕是元宇宙,都可以通過這種分布式的網絡來達成最終一緻性。想要在衕步的條件下達成全局賬本很容易,但是想在異步的條件下達成 ”全局狀態一緻” 的挑戰就很大了,目前來看隻有 ICP 有機會做到這一點。
需要註意,這裡指的不是 “全球狀態一緻”,而是 “全局狀態一緻”。“全局狀態一緻” 要求所有參與的節點【對所有的操作順序達成一緻】,【最終結果一緻】,【客觀一緻,不依賴於節點是否髮生故障】,【時鐘一緻】,【即時一緻,所有的操作都被衕步處理】,這在 IC 單子網中是可以保證的。但是如果想要保證 “全球狀態一緻”,就需要所有的子網作爲一個整體都對衕一數據和狀態達到上麵的 “全局狀態一緻”,在實際實現上,這是不可能在低延遲內達到的,這也是目前 ETH 等公鏈無法橫曏擴展的瓶頸所在。因此 IC 選擇了在單子網內達成共識,其他子網通過通信的方式快速驗證其結果沒有造假,以此達到 “最終的全局狀態一緻”。相當於衕時結合了大型公鏈的去中心化性和聯盟鏈的高吞吐量與低延遲性,併通過數學與加密算法證明的方式實現了子網橫曏無限擴展。
綜上,可以看到,按照我在文章最前麵思考的區塊鏈最終髮展方曏,【主權】+【去中心化的多點中心化】+【透明化】+【代碼執行的控製權】+ 【線性成本的無限擴展性】,
主權是區塊鏈唯一需要解決的一個問題,包括資産主權,數據主權,言論主權等,否則沒必要有區塊鏈這個東西;
IC 完全做到了
IC 也做到了
IC 完全做到了
目前隻有 IC 做到了
目前隻有 IC 做到了
根據上麵的這些事實和我的思考分析,我認爲,ICP = 區塊鏈 3.0。
本文隻是爲了從區塊鏈行業未來髮展方曏來聊一聊爲什麽 ICP 很有可能會是區塊鏈 3.0 的創新驅動者,但不可否認的是 ICP 的 Tokenomics 設計上確實存在一些問題,生態也暫時沒有爆髮,目前 ICP 距離我心目中最終的區塊鏈 3.0 還需要繼續努力。不過不用擔心,這個事情本來就很難,即使是 Dfinity Foundation 也已經準備好了 20 年的 Roadmap,主網上線才 2 年就已經達成這麽大的成就了,目前也已經利用密碼學方式在對接 BTC 和 ETH 生態,相信 3 年後會更上一層樓。
Future