網絡與節點
區塊鏈網絡,本質是一個分佈式系統,系統中的節點根據某一個約定的規則,完成狀態的遷移。
網絡中的節點的角色、數量、在線情況、是否誠實認真工作等,定義了這個區塊鏈網絡的性質,也關係着系統的安全。
共識與考量
上文提到網絡中的節點遵循的某一個約定,就是所謂的共識協議
,簡單的講就是決定哪下一個區塊
的規則。在節點的維度考慮問題,那就是哪些節點的哪些考量標準,決定了下一個區塊。
在區塊鏈世界裏面,主要考量標準有所謂的PoW
和PoS
。分別是以「計算能力」和「持幣數量」爲考量標準。
大家可能會問了,爲什麼主要是這兩種考量標準,爲什麼不是別的呢?
原因很簡單——這是兩種最容易量化的標準,且易於抵抗攻擊。其他的,例如 reputation(聲望度)
、honesty(誠實度)
這類標準,都無法簡單準確的量化。那存儲空間、帶寬能不能成爲量化標準呢?答案是可以的,但是具體實施起來,有一定的難度。
現有公鏈的問題
BTC 創建者中本聰期望通過 PoW 實現 one-CPU-one-vote
。早期,普通的家庭電腦也可以成功搶奪到出塊權,確實滿足了這個願景。後來因爲算力競爭,挖礦設備進化到了專業的 ASIC
礦機和礦機聯合體——礦池。ETH 一開始就考慮到了礦池壟斷的問題,它設計的Etash
算法,是依賴內存的,所以 ASIC
礦機的優勢沒有那麼大,但是礦池還是形成了。
BTC/ETH 讓人詬病的 POW 挖礦機制帶來能源消耗,吞吐量低等問題,也使得兩者使用費用高昂。
EOS 模擬了美國的選舉人制度。本質是倡導大戶集中,鼓動社羣投票,超級節點競爭。開發者期望用超級節點競爭的方式,實現去中心化。主要開發者BM
甚至聲稱,這類超級節點的去中心化程度,比 BTC 的礦池壟斷的模式要高。一直以來,RAM (內存資源)被當做投機標的,使得開發者成本飛漲。有相關計算表明,支撐一個 DAU 1W 的 DAPP,需要近 200W 美金的年費用。
可以看出,這三大代表性公鏈,去中心化程度堪憂,同時使用成本也較高,無法承載商大規模商業應用。
YOUChain 的願景
YOUChain 願景是打造可承載大規模商業應用的去中心化公鏈。要承載大規模商業應用,性能和資費是關鍵;要實現去中心化,節點角色、職責和數量是關鍵。
- 低性能,速度慢,難以擴展,不是我們想要的
- 權利高度集中,不是我們想要的
- 使用費用高昂,不是我們想要的
要實現高性能,需要考慮制約區塊鏈的三個基本物理條件:計算、存儲、網絡。共識協議和網絡結構需要極度的優化。
某種程度上,我們是中本聰的信徒,相信去中心化的願景。因此,我們認爲,以某種方式實現中本聰的 one-CPU-one-vote
的初衷,是實現去中心化的一種方式。
思考性能
回顧已經上線的公鏈,包括 BTC/ETH 和 EOS,我們可以觀察到一個現象:一個共識的達成,需要涉及到的節點越多,其性能就越差
。前者涉及到了全網所有節點競爭挖礦,性能較差;後者只涉及到了少數的超級節點的輪流出塊,性能較好。
怎麼做到去中心化和擴展性兼得呢?其中一個答案是爲系統引入隨機。Algorand 是我們十分推崇的項目,它爲行業帶來了新的思路,我們也深入研究了它的技術原理和實現。
思考 one-CPU-one-vote
考慮到設備和節點,我們很自然想到了幾乎每個人都會擁有的移動設備(手機)。如果這些設備都能成爲網絡的節點,並參與工作。那豈不是真正的實現了去中心化?
爲什麼移動設備,都被已有的公鏈排除在了節點範疇之外呢?一個直覺印象是,他們的計算、存儲、網絡性能都不夠,穩定性也不夠。
當我們深入去研究的時候發現,最新的移動設備(驍龍845/麒麟980及以上)的計算能力,不亞於普通的雲主機;主流存儲能力也達到了數百 GB;網絡性能隨着 5G 的普及和千兆光纖入戶的進展,不遜機房環境。
思考費用
考慮到能源消耗和運營節點成本,我們選用基於 PoS 的共識機制。
那麼使用公鏈的費用,主要是與運營節點主要包含兩部分成本相關:基礎設施成本_和_抵押物的機會成本。
基礎設施成本:機器購置與折舊、帶寬、託管費用、防禦攻擊費用等。
抵押物的機會成本:因抵押而無法自由買賣產生的機會成本(幣漲了或者跌了但是幣被鎖)。
我們認爲,隨着物理條件的演進,當條件具備的時候,不再需要專業的礦機和託管條件,海量的移動設備,都可以成爲網絡的節點,使用成本自然就降低了。
思考可擴展性
從 YOUChain 創始之初,我們在公鏈設計中,就預留了使用安全分片技術進行橫向擴展的技術路徑。
同時,爲了滿足高 TPS 下的海量存儲需求,我們設計了存儲壓縮和根據 merkle root 證明的機制使得移動節點可以快速接入網絡和持續參與共識。
YOUChain 共識「YPOS」
爲了兼具高性能與去中心化。YOUChain 設計了一個基於 PoS 和 VRF 自抽籤的快速 BFT 共識協議:YPOS。
共識流程,主要分爲兩個階段:提議和投票。
-
在較大的候選集合中,通過 VRF 自抽籤機制,選取少量(如數十)的區塊提議節點,後者將提出候選區塊及其哈希。
-
在較大的候選集合中,通過 VRF 自抽籤機制,選取一定量(如數百到數千)的投票節點,爲前一步提議的區塊哈希按照某一種規則進行投票。
其中第二步,屬於傳統的 BFT 共識的流程,核心是消息複雜度和延遲。我們做了大量的工作,使得我們的 BFT 算法實現了線性的通訊複雜度,可以在大型區塊鏈網絡中運行,並做到秒級收斂。
在節點的去中心化問題上,我們認爲移動節點是未來方向。因此,我們做了大量的的工作,實現了家庭網絡和移動網絡的穩定傳輸和有效穿透。同時我們將節點輸出成 SDK,植入到生態夥伴的 APP,使得搭載 APP 的移動設備,成爲網絡的節點,這樣我們的候選集合就有了海量的節點。
YOUChain 節點設計
安全性是區塊鏈的基礎。沒有了這個,擴展性和去中心化都免談。區塊鏈最常見的攻擊,是女巫攻擊,大部分都是爲了實現雙花。
在對抗女巫攻擊上,基於 PoW
和 PoS
系統都有成熟的經驗。前者不表,後者主要是出塊概率權重
或者驗證投票權重
與抵押佔比成正比。
一個現實問題是,對於移動節點,我們既無法要求他們有足夠多的抵押,但又要捍衛它們的投票權。
如果完全按照抵押佔比成正比的投票權中,移動節點的願景將因失去激勵而形同虛設;如果按照一設備一票,我們又難以抵禦女巫攻擊(因爲節點很容易僞造)。
爲了實現我們的遠景和目標,我們設計瞭如下的節點結構。
節點類型
系統中包含兩大類節點。
-
參議節點(senate-node):部署在數據中心的服務器,擁有較強的計算、存儲、網絡性能,類似於網絡骨幹節點,前期有一定的准入。
-
衆議節點(mass-node):部署在家庭網絡或者移動網絡下的各類設備,無准入。
以上兩類節點,均需要參與 token 抵押。我們爲抵押設置一個最低准入門檻,選取抵押排名前若干位的賬戶作爲候選集合,依照節點抵押的 token 數量在候選集合的佔比分配抽籤權重。
節點選取方式
參議節點參數「待定」
衆議節點參數「待定」
兩類節點對比
類型 | 准入 | 競爭 | 職責 | 抽籤權重 | 收益攤分方式 | 量級 |
---|---|---|---|---|---|---|
參議節點 | 逐步放開 | 有競爭 | 存儲、轉發、提議、投票 | 股權佔比 | 股權佔比 | 大量 |
衆議節點 | 無 | 有競爭 | 區塊投票 | 股權佔比 | 組內均分 | 海量 |
我們既要保護網絡的安全和性能,又要鼓勵衆議節點積極爲網絡做出貢獻,因此,我們設計了兩類投票主體。
YPOS 區塊敲定
- 區塊提議者,從參議節點集合中(性能考慮)選舉,提出區塊和哈希。
- 區塊驗證者,從參議節點集合和衆議節點集合中分別選舉,分別對提議的區塊進行驗證和投票,hash 較小的優先級高。
- 滿足法定票數的區塊,則爲敲定的下一個區塊
定義如下:
網絡安全
參議節點與衆議節點集合,均按照抵押佔比分配抽籤概率,可以抵禦女巫攻擊。
官方持有一定量的 token,承諾永不拋售,但在網絡早期,可用於網絡安全性維護。
官方可以在必要時,可使得維護網絡穩定的 token 數量佔據足夠的份額,以確保網絡的 security 和 liveness。
鏈上將會設計針對各類不當行爲的懲罰措施,使得各類節點有經濟上的動力去誠實工作。
網絡演進
YOUChain 開發者承諾,當衆議節點的數量和質量,達到一定程度,將會推動主網持續升級。
- 通過安全分片技術提高可擴展性
- 逐步調整衆議節點的選取參數,實現「人人可參與」
- 區塊提議節點逐步過渡到從衆議節點中選取
- 逐步降低參議節點集合法定票數 Qs
Qs
Qs 的要求 - 參議節點的功能將演進爲:存儲、轉發
總結
上文主要從區塊鏈網絡及其節點的本質出發,闡述了現有公鏈的去中心化和使用成本等問題,進而介紹了 YOUChain 的願景和節點設計,最後給出了安全考量和演進策略。主旨是爲了闡明設計的思考,引起討論。
筆者閱歷和學識有限,以上設計可能存在巨大漏洞或者謬誤,具體的實施方案,也可能存在不確定性,請讀者不吝指出。作者微信 freeface
,有興趣可添加討論。