基于區(qū)塊鏈智能合約的分片方案紫皮書正式發(fā)布
MultiVAC今天正式發(fā)布了智能合約紫皮書:《MulTIVAC編程模式紫皮書:支持圖靈完備智能合約的區(qū)塊鏈分片方案》。
該論文是MulTIVAC核心算法團隊繼2018年發(fā)布技術白皮書和技術黃皮書后的第三個技術力作:
· 在彈性計算白皮書中,MulTIVAC首創(chuàng)了彈性計算分片模型,將區(qū)塊鏈的不可能三角轉化成為彈性架構,開發(fā)者可以自由定義和取舍安全性、去中心化和擴展性,描述和論證了MulTIVAC彈性公鏈的整體技術架構;
· 在全維度分片黃皮書中,MultiVAC提出了世界上首個計算、存儲和傳輸三個維度都實現完全分片的區(qū)塊鏈架構,真正實現了無限拓展性,還有效降低了礦工門檻,使得個人電腦等普通計算設備也能夠自由加入網絡;
· 在今天發(fā)布的編程模式紫皮書中,MultiVAC在高效低門檻的全分片架構上,實現了對圖靈完備智能合約的有效支持,提供了一個全新的支持并行化處理的區(qū)塊鏈編程模型,將區(qū)塊鏈這臺世界計算機從單核升級到可無限擴展的多核系統(tǒng)。
MultiVAC CTO應翔博士在紫皮書中指出:
“很多分片項目基于區(qū)塊鏈2.0時代的淺薄認知,將區(qū)塊鏈分片的層次劃分為網絡分片、交易分片、狀態(tài)分片,而忽視了下一代區(qū)塊鏈系統(tǒng)所面臨的真正挑戰(zhàn)來源于對傳統(tǒng)馮諾依曼計算機體系的革命性創(chuàng)新和重定義。若真正視區(qū)塊鏈為下一代去中心化的世界計算機,區(qū)塊鏈系統(tǒng)應重建新的體系結構以應對吞吐量限制,設計全新的存儲和傳輸策略來重定義世界計算機的數據流,提供全新的編程模式來適配全新的體系結構,堅守去中心化的初心以保障這一世界計算機不受任何單一個體的控制且永不被關停。
MultiVAC設計了全維度平行分片的架構,真正將區(qū)塊鏈這個世界計算機從單核升級到可無限擴展的多核系統(tǒng),解決了關鍵性的吞吐量瓶頸。開創(chuàng)性的存儲與數據控制權分離策略,顛覆了馮諾依曼結構依賴的存儲框架,使分布式數據流可交互、可驗證。全新的異步分片開發(fā)模式和LLVM開發(fā)平臺,允許開發(fā)者在多核分布式體系下靈活開發(fā),實現各種編程邏輯。而低礦工門檻保證了普通用戶可以自由加入MultiVAC系統(tǒng),整個系統(tǒng)的控制權又完整掌控在普通礦工手中,保證了MultiVAC成為真正去中心化的區(qū)塊鏈架構。
2008年中本聰在比特幣白皮書中高喊的“One-CPU-One-Vote”理念,被ASIC礦機和中心化礦池所無情摧毀,但終將在MultiVAC上再次重建,并更加強大!”
自去年10月份MultiVAC算法團隊啟動智能合約編程模式設計,到今年5月份完稿發(fā)布,紫皮書共經歷了6個月接近30個版本的迭代。方案設計的同時,團隊同步推進了工程可行性驗證和架構開發(fā)工作。
紫皮書的發(fā)布,也意味著MultiVAC底層架構已經全部設計完畢,接下來將進入經濟模型討論與開發(fā)者平臺構建階段。
以下內容是對紫皮書部分的摘要和解讀,歡迎廣大技術愛好者和社區(qū)粉絲討論指正:
如果概括MultiVAC的整體設計,引用紫皮書中的一段話:“MultiVAC精巧地將各個功能模塊做了合理劃分,使運行節(jié)點各司其職。在存儲上,將壓力轉移到存儲模塊,減輕了普通參與者的負擔,而存儲模塊本身不涉及執(zhí)行和共識,不存在中心化風險。在執(zhí)行上,MultiVAC 提供了完整的指令集,不給開發(fā)者設置局限,且在設計過程中,時刻體現了對運行性能的重視。在共識方面,權力在各執(zhí)行節(jié)點中均勻分布,平權原則落到實處?!?/p>
MultiVAC 系統(tǒng)的特色如下:
· MultiVAC 是一個圖靈完備的分片區(qū)塊鏈方案。為開發(fā)者提供靈活的編程開發(fā)框架以搭建復雜的應用。
· MultiVAC 是首個實現性能完全線性擴展的分片。異步分片架構為構建高 TPS 的區(qū)塊鏈網絡提供了基礎。
· 降低了參與者的設備門檻,維護了區(qū)塊鏈系統(tǒng)去中心化的核心價值主張。MultiVAC 網絡的參與者不需要性能強勁的設備,使得社區(qū)更加平民化、去中心化。
· MultiVAC 的拓展性十分優(yōu)異。目前的 MultiVAC 方案靈活、簡潔、優(yōu)雅,在當前基礎上可以較簡單地加入新的擴展功能,如閃電網絡或隱私計算等。
MultiVAC 突破性地解決了當今區(qū)塊鏈世界的多項關鍵性難題,為建立一個理想的區(qū)塊鏈社區(qū)打下了堅實的基礎。
1、UTXO/賬戶雙模型彈性選擇+異步分片編程——保證跨分片交互一致性
現有的其他合約分片方案,大多采用兩種方式保證跨分片信息傳遞的一致性。一種要求發(fā)送跨分片交易時等待回執(zhí),并對涉及數據加鎖,不僅大幅度降低系統(tǒng)性能,回執(zhí)也可能丟失。這就像你通過微信給一人發(fā)送消息,如果對方沒有回復,你需要一直等待,什么也不做??赡軐Ψ胶芫弥蟛拍芑貜湍悖灿锌赡苡肋h不回復(消息丟失了),因此這種方式會對系統(tǒng)性能產生極大的限制。
另一種是將跨分片交易拆分為多個子操作。比如一筆交易從分片A發(fā)送到分片B,在分片A中執(zhí)行扣款后,轉賬指令的執(zhí)行將完全由分片B決定,因此一但交易量上升,將導致執(zhí)行順序喪失單調一致性。這就要求跨片操作滿足交換律(轉賬類操作),即改變執(zhí)行順序也可以得到同樣結果。但很多其他邏輯的智能合約是無法滿足交換律的,很多公鏈項目通過對系統(tǒng)的約束來保證此類指令的交換律,因此放棄了智能合約的圖靈完備性,使得可開發(fā)的應用邏輯受到了極大的限制。
舉個例子,A村的兩個男村民皇埔鐵牛和司馬鐵蛋都愛上了隔壁B村的蘇翠花姑娘,他們都寫了一封情書給蘇翠花。而蘇翠花先收到誰的情書就會接受誰?;势诣F牛和司馬鐵蛋先后將情書放入郵筒,并由B村的郵遞員送到蘇翠花的手里。在一個無法維持單調一致性的郵政系統(tǒng)中,蘇翠花先收到誰的信取決于郵遞員:郵遞員保證信最終會送到收信人手中,但是收信人收到信的順序不一定遵循基礎的順序。而在MultiVAC的系統(tǒng)中,郵遞員保證收信的順序和寄出信件的順序一致。
針對這一問題,MultiVAC將跨片操作分為兩類:
對于滿足交換律的操作,使用UTXO數據類型,礦工可以無視內容低成本快速執(zhí)行操作;
對于必須滿足單調一致性的復雜智能合約操作,則使用賬戶模型,并強制從協(xié)議層面要求礦工按照順序執(zhí)行,但成本較高,適用于低頻操作。
通過首創(chuàng)的雙數據模型彈性選擇,允許開發(fā)者靈活選擇所需的數據類型,使系統(tǒng)在一致性、性能和成本方面達成了靈活與平衡。
此外,礦工發(fā)送跨片間交易指令是異步操作,發(fā)送完畢后礦工可立即參與下一輪的出塊,無需等待其他分片回執(zhí),分片之間數據不共享和交互不堵塞,避免了數據加鎖帶來的性能瓶頸。
2、全局數據分散設計+多賬戶模型——提高分片并行性能
我們知道,將區(qū)塊鏈網絡進行分片的目的是要提高整體性能。因此為了達到并行處理的目的,分片之間不可能進行完全數據共享,那樣也違背了分片的初衷。但智能合約又要求所有分片都對此全局數據有感知。
比如,某個電商平臺的智能合約中有10個商品,分片A的用戶買了5個,分片B的用戶最多只能購買5個,商品數量就是全局數據,每次合約調用各分片間都需要相互同步,否則就會造成超賣。因此,如何處理對全局數據的依賴是所有區(qū)塊鏈系統(tǒng)都要面對的難題。
為了保證數據一致性,目前通常有兩種方案,一種是給數據加鎖,同一時間只能被單一分片讀寫;另一種是數據只允許被單一指定分片調用。但這兩種方案都會導致智能合約的吞吐量嚴重制約于單個分片。
針對以上,我們首次提出將全局數據拆分到各個分片上,即將總商品數量下放到分片,每個分片中都會有一定的商品額度,當交易發(fā)生時,智能合約只讀寫對應分片的數據就可以。允許用戶在不同分片上進行操作,防止分片間購買力不同而造成的庫存不足,將全局交易分散到各個分片上。同時,用戶在所有分片上都有賬戶,鼓勵用戶進行快速低成本的片內交易,充分釋放了分片的并行性能。
3、圖靈完備虛擬機+高級語言C/C++/Rust——實現超高自由度開發(fā)
正如紫皮書中提到的,目前很多公鏈方案為了簡化設計,舍棄了圖靈完備性,導致開發(fā)者能夠實現的業(yè)務邏輯嚴重受限。也有部分公鏈提出了自己的開發(fā)語言,不僅學習成本高,而且無法支持高級開發(fā)框架,徒增開發(fā)者的編程負擔。
在這一點上,MultiVAC秉承了一貫的設計理念,不給開發(fā)者設限。我們提供了圖靈完備的虛擬機,同時適配C/C++/Rust等多種高級成熟編程語言,為開發(fā)者提供靈活的編程開發(fā)框架以搭建各種復雜應用。
不僅如此,MultiVAC 團隊認為,沒有完美的區(qū)塊鏈系統(tǒng),一套好的區(qū)塊鏈方案應該能夠隨著各領域的技術突破不斷進化。所以在設計過程中,MultiVAC遵循了松弛可擴展的原則,保證整套技術框架易迭代易拓展,各模塊能夠靈活地整合新技術,與時俱進。目前的 MultiVAC 方案靈活、簡潔、優(yōu)雅,在當前基礎上可以較簡單地加入新的擴展功能,如閃電網絡或隱私計算等。