人與人、人與物、物與物之間的關係,“湧現”般地從單向性、單線性的關係進化到多維度的複雜拓撲結構。從當下開始,直到可見的未來,數以百億乃至萬億計的智慧節點逐步加入並組成全球計算網路。“節點”們不同程度上掌握了充分甚至冗餘的算力與儲存,期待著與世界的連結與共識。在農業社會,人類以“觀察”獲取資料;在工業社會,人類以“測量”獲取資料;在資訊社會,海量資料遺留在網際網路上,人類以“一鍵記錄”的方式獲取資料。但資料的主權何屬?隱私何歸?價值何如?節點之間正在產生難以計量的多維度的連結,多層次地定義了萬事萬物的價值、“連結”產生了意義,決定了某一“節點”的特定狀態對其他“節點”的影響或改變,產生了新的度量衡。這一切正在並將逐步建構真正意義上的複雜網路,呈現為高度自組織的分散式體系。這一基本事實亦將逐步解構乃至瓦解傳統計算架構對於治理結構、演算法、算力與資料的壟斷,直至新一代的全數字化基礎設施橫空出世。結構決定功能。目前幾乎所有的區塊鏈技術體系都仍侷限於節點之間的“信任”與效能問題。但如果繼續沿襲這樣的思路,我們將仍然無法擺脫今天這個離散、孤立、無隱私保護的網際網路架構,我們也將仍然無法處理各類複雜問題。將複雜性還原為根本問題之後,全數字化世界的公共基礎設施可以展開為:資料的流動性、多源異構網路的自組織與可裝配的隱私保護。要實現充分的資料交換與協同計算,這一切都源於無所不在的計算。也只有依賴這一不斷進化中的基礎設施,我們才可以真正展望人工智慧可計算的未來。自萊布尼茨始,計算日益成為科學與哲學的基礎方法論,並已經在從原子世界到位元世界中呈現出統一的威力。計算是對資料和資訊的處理過程;計算是宇宙與生命存在和進化的基本方式;計算是人類認知和行為的基礎正規化。PlatON 是面向未來的下一代計算架構,她的發展與完善是一次軟硬體的協同進化過程。從生態治理、業務重構、網路運營到應用分發,無不涉及到計算複雜性與通訊複雜性的平衡與突破,承載了計算體系架構的新變革。PlatON 是一次根植於基本哲學理念的踐行,從技術層面展開為計算複雜性領域中各個分支的理論突破、演算法進化及工程實踐;從業務層面展開為全數字化世界的超級基礎設施,是對各個行業傳統業務治理和網路的拓撲重構;從社羣生態層面將會是人類集體的科學探索與智慧融合;從網路層面 PlatON 將會逐步覆蓋空天地一體,面向廣域的計算節點組網,先腳踏實地,爾後仰望星空。基於我們的信念與積累,在歷經了兩年之久的醞釀與反覆驗證之後正式推出 PlatON,我們將根據路線圖逐一實現和打磨每一個細節。PlatON 是一次對於未來計算架構的展望與實踐,是一次對於區塊鏈技術和計算複雜性領域的致敬與超越,致力於為下一個世代的分散式密碼經濟體提供共享的、運營商級的服務,更是對人類全數字化時代公共基礎設施治理服務的全面闡釋,以此擁抱撲面而來的新時代。Trustless 計算1.Trustless 計算概述在數字化世界,每天都會產生大量的資料,但任何單一實體永遠都只能掌握資料集合的區域性,而沒有任意實體可以實時獲取所有的全域性資料。這是數字化時代面臨的基本挑戰——“盲人摸象”。每個數字化世界的參與者都是“盲人”,其擁有的資料不足以反映全量資料—“大象”的特徵。合作伙伴需要透過資料交換或者協同計算來共享價值、資訊和資產。但是,不信任的合作伙伴傾向於使用“可信任第三方”來歸集計算資料,並驗證資料的有效性,可信任第三方不可避免地帶來可擴充套件性和隱私性問題。現在方興未艾的雲端計算平臺就是典型的“可信任第三方”。隨著現代密碼技術的發展,特別是區塊鏈技術的發展,提出了一項新的計算正規化,我們稱之為 Trustless 計算,意味著無需依賴第三方就可驗證計算結果的完整性。2. Trustless 計算模型2.1 基於共識的計算十年前,比特幣首次實現基於分散式賬本的密碼貨幣,在比特幣系統中,互不信任的各參與方能安全地完成交易。以太坊繼承了比特幣的共識演算法,並首次提出超越分散式賬本的智慧合約,從而實現應用程式的 Trustless 計算。然而,為了保證計算的正確性,每個計算操作都需要經過絕大多數節點的重複處理來驗證計算的正確性,導致了區塊鏈體系裡效率和可信任之間的內在矛盾。雖然以太坊被稱為大規模 Trustless 計算的世界計算機,但由於可擴充套件性差,以太坊無法滿足實際的分散式商業應用。此外,缺乏隱私保護還限制了區塊鏈用於處理私有資料,阻礙了分散式應用的進一步發展。目前已經有幾百萬箇中心化應用執行在雲端計算平臺上,同樣大規模 Trustless 計算也是所有去中心化應用的基礎設施。有超過一百個專案致力於開發新的共識協議,為分散式應用程式開發可擴充套件的區塊鏈,以便應用快速安全地執行,但這個方向被證明是極其複雜和極具挑戰性的。在基於共識的計算方案中,存在以下三個主要的共同問題。2.1.1 驗證者的兩難困境(The Verifier’s Dilemma)新加坡大學的研究者在《Demystifying Incentives in the Consensus Computer》這篇文章中首次提出驗證者兩難的概念。由於驗證者兩難困境 [The Verifier’s Dilemma] 問題,複雜的計算會破壞網路的完整性,並引發惡意攻擊。區塊鏈系統會對出塊的礦工給予獎勵,而驗證者則沒有任何收益。這對簡單合約來說可以執行得非常好,因為驗證者所付出的算力很有限。但是如果涉及到比較複雜的智慧合約,驗證者可能會花費大量的資源卻沒有任何獎勵。結果是,許多礦工會跳過驗證過程,保留他們有限的計算資源用於下一個更合適的區塊,從而開啟了通往嚴重安全漏洞的大門。因驗證者兩難導致的一種典型攻擊是:惡意礦工為了獲得挖礦的優勢,會發起一系列計算密集型交易到網路中,耗盡其他礦工的計算資源。驗證者兩難的另一個副作用是礦工會接受無效的交易而不去執行正規的驗證流程,因而犧牲網路的完整性。2.1.2 可擴充套件性的三元悖論(The Scalability Trilemma)“三元悖論”[The Scalability Trilemma] 之於區塊鏈可擴充套件性是一個巨大的挑戰。其中可擴充套件性、去中心化以及安全性組成此三元,對於一個區塊鏈系統,理論上不可能同時在此三個維度取得最最佳化,它必須以犧牲其中若干個因素去換取在另外一個領域上的提升。比特幣 (Bitcoin) 和以太坊 (Ethereum) 等區塊鏈的設計注重去中心化和安全性。但是,這是以犧牲可擴充套件性為代價的,每一筆交易都要由網路中的每一個節點進行處理,這給交易吞吐量帶來了根本性的限制:它不能高於單個節點的交易吞吐量。可擴充套件性已被公認為是區塊鏈的最大難題,導致區塊鏈不能支援繁重、複雜的計算,嚴重製約區塊鏈行業的發展。2.1.3 安全性與隱私性的兩難困境鏈上共識也缺乏對隱私的保護,每一個節點都能夠獲得完整的資料備份,所有交易資料都是公開和透明的。一方面來講,它確實保證了每筆交易的安全性。但在另一方面,它也確實對使用者造成了很大的隱私性問題。由於對資料隱私的顧慮,使用者不能對區塊鏈真正開放資料,這也進一步限制了區塊鏈上分散式應用的發展。2.2 鏈下計算鑑於鏈上共識既有的侷限性,業界越來越傾向於達成這樣的共識:鏈上的功能應該是“驗證”而不是“計算”,因為“計算”比“驗證”要慢得多。因此更合理的方案是把計算轉移到鏈下進行,構建同時滿足可擴充套件性、隱私性和可驗證性的 Trustless 計算網路,讓相互不信任的主體之間在鏈下而非鏈上進行互動計算。現在也有一些 Trustless 計算擴容方案,如 Oasis、Truebit、Stark 等等。按照驗證方式,鏈下 Trustless 計算可分為可信硬體、互動博弈、非互動證明,PlatON 完全基於密碼演算法,採用 VC 演算法疊加同態加密和安全多方計算,實現可擴充套件的、隱私的、可驗證的 Trustless 計算。2.2.1 可信硬體(Trusted Hardware)這類方案以可信硬體(如 Intel 的 SGX)為底層硬體,建立可信執行環境 (Trusted ExecutionEnvironment,簡稱 TEE),用於執行智慧合約。可信硬體本身就是一個第三方,其本質上是一個存在安全邊界的隔離的安全飛地,安全邊界內程式碼和資料是解密的,這個安全邊界本身就是安全隱患。有些可信硬體如 SGX 也提供遠端證明協議,證明程式碼是執行在可信硬體上,這個證明是基於私鑰簽名技術。實際上,目前已經有研究者針對英特爾處理器實現了一種推測性執行攻擊 [Foreshadow],宣稱可以讀取受 SGX 保護的記憶體以及提取 SGX的私有證明金鑰,並且由於 SGX 的證明報告沒有跟具體的 SGX 硬體關聯,因此只需一臺受損的 SGX 就可以侵蝕整個 SGX 生態系統。2.2.2 互動博弈(Interactive Game)在以太坊上,由於鏈上計算昂貴,複雜的程式在上面執行非常受限。Truebit 引入互動博弈協議來強制鏈下節點正確執行計算。解決計算任務的求解者(Solver)一旦受到挑戰,必須與驗證者一起進行互動驗證博弈。透過幾輪互動縮小到計算過程中的問題步驟,並最終以最少的計算和費用來解決鏈上的分歧。求解者與驗證者之間的動態互動增加了 Truebit系統的不確定性並且互動機制意味著長延遲的終結。2.2.3 非互動證明(Non-interactive Proof)非互動的鏈下驗證計算中,證明者無需同驗證者進行資訊互動,也不需要指定特定的驗證者進行驗證,做到公共可驗證(publicly verifiable),即任何人可以本地驗證計算的正確性。密碼學中的可驗證計算(Verifiable Computation)允許計算能力受限的客戶端將函式計算外包給計算能力更為強大的一方,同時客戶端可以在消耗很小資源的前提下驗證計算的正確性。SNARK 和 STARK 是目前兩類 VC 最著名的實現,兩者均提供零知識證明、保護證明者的隱私以及減少證明的大小和驗證時間的性質,因此在某些應用中很實用。SNARK 具有非常短的證明和快速的證明驗證性質,但它需要一個複雜的可信初始化過程,這是部署時最大的障礙。STARK 與 SNARK 的最大的區別在於透明性(Transparent),即不需要可信初始化過程。儘管 STARK 是一個非常令人驚豔的構造,但諸如證明生成時間、證明的大小等這些具體效率問題使得它針對實際應用時不是足夠實用。在基於 SNARK/STARK 的方案中,如果要保護資料隱私,則生成證明的過程必須由輸入擁有方來執行,因為只有擁有 witness 的證明者才能生成證明。但是,SNARK/STARK 無法保證將計算委託之後輸入的隱私性,因為一旦將計算委託給(可能是不可信的)另一方,這類技術只能保證執行證明過程方的隱私,而無法保證原始計算中輸入的隱私。PlatON 而是以在高效的 VC 演算法之上疊加同態加密以及安全多方計算的方式,為 Trustless計算提供完備的解決方案,同時全流程保護使用者資料隱私。2.2.4 PlatON Trustless 計算模型PlatON 實現的高效 VC 演算法不需要可信的初始化過程,與之前的 VC 或 Zero-KnowledgeProof(ZKP)解決方案相比,大大減小了證據大小,並加速了證明生成和驗證過程。並且PlatON 架構中,透過疊加全同態加密(FHE)和安全多方計算(MPC),實現真正的隱私計算,保證輸入資料以及計算邏輯本身的隱私。與依賴第三方製造商提供的可信硬體或 TEE(例如 SGX)進行計算完整性的可信計算相比,PlatON 上的 Trustless 計算僅依賴於可證偽的密碼學假設,從而在其生命週期內提供前所未有的私有資料安全性,而無需信任邊界。PlatON 計算模型獨立於底層公鏈,不受區塊鏈三元悖論的制約,在保證安全性、隱私性的前提下依然能獲得較好的可擴充套件性和去中心化。PlatON 透過電路並行化的拆分,可將PlatON 的計算單元細分到電路門,並將計算單元隨機分發給不同的計算節點平行計算,極大提高計算的水平擴充套件性和去中心化。同時,透過可驗證計算,合約與計算的執行只需要進行一次,所有節點可以快速驗證計算的正確性,提高單個交易的處理效能,交易吞吐量也得到相應的提升。當將計算外包給其他節點時,傳統的 zk-SNARK/STARK 技術無法解決輸入隱私問題。這就是為什麼我們可以使用確定性證明者/計算者過程來構建 VC,而不是使用 SNARK(zkSNARK)的完整機制。我們要強調的是,所有目前已知的 zk-SNARK 構造依賴於一些特殊的和非標準的複雜性假設,例如指數知識假設(knowledge-of-exponent assumption)的更強變體,並且它們通常很複雜且難以解釋。這些新的假設是否經得起時間的考驗仍是未知問題。作為眾所周知的 VC 方案,SNARK 可為任何 NP 語句生成恆定大小的證明,並具有極快的驗證時間。然而,這種系統的證明者/計算者需要花費準線性時間 O(nlogn) 來生成證明。在我們的 VC 中,雖然證明稍微大一些(目標函式大小的對數,與 STARK 相比漸近複雜度一致,但具體長度更短),但它接納更高效的計算者(線性時間內生成證明),在我們的場景中,計算者的這種較低時間複雜度是更理想的。未來,我們將探索並行化計算的可能性,並使證明生成更有效。PlatON 技術戰略圖2.1紅色虛框內為 PlatON,PlatON 實現一個去中心化系統的基礎設施層和一條主鏈。首先,PlatON 定位於給所有去中心化系統(包括區塊鏈、分散式人工智慧、科學計算等)提供基礎設施(包括網路、儲存、計算等)。初期目標是完全基於密碼學演算法構建可擴充套件Trustless 計算網路,從根本上解決區塊鏈的可擴充套件性、隱私性和可驗證性問題。
• PlatON 實現高擴充套件的鏈下可驗證計算,支援繁重、複雜的計算密集型任務,同時採用可驗證計算演算法來實現數學可證明的計算正確性。
• PlatON 透過安全多方計算和同態加密演算法實現真正的鏈下隱私計算,整個計算的全流程都能保證資料隱私,不存在安全邊界的隱患。
• 計算可拆分到電路門的粒度,並以電路門的粒度分散到不同的計算節點,一方面可以提供更高的計算並行度,獲得更高的可擴充套件性,另一方面也進一步將權力分散,獲得更好的去中心化特性。
• PlatON 的基於電路的計算模式天然與 FPGA 的架構相匹配。透過開發基於 FPGA/ASIC 的專用計算硬體,能夠極大的提高計算效能,降低功耗/成本。其次,基於底層可擴充套件 Trustless 計算網路,PlatON 同時也實現自己的主鏈。
• PlatON 以 Sharding 方式擴充套件多個應用鏈。各條鏈業務相互獨立。
• PlatON Trustless 計算網路的去中心化的底層設計,決定了其發展將會很大程度上依賴算力提供者。PlatON 主鏈及應用鏈上的 Energon 是一種 Utility,用於算力的度量和清結算。分散式人工智慧和科學計算等大型複雜的計算也能透過 PlatON 主鏈及應用鏈獲取算力。
• 開發者可在 PlatON 主鏈及應用鏈上釋出智慧合約,並對外提供各類資料服務,Energon也用於資料服務的清結算。
PlatON 技術方案
1.PlatON 計算
1.1 可驗證計算
PlatON 採用密碼學中的可驗證計算演算法來保證鏈下計算的可靠性。
公共可驗證計算(VC)方案允許計算資源受限的使用者將對於輸入為 u 的函式 F 的計算外包給計算方。然後使用者可以驗證返回的計算結果 F(u) 的正確性,並且只需執行比函式計算過程更少的工作。
更正式地,公共可驗證計算可定義如下。
如圖3.1所示,使用者以合約的方式釋出計算任務,合約中包含 VC 演算法的所用到的必要的引數、電路拆分的方式以及其他相應的經濟激勵。元智慧合約的剩餘部分為具體的計算任務或者應用。
鏈上的元智慧合約透過計算通道擴充套件到鏈下。透過編譯器將元智慧合約中的計算/應用部分編譯成電路,然後在將電路按要求拆分成多個子電路,分發給多個計算節點,計算節點執行子電路,已達到平行計算的效果。為了保證計算節點計算的正確性,其在計算的同時,需要按照 VC 演算法生成相應的證明。在提交計算結果後,對 VC 演算法生成的證明進行密碼學計算,以檢查計算輸出的正確性。由於 VC 的特性,驗證所花費的時間和成本必須遠低於原始計算,再加上 VC 研究的最新進展顯著地降低了計算節點的開銷,鏈下 VC 總體上比基於鏈上的計算共識更具可擴充套件性且消耗更少資源。
PlatON 透過合約計算化,將計算/智慧合約編譯為電路。對於過於複雜的計算,以電路的形式分拆成多個子任務,再結合計算合約化,透過激勵機制吸引網路中的閒置算力來進行子任務的計算。透過可驗證計算技術,以極小的算力代價驗證異構算力提供的子任務運
算結果。可驗證計算連線“合約計算化”與“計算合約化”,最終真正實現利用全球異構算力進行平行計算。
與傳統的區塊鏈技術不同,PlatON 中每個節點無需重複執行智慧合約來驗證交易。利用可驗證計算以及電路化的智慧合約,節點只需在極短的時間驗證交易的合法性,即驗證新的狀態是否由舊的狀態透過智慧合約運算而來。
1.2 隱私計算
PlatON 透過安全多方計算和同態加密演算法實現真正的隱私計算,實現對計算程式碼和資料的隱私保護。與其他基於 TEE/SGX 的方案不同,PlatON 全流程保證安全,不存在任何安全邊界。
1.2.1 安全多方計算
這裡 H 是一個加密雜湊函式,並且當 g 作為雜湊函式的輸入時,表示為一個門序列字串。
在對電路中的所有門進行加密之後,生成器將所有加密密文和與其輸入位元串相關的
如圖3.2所示,使用者以智慧合約的形式廣播計算任務,其中一部分合約中包含 MPC 演算法的必要引數和涉及到的經濟激勵,另一部分包含具體的應用或者計算任務。透過計算通道將計算擴充套件到鏈下。首先透過編譯器將計算/應用部分編譯成電路,分發給同時執行 MPC協議的資料提供方,因此保證了資料留在本地,並且只有(加密的)結果上鍊。
1.2.2 同態加密
同態加密是一種允許在密文上進行計算的加密方式。除了傳統加密方案的原始元件之外,還有另一種計算演算法,它將目標函式 F 和加密資料作為輸入。同態加密會生成一個加密的結果,當解密此結果時,獲得的訊息就像是在加密資料的明文上執行 F。支援密文上的任意計算的密碼系統稱為全同態加密(FHE)。正式地說,同態加密包括以下演算法:
在 PlatON 中,同樣提供單資料來源應用的隱私保護。利用同態加密,元智慧合約中的控制層和計算通道的經濟資料,可達到鏈下真正的隱私計算。
圖3.3描述了 PlatON 中的同態加密流程。使用者將兩部分的資訊寫進智慧合約,第一部分包含 HE 控制引數和激勵機制,另一部分描述計算任務。智慧合約中的資訊一旦透過計算通道轉移到鏈下,立即會被編譯成電路,並和由資料提供者透過 FHE 加密後的資料一起以子電路的形式分發給多個計算節點或者單個計算節點執行。VC 協議必須在加密結果上鍊之前執行以確保計算正確性。
1.3 平行計算
PlatON 中,智慧合約被編譯成布林電路(Boolean Circuit),布林電路是由各種不同的門(Gate)構成的“複雜有向無環圖”,可分解為細粒度的計算任務,並透過 PlatON 網路將計算任務分發到多個計算節點平行計算。
為保證計算的可靠性,避免因節點掉線或超時導致計算失敗,同一個子任務會同時分發給多個計算節點,保留一定的計算冗餘度。
2. PlatON 中的電路
電路是由各種不同的門(Gate)透過輸入輸出線構成的“複雜有向無環網路”。由邏輯閘(比如:與、或、非、異或等)構成的電路稱為布林電路(Boolean Circuit);由算術門(比如加法、乘法等)構成的電路稱為算術電路(Arithmetic Circuit)。
任意形式的計算都可由電路表示,電路以有限種類的門構成各類複雜的計算形態。電路因為其基本組成部分的簡易性,是在密碼學中被廣泛使用的計算模型。
PlatON 透過電路來水平地連線各類演算法和硬體。電路作為安全多方計算、零知識證明、可驗證計算、全同態加密共同使用的通用計算模型,以其超強的普適性串聯各類演算法。電路表示的演算法也天然適合專用硬體的實現。
電路是 PlatON 度量“計算”的基礎。構成電路的基本單位為門,不同種類門的資源消耗不同,整個計算的度量可表示為電路中所有門的消耗的度量總和。電路為計算的度量和定價提供了理論基礎。
3. 專用計算硬體
PlatON 中,智慧合約的計算邏輯被編譯成布林電路進行計算,整個計算迴歸到與、非、異或等處理。而布林電路的操作,天然與 FPGA 的架構相匹配,透過將智慧合約轉換成 FPGA的布林電路並透過 FPGA 來執行這些邏輯單元,能夠極大地提高運算效率和降低功耗/成本。
PlatON 將在適當的階段推出基於 FPGA/ASIC 的專用計算硬體,會極大提升整個區塊鏈平臺的交易效能,真正實踐下一代計算架構當中的硬體部分。
4. PlatON 主鏈
4.1 共識與計算解耦
如圖3.4所示,PlatON 將交易執行跟區塊鏈共識解耦,在鏈下構建可擴充套件 Trustless 計算網路。一方面將區塊鏈權力進一步分散去中心化實現更高的安全性,另一方面這兩個功能可獨立升級擴容,獲得更好的擴充套件性。
PlatON 中的智慧合約包含 IO 邏輯和計算邏輯,IO 邏輯負責讀寫鏈上資料,計算邏輯被編譯成布林電路(Boolean Circuit),並分拆為多個平行計算任務,分發到鏈下的計算節點進行計算。
PlatON 透過隨機方式選擇匹配的計算節點進行計算,為保證計算的可靠性,同一個子任務會同時分發給多個計算節點,保留一定的計算冗餘度。
4.2 計算通道
要成為計算節點需要在鏈上擔保一定的數字資產,擔保的資產會在計算被計算通道驗證正確時返還,欺詐計算髮生時擔保資產會被扣除。
計算通道是一個系統智慧合約,可認為是計算的狀態機,負責維護計算的狀態,同時也是一個計演算法庭,基於可驗證計算演算法驗證計算的正確性,對正確的計算進行清結算和獎勵,並對欺詐計算進行懲罰。
4.3 多鏈架構
PlatON 以 Sharding 方式擴充套件多個應用鏈,各鏈業務上相互獨立,邏輯上相互平行。多個應用鏈上的交易並行打包,應用鏈的區塊頭在主鏈上達成共識。
更多區塊鏈資訊:www.qukuaiwang.com.cn/news