BTC.com莊重:保護一條鏈需要付出代價,去中心化和成本不能兼顧
12月9日12月9日,巴位元Chainge區塊鏈技術沙龍來到了北京,本期沙龍的主題是《寒冬,礦池該何去何從?》,BTC.com CEO莊重詳解了PoW, PoS, DPoS等共識機制挖礦演算法的利弊,他表示各演算法的設計存在取捨,保護一條鏈需要付出代價,去中心化和成本不能兼顧。
以下是莊重的演講內容精編,由巴位元整理。
大家好,我是BTC.com CEO莊重,非常感謝巴位元的邀請,也非常高興在寒冬裡還能看到這麼多礦工來參加活動。我想帶大家回顧一下常見的幾種挖礦演算法,並探討下這方面近兩年比較有爭議的事情,最後站在礦池運營策略的角度給大家提出幾點建議。
對於任意一個數字貨幣專案,為什麼要有共識協議?一是為了讓一個新的節點加入網路時,通過和其他節點的通訊,就能夠達到一個最終一致的狀態。二是我們需要一個公平的激勵機制,來保證不斷有新的區塊產生。三是為了讓這條鏈時穩定的,我們要減少礦工在主鏈外挖礦的動機。所以說,共識協議的核心有兩點,怎麼判斷一個區塊是合法的?怎麼判斷哪一條鏈是真正的主鏈?這裡就包含了區塊合法性檢測和主鏈選擇規則。
工作量證明(POW)
POW工作量證明,通常是說根據當前的候選區塊,區塊頭裡就包含了相關的交易信息,然後我們基於某種雜湊演算法計算出它的雜湊值小於設定的目標。不同的幣種採用的演算法不同。主鏈選擇規則也是設計中需要考慮的,但通過此次BCH分叉大戰,大家意識到,認可主鏈並不是要看哪條鏈最長,而是要看哪條鏈累計的工作量最大。
目前來看,POW仍然是一個相對公平的分發機制,這體現在算力比例決定挖礦的概率,所以挖礦是公平的。但令人頭疼的是,你防攻擊的成本和攻擊者的成本一樣高,為了防範攻擊,你需要和攻擊者相匹配的算力。這就是為什麼大家看到這次算力大戰變成了燒錢大戰,所以對於POW機制來講,不管你的演算法設計得有多好,如果沒有算力和價格的支撐,都很難保證安全性。
對於礦工來講,挖的幣可能是各種各樣的演算法。工作量機制本身對於演算法沒有實質依賴,所以也有一些幣中途換了演算法。有的演算法會打一個口號是“反ASIC”,通常有這樣幾種方式:
一是從記憶體的角度來做限制,比如讓演算法依賴於記憶體的頻寬、容量、延遲,歸根結底是能否在一個晶片上做出比較大的記憶體。目前我們已知的演算法,它們設計的平衡點在於能否用一個比較經濟的成本,做到100-200MB的晶片上SRAM。二是我不採用單一演算法,而是混合多種雜湊演算法,以隨機的順序要求你去計算。三是我不採用非雜湊演算法。這幾種解決方案本質上是礦機廠商投入研發成本生產挖礦晶片和最終產出收益的攻防戰,任何演算法最終都是有可能被攻破的。
萊特幣的scrypt演算法是最早出現的反ASIC的演算法,但由於它的引數設計比較保守,所以實際上很快就有了ASIC,而且萊特幣ASIC礦機的效率和比特幣類似,是完全碾壓GPU的。而像以太坊ASIC礦機的優勢,即同樣功耗小所能產生的算力相對於GPU基本在五倍以內。門羅幣也很典型,當晶片能做的記憶體變大了以後,原來的演算法很快就被攻破了,但開發者也很好調整,只需要修改演算法的某些引數讓你對記憶體的依賴更大,這些晶片就又都跑不了。而像達世幣的演算法設計是採用多種演算法,增加設計的複雜度。這裡說的是晶片難度,而非技術上做不到,所以隨著它價格的上漲,很快就出現ASIC礦機了。開發者的對應策略是我可能會突然增加一種雜湊演算法,也可能突然改變雜湊演算法的策略。而Aetemity採用的是一種CuckooCycle的演算法,它的關鍵在於現在還沒有一種專門的晶片是用來解決它所要處理的圖的問題,但如果針對這個問題的ASIC被設計出來的話,應當還是會比GPU快很多,這也是一個潛在的問題。另外,ProgPow是目前社群正在研究的一個演算法,它實際上是以太坊Ethash的變種,最終目標是希望做到ASIC和GPU效率一致。
我們通常會有這樣一種爭論,認為ASIC會導致中心化,但實際上,無論GPU還是CPU,硬體生產廠商都是有限的,晶片生產集中在更少的上游廠商,這些都遠遠小於礦機的生產廠商,而且它們還存在大量專利壁壘。其實當單一幣種利潤變得很高時,就會促使市場產生新的競爭者,所以大家可以看到BTC礦機的市場非常活躍。現在的行情很像2014年的時候,有非常多的礦機廠商和晶片方案,但整個市場不斷在下行,直到2015年見底。目前所有PoW幣種都存在著散戶多佔比少的特點,從我們礦池的資料也可以看出,散戶數量非常多,但算力佔比非常少。另外,從歷史上看,礦池規模都會在達到30%以上時引起自發的調整,大家也會認為,當一個礦池算力佔比30%以上,對整個體系就不安全了。
這張圖是2018年BTC.com礦池的份額佔比。在這裡可以看到一個比較有意思的現象,就是礦池行業的調整,實際上稍稍滯後於整個市場。大家可以看到,在今年4、5月份幣價相對比較高的時候,絕大部分出塊來自我們已知的幾個大礦池。隨著幣價的上漲,只要啟動一小部分算力就足夠支撐一個礦池團隊了,所以可以看到未知的礦池數量在不斷地增長。而相應的,隨著今年幣價的下行,會導致小礦場難以支撐。因為礦池的收入主要來自於交易的手續費。因為礦池的滯後性,所以接下來礦池會迎來新一輪的競爭。
權益證明(POS)
另一個討論比較多的就是權益證明(POS),對比PoW,最大的區別是新區塊產生依賴於和持有代幣數量有關的虛擬算力,挖礦的計算消耗很小。但實際上POS在設計上是有很多難點的:
首先就是在POS機制下,我們如何確定一條主鏈,不同於POW,挖礦是有成本的,POS在主鏈之外挖礦的成本很小,所以可以任意選擇對自己對有利的分叉,而且攻擊者還可以從很久之前的區塊開始分叉,去覆蓋之後的鏈,因此需要引入檢查點。通常來講有兩種解決方案,一是從POW過渡轉型到POS,二是預售。
POS挖礦的公平性也是很難的,POW是多少算力對應多少收益,POS能不能做到我有多少幣對應的就有多少收益呢,在實際設計中其實會有各種各樣的問題。依賴於虛擬算力的設計,可能會出現諸如拆分持有代幣,調整交易順序之類提高算力的方式,最終變相成為PoW。
另外一個問題就是“礦工關機”怎麼辦?在POW網路裡,你並不能知道有多少算力,只能依靠當前挖礦難度進行反推,而在POS網路裡,你知道整個網路裡有多少幣,有的協議裡會要求,當你想要確認一個新塊的時候,必須有多少算力的同意。如果這一批人都關機了,那可能就湊不夠確認的最小金額。
POS 機制的演算法有很多。我個人覺得比較值得期待的還是以太坊的Casper方案,從2014年開始討論至今,也是由於這個方案延遲了數次,為了對衝以太坊調低了挖礦收益,Casper從一開始就有兩個版本,一個是V神版FFG(Friendly Finality Ghost),另一個是Vlad版CBC(Correct by Construction),兩方形成競爭。從今年以太坊開發者大會來看,FFG這個方案是被廢除了,但它跟目前和分片方案進行了融合,進入以太坊2.0的開發。
DPOS和超級節點
DPOS更加簡單,它只需要設計出一套機制,能夠保證選出一些超級節點,而超級節點的選擇過程是POS,可投票的票數取決於持有的代幣數量。被選上的超級節點參與共識協議,它們本身共識協議不再重要,所有問題都會變成超級節點之間的開會討論。在這種情況下,“算力”不再是在礦池,而是集中在了交易所,錢包,託管平臺,但DPOS機制確實激發了社群的動力,超級節點為了競選,都在自發的推廣拉新。從效能的角度來講,DPOS的效能有可能是Dapp必要的選擇。但如果你看中的是代幣本身價值的可靠性,DPOS反而並非一個好的解決方案,因為它的可控制能力太強了。
綜上所述,我們看到POW、POS、DPOS及混合架構,其背後都是一個區塊鏈方案設計上的取捨。我們會考慮去中心化還是效能,保護一條鏈需要付出代價,去中心化和成本不能兼顧。而礦池在一定程度上保證了使用者的參與度,避免小“算力”使用者無法參與挖礦。
對於我們礦池來講,接下來在運營方面主要會做這幾方面的工作,一是增加PoW幣種支援數量,優化小幣種挖礦。二是和挖礦工具和挖礦管理工具合作,讓使用者挖礦的過程變得更加簡單。三是我們即將上線Decred的PoS礦池,以太坊的基於智慧合約的PoS挖礦研發中,我們也會及時跟進。