比特幣分叉史(WIP)

比特幣分叉史 (WIP)

https://hackmd.io/@E-5gxTGiSByBOKpvsaKa_g/SyGtjw_qN/edit

想要取得近未來世界之一瞥,必須認識加密貨幣,想要認識加密貨幣,一定要理解比特幣。2017 年夏天我在 Google Shanghai Cryptocurrency Study Group 里分享過 一篇介紹比特幣歷史的 Slide,但是現在回顧起來,當時還是太年輕了。原因是我忽視了比特幣社區內部那些反對派的聲音。

前幾天 Vitalik 撰文論及言論自由時,就討論了最近的幣安下架 BSV 事件與當年 /r/bitcoin 上對大區塊的言論審查之間的聯繫。這篇文章試圖帶你回顧比特幣分叉的歷史。想對比特幣分叉的歷史有一個清晰直觀的鳥瞰,可以看 Bitcoin Magazine 最近仿照 地鐵地圖 製作的 比特幣分叉地圖

立場與偏見

This perception demonstration also shows how powerfully our paradigms affect the way we interact with other people. As clearly and objectively as we think we see things, we begin to realize that others see them differently from their own apparently equally clear and objective point of view. “Where we stand depends on where we sit.”
—— The 7 habits of highly effective people: restoring the character ethic, Stephen R. Covey

值得一提的是我們在閱讀下面的觀點 —— 以及日後形成自己的觀點時 —— 都需要了解這些觀點背後的立場。立場有時會加劇我們的偏見,從而使得我們遠離真相。一個例子是,ConsenSys 在 2018 年關於 EOS 的報告,普遍被 EOS 社區認為是偏見並帶有敵意的。而對於 Bitcoin 社區,因為大家都會自稱自己繼承了 Bitcoin 的正統,所以尤其要區分這些頻道之後的立場。最著名的例子可能要數 名為 Bitcoin 的 Twitter 賬號,這是一個明顯帶有 BCH 傾向的頻道1。這種偏見普遍存在,在這個 後真相時代,當你看到你想要看到、願意相信的消息時,就要提高警惕

比特幣的迭代與治理

Social progress means a checking of the cosmic process at every step and the substitution for it of another, which may be called the ethical process; the end of which is not the survival of those who may happen to be the fittest, in respect of the whole of the conditions which obtain, but of those who are ethically the best.
—— Evolution and Ethics, Thomas Henry Huxley

關於比特幣的簡短歷史和年表,包括可以參考 比特幣十年回顧 —— 什麼是比特幣,她會成為什麼。關於比特幣更早期歷史,可以看 Nicholas Mross 2014 年拍攝的紀錄片 —— The Rise and Rise of Bitcoin,第一手的資料,可以去考古 The Cryptography and Cryptography Policy Mailing List 以及 Bitcointalk 上 Satoshi Nakamoto 的發言。更多紀錄片可以搜 這裡

早期的比特幣源代碼 託管於 SourceForge 的伺服器之上,開發者用電郵跟中本聰交換代碼補丁。隨後 Sirius 改用 Subversion 進行代碼管理。2011 年,比特幣項目從 SourceForge 遷移到 GitHub,2014 年,比特幣項目更名「Bitcoin Core」(比特幣核心),2015 年 SourceForge 的代碼倉庫逐漸被棄用。

比特幣白皮書先於比特幣代碼誕生,比特幣代碼最早是中本聰用來驗證,比特幣白皮書中所描述的 P2P 電子貨幣能否真正成立的 實驗。超出絕大多數人的意料,她成功了。早期的比特幣代碼質量並不很高,只有 Windows 客戶端,也沒有協作和開發協議的標準。當 有人向中本聰報告 了一個比特幣代碼庫會引起雙花攻擊的漏洞時,中本聰立即對比特幣協議進行了更新,並告訴網路上的每個人升級他們的客戶端,而沒有解釋原因。這就是已知的第一次比特幣分叉。

在軟體開發中,一個項目最少失去多少關鍵成員,會使得項目陷入混亂、癱瘓的狀態,被稱之為 巴士係數。讓一個 Payment 系統建立在一個巴士係數為 1 的工程之上顯然是極其危險的,這也是中本聰從比特幣項目中退出的一個原因。

進化才能生存。比特幣改進提案(BIPs)為貢獻者們提供了標準化流程,以便為協議提出新想法、測試這些想法以及對其進行同行評審(Peer Review)。這個系統旨在允許對協議進行持續的創新,同時確保通過共識和協作來實現這些改進。

BIPs 源自 Python 改進提案(PIPs)。最早由 Amir Taaki 2011 在 BIP 0001 中提出並在 BIP 0002 中由 Luke Dash Jr. 擴展並改進。BIP 的目標是給所有人參與到改進比特幣協議,並在實際動手編寫代碼之前審查提案的安全性,達成初步的共識(Rough Consensus)。這一協作的標準也被推廣到了其他區塊鏈項目之中,例如以太坊改進提案(EIPs)。

如果算上中本聰,Bitcoin Core 目前有過三任領導班子,他們分別是:

關於我們從外部觀察 Bitcoin Core 的人來說,一個常見的誤解是認為 Core 團隊是一個大一統的實體。這是錯誤的,事實上在 Bitcoin Core 的貢獻者之間 也會有分歧,而且就算那些最多產的貢獻者,也寫了很多代碼,從沒有合併入核心項目。

關於 Bitcoin Core 可以閱讀下面的文章:

關於比特幣改進協議(BIP)如何工作,可以參考:
Bitcoin Governance: What are BIPs and how do they work? | 中譯,比特幣的治理:什麼是比特幣改進協議以及它們如何工作

當然,對於比特幣的治理模式,也有人不以為然。反對的聲音可參考:
Bitcoin 的權力皇冠 —— CORE

擴容路線之爭

Consensus is the path, not the destination.
—— On Consensus and Humming in the IETF

比特幣的分叉源自擴容,準確的說,是擴容路線之爭。

擴容是比特幣能夠真正成為世界貨幣,達到 Massive Adoption 的必由之路。但如何擴容,按照什麼樣的路線實施,卻成了懸而未決的問題。擴容之爭的複雜之處在於,它涉及到長期與短期的考量、風險與效率的權衡,甚至理性與情感的糾結。這不僅僅是一個技術問題,還是一個經濟問題、政治問題,甚至意識形態問題。全面系統地考察和分析不是一件容易的事情。

關於擴容的討論事實上伴隨著比特幣的整個生命周期。早在 2010 年,關於 中本聰與 BM 的那段名對話

If you don’t believe me or don’t get it, I don’t have time to try to convince you, sorry.

出現的上下文就是擴容。其他幣也會遇到擴容問題,但很少會像比特幣這樣產生如此大的分歧。新的項目經常會宣稱他們自己解決了三難悖論。

從 2015 年開始,每年比特幣都會舉辦 擴容工作坊(Scaling Bitcoin Workshops),來自世界各地的比特幣愛好者會聚集一堂,討論比特幣擴容的問題。

比特幣的分叉

讓我們提綱挈領,忽略那些早期的緊急修復,實驗性質的分叉以及各種「空投」,比特幣歷史上實質性的分叉發生過兩次。分別是 2017 年 Bitcoin Core 與 Bitcoin Cash 的分叉,以及 2018 年 Bitcoin Cash 與 Bitcoin Satoshi Version 的分叉。

自由分叉(Permissionless Forking)原本就是 自由軟體的重要組成部分,但在 Bitcoin 這一開源軟體中,自由分叉的意義卻顯得格外的不同。一個原因是,比特幣本身是具有實際利益輸送的項目。礦工,用戶,錢包,開發者,佈道者,交易所… 眾多的角色參與其中,使得這一問題變得更加複雜。比特幣的使命是成為 A Peer-to-Peer Electronic Cash System,給世界提供另一種可能,但是對於 P2P Electronic Cash System 的實現路徑上,各方的觀點卻可能又有所不同。而貨幣的成功與否,很大程度是建立在系統的網路效應之上,所以各個參與方對於分叉比特幣之一行為都格外謹慎和嚴格,也只有到參與的雙方的利益無法調和時,分叉才會成為最後的選項。

Bitcoin Core 與 Bitcoin Cash 分叉

The current system where every user is a network node is not the intended configuration for large scale. That would be like every Usenet user runs their own NNTP server. The design supports letting users just be users. The more burden it is to run a node, the fewer nodes there will be. Those few nodes will be big server farms. The rest will be client nodes that only do transactions and don’t generate.

和 BM 的對話中 中本聰提到比特幣本身的設計就不是為了擴容而存在的,這就像是要求每個閱讀新聞的用戶自己都起一個網路新聞傳播協議(NNTP)的伺服器差不多。接著中本聰提到自己在 自動販賣機 的貼文中,已經討論了自己所設想的擴容方案 —— 支付通道。

UASF 只是這次分叉的導火索,實際上圍繞著擴容的爭議,在比特幣社區的內部演化成了長達四年的爭吵、敵視,才最終導致社區一分為二。

香港共識

紐約共識

硬分叉

餘波 —— Initial Fork Offer

Bitcoin Cash 與 Bitcoin Satoshi Version 分叉

這裡我推薦下面幾篇文章:
【天下大義,當混為一】(上)談 Hash Vote & Market Vote
【天下大義,當混為一】(中)穩定論 vs 演化論
【天下大義,當混為一】(下)算力戰

可分叉性的意義

可分叉是開源軟體的重要特性,因而很少有商用軟體或者可盈利的軟體選擇開源,因為允許分叉意味著任何人都可以創建這一軟體的副本,從而侵佔原本開發團隊的市場份額。例如,很少有遊戲公司,將自己正在運營中遊戲選擇開源。從這個角度看,比特幣不僅僅創造出了一種電子貨幣,也創造出了一種文化,一個標準,一個關於協作的未來的標準。