🔥 Gate 廣場活動|#发帖赢Launchpad新币KDK 🔥
KDK|Gate Launchpad 最新一期明星代幣
以前想參與? 先質押 USDT
這次不一樣 👉 發帖就有機會直接拿 KDK!
🎁 Gate 廣場專屬福利:總獎勵 2,000 KDK 等你瓜分
🚀 Launchpad 明星項目,走勢潛力,值得期待 👀
📅 活動時間
2025/12/19 12:00 – 12/30 24:00(UTC+8)
📌 怎麼參與?
在 Gate 廣場發帖(文字、圖文、分析、觀點都行)
內容和 KDK 上線價格預測/KDK 項目看法/Gate Launchpad 機制理解相關
帖子加上任一話題:#发帖赢Launchpad新币KDK 或 #PostToWinLaunchpadKDK
🏆 獎勵設定(共 2,000 KDK)
🥇 第 1 名:400 KDK
🥈 前 5 名:200 KDK / 人(共 1,000 KDK)
🥉 前 15 名:40 KDK / 人(共 600 KDK)
📄 注意事項
內容需原創,拒絕抄襲、洗稿、灌水
獲獎者需完成 Gate 廣場身份認證
獎勵發放時間以官方公告為準
Gate 保留本次活動的最終解釋權
擅長底層技術的 DFINITY 所設想的能否真正實現Web3?
推薦:市場牛熊不定又遇上烏克蘭局勢,點擊此處加入PANews群組一起抱團取暖
原標題:潛力股公鏈DFINITY新版白皮書解讀 | 連接Web3.0時代的底層技術是什麼
作者:TinTinLand
1
導語
2022 年 2 月初,基於 DFINITY 生態開發的首個隱私郵件 DApp Dmail 獲得 Amino Capital 戰略投資。 據悉,Dmail能做到與傳統郵箱互發郵件,且相較於傳統郵箱,具有區塊鏈屬性的 Dmail 還能實現資訊的加密傳輸和郵箱名 NFT化。 這是對於 Web3.0 時代的通訊軟體預備,以「數位身份」的形式作為去中心化網站和 DApp 的入口。 筆者想提出的問題是,Dmail 為什麼選擇 Dfinity 呢?
相比於區塊鏈『半壁江山』的公鏈們,Dfinity 嶄露頭角的次數並不多。 沒有 DeFi 大火的時候展示一點火花,也沒有在“NFT”元年掙個席位。 但是從上線后,類似 Dmail 能讓人窺見 Web3.0 具體實現樣貌一角的例子並不少見。
DFINITY 於 2020 年 7 月發布了開源版本短視頻社交軟體“CanCan”,我們可以簡單地將其對標 Web2.0的抖音。 CanCan 基於 DFINITY 的程式設計語言 Motoko 打造,所有代碼數不到 1000 行。 這與抖音的、Facebook 的幾千萬行代碼相比,可以稱得上是令人驚歎。 同時 CanCan 的代碼是開源的,產品的擁有權不屬於任何中心化機構。 同年 10月1日,DFINITY公開了其治理系統和代幣經濟模型,專案估值一度達到 95 億美元,排名躍然於前五。 同年 12 月月底,完成了從銅到汞五條網路的里程碑演變。 DFINITY基金會創始人兼首席科學家 Dominic Williams 在「2020 FAT 價值時代高峰論壇暨頒獎盛典」上曾表示:互聯網計算機是區塊鏈的第三次偉大創新。
本文將解讀 DFINITY 白皮書原文,從官方說明的最底層邏輯出發,看看 DFINITY 如何能從技術出發,打破互聯網 Big tech,讓各種 Web2.0 軟體利用自治軟體和去中心化的治理實現開源商業的協同效應,從而真正實 Web3.0;同時也想通過白皮書提到的架構來看 DFINITY 所設想和構建的“世界計算機”系統的技術實現。 無區塊鏈行業經驗的讀者閱讀本文時,可能會有閱讀門檻,但也歡迎將產生的問題評論在下方,也許會得到出於意料的答案。
2
概要
縱觀區塊鏈的發展歷史和目前進程,BTC帶來了去中心化貨幣時代、ETH 代表了操作系統領域、Filecoin 代表了存儲,DFINITY 則代表了計算領域的革新和 Web3.0 的落地實現。 Internet Computer (下文簡稱IC)是主網路,是一個第一層協定,旨在開發一個去中心化的公共網路,DFINITY 是開放式的虛擬區塊鏈計算機和技術,延伸了乙太坊生態鏈到廣泛的商業應用場景中。 本文將採用白皮書官方說法「Internet Computer」來稱呼目前傳播場景下常使用的“DFINITY”鏈。 本部分主要說明一些IC涉及的技術術語,及與其他公鏈相比技術和實現上的不同,或者說技術和功能上的閃光點。 可以說IC是對於可擴充性、去中心化和安全組合的一次全新嘗試。
2.1 共識協定
從共識協定來看待IC和其他幾大公鏈,IC 採用了一個混合模型DAO控制網路(DAO-controlled network),即在擁有有許可協定的效率的同時,又能提供去中心化 PoS 協定的許多好處。 Bitcoin,Ethereum 和 Algorand 的共識協定基於區塊鏈,採用工作量證明(Proof of Work,PoW)或是權益證明機制(Proof of Stake,POS)。 儘管這些協定是完全去中心化的,但是其效率相較於有許可的協定更低。
DAO 的運行機制為:每個子網運行一個有許可的共識協定,由一個 DAO 決定哪些實體可以提供節點副本,配置網路,提供公鑰基礎設施,並且控制節點副本部署的協定版本。 IC 的 DAO 被稱為網路神經系統(NNS),基於 Pos 協定,即相關決策都由社區成員決定,社區成員的投票權由其在 NNS 中質押的 IC 原生治理代幣(ICP)數量決定。 通過這個基於PoS協議創建的治理機制,可以創建新的子網並在現有子網中增加或者移除節點副本,也可以部署軟體更新並且可以對IC進行其他調整。
從這個角度我們也能理解,為什麼 DFINITY 稱 IC 是一個交互複製狀態機(replicated state machines)的網路,因為 NNS 本身就是複製狀態機。 和其他狀態機一樣運行在特定的子網上,其成員資格由上文提及的同一套基於PoS的治理系統所決定。 同時維護一個稱為註冊表的資料庫,記錄哪些節點副本屬於哪個子網,節點副本的公鑰等等數據。 因此DAO控制網路作為去中心化的共識協定,讓IC能獲得有效的共識但同時又因為DAO的運行機制使得IC也保留了去中心化的既有優勢。
IC 的共識協定同時還採用了公鑰加密技術,比如 NNS 維護的註冊表將公鑰綁定至節點副本及子網從而形成一個整體,這被稱作為鏈鑰密碼學;對共識協定和執行複製狀態機的協定時,IC 對於通信模型也給出了設想:希望採用更為可行和穩健的異步模型(對於發送的任意消息,敵對方可以延遲其傳遞任意有限時間,因此對於傳遞消息沒有時間限制)來應對拜占庭故障。 但目前來說,沒有已知的共識模型在異步模型下是真正可行的,在下文對IC架構解讀中,本文會更加詳細說明針對這一現實情況IC的技術處理方法。
2.2 鏈鑰密碼學
上文提到過IC的共識協議也採用了公鑰加密技術—— 鏈鑰密碼學,組成鏈鑰密碼學有幾個主要部分。 鏈閜密碼學的第一個組成部分是閾值簽名:閾值簽名是一個成熟的加密技術,它允許子網擁有一個公共的驗證簽名密鑰,對應的簽名私閜分成多份分配給子網中的節點副本,而分配保證作惡節點無法偽造任何簽名,而誠實節點擁有的私閜片段可以允許子網生成符合 IC 原則和協議的簽名。
這些閾值簽名的一個關鍵應用在於:一個子網的單獨輸出可以由另一個子網或是外部使用者進行驗證,驗證可以簡單地利用改子網(第一個子網)的公共驗證簽名密閜來驗證電子簽名實現。
正如我們所看到的,這些閾值簽名在IC中還有許多其他應用。 一個應用於讓子網中的每個節點副本可 以訪問無法預測的偽隨機數位(衍生於此類閾值簽名)。 這是共識層使用的隨機信標和執行層使用的隨機磁帶的基礎。
為了安全地部署閾值簽名,IC 採用了創新性的分散式密鑰生成(以下簡稱 DKG)協定,來構建公共簽名驗證密閜,併為每個節點副本提供對應簽名私閜的一個片段,用於之前提及過的拜占庭故障和異步模型。
2.3 ICP
ICP 有以下功能:
NNS 質押,即促進網路治理。
ICP 可以用於在 NNS 中質押獲得投票權,從而參與控制 IC 網路的 DAO。 在 NNS 中質押代幣並參與 NNS 治理的使用者還會收到新鑄造的 ICP 代幣作為投票獎勵。 獎勵數量由NNS制定和執行的政策所決定。
兌換 Cycles,即作為生產動力。
ICP 用於支付IC的使用費用。 更具體來說,ICP 可以兌換成 cycles(即銷毀),這些 cycles 可以用於支付創建儲罐和儲罐所使用的資源(存儲,CPU和頻寬)費用。 ICP 兌換成cycle 的比例由 NNS 決定。
支付節點提供者,即作為獎勵給予參與者。
ICP 用於支付節點提供者——這些實體擁有和運營著計算節點,來託管構成IC的節點副本。 NNS 定期(當前每月一次)決定每個節點提供者應收到的新鑄造ICP併發放至其帳戶。 根據 NNS 制定和執行的政策,支付 ICP 的前提是節點提供者為 IC 提供可靠的服務。
2.4 NNS 的執行
如前所述,IC 的複製狀態機可以執行任意的程式。 IC 中的基本計算單元叫做儲罐,它和進程的概念大致相同,包含了程式和其狀態(隨時間變化)。 儲罐的程式用 WebAssembly (以下簡稱Wasm)進行編碼,是一種基於堆疊的虛擬機的二機制指令格式。 Wasm 是一種開源標準,儘管它最初設計是為了實現網⻚端的高性能應用,但它也非常適合用於通用計算。
IC 提供了一個運行時環境,用於儲罐內執行 Wasm 程式,並與其他儲罐和外部使用者通信(通過消息傳遞)。 雖然原則上可以用任何能編譯成 Wasm 的語言去編寫儲罐程式,但前文提及過的稱為 Motoko 的語言,它與 IC 的操作語義十分一致,支援在 IC 中使用。
Motoko 是一種強類型,基於 actor 2 的程式設計程式,內置支援正交持久性 3 和異步消息傳遞。 正交持久性意味著儲罐維護的記憶體會自動持久化(即不必寫入檔)。 Motoko 具有許多生產力和安全特性,包括自動記憶體管理,泛型,類型推斷,模式匹配,以及任意和固定精度的算術。
除了Motoko之外,IC還提供了一個消息介面定義語言和數據格式稱為Candid,用於固定類型、高級語言及跨語言互操作性。 這使得任何兩個儲罐,即使是用不同的高級語言編寫,也可以輕鬆地相互通信。 為了提供全面支援任何給定程式設計語言的儲罐開發,除了該語言的 Wasm 編譯器外,還必須提供特定的運行時支援。 當前除了Motoko之外,IC還全面支援了Rust程式設計語言的儲罐開發。
由此可見,IC 支援更安全和更具跨語言操作性的程式設計語言,這也是提升開發者在IC上創作更為有效和安全的重要因素之一。
2.5 NNS 的決策
在 DFINITY 區塊鏈網路中,BNS(區塊鏈神經系統)是網路運行的治理系統,它是區塊鏈網路中最重要的構建基塊之一,它可以自動進入系統並具有很高的許可權。 它承擔了超級節點的角色。 任何人通過在所謂的神經元(neurons)中質押ICP參與NS治理。 神經元的持有者可以提議關於IC應該如何改變的提案並投票,例如子網的拓撲結構或者協定該如何改變。 神經元的投票權利是基於PoS的。 直觀地說,質押更多ICP的神經元投票權利更大。 但是,投票權也取決於神經元的其他特徵,例如願意質押代幣更⻓時間的神經元持有人,被賦予了更大的投票權。
每一個提案有確定的投票期限。 如果投票期結束時,參與投票的簡單多數贊成該提案,並且贊成票數超過了給定的總投票權法定人數要求(現在是 3%),則該提案被採納。 否則,該提案被否決。 除此之外,任何時候只要絕對多數(超過總投票一半)贊成或反對該提案,該提案相應被採納或否決。
用更通俗的語言來說,BNS 整個治理過程分為了四個階段:創建神經元、提案、投票以及執行。
創建神經元:按照上文提及的區塊鏈神經系統允許使用者使用ICP來創建投票神經元。 任何人都可以創建一個神經元,未來可能會有數以萬計的神經元被創建出來,它們將共同表達社區的意志,通過演算法進行調解。
提案:任何運行神經元的使用者都可以進行 BNS 上的提案,BNS 會對提案進行審核,審核標準是提案的合理性和其是否提供解決辦法。 而提出提案的使用者是需要支付兩筆費用的:一是支付專業審核人員及參與投票神經元的酬勞,二是提案保證金,提案被採納后,BNS 即退還保證金至神經元,這個金額的設置能夠激勵高品質的提案。
投票:除了提案的使用者,其他使用者在投票階段也需要質押代幣至神經元並能夠選擇主動投票或者跟隨投票。 有自主判斷能力的使用者可以選擇主動投票,而跟隨投票的場景適合一些使用者無法準確判斷提案,對於超出自身認知的提案,使用者可以選擇跟隨投票,選擇跟隨信賴的神經元投票。 投票時間截止后,BNS 會搜集神經網路的結果,根據投票結果,並自動判斷提案通過與否。
執行:剛才有解讀IC共識的執行層,落實到BNS治理系統的具體執行又是怎麼樣呢?首先通過的提案執行方式分為被動執行和主動執行。 被動執行的提案主要涉及 DFINITY 上智慧合約的參數改變,如神經元的質押參數。 更新的提案參數會被動地寫入 BNS 的智慧合約資料庫中,後續執行時會直接生效。 有一種特殊情況是如果提案超出 BNS 智慧合約的控制範圍,例如涉及 BNS 規章層次,就會需要人為主動執行去覆蓋 DFINITY “代碼即法律”的部分。 舉例來說,修改系統代碼的漏洞或是凍結違反 BNS 規章的智慧合約或神經元。 主動執行過程需要通過調用添加到乙太坊虛擬機上的特殊操作碼來實現。 這一步的操作更為人性和合理,而不是目前區塊鏈世界中的“代碼即法律”“代碼即一切”。 從人性的角度覆蓋代碼無法決策的場景,能夠帶來更有效更智慧的治理,某種程度上也真正觸達到“共識”的底層意圖。
3
架構解讀
IC 協定包括了四層(如下圖),分別是P2P 層、共識層、路由層和執行層。 在這個部分,本文只對四層架構進行角色和作用的解讀,對整體架構的搭建進行分析。 如對某一層具體的技術實現想有更詳細的瞭解,請參閱 DFINITY 白皮書原文。
3.1 P2P 層
P2P 層作為互聯網計算機協定層中用於消息獲取和排序的層級,其任務是在子網的節點副本中傳遞協定消息。
協定消息包括兩種:用於實現共識的消息;外部使用者發起的輸入消息。
我們可以理解為 P2P 層基本上提供的是一個「最大努力(best effort)」廣播通道,即如果一個誠實的節點副本廣播一條消息,這條消息最終會被子網中的所有城市節點所接收。
P2P 層的設計目標如下:
有限資源。 所有的演算法都在有限的資源(記憶體,頻寬,CPU)下運轉。
優先順序。 根據特定的屬性(例如類型,大小和輪次),不同的消息將按照不同的優先順序進行排序。 並且這些優先順序的規則可能隨著時間將會改變。
高效。 高輸送量比低延遲更重要。 高輸送量也是 DFINITY 相比其他公鏈從底層更為有效的原因。
抗 DOS/SPAM。 故障節點將不會影響誠實節點副本間的相互通信。
3.2 共識層
3.2.1 共識層概述
IC 共識層的任務是對輸入消息進行排序,以確保所有的節點副本按照相同的順序處理輸入消息。 現在已有很多文獻中的協定是為了解決這一問題。 IC 採用了一種全新的共識協定,本文將用概括性的語言對其進行闡述。 任何安全的共識協議都應當確保兩個屬性,大體上就是:
安全性: 所有的節點副本都事實上同意相同的輸入順序。
活性:所有的節點副本都應當逐一更新狀態。
IC 共識層的設計目標其實很好理解:當存在個別惡意節點時,性能會柔性下降。 像許多的共識協議一樣,IC 共識協定是基於區塊鏈的。 伴隨著協議的推進,以創世區塊為根節點的區塊樹將不斷生⻓。 每一個非創世區塊都包含一個荷載(payload),由一系列輸入和父區塊的哈希組成。
誠實節點副本對這個區塊樹有一致的視⻆:儘管每個節點副本可能對這個區塊樹有不同的局部視⻆,但是所有的節點副本看到的都是這一相同的區塊樹。 此外,伴隨著協議的推進,區塊樹中總會有一條最終確認區塊的路徑。 同樣地,誠實節點副本對這一路徑有一致的視⻆:儘管每個節點副本可能對這條路徑有不同的局部視⻆,但是所有的節點副本看到的都是這一相同的路徑。 沿著這條路徑的區塊的荷載中的輸入,是已經排序好的輸入並將由IC的執行層進行處理。
共識協議依賴於電子簽名在節點副本中去驗證消息。 為實現這一點,每一個節點副本都與簽名協定的一個公共驗證密鑰相關聯。 而節點副本和公鑰之間的關聯性可以從 NNS 維護的註冊表中獲取。 這也符合上文所提及的鏈鑰密碼學在IC中的作用和角色。
3.2.2 假設
在第二部分討論過,IC 提出假設:
一個子網包含 n 個節點副本,和其中最多 f
故障節點副本可能表現出隨意、惡意(即拜占庭故障)的行為。 我們假設通信為異步且不存在先驗對節點副本間消息延遲的限制,即上文所提的異步模型。 這時消息傳遞的調度可能完全處於敵對狀態。 在此弱通信假設下,IC 共識協定可以確保安全性。 但是為確保活性,我們需要假設一定形態的部分同步,意味著網路在較短的間隔中保持週期性的同步。 在此同步間隔下,所有未遞交資訊將在時間完成遞交,即固定的時間限制δ。 時間限制δ不會被事先得知(協定會初始化合理 的邊界值但動態的調節該值,且當時間限制過小時提高限制值)。 無論網路為異步或是部分同步,我們假設誠實節點副本發送給另一個節點副本的消息最終都會遞交。
3.2.3 協定概述
像許多的共識協議一樣,IC 共識協定是基於區塊鏈的。 伴隨著協議的推進,以創世區塊(genesis block)為根節點的區塊樹(例見3.2.4)將不斷生⻓。 每一個非創世區塊都包含一個荷載(payload),由一系列輸入和父區塊的哈希組成。 誠實節點副本對這個區塊樹有一致的視⻆:儘管每個節點副本可能對這個區塊樹有不同的局部視⻆,但是所有的節點副本看到的都是這一相同的區塊樹。 此外,伴隨著協議的推進,區塊樹中總會有一條最終確認區塊的路徑。 同樣地,誠實節點副本對這一路徑有一致的視⻆;儘管每個節點副本可能對這條路徑有不同的局部視⻆,但是所有的節點副本看到的都是這一相同的路徑。 沿著這條路徑的區塊的荷載中的輸入,已經排序好由執行層進行處理,具體的執行層有在前面的部分做解讀。
3.2.4 實際例證
下圖展示了一顆區塊樹。 每一個區塊都被標記了塊高(30,31 ,32,··· ) 和區塊生成者的排位,該圖同時展示了區塊樹中的每一個區塊經過了公證,並以符號N標記。 這意味著每一個區塊樹里的經公證的區塊至少得到了n-f個不同節點副本的公證支援。 可以發現,在指定的塊高可以存在超過一個經公證的區塊。 舉例說明,在塊高 32,我們可以看到 2 個經公證的區塊,一個由排位為1的區塊生成者提議,而另一個由排位 2 的提議,同樣的事情也是發生在塊高 34。 我們也可以看到塊高 36 的區塊也明確的被最終確認,就如符號F所標識。 這意味著 n-f 不同個節點副本支援過該區塊的最終確認,意味著這些節點副本(或至少這些中誠實節點副本)不支援其它任何區塊的公證。 該區塊被灰色填充的所有祖先都被認為得到了隱性的最終確認。
3.2.5 公正性
公平是共識的基礎,因此在共識協定中另一個重要的屬性是公平性。 不同於設定一個普遍的定義,我們簡單的觀察到生⻓不變性也暗示著一個有用的公平性屬性。 回顧一下,活性不變性本質上意味著在任何一輪中,當主節點為誠實且網路為同步時,則主節點提議的區塊也將被最終確認。 在該情形發生的輪次中,誠實的主節點事實上確保它區塊的荷載中包含它所知道的所有輸入(取決於荷載大小的模組限制)。 因此,粗略的來說,任何傳播給足夠節點副本的輸入,都將大概率在合理時間內被包含入最終確認的區塊中。
3.3 路由層
如前文所述,IC 中的基本計算單元叫做儲罐。 IC提供了運行環境,使得儲罐中可以執行程式,並可以(通過消息)與其他儲罐和外部使用者通信。 共識層將輸入打包進區塊的荷載中,並隨著區塊被最紅確認,相應的荷載會被傳遞給消息路由層並由執行環境處理。 執行層將隨之更新複製狀態機中相應儲罐中的狀態,並將輸出交由消息路由層處理。
有必要區分兩種輸入類型:
入口消息:來自外部使用者的消息。
跨子網消息:來自其他子網的儲罐的消息。
我們同樣可以區分兩種輸出類型:
入口消息回應:對於入口消息的回應(可被外部用戶取回)。
跨子網消息:傳輸給其他子網儲罐的消息。
當收到來自共識的負載后,這些負載中的輸入會被置入不同的輸入佇列。 對於一個子網下的每一個儲罐 C,都存在多個輸入佇列:用於發給 C 的入口消息,用於和 C 通信的每一個別的儲罐 C’,用於 C 到 C’ 的跨子網消息。
在每一輪中,執行層都會消耗這些佇列中的一些輸入,更新相應儲罐中的複製狀態,並將輸出置於不同的佇列中。 對於一個子網下的每一個儲罐 ,都存在多個輸出佇列:對於每一個與通信的儲罐 ,都有一個用於 C 到 C’ 的跨子網消息的佇列。 消息的路由層將取得消息佇列中的消息並置入子網-到-子網的數據流,以被跨子網傳輸協定處理,該協定的工作是將這些消息實際傳輸到其他子網。
除了這些輸出佇列外,同時存在一種入口消息的歷史數據結構。 一旦一條入口消息已被儲罐處理,對該條入口消息的回應將被記錄在該數據結構中。 此刻,提供該條入口消息的外部使用者將能夠獲取相關的回應。 (注意入口歷史並不保留所有入口消息的完整歷史)。
有兩個需要提出說明的點是,第一,節點副本的狀態包括儲罐的狀態以及“系統狀態”。 “系統狀態”包括上述提及的佇列, 資料流以及入口歷史的數據結構。 因此,消息路由層和執行層同時參與更新和維護子網的副本狀態。 此狀態應全部在完全確定性的原則下被更新,這樣所有的節點都會維護完全相同的狀態。
第二點需要注意的是,共識層前於於消息路由層以及執行層,也就是說傳入荷載之前,共識區塊鏈中的任何分叉都已經被解決了。 事實上,共識層允許提前運行,並不需要和消息路由層保持完全一致的進度。
路由層的解釋和說明讓我們更清楚地瞭解到,共識協定是怎麼通過消息路由進行傳入和輸出的,同時又是怎麼和執行層產生連接,從而達到促進共識協定的協同和一致。
3.4 執行層
執行環境每次處理一條輸入,該輸入取自輸入佇列中的一個並被導向一個儲罐,取決於該條輸入以及儲罐的狀態,執行環境更新儲罐的狀態並可以額外添加消息至輸出佇列。 並且更新入口歷史(可能連同此前入口消息的回應)。 在給定輪次,執行環境將處理多條輸入。 定時管理員(scheduler)會判斷哪些輸入將在指定輪次被何種順序下執行。 我們這裡不深入討論過多 scheduler 的細節,而是突出強調一些目標:
它必須是確定性的,即僅僅取決於給定數據;
它應當公平的在儲罐間分佈工作量(但是對輸送而不是延遲進行優化)。
每輪的完成的工作數量使用 cycles 為計量單位,且應當接近一些前置判定的數量。
另一個執行環境必須處理的任務是該情形,即當某子網的一個儲罐的生產跨子網消息的速度比其他子網能夠消耗的速度更快。 針對該情況,我們實現了一種自我監管的機制用於給生產儲罐降速。 這裡存在的很多需被運行環境處理的其他資源管理以及簿記任務,但是,全部的這些任務均須被確定性的處理。
4
鏈钥密碼學
在概要中我們解釋了IC的共識協議也採用了公鑰加密技術—— 鏈鑰密碼學,組成鏈閜密碼學,組成鏈閜密碼學的一個重要部分是閾值簽名。 事實上,鏈鑰密碼學包括一系列複雜的技術,都用於隨時間推移健壯和安全地維護基於區塊鏈的複製狀態機,統稱為鏈演進技術。 每個子網在包含多輪(通常大約是幾百輪)的時期(Epoch)內運行。 鏈演技術實現了許多按 epoch 定期執行的基本維護工作:垃圾回收,快速轉發,子網成員變更,主動秘密轉發和協議升級。
對鏈演進技術的瞭解,也就是對於IC共識協定安全性的技術實現的瞭解。 鏈演進技術包含兩個基本組成部分:摘要塊(summary blocks)和追趕包(catch-up packages,以下簡稱CUPs)。
4.1 摘要塊
每個 epoch 的第一個區塊是摘要塊。 摘要塊包含特殊數據,用於管理不同閾值簽名方案的密閜片段。 其中有兩種閾值簽名方案:
閾值結構為 f + 1/n 的方案中,每個 epoch 生成新的簽名密閜;
閾值結構為 n-f/n 的方案中,每個 epoch 重新共用一次簽名密閜。
閾值低的方案用於隨機信標和隨機磁帶,而閾值高的方案用於驗證子網的複製狀態。 回想一下,DKG 協定要求,對於每個簽名密鑰,有一個 dealing 的集合,而每個節點 副本可以根據這組 dealing,非互動式得獲取它的簽名密鑰片段。 再回想一下,除了別的之外,NNS 還維護著決定子網成員的註冊表。 註冊表(以及子網成員)會隨時間改變。 因此,子網必須對在不同時間和不同目的下,對使用的註冊表版本達共識。 這一資訊也存儲在摘要塊中。
4.2 CUPs
講完了摘要塊,讓我們來看看追趕包,也就是 CUPs。 在闡述 CUP 之前,我們首先需要指出隨機信標的一個細節:每一輪的隨機信標取決於前一輪的隨機信標。 它不是 CUP 的基本特性,但是影響了 CUP 的設計。 CUP 是一種特殊的(不在區塊鏈上的)消息,擁有一個節點副本在不知道先前epoch 任何資訊下,在 epoch 的起始點工作時所需的一切。 它包含如下的數據欄位:
整個複製狀態的梅克爾哈希樹的根(與章節 1.6 中的每輪驗證的部分狀態不同)。
epoch 的摘要塊。
epoch 第一輪的隨機信標。
子網對上述欄位的(n - f)/n 的閾值簽名。
為生成給定 epoch 的 CUP,節點副本必須等到該 epoch 的摘要塊已經被最終確認,並且對應的每輪狀態經過驗證。 如前所述,整個複製狀態必須經哈希函數處理為一個默克爾樹。 儘管有很多技術用於加快這一過程,這個成本代價仍然非常大,這也是為什麼每個 epoch 僅處理一次。 因為 CUP 僅包含這個梅克爾樹的根,因此我們使用了一個狀態同步子協議,允許節點副本從對等節點中提取它所需要的任何狀態。 同樣地,我們用了很多技術來加快這一過程,它的成本代價仍然很大。 因為我們對 CUP 使用了高閾值簽名,因此可以保證在任何 epoch 只有一個有效的 CUP,而且可以從很多對等節點中提取狀態。
4.3 鏈演進技術實現
垃圾回收:因為 CUP 包含特定 epoch 的資訊,因此每個節點副本可以安全地清除該 epoch 前所有已處理的輸入,以及對這些輸入排序的共識層消息。
快速轉發:如果一個子網中的節點副本大幅落後於其同步節點(因為其宕機或是網路斷連很⻓時間),或是一個新的節點副本被添加入子網,他們可以通過快速轉發至最新 epoch 的起始點,不需要運行共識協定並處理該點之前的所有輸入。 該節點副本可以通過獲取最新 CUP 做到。 利用從 CUP 中包含的摘要塊和隨機信標,以及來自其他節點副本的(還沒有被清除的)共識消息,該節點副本可以從相應epoch 的起始點開始,向前運行共識協定。 該節點也可以使用狀態同步子協議來獲取對應 epoch 開始時的複製狀態,這樣它也可以開始處理共識層產生的輸入。
下圖描繪了快速轉發。 此處,我們假設需要一個需要追趕的節點副本處於 epoch 起始點,(比方說) 塊高為 101,有一個 CUP。 這個 CUP 包含了塊高 101 的複製狀態的默克爾樹的根,塊高 101 的摘要塊和塊高 101 的隨機信標。 該節點會使用狀態同步子協定,從它的對等節點中獲取塊高 101的所有複製狀態,並用 CUP 中的默克爾樹來驗證此狀態。 在獲取到該狀態后,節點副本可以參與到協定之中,從對 等節點中獲取塊高 102,103 等等的區塊(以及其他和共識相關的消息),並更新其複製狀態的副本。 如果其對等節點已經確認了更高高度的區塊,該節點副本將儘快處理(以及公證和最終確認)這些從對等節點獲取的已最終確認區塊(以執行層所允許的最快速度)。
5
結語
同乙太坊一樣,DFINITY 的願景也是打造“世界超級計算機”,通過前文對於其白皮書的部分解讀和技術說明。 這個願景下的IC是非常有機會去實現的。
我們從共識協定的混合模型 DAO,從快速出塊、高輸送量的技術創新,從 BNS 神經元系統及其生態治理方案,都能看出 IC 對實現其願景的技術革新和技術可行性。 與目前乙太坊代碼即法律不同的是,IC 代碼治理的基礎上加入了群眾智慧的要素,不以建立完美的代碼架構為目標,而是以系統能夠迅速調整規則為目標。 這一點不僅具有技術創造,更閃耀著人性光輝。 區塊鏈世界中,共識的建立、維護和修改不能僅僅是代碼化,其本質核心應該是人。 以人為中心的群體之間才能達成有效且公平的共識,這也是區塊鏈行業的核心,是眾多去中心化 Dapp 的吸引力所在。
本文對IC白皮書的部分內容作出引用和解讀,原文中更加詳細地描述了NS的更多細節,共識層上子網的每輪認證狀態,入口消息的查詢調用和更新調用,鏈鑰密碼學中的分散式密鑰分發、PVSS 方案、基礎協定和再共用協定等等。 對於想要更為全面和細緻瞭解IC底層技術的開發者來說,閱讀白皮書原文能夠有更詳細的解釋和說明。