學習中本聰對不確定問題的處理

——中本聰對去中心和中心化的處理技巧

分散式系統最大的難度是對不確定問題的處理。 如何在不確定性的狀態下得到確定性結果? 中本聰克服了一系列困難,很好地解決了這個問題,這令人嘆為觀止。 我看過加密貨幣領域的許多項目,不少項目出問題的原因在於對不確定性的理解不足。 從理解比特幣系統入手,是找到處理不確定性問題方法的捷徑。 只是我程度有限,無法概括中本聰的全部處理方法。

本文清楚的分析了中本聰去中心和中心化的處理技巧。

如何記帳

記賬,如果要形成賬頁,一個方法就是定時出賬。 中心化系統是一個人記賬,這不用爭;分散式記賬則意味著可以多人記賬。 為什麼你能記賬,而我不能記賬? 這裡有一個公平性的問題。 不公平就沒有人玩,這點極為重要。 大部分失敗的項目是沒有處理好公平性的問題。 人的參與是不能強迫的,不確定處理的第一個問題是公平性,只有在公平性的基礎上才能完成隨機性問題的處理。

誰有記帳權

這是一個不確定的問題。 中本聰選用了亞當貝克的雜湊演算法。 他預先設定一個雜湊值,叫難度值,然後採用博弈的方法,誰先算到這個值,誰就有記帳權。 顯然,這實現了在數學面前的人人平等。

如何保證10分鐘左右出塊

問題又出現了,對於難度值的計算,時間是不確定的。 從現在的實作來看,計算出這個難度值的用時在十多秒到兩小時之間。 哈希演算法是數學問題,其結果是符合泊松分佈的。 不確定性的產生是由於算力是隨機加入的。 在同等難度值,當算力加大時,出塊時間就會變短;當算力減少時,則出塊時間就會變長。 中本聰處理這個問題的方法,是將2016個區塊的總耗時累加,然後除以2016,看看和10分鐘相差多遠,據此來調整難度值,從而保證在算力隨機加入和 在撤出的條件下,出塊時間穩定在10分鐘左右,避免系統崩潰。 算力越大時,系統崩潰的可行性越小。 這麼多年比特幣都沒有崩潰,這真是了不起。 算力的隨機性和出塊基本上保持線性,這是一個值得多討論的問題。 下面舉兩個例子。

張建的Fcoin的失敗

張建提出了「交易即挖礦」的交易模式創新。 他的FCoin 交易所2018年5月21日上線,瞬間吸引了許多投資者。 2018年6月13日,在FCoin正式上線交易的第15天,24小時交易量達288億人民幣。 不僅位居全球榜首,也超過了排名第二到第七的OKEx、幣安和火幣等6家交易所的總和,也因此被圈內人士戲稱為「宇宙第一所」。 但是,平台幣FT價格自6月13日創下1.2567美元的最高點之後,開始連續多天暴跌;隨即平台交易量持續萎縮。 6月18日,FCoin發布平準基金申購公告,希望利用平準基金,透過公開市場操作維護它的平台代幣FT價格,但並未奏效。 而後的一系列操作都沒能挽救其失敗的命運。

問題的根本原因在於張建學藝不精,沒有理解中本聰的算力的隨機性和出塊基本線性的原理。 體現在張建的項目上,用戶是隨機進入和交易,送幣和用戶的隨機性同步,由於承接力是有限的,當送幣量大,一定承接不住,造成砸盤,導致崩盤。 這十分可惜,一個重大的設計漏洞毀了專案。

比特幣每天都在送幣,但不影響幣價,為什麼? 因為這是一個確定性的事件。 資本市場對於企業增發股票都會在除權日的當天,調整股票的開盤交易價格來對應。 因為股票的增發是不確定的事件,要根據股票增發的數量對股票重新估值和定價。

一個自動系統必須有負回授機制,用以對抗不確定性。 中本聰的線性發幣的方法是一個標準的負回饋方法。 其方法對所有的加密貨幣的激勵設計都有啟發意義。 失敗比成功容易,參考失敗者的足跡來探索成功者的道路無疑是捷徑。

如何讓巴菲特買比特幣

我在「請出中本聰迎接新時代」(chainlees.hk)的第12章中,介紹了穩定比特幣幣價的方法,就是受中本聰此原理的啟發。 巴菲特的主要觀點是比特幣無法估值,只有投機價值而無投資價值。 如果比特幣可以維持上漲,並且可以用上漲曲線預測,比特幣就具備了可預測的確定性,就符合了巴菲特所要求的可估值性。 符合了傳統投資界的胃口,比特幣才能大漲。 原則就是把用戶購買和賣出比特幣的隨機性,變成比特幣的確定性上漲。 此原理對於加密貨幣是通用的。 限於篇幅這裡不詳細介紹。

用人性解決拜占庭將軍問題的不確定性

拜占庭將軍問題的提出者是萊斯利蘭波特(Leslie Lamport),他是分散式系統的先驅和奠基者之一,2013年的圖靈獎得主。 而當時對這個問題,體現最高水準的解決方案是PBFT(實用拜占庭容錯Practical Byzantine Fault Tolerance),作者之一是芭芭拉·利斯科夫(Barbara Liskov),2008年的圖靈獎得主, 而PBFT只能在很小的網路中運作。 中本聰用了一個非常簡單的辦法比肩和超越圖靈獎得主們的演算法。 其實這是最長鏈問題。 如何保證作惡鏈不超過誠實鏈,有數學專家證明過中本聰的方法在數學上不完備,中本聰的成功似乎純粹是運氣。 其實中本聰說:「只要誠實節點集體控制著比任何一組合謀攻擊節點更多的CPU算力,系統就是安全的。」當作惡的收益小於誠實的收益,人們選擇不作惡。 數學家沒有算出數學後面的人性。

經濟學是研究人性的,也是研究隨機條件下的選擇性的。 數學公式中沒有人性,一旦數學公式中出現了人性參數,表示出現了不確定性的參數,公式就失去了意義。 中本聰的實踐告訴我們,人性大於數學。 反過來說,“如當作惡的收益小於誠實的收益,人們選擇不作惡”,這是人性定理。 這類的例子很多,也就是必須用規則來限制人性。 例如港幣的穩定機制,就是將隨機性控制在7.75-7.85兌換一美元的範圍。 這就極大限制了人的隨意性所造成的影響。

中本聰的高明在於對人性的理解。

用機率方法解決分散式系統的一致性問題

比特幣沒有統一的中心化節點,如何做到帳本的正確? 中本聰認為10分鐘交易資料可以到達所有分散式記帳節點,每十分鐘的帳目組成一個區塊,由算出雜湊值的記帳節點負責記賬,同時驗證前面區塊的節點記帳是否 正確。 要驗證多少區塊就可確認帳本結果是正確的? 中本聰創造性地運用了機率理論。 中本聰認為只要在錯誤或惡意算力佔比不高於10%的情況下,我們就只需要在交易進入區塊後再延長5個區塊即可認為帳本正確。 就是6個區塊確認。 14年的實踐證明六個區塊確實沒有出現過問題。

現在的算力龐大,10%的惡意算力很難出現,考慮到空區塊的存在可能導致分叉,Coinbase交易所建議3個區塊確認就可以了。 中本聰的方法是對傳統的分佈式最終一致性的突破,他用機率解決了一致性問題,這應該是首次吧。 如果一個分散式系統,沒有中心同步節點,也不是機率性的確認,那麼這個分散式系統在數學上是不完備的,因此不具備帳本的可靠性。 這類的加密貨幣項目很多,讀者可以自行比較。 今天沒有失敗,不代表未來不會失敗。 這句話說得很重。

考察非帳本類的項目,例如中心化的雲端存儲,由於有中心化的調度,有3個備份就可以。 對於沒有中心化調度的分散式存儲,應該是多少備份? 如果到了6個或更多才有可靠性,那還有經濟可言嗎?

用中心化帳本使得分散式系統記帳有了數學完備性

分散式帳本表示大家都可以記帳。 但如何保證不記錯帳? 顯然所有記帳節點的帳本都必須相同。 這就要求有規則。 大家都把帳記到最長鏈上,最長鏈的記帳要經過六個區塊確認。 新的區塊被用P2P的方法同步到所有的挖礦節點。 中本聰在整個記帳過程中都在與不確定性作鬥爭,唯獨保留了中心化帳本。 數學家證明只有中心化帳本才有數學的完備性,記帳可以不是中心化的,驗證可以不是中心化的,而帳本必須是中心化的。 這意味著所有的帳本互為拷貝。

去中心化是一個含糊的概念。 應該明確地說,中本聰的高明之處是利用分散式記帳的方法,實現了中心化的帳本。 為什麼繞了這麼大一個彎? 因為這是為了公平。 人人可以參與是公平,最長鏈原則是公平,用6個區塊確認是公平。

對人性的深刻洞悉,採用公平的方法對抗不確定性,這合天道、合人性。

設計全域「順序時鐘」來對抗時間不同步

對於分散式系統,如何做到資料最終一致性? 有中心化的調度節點,一切就變得容易了。 人們可以設計一個時鐘,大家按這個時鐘同步。 比特幣沒有中心化節點調度,指定格林威治時間並不能保證所有的電腦時間同步。 顯然此路不通。 中本聰十分簡單地設計了區塊高度,這是系統唯一的“時鐘”,走得最快的就是準確的,即最長鏈原則。

區塊高度的概念被後續的加密貨幣項目廣泛採用。 軟體程式設計過程中沒有長寬高的考慮,只有時間,而在比特幣系統中,時間的不確定處處可見,例如哈希演算法的賽局等。 設計區塊順序排列,並提煉成區塊高度,以此來巧妙地對抗時間的不確定性,是一個非常自然的想法,也是十分簡單和高明的方法。

節點自由進入和退出以及節點的賽局關係對抗聯合作弊

比特幣的節點是自由進出的。 有加密貨幣項目採用固定節點方法,含有指定的意思,我們必須信任這些指定節點。 這是非常不確定的事,我們無法證明他們不聯合作弊。 比特幣的節點記帳是博弈產生的,機率演算法保證無論是競爭或聯合,都不可能作弊。 這個方法去除了對人性的信任,對抗了人性的不可靠,是任何一個加密貨幣系統都要考慮並解決的問題。

對抗網路底層攻擊的非對稱加密

這是中本聰的老本行技術,即使比特幣是明碼傳輸,你都拿我沒轍。 對於比特幣之後的一些加密貨幣,採用了帳戶系統結構,他們不得不在傳輸過程中加密。

沒有中心節點的調度,中本聰最終的對抗方法

沒有中心化節點的調度,就存在區塊的確認時間的問題了。 目前時間最快的是BSC,也就是幣安智能鏈。 它的確認時間是3秒一個區塊,11個區塊確認要33秒以上,不要說對21個固定節點存在不可靠猜疑,就是這個時間也比中心化慢了一個數量級。 比特幣系統的確認時間需要一個小時以上,這將如何用於支付應用程式? 後期在比特幣論壇中,人們對擴充應用的問題越提越多,這些都是比特幣系統解決不了的。 如果解決這些問題,就會降低系統的可靠性。 所以中本聰一走了之,徹底消除了結構改變所造成的不確定性。

這件事隱含著一個道理,由於中本聰都不做的一層支付,別人做這個有戲嗎? 所有的支付要放在二層解決,而不是放在一層主鏈之上。 主鏈要單純,就是只完成發幣這一件事。 因為發幣沒有競爭對手,支付的效率如果不超越Web2就沒有競爭力。

完美系統有瑕

比特幣在歷史上曾經發生了海底電纜斷網,2018年某一天下午15:30,中國的海底光纖突然出現故障,國際出口被阻斷。 然而,整個比特幣網路仍正常運作:國內的礦池、礦場照樣在挖幣;國外的礦場、交易所繼續正常挖幣和交易。 於是形成了中國區和中國區外兩個區的採礦。 兩個多小時後斷網故障修復,由於中國區的算力大,很快中國區成了最長鏈,中國區外的記帳都無效了,交易都退回到交易池中。 還好時間不長,只有兩個多小時,因此沒有引起大的問題。 但是如果是幾天呢? 許多交易已經被確認為正常交易,很難恢復到確認交易前的狀態。 硬要恢復到,可能在商業上會有混亂和爭議。

網路底層故障最好的方法就是比特幣系統停擺,不知道當年中本聰的警報系統是否有這個功能,但他最後還是移除了警報系統。

中本聰和比特幣的運氣真好,現在94%的幣都挖出了,算力的分配比較均勻。 人算不如天算,祝福比特幣好運!

但是被廢的鏈造成記帳者的損失,當時價值很小,無所謂,現在則很大,應該補償,錢從哪裡來? 以太坊是叔塊補償,做得好。

體會

做加密貨幣項目,如果沒有研究透比特幣,就會事倍功半。 後來許多人的專案不成功,就是沒有學會走就開始跑步了。 我們花了14年,除了比特幣,儘管有很多好的創意,但是不能與網路的整體進步相比。 目前還沒有一個專案比FTX爆雷對主流的影響力大,而FTX還是一家中心化的交易所。

分享這篇文章給朋友

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

返回頂端