關於主講人 Max

近幾年 Max 一直在關注各類區塊鏈項目的技術進展,去年通過 massnet.org 瞭解到了 MASS 項目,並且被它對於 PoC 的創新所吸引,是一位喜歡研究源代碼的技術極客。

8 個關於 MASS 技術的問題

以下是從 MASS 中文社區收集到的關於 MASS 技術的 8 個優質問題,Max 在活動中做了精彩的回答。

1. 爲什麼看好 POC?MASS 最大的技術創新點 & 目前的技術難點?

看好 PoC 的原因主要有 4 點:

  • 公平性:在 PoC 共識算法中,容量空間的證明是分散的,一個礦工提供的容量證明和它所得的收益是線性相關的。礦工如果要想取得更多的收益,最好的辦法就是進行容量的擴充。這樣的挖礦算法使得個體礦工和大型礦工可以平等的挖礦。
  • 安全性:良好設計的 PoC 機制能夠抵禦 51% 以下容量的惡意節點。
  • 可擴展性:PoC 共識算法採用容量空間進行證明。所以硬盤完成初始化後,可以不耗費過多額外的資源來爲多條區塊鏈提供容量證明。
  • 節能:已經完成初始化、處於挖礦過程中的節點功耗相比於 PoW 有着數量級上的降低。

MASS 的最大技術創新點在於,相比與 Burstcoin 等項目,重新設計了一套更先進的 PoC 的共識機制。MASS 的每條容量證明只需要從硬盤中讀取幾個字節的數據,同時還能保證極高的安全性。

看過 MASS 的 PoC 代碼的朋友一定閱讀過這一段代碼:
MASS 首次技術 AMA 乾貨彙總:智能合約、二層插件、跨鏈均可實現
MASS 首次技術 AMA 乾貨彙總:智能合約、二層插件、跨鏈均可實現
這一段代碼就是 MASS 最爲核心的 Proof 驗證函數,也就是容量證明。簡單來講,在 MASS 中,任意一條合法的 Proof 都應當滿足:

已知:P 函數能夠將值域 Nx 中的數映射到值域 Ny,F 函數能夠將值域 (Nx, Nx) 映射到值域 Ny,且兩個函數均無法實現逆運算,也就是說知道結果,無法反推輸入。

(1) Proof 由 x, x', bitlenth 三個部分組成,在驗證的時候,首先用 P 函數,計算出 P(x)=y, P(x‘)=y’,此時,y 與 y‘ 滿足 BitLength 比特長度下的比特翻轉關係。(例如:100110 <-> 011001, 這兩者就是 BitLength = 6 的比特翻轉關係)

(2)然後使用 F 函數,用 (x, x‘) 作爲輸入,計算出 F(x, x‘) = z ,z 和鏈的業務邏輯中得到的隨機數 challenge,二者用 BitLength 截斷後,得到的結果相同。

這兩條規則就完成了容量證明。玩過 MASS P 盤的朋友一定注意到,MASS 在 P 盤過程中會先後生成 A、B 兩張表,就分別對應了上面的 (1) (2) 兩步。在這樣的設計下,任意一個容量爲 32GiB 的空間,僅僅只需要從 B 表中讀取總長度爲 8 字節的數據,即可證明自己 32GiB 的存儲能力。

相比以往的 PoC 算法,這種設計是一個巨大的進步。因爲 MASS 的 Proof 數據結構不僅將礦工的磁盤讀取壓力降到極低,還使得普通節點驗證 Proof 只需要幾次哈希計算。所以,MASS 能做到兼具公平、安全、可擴展、節能四個特性。

至於技術難點主要集中在跨鏈領域,後面會具體講到。

2. MASS 如果實現智能合約困難麼?需要硬分叉麼?

MASS 的交易結構中包含了一個特殊的字段:Payload。我認爲該字段的引入是爲了方便包括智能合約在內的多種應用的實現。

我們都知道,以太坊的賬戶模型包括:Nonce,Balance,CodeHash 和 StateRootHash。其中 Nonce 用於防止重放攻擊,Balance 用於記錄合約的 Ether 餘額,CodeHash 用於索引合約的操作邏輯,StateRootHash 用於索引合約的存儲狀態。

MASS 可以通過引入新的 OpCode,解析 Payload,以支持與 EVM (以太坊虛擬機) 類似的、特殊設計的智能合約虛擬機。

這樣的改變大概率是需要社區達成一致意見,通過硬分叉來達成的。

軟分叉不是不可以,但是老節點的安全性可能會被削弱,硬分叉可能是更好的選擇。

當然無論如何改變,首先還是要綜合考慮硬分叉後的交易吞吐量與普通用戶運行全節點的難度。二者間需要取得一個平衡點。

如果真的有非常複雜且必要的需求,甚至可以單獨設計一條由 MASS 驅動的並行鏈,讓它來運行智能合約,也能夠滿足需求。

3. MASS 引擎上可以發平行鏈,和 Polkadot、Cosmos 有什麼區別?您覺得 MASS 想做一個什麼樣的生態?

官網上的信息顯示,MASS 在設計之初就是爲了支持多條區塊鏈並行運行,並且實現鏈間交互。

這個跨鏈協議與 Polkadot 和 Cosmos 有一定區別,MASS 上的鏈獨立性更強。

在第一個問題中,可以看出 MASS 的設計減少了礦工節點對於磁盤的壓力。因此,對於 MASS 體系來講,完全可以在礦池層面支持多條鏈的並行運行。

我認爲這樣設計的好處在於能夠在減少額外耗能的前提下做到專鏈專用。例如 MassNet 本身是基於 UTXO 模型的,而有一些業務邏輯更適合 Ethereum 的賬戶模型,那麼就可以由社區組織開發基於 MASS 共識的賬戶模型鏈。通過將不同的業務分散到幾條細分領域的鏈上運行,而不是嘗試用一條鏈包容萬物,我認爲這樣更有利於整個生態的發展。

根據目前 MASS 項目的文檔和代碼,我合理猜測最終 MASS 的生態會呈現出:

(1) 礦工網絡共同組成基於 MASS PoC 的 Layer 0 共識層;

(2) 多條具備不同數據結構的鏈並行運行,組成 Layer 1 數據層;

(3) 基於跨鏈協議的鏈間交互,組成 Layer 2 應用層。

4. MASS 的源代碼用 Golang 有什麼優勢?

Golang 在開發效率和運行速度的取捨中處在一個相對比較平衡的位置;可以在節省大量開發時間的同時,保證性能夠用。

同時大量使用 Golang 語言開發(包括 Hyperledger Fabric, Ethereum, Filecoin, Btcd 等)的區塊鏈項目的存在,又進一步促進了 Golang 編寫的區塊鏈工具包的繁榮。所以一些新的區塊鏈項目也往往傾向於使用 Golang 來進行開發。

此外,跨平臺、易於部署也有非常顯著的優勢。假設有朋友想在樹莓派上運行 MassNet,但是官網沒有提供相對應的二進制,那麼他也可以下載代碼,在不修改代碼的情況下編譯 linux/arm64 版本的二進制,將它丟到樹莓派上就可以運行了。

總結一下就是:

  • Golang 在開發效率和運行速度的取捨中處在一個相對比較平衡的位置
  • 區塊鏈領域的開發者羣體大
  • 有豐富區塊鏈相關的開源工具包可供使用
  • 跨平臺、易於部署

5. MASS 如果未來有硬分叉,那會是怎麼樣的?
MASS 如果進行硬分叉的話,技術上將與 Ethereum 的實現方式類似。

如下圖的僞代碼顯示,假設我們從高度 1,000,000 起增加一些操作碼,以支持更好的智能合約表現;但是如果在分叉高度前出現了新的操作碼,就認爲該交易腳本無效。那麼在代碼中就會體現爲類似的函數:
MASS 首次技術 AMA 乾貨彙總:智能合約、二層插件、跨鏈均可實現

這裏正好可以擴展一下軟分叉的問題。我們都知道 Bitcoin 的軟分叉是有一套完備的流程的,例如礦工可以通過修改區塊頭中 Version 字段的某些比特位來對相應的提案進行投票,如果連續同意的區塊數量達到一定閾值,則軟分叉就會被激活。

在 MassNet 中除了區塊頭和交易區,還額外設計了一個提案區(ProposalArea)。每條提案都包含 ProposalType 和 Content 兩個字段。現在的代碼中規定,ProposalType == 0 和 ProposalType == 1 分別代表懲罰提案和懲罰提案佔位符。而 ProposalType >= 2 則被解析爲任意消息、不會進行驗證。這正是一種可以兼容軟分叉的做法,未來 MassNet 可能會新增一些提案類型,用於礦工的軟分叉投票。

6. MASS 現在共經歷了幾次減半?
MASS 目前已經完成了第五次減半。它的減半週期機制是:每次的減半間隔是前一次的兩倍。

所以 MASS 分別在區塊高度 13440,40320,94080,201600,416640 進行過減半。下一次的減半高度就是 416640 + (416640 - 201600) * 2 = 846720。

如果有人對減半相關代碼感興趣,可以去 GitHub 看一看。

7. MASS 的願景是作爲提供可以聚合其他 PoC 鏈的底層共識機,這個願景在代碼中可以體現出來了麼?
目前 MASS 的 PoC 核心代碼都位於 MassNet-miner 工程下的 poc 目錄。

通過研究 poc/engine 目錄,可以發現 MASS 將相關的 PoC 引擎封裝爲了三層結構,分別是:MassDB,SpaceKeeper 和 PoCMiner。

它們的定位分別是:

  • MassDB:Proof 的生產者,儲存 Proof 的容器。
  • SpaceKeeper:Proof 容器的管理者,可以根據不同的區塊鏈上下文,爲 PoCMiner 提供所需的 Proof。
  • PoCMiner:Proof 數據的消費者,能夠根據開發者定製的邏輯,生產新區塊。

MASS 共識下,多條鏈聚合共識,在 MassDB 這一層是完全一致的,因爲用的是同樣的共識層。不同之處在於,根據不同鏈的策略,在 Spacekeeper 這一層有不同的查詢方式,同時在 PoCMiner 這一層有不同的區塊生產規則。

總體來說,三層架構已經體現了聚合願景。與此同時,在 MassNet 的區塊頭結構也體現出了其計劃的對於多鏈的支持,請看:
MASS 首次技術 AMA 乾貨彙總:智能合約、二層插件、跨鏈均可實現

每一個 MASS 的區塊,都記錄按照統一的計算規則得到的 ChainID。MassNet 的 ChainID 是 "5433524b370b149007ba1d06225b5d8e53137a041869834cff5860b02bebc5c7"。相信這個 ID 正是爲了多條鏈並行運行方便而設計的。

8. MASS 的礦池支持多挖是容易的麼?

先說結論吧:比較容易。

在上一個問題中我們已經看到了 MASS 的 PoC 引擎分層設計。可以看出來,不論是哪一條基於 MASS 引擎的鏈,在 MassDB 層是完全一致的。

SpaceKeeper 層往往涉及少許與區塊鏈上下文相關的信息,但基本的 MassDB 查詢邏輯仍然是相同的。

至於 PoCMiner 層,則是根據不同鏈的挖礦策略自行定製。

總結來說就是,MASS 礦池如果需要支持多挖的話,需要定製 PoCMiner 的邏輯,微改 SpaceKeeper 的邏輯,不需要改動 MassDB。總體來說,支持的難度是可以接受的。

媒體提問

火星財經:從礦工生態角度看,ETH 升級到 2.0,1.0 的礦機會變得不適用,另外,BTC 減半後可能會有礦工被淘汰出局, 這些產業中的變遷,會利好 MASS 生態嗎?

從現在的以太坊 1.0 轉向以太坊 2.0 是一個巨大的工程,其共識機制將由 POW 轉向 POS。伴隨着共識機制的轉變,以太坊挖礦的方式也將發生鉅變。現在以太坊 1.0 礦工所使用的 GPU 礦機,常見的包括 GTX1060 、GTX1070 和 GTX1080 等,大多價格昂貴且能耗過高,而以太坊 2.0 的挖礦將不再需要強算力作爲保證。所以,大量以太坊礦工的挖礦硬件需要一個合適的去處。

而 BTC 減半後,有相當一部分礦工因爲“電費 / 收益”比過高被淘汰出局。這些礦工除了 BTC ASIC 礦機外,還擁有包括廠房、機架、電源、網絡等硬件設備,這些硬件都是可以複用的。

對於 MASS 來說,以太坊所淘汰的 GPU 設備恰好可以用來進行 MASS P 盤。BTC 礦工的專業硬件設備,可以追加購買硬盤後進行 MASS 硬盤挖礦,相比 PoW 來說,它的挖礦能耗是極低。

目前 MASS 的網絡容量是 200 PB 左右,我認爲對於以太坊和比特幣礦工依然具備很強的吸引力。PoW 礦工轉投 PoC,將促進 MASS 的網絡安全性。

星球日報:MASS 的 RoadMap 是什麼樣的,從 GitHub 的更新上來看,項目是否如期推進?

MASS 的 RoadMap 可以在官網上看到,簡單的總結如下:

  • 2018 年 5 月 至 2019 年 3 月:MassNet 原型網絡開發。
  • 2019 年 9 月:MassNet 全節點發布,主網上線。
  • 2019 年 11 月:封裝併發布 MASS 共識引擎。
  • 2020 年 2 月:研究併發布 MassNet 二層網絡插件。
  • 2020 年 6 月:研究併發布 MassNet 跨鏈協議。

從 Github 代碼來看,2018 年到 2019 年 11 月的路線圖都如期完成。

2020 年的路線圖計劃包括,二層網絡的插件(比如比特幣的閃電網絡),跨鏈協議(比如 Cosmos 採用的跨鏈協議),目前來看這兩項在 Github 上還沒有明確體現。但由於共識引擎已經發布了,在並行上已經有了完備的準備。

我猜測 MASSNet 可能正在進行內部開發,市面上越來越多同類型鏈上線,能看到應用場景的不足和優點,通過學習和改進,可以發佈一個更完備的協議。

自由提問

羣 TV :爲什麼 P 好的文件可以壓縮呢
https://docs.massnet.org/en/basic-concepts/plot-algorithm/
MASS 首次技術 AMA 乾貨彙總:智能合約、二層插件、跨鏈均可實現
礦工的意義是什麼?項目發展對礦工盈利有什麼好處?
礦工的意義是通過存儲更多的容量數據,保證 Layer 0 共識層的安全,更加安全的共識層能夠吸引更多的業務層應用,礦工也可以在並行挖礦過程中,得到多條鏈的 Token,提高盈利。

你覺得 MASS 啥時候漲,能漲多高?
這個我沒辦法預測,只能說從技術的角度來看,MASS 目前的一些經濟機制還沒有開始發揮作用,例如綁定還沒有真正展開。

從技術角度看,全節點挖礦還存在不足,比如綁定的工具還不太方便,這導致綁定機制沒有辦法很好的展開。

小麥和 mass 是什麼關係
MASS 是一個開源的項目,任何人都可以參與,目前參與到生態裏的有小麥、HPool、Ypool、Wepool,交易所有抹茶,他們都是 MASS 生態的支持者。

MASS 從技術上來說本身就有很多創新點,隨着更多機構涌進,會讓市場更加公平和穩定。

致謝

感謝 Max 精彩的分享!

本次活動由 MASS 中文社區主辦,小麥空間 MASSfans HPOOL YPOOL HelloPool 聯合舉辦。

感謝媒體的支持:金色財經 星球日報 鏈節點 鏈聞 火星財經 深鏈財經 區塊律動 winkrypto LONGHASH (排名不分先後)

感謝幣撲和羣 TV 提供的同步直播支持。

未來 MASS 中文社區將開展更多社羣活動,歡迎關注公衆號,加入微信羣(ID:maixuanfeng2020)。