去中心化的比特幣,賦能個體,還權於民,是全面的、徹底的。
UTC時間2008年10月31日18時10分0秒,北京時間11月1日凌晨2點10分0秒,密碼學郵件列表發出了一封自稱中本聰(Satoshi Nakamoto)的發件人投遞的電子郵件,郵件主題為“比特幣點到點電子現金論文”(Bitcoin P2P e-cash paper)。郵件正文開門見山:
我一直在研究一個新的電子現金系統
點對點,沒有受信任的第三方。
該論文可在以下位置獲得:
http://www.bitcoin.org/bitcoin.pdf
主要屬性:
點對點網絡可以防止雙重支出。
沒有薄荷或其他可信方。
參與者可以是匿名的。
新硬幣是由 Hashcash 風格的工作量證明製成的。
新硬幣生成的工作量證明也為
網絡以防止雙花。
我正在設計一個新的電子現金系統,它完全是點對點的,沒有受信任的第三方。
該論文可在以下位置獲得:
http://www.bitcoin.org/bitcoin.pdf
主要特性:
通過點對點網絡來防止雙重花費。
沒有鑄幣局或其他受信任方。
參與者可以是匿名的。
新硬幣是由哈希現金風格的工作量證明生成的。
用於新硬幣生成的工作量證明也為網絡提供了防止雙重花費的能力。
這篇只有9頁紙的論文,又被稱為比特幣的白皮書。在去年,白皮書發表12週年之際,劉教鏈公眾號發表了《比特幣12週年和中本聰的12個預言》。今年,值此比特幣白皮書13週年之際,讓我們一起來複習一下,這篇劃時代論文中的13個關鍵知識點。
第1個知識點:電子硬幣就是一串數字簽名。位置:白皮書第2頁,第2小節“交易”。
讓很多人驚訝的是,比特幣的區塊鏈上並沒有比特幣,只有一個個的電子硬幣。這些硬幣的面額是一個自然數,單位是0.00000001 BTC。後來比特幣社區為了紀念中本聰,就把這個單位命名為“聰”(sats)。
所以,並沒有所謂“1個比特幣”這種東西。只有很多個面額不同的電子硬幣,比如這一個面額是100,000,000(1 BTC),另一個面額是5,000,000(0.05 BTC),諸如此類。
電子硬幣的結構是怎樣的呢?其實電子硬幣就是一連串的電子簽名,是每一次硬幣換手的記錄,是硬幣換手的全部交易歷史。
換手交易就是花費掉舊硬幣,生成新硬幣的過程。由舊硬幣的所有者對要花費的舊硬幣和接收方的地址進行數字簽名,確認所有權的轉移,生成新硬幣。
值得注意的是,比特幣的白皮書裡並沒有出現UTXO(未花費的交易輸出)的字樣。這個概念通常指稱沒有被花費掉的新硬幣。
在比特幣的硬幣模型中,不同於傳統金融系統普遍採用的賬戶模型,一枚電子硬幣只有兩種狀態,被完全花掉,或者尚未被花掉。不存在花費一半或者一部分的情況。
第2個知識點:用哈希串起來的區塊鏈作為時間戳服務器。位置:白皮書第2頁,第3小節“時間戳服務器”。
區塊鏈的最大作用其實是為交易定序,也就是確定交易的先後順序。有順序,而後有歷史。有歷史,而後有時間觀念。
比特幣的區塊鏈本身就是一個滴滴答答的時鐘。它的每一個區塊的哈希,都像石英鐘每一秒秒針的跳躍。時間並不是連續的,至少在比特幣這座時鐘內部是這樣的。
比特幣的內生時間是獨立自存的,不依賴於區塊鏈外部的計算機時間,也就是所謂的牆上時間(wall time)——牆上掛著的鐘錶的時間。
值得注意的是,比特幣白皮書中並沒有區塊鏈(blockchain)這個合成詞。這個詞是後人拼湊和發明的。
第3個知識點:使用工作量證明,把時間戳服務器實現在分佈式的點到點網絡上。位置:白皮書第3頁,第4小節“工作量證明”。
工作量證明,英文Proof-of-Work,縮寫為PoW。業內總是把PoW,以及後來的PoS,PBFT,DPoS等等,統統稱之為所謂的“共識算法”,或者“共識機制”,其實是一種誤導。
類似PBFT等各種算法,確實設計目標就是為了解決節點間達成一致性的問題,也就是所謂共識問題。在開放網絡條件下(互聯網是封閉網絡),這一問題又被稱為拜占庭將軍問題。
但是中本聰引入PoW絕不是衝著拜占庭將軍問題去的,雖然最終效果確實是解決了這個問題,而是衝著發明和製造一台無法停止的、遍布全球的超級時鐘而去的。
所以,雖然比特幣當然克服了拜占庭將軍問題,而且PoW鍊或者說時間鏈確實是拜占庭將軍問題的解,但是中本聰無論是在白皮書正文,還是在參考文獻中,都絲毫沒有提及這個困擾分佈式系統領域數十年的問題。
第4個知識點:通過調節工作量證明的計算難度,自適應網絡算力的波動,確保出塊速度保持穩定。位置:白皮書第3頁,第4小節“工作量證明”。
每一個仔細了解比特幣工作原理的人,都會驚訝於比特幣網絡在缺乏中心化協調的情況下,能夠自行調較自己這台超級時鐘,讓出塊間隔在統計學意義上追踪現實世界的10分鐘時長。
有點兒像對錶。比特幣自己會對錶,一塊是自己這塊超級時鐘,另一塊就是現實世界的牆上時鐘。
第5個知識點:網絡節點通過最長鏈原則來實現共識。位置:白皮書第3頁,第5小節“網絡”。
有了一塊全局的超級時鐘,就可以對交易進行定序。
網絡無需特殊規定的拓撲結構(比如像DPoS那樣規定多少個超級節點之類的),通訊可以採用最簡單的gossip,網絡傳輸也不需要特別保障,只需要採取最大努力原則就好。如此就能輕鬆達成全球共識,只需要大家都相信一個謝林點,也就是包含最大工作量證明總量的那條鏈(最長鏈)。
注意最長鏈不是指區塊個數最多,而是指包含的每個區塊的PoW難度,過去近13年累積起來,總值最大的那條鏈。
如果我們讀一讀Leslie Lamport在上世紀80年代關於拜占庭將軍問題的最初論文,就會發現,中本聰關注的點是在常人之外的。
BFT——包括後來的非開放網絡下的分佈式一致性算法比如Paxos——的研究者們通常把研究重心放在協商方法上,比如投票機制。而他們把時鐘同步性假設自動作為默認的前提條件,甚至都不會在論文裡進行討論。
我猜可能是因為FLP定理的緣故,異步網絡下拜占庭將軍問題不可解。
但是中本聰就是要深挖時鐘同步性假設這個很少有人注意和討論的要害。當我們不能做這個假設了,那又會怎麼樣?
中本聰的答案是,我們需要首先發明一個全局的超級時鐘。
他把這個超級時鐘發明出來了。然後我們就發現,所謂的拜占庭將軍問題順道兒也就迎刃而解了。
第6個知識點:網絡通過區塊獎勵和交易費來激勵出塊節點,以使之保持誠實。位置:白皮書第4頁,第6小節“激勵”。
這是一個巧妙的博弈論設計。
區塊鍊是一個公共賬本。如果維護賬本的安全、正確得不到什麼好處,篡改、破壞賬本卻能欺詐獲利的話,那麼人人都會破壞賬本,最終比特幣歸零,所有人都得不到任何好處。這就是典型的“公地悲劇”問題。
這種人人選擇理性自利最大化,卻最終導致全體得利最小化的情況,在博弈論中被稱為“囚徒困境”。囚徒困境下各方的理性選擇,陷入一種均衡,誰也擺脫不了,被稱為“納什均衡”。
在人類過去的歷史上,要克服這個問題,採取的方法是中心化的方法。通過引入中心化的權威機構,對做壞事的人進行懲罰,就像我們現實社會中的各種法律法規,多數是懲罰性的機制,以外力推動納什均衡點的移動,以扭轉公地悲劇問題,讓人們得以逃脫出囚徒困境的互相傷害。
是中本聰創造性地發明了由一個去中心化的系統,通過自動地施以獎勵性的機制,輔以密碼學對作惡能力的約束,同樣神奇的推動了納什均衡點的移動,扭轉了公地悲劇,擺脫了囚徒困境的內捲博弈。
至於獎勵的標的,正是對PoW的計算。公平、公正、公開。因為PoW的計算,無法作弊。
區塊鏈行業創新層出不窮,模仿比特幣設計各種挖礦激勵機制的項目也不少,可是,很少能找到像PoW一樣好的不能作弊、沒有後門、公平公正的獎勵標的。
第7個知識點:區塊獎勵同時也是實現比特幣去中心化發行的方法。位置:白皮書第4頁,第6小節“激勵”。
更妙的是,用於改變博弈結構的區塊獎勵,同時順道兒完成了比特幣從無到有的發行和分發。
因為獎勵是去中心化的,獎勵的行為是去中心化的,所以比特幣的發行也就自動是去中心化的了。
第8個知識點:用默克爾樹把交易數據從區塊中分離出去,剩下的數據稱為區塊頭,具有很小的數據量。位置:白皮書第4頁,第7小節“回收磁盤空間”。
這是一個優化。數據拆分後,區塊頭的剩餘數據量非常小,可以輕鬆裝進內存裡,快速計算。
同時,默克爾樹還支持剪枝,可以剪掉已花費掉的硬幣數據,從而節省磁盤空間。這裡就看出硬幣模型比賬戶模型的一個好處了。硬幣只有兩種狀態,沒花費,花費了。花費了就可以剪掉。
後來到了2017年,為了對比特幣進行擴容而不損害其安全性,核心開發組最終決定採取保留區塊物理尺寸限制,而把交易數據中的簽名部分,也稱為見證數據,從區塊中拆分出來,這樣就達到了邏輯擴容的目的。這個技術,被稱為“隔離見證”(segwit)。
隔離見證技術擴大了比特幣區塊的邏輯容量,緩解了交易量增長帶來的應對壓力。
第9個知識點:可以允許用戶只保留最長鏈的區塊頭數據,這種技術被稱為簡化支付驗證(SPV)。位置:白皮書第5頁,第8小節“簡化支付驗證”。
當我們剝離了交易數據之後,剩下的區塊頭數據是很小的。甚至可以裝進移動設備裡。這就可以用來實現輕量級錢包,或者叫輕量級節點。
不過對於很多幣民來說,可能炒幣多年,只會用中心化交易所託管自己的比特幣。這種就建議還是儘早學習掌握《如何用私鑰保管比特幣》。
第10個知識點:一筆轉賬交易可以允許有多個輸入和多個輸出。位置:白皮書第5頁,第9小節“合併和拆分價值”。
類似金幣的熔融和重鑄。比特幣的交易允許有多個UTXO作為輸入,然後拆分成多個輸出,分別分發給不同的地址,諸如此類。
這給予了比特幣轉賬交易很大的靈活性。也給予了我們使用只有兩種狀態的硬幣來應對任意數額支付需求的能力。
我們可以選擇一個足以滿足需求的大額硬幣,或者多個小額硬幣組合起來,完成支付需求,並把剩餘的金額,轉移到我們自己的一個新地址中去。這個新地址,常被稱為“找零地址”(change address)。
輸入的金額加起來,和輸出的金額加起來,往往是不相等的。它們之間有一個差額。輸出小於輸入。差額就是暗示了該筆交易願意支付給出塊礦工的交易費,也叫做“礦工費”。
千萬不要忘記設置找零地址。否則你有可能把全部剩下的金額全部給了礦工!比如你輸入了1 BTC,給了張三0.1 BTC,沒有設置找零,那麼該筆交易暗含的礦工費就是0.9 BTC。
有的人為了懶省事兒,就重複利用輸入地址作為找零地址。比特幣網絡並不會組織你這麼做。但是,這裡有一個安全性問題,以及一個隱私性問題。隱私性問題在下面兩個知識點會提到。安全性問題則和量子計算機有關。
量子計算,如果能夠實用化(雖然還差十萬八千里),從理論上能夠破解ECDSA簽名算法,但是很難破解SHA-256哈希算法。一個沒有做過交易的干乾淨淨的地址,簽名公鑰是不上鍊的。鏈上只有公鑰的哈希,也就是,從未動過幣的比特幣地址具有量子計算抗性,足以在量子計算機面前保護其中的資產。
第11個知識點:比特幣網絡不收集任何用戶隱私數據。位置:白皮書第6頁,第10小節“隱私”。
在今天的大數據時代,隱私問題已經成為一個嚴重的社會問題。而這一切早在1993年埃里克·休斯寫出《密碼朋克宣言》的時候就已經預見到了。
比特幣的思想淵源,正是來自於密碼朋克。密碼朋克宣言中講到的隱私貨幣,正是對比特幣的前瞻。
導致隱私問題的是全面收集、隨意使用的互聯網商業模式。傳統的解決方案就是引入中心化的強有力的監管。
監管的方法存在幾個可能的缺點:1,立法的滯後性;2,執法的高成本;3,中心化腐敗和被收買的可能性。
中本聰給出的解決方案則更為徹底:從一開始就拒絕觸碰任何個人隱私。觸碰都不觸碰,更別說收集了。
第12個知識點:中本聰建議每次交易都換一個地址,以更好地保護隱私。位置:白皮書第6頁,第10小節“隱私”。
雖然比特幣系統不收集任何隱私,但是互聯網系統可是千瘡百孔的篩子。你的個人隱私信息在網上無處不在,如果你恰好公開過自己的地址,那麼通過大數據分析,很容易把你的身份和地址給關聯起來。
所以中本聰建議,“打一槍換一個地方”。
如果是應用在商業場景裡,比如做一個支持比特幣支付的電商網站,那麼最好為每一個訂單單獨生成一個地址。
但是管理這些地址,是一個繁重的活兒。為了簡化這項工作,後來的社區提出了所謂的HD錢包技術,又稱分層確定性錢包技術。
第13個知識點:隨著全網算力增強,到賬不必等待6個區塊確認。位置:白皮書第8頁,第11小節“計算”。
很多人都聽說過比特幣到賬需要所謂6個區塊確認的說法。 6個區塊,平均每個10分鐘,6個區塊確認就是要等1小時。於是有人就據此詬病比特幣交易速度慢之類的。
但是翻開比特幣白皮書,並沒有所謂等待6個區塊確認的說法。
其實所謂的6個區塊確認,實在是後人對比特幣白皮書的一種刻板學習的結果。
中本聰在白皮書第8頁進行了大量計算後得出了一系列數據。其中結論性的數據是:要讓確認後被推翻的概率下降到千分之一以下,那麼當惡意算力相當於全網算力的10%時,需要等待延伸5個區塊(算上打包該筆交易的第一個區塊總共就是6個區塊)。
這只是中本聰計算的第一個結果。後面他又連續給出了更多結果。比如緊接著就是,若惡意算力相當於15%,那麼要等待8個區塊。 ……
在比特幣全網算力已經高達150E的今天,惡意算力很難掌握10%這麼高的算力。或者反過來說,掌握高達10%算力的人,也不會對欺詐你的三毛兩毛感興趣。他完全可以拿這些算力去正兒八經地開採比特幣,這樣收益會更穩定、更高。這就是比特幣導惡向善。
某些幣把人變成鬼,比特幣把鬼變成人。
而中本聰推演的,是最壞的情況。 (即便如此,對欺詐最敏感的交易所如coinbase也早已將比特幣充值到賬的確認數減少到了3個區塊)
很多時候,我們可以做更加樂觀的假設。
比如星巴克可以假設付款買咖啡的顧客幾乎不會為了幾十塊錢的咖啡去攻擊比特幣系統。比如你可以假設你的好友、熟人幾乎不會欺詐你。那麼在這些存在外部信任的情況下,可以大幅縮短確認數,甚至實施零區塊確認。
中心化系統,確認到賬與否由平台說了算。去中心化系統,確認到賬與否由你自己判斷。
去中心化的比特幣,賦能個體,還權於民,是全面的、徹底的。
謝謝你,中本聰。
展開全文打開碳鏈價值APP 查看更多精彩資訊