原文標題:《引入存儲節點+「彈性計算」,MultiVAC 完成 1500 萬美元融資》

目前而言,分片技術( Sharding )是公鏈擴容方案的一個重要方向,被認爲是更爲長遠且理論上可行的擴容方案。擴容,通常指的是系統處理高頻業務量的能力。擴容方案主要解決的問題是通過提升區塊鏈系統的性能處理能力,以實現區塊鏈技術的大規模落地應用。

本文要介紹 MultiVAC 也是一個利用分片技術擴容的公鏈項目。他們還提出了一個不同於雲計算領域的「彈性計算網絡」的概念,即基於該公鏈的 DApp 開發者可以根據自身業務需要,選擇對擴展性、安全性、去中心化等不同維度的需求,底層網絡會以此將合約交易分配到不同的分片。開發者也需要根據自身業務部署合約。

分片技術的核心思想是「分而治之」,舉一個不夠恰當的例子,分片方案就好比在擁堵的高速收費站上開設多條收費渠道,以保證通行速度、減輕道路通行壓力。分片技術仍面臨很多問題,包括:各分片存儲數據量過多,節點切換分片時需要同步大量數據;分片意味着參與某一交易驗證和共識的節點降低,容易被惡意攻擊者控制;跨片交易產生的交互問題等。

因此,現仍未出現讓業界滿意的可落地分片方案。那麼,MultiVAC 的分片技術有什麼特點呢?

彈性計算網絡 MultiVAC 完成千萬美元融資,分片技術應用再進一步?MultiVAC 特點一覽表

分節點角色:減少存儲成本

MultiVAC 的第一個特點是,引入了存儲節點,降低礦工節點的存儲成本。

區塊鏈之所以需要分片,前提是交易量大到以單鏈系統難以承載,同時隨着數據量暴漲,普通筆記本電腦也不一定足以存儲全網賬本。

爲減少存儲數據,保證去中心化,MultiVAC 引入了存儲節點角色,將節點分爲存儲節點、礦工節點和輕節點三種,均不需要有全網賬本。

分片內礦工節點先選舉出塊節點、驗證並打包交易(此時出塊者需要向存儲節點調用 Merkle Proof 以證明該筆輸入未使用)、分片內廣播,然後發送給存儲節點同步。

礦工節點的功能是存儲摘要信息(區塊頭),並且負責驗證交易,擁有數據的控制權。存儲節點存儲分片內所有賬本,有點類似於超級節點的角色,存儲量大,有一定的准入門檻,但區別是隻存儲交易和協助進行交易驗證,對數據沒有任何控制權,保證了其去中心化的特性。MultiVAC CTO 應翔表示,存儲節點可以理解爲網絡節點基礎服務商,類似於網絡供應商(移動、聯通、電信)的角色。

該設計的要點在於,礦工節點可以直接用交易的摘要信息+交易+存儲節點提供的證明,來驗證交易。只存儲交易摘要信息,減少了礦工節點的數據量,也降低了礦工的准入門檻,普通 PC 也可加入。

MultiVAC 認爲,降低數據存儲量還更有利分片內節點的隨機變換。

安全性和去中心化一脈相承。分片存在安全性的退化,安全性就要求徹底去中心化。MultiVAC 設計的礦工節點和存儲節點在這兒也發揮作用。

假設一個分片有 100 個節點,要攻擊該分片,就只要知道這 100 個節點是什麼,安全風險很大。因此,大部分的分片方案都需要定期變換分片內節點。MultiVAC 亦然,每過幾分鐘,礦工所在的分片就會切換。

MultiVAC 每個分片內對應的幾個存儲節點是固定的,但是礦工節點是非固定的,藉助 VRF 變換,而存儲節點又沒有數據的控制權。由於礦工節點只存儲摘要信息,總量很小,因而礦工遷移的數據量大小也不必擔心。否則,礦工在變換分片時還是需要同步大量賬本數據,或者需要擁有全網賬本。應翔認爲,這也造成大部分分片方案的切換週期長(意味着不安全),並且每次只能切換一部分節點。

應翔總結,礦工節點和存儲節點需要涉及的業務量,與所在分片的交易量成正比,與全網數據量無關,並且每個分片完全獨立。

固定傳輸量,保證分片獨立的跨片交易

分片技術不得不面對的問題就是跨片交易的實現,假若沒有跨片交易,各分片間不存在交互,就和單鏈沒有區別。

有觀點認爲,區塊鏈中的交易都是原子性,必須保證其涉及到的操作達成最終一致性,即要麼全部完成,要麼一個都不開始。因此不得不協調各分片間的操作,以保證其正確地運行。據 《王嘉平:號稱「公鏈分片」技術的五大謊言》 一文:「當前而言,常用的處理方法是採用線程同步概念,鎖住交易所涉及的狀態,阻止其他非相關交易干擾這些狀態,直到完成交易所有操作後釋放。但該處理方法的問題在於,鎖住狀態下,部分分片的其他執行被阻塞,分片其他工作無法正常進行,而該情況隨着分片數量的增多,跨分片交易數量增多,產生的阻塞愈發明顯。」

應翔表示 ,MultiVAC 的跨片交易採用了不同的思路。可以保證每個分片獨立。

MultiVAC 的每一個分片,都會定期同步其他分片的區塊頭,一個分片裏面的每一個區塊,都有一個空間在記錄其他分片的最新狀態,並據此處理跨片交易。

分片 1 在某個時刻發起交易後,該交易在區塊高度 h1 被確認;(此時分片 2 的高度爲 h2 ),而這筆交易體現在分片 2 上,是需要在分片 2 的某一高度(一般是下一個塊,比如 h2+1)讀到了來自分片 1 的 h1 高度,纔會把錢加上去分片 2。這裏可有點像,A 銀行賬戶向 B 行賬戶匯了一筆錢,A 行顯示已經扣款,但 B 行不一定立刻收到,期間跨分片的網絡阻塞可能出現交易延遲情況,但不會影響分片內其他交易的正常進行。 MultiVAC 使用了最終一致性的辦法保證了分片 2 一定能按順序獲取到所有來自分片 1 的轉賬。

這樣的好處是可以把跨片交易的成本「固定」下來,不隨着跨片交易增多而增加,而且增加的存儲成本很小。「假設一個分片一個區塊頭的大小大概是 100 個字節(byte),如果是 64 個分片,大概就是 6KB 。」

至於弊端,應翔迴應,「如果非要找一個弊端的話,應該是一筆跨片交易在接收方收到錢之後,並不能馬上再轉花出去,需要等一個同步(大約 10s 左右)。比如 A 給 B 一塊錢,B 馬上轉給 C ,這兩筆交易在 BTC、ETH 裏可以同時在一個塊裏,MultiVAC 裏需要等一個同步。不過這樣立馬轉付的需求非常罕見。」

落地關注共享經濟應用

值得疑惑的是,MultiVAC 的方案節省了存儲成本,但是增加了很多傳輸成本,會否影響方案落地?對此,應翔迴應:「是的,增加 70% 需要傳輸的數據量,但是比如 Java 比 C++ 慢 10 倍,但是很多人用 Java,因爲開發成本低很多。這裏也是一樣的道理。」

他進一步解釋箇中邏輯:存儲節點提供證明,使得礦工節點可以在沒有賬本,只擁有很精簡的摘要信息的情況下,就驗證交易和出塊是否合法。這樣做的代價是,多出了一部分數據傳輸(證明信息)。70% 是未壓縮的數據量,事實上我們壓縮後大概是相當於 20-25% 這樣,未來還可以壓縮到更小。

但是反過來,傳統區塊鏈每個交易都全網廣播一次,一旦業務量上升,單個節點將不堪重負。一方面,分片機制讓交易只需要在分片內廣播。另一方面,對於分片內的數據來說,MultiVAC 是未確認交易發到存儲節點,存儲節點可以一次廣播多個交易,礦工將其收進自身內存池中。所以交易廣播的次數大幅度變少了,但是廣播的數據量多了 20-25%,總體上來說對網絡負載的拖累並不嚴重。

MultiVAC 表示目前已完成底層交易分片方案開發,單個分片 TPS 約在 500;合約分片仍在開發,應用落地預計在 2019 年後半年,比較關注共享經濟方面的應用實踐。

從未來發展來看,分片技術依然面臨着很多難題。目前主流的分片技術分爲網絡分片、交易分片和狀態分片等三個層級,其技術難度也隨之依次遞增。在具體落地方面仍有很多問題需要解決,比如共識、PoS、網絡延遲等。

共識機制方面,應翔認爲,當前沒有一個完美的共識機制,MultiVAC 採用的是二元拜占庭 + 羣簽名。

至於激勵機制,MultiVAC 表示礦工節點主要是挖礦收益,存儲節點的激勵機制考慮採用競爭(投標性質)機制,理想情況下會出現一個平衡,類似於以太坊的 gas 費。

團隊目前約 25 人,包括 17 名技術和 7 名運營。MultiVAC 技術團隊有來自哈佛、斯坦福、清華和南洋理工的計算機博士,以及谷歌、Facebook 及美團點評的資深工程專家。CEO 呂恆曾任美團技術總監和薪人薪事聯合創始人、CTO;CTO 應翔是天津大學副教授、南洋理工大學計算機博士、並行算法與通用計算領域專家。 CMO 王晨曾任美團產品經理、薪人薪事市場運營總監、居理新房(原侃家網)聯合創始人。

據介紹,團隊於 2018 年年中融資 1500 萬美金。官網顯示,投資機構來自韓國、美國、歐洲等地,包括 IDG、洪泰資本、九合創投等投資機構和 NGC、JRR Crypto、Hashed、Arrington XRP 等數字資產投資基金。