在2014年的OP_RETURN之爭是行業內的一個顯著分裂,與今天的Ordinals辯論有很多相似之處。回顧OP_RETURN之爭在今天看來格外的有意義。
-
一些比特幣愛好者和比特幣開發者根本不希望在比特幣區塊鏈上進行此類活動,他們成功地阻止了OP_RETURN這類活動。與此同時,以太坊等其他鏈的推廣者可能利用並誇大了比特幣開發人員的這一明顯立場,以幫助他們的生態獲得吸引力。
概述
我們經常被問到這樣一個問題:為什麼去中心化交易所等Dapp 通常在以太坊而不是比特幣上?畢竟,當然在比特幣之上構建Dapp 是可能的,例如去中心化交易所、域名系統或替代代幣。這當然有幾個原因,例如:i. 以太坊更靈活的原生腳本語言使得構建Dapps 變得更容易;ii. 以太坊更快的出塊時間,使Dapps 更加用戶友好,或者iii. 比特幣選擇比以太坊更保守的區塊大小限制,導致比特幣的潛在費用更高。上述所有因素確實產生了影響,但我們認為它們的影響往往被誇大了。最重要的因素是文化。一些比特幣愛好者和比特幣開發者根本不希望在比特幣區塊鏈上進行此類活動,他們成功地阻止了這種活動。這似乎主要發生在2014 年3 月左右,而那段時間發生的事情是本文的主題。與此同時,以太坊等其他鏈的推廣者可能利用並誇大了比特幣開發人員的這一明顯立場,以幫助他們的生態獲得吸引力。
Counterparty 協議
正如我們在2020 年9 月的報告中提到的,在2014 年初,Counterparty 推出。 Counterparty 是比特幣之上的一個協議層,它支持諸如創建新代幣和在分佈式交易所交易這些代幣等功能。該系統通過使用部分比特幣交易數據並在交易對手協議中使用它作為一項功能來工作,例如創建代幣、發送代幣或在分佈式交易所上對代幣進行市場投標。
更簡潔地說,一開始,Counterparty 使用比特幣操作碼OP_CHECKMULTISIG 將Counterparty 相關數據包含到比特幣區塊鏈中。該操作碼本應用於驗證支付腳本哈希(P2 SH) 多簽名交易的簽名。可以在此處查看2014 年7 月的Counterpaty 交易示例。該交易將比特幣發送回它來自的地址,並且還具有三個額外的輸出,其中輸出腳本是與交易對手協議相關的數據。在這種情況下,它是創建一個名為TICKET 的新代幣。使用OP_CHECKMULTISIG 可以被認為是一種hack,因為這不是操作碼的預期用途。 Counterparty 現在使用比特幣的OP_Return 操作碼來存儲數據,這在某種程度上更符合開發人員的意圖。例如,請參閱這個更新的Counterparty 交易,它使用OP_Return。
在2014 年初,圍繞Counterparty 進行了大量的實驗、開發者活動、創新和興奮,其領先於一個名為Mastercoin 的競爭對手平台。
什麼是OP_Return?
OP_Return 是比特幣中可證明不可花費的交易輸出。該功能可用於燃燒比特幣或在比特幣區塊鏈中存儲任意數據。由於數據不是UTXO 集的一部分,因此據說以這種方式存儲數據有助於擴展比特幣,因為參與剪枝的節點不需要存儲OP_Return 數據。
比特幣的共識規則允許最大10,000 字節的OP_Return 大小。例如,2013 年5 月,有人在以下交易中利用了此功能。此交易中的OP_Return 輸出包含Rick Astley 1987 年歌曲“Never Gonna Give You Up”的歌詞,該歌曲與Rickrolling meme 相關。
在2014 年之前,包含OP_Return 的交易是非標準的,不被普通比特幣節點中繼。但是,如果礦工包含這些交易,則它們被認為是有效的。 2014 年3 月,Bitcoin Core 0.9.0 發布,其中包含OP_Return 功能作為標準交易類型,因此交易將默認中繼。當時的發行說明如下:
此更改不是對在區塊鏈中存儲數據的認可。 OP_RETURN 更改創建了可證明可修剪的輸出,以避免數據存儲方案(其中一些已經部署)將任意數據(例如圖像)存儲為永遠不可用的TX 輸出,從而使比特幣的UTXO 數據庫膨脹。在區塊鏈中存儲任意數據仍然是個壞主意;將非貨幣數據存儲在其他地方成本更低,效率更高。
來源:https://bitcoin.org/en/release/v0.9.0#opreturn-and-data-in-the-block-chain
Bitcoin Core 0.9.0 只會中繼OP_Return 為40 字節或更少的交易,如果數據大於此,它仍然是有效的交易,但不會被中繼。最初的限制是80 字節,但經過多次爭論,開發人員最終選擇了40 字節。
2016 年,Bitcoin Core 0.11.1 最終將中繼限制增加到80 字節,並在2016 年底的Bitcoin Core 0.12.0 版本中增加到83 字節,即我們今天的限制。這意味著,如果今天想要一筆OP_Return 輸出超過83 字節的交易,則必須自己挖掘區塊或直接發送給礦工。
OP_Return 戰爭
2014 年3 月20 日,當時比特幣的主要貢獻者之一Jeff Garzik 開始在Bitcointalk 論壇的Counterparty 版塊上發帖。 Jeff 批評了Counterparty 對區塊鏈空間的使用。
迄今為止,我還沒有看到無法用簡單的哈希安全替換的區塊鏈數據轉儲方案。您不需要將數據存儲在區塊鏈中。那純粹是智力上的懶惰。時間戳哈希(數據)同樣安全,同時更有效。此外,一條二級鏈可以被證明與比特幣掛鉤:
來源:https://bitcointalk.org/index.PHPtopic=395761.msg5796379#msg5796379
Jeff 接著說:
CheckMultiSig 顯然適用於ECDSA 公鑰,而不是任意數據。將操作用於其預期目的以外的某些事情會產生負面的、可能是意外的或未知的後果,這不足為奇。 Counterparty 交易不是“根據比特幣協議”,它們會通過,因為它從未期望以這種方式使用該功能。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5827189#msg5827189
有人可能會認為Jeff 有這種觀點很奇怪,因為在2017 年他似乎是“大區塊支持者”,而且這種關於保守使用區塊空間的觀點似乎與大區塊觀點不一致。然而,這種明顯的矛盾在2014 年根本沒有出現。當時Jeff 的觀點在一定程度上得到了當時幾乎所有活躍的開發者的認同,包括後來成為大區塊頭頭的那些。據我們所知,人們對區塊大小限制的看法和這個問題之間根本沒有簡單的映射。 Jeff 當時是一位備受尊敬的開發人員,這篇文章引起了Counterparty 開發人員和用戶的極大關注。
一位化名為“BitcoinTangibleTrust”的Counterparty 開發人員回复Jeff 如下:
你是絕對正確的。您不需要將數據存儲在區塊鏈中。時間戳哈希(數據)同樣安全,同時更有效。一條二級鏈可以被證明與比特幣掛鉤。然而,根據下面PhantomPhreak 的 [Counterparty 联合创始人和首席开发人员] 的說明,Counterparty IS 在每三個多重簽名交易之一中使用256 個字節在區塊鏈中存儲數據。此外,所有這些多重簽名交易都由礦工處理。
開發人員繼續批評比特幣開發人員計劃將OP_Return 限制為40 字節而不是80 字節:
如果OP_RETURN 旨在停止/減少多重簽名行為(未使用的輸出)並因此減少區塊鏈膨脹,那麼我擔心通過將OP_RETURN 的大小從80 字節減少到40 個字節,您會無意中使多重簽名對所有元協議更具吸引力,而您’ 已經使OP_RETURN 的吸引力降低了。
名為“PhantomPhreak”的首席Counterparty 開發人員和聯合創始人插話道:
這個想法是我們將數據存儲在第二個區塊鏈中,並將該時間戳數據的哈希值放入比特幣中,這些哈希值也將小於40 字節。我們沒有這樣做的原因不是“智力上的懶惰”,而是實現的複雜性。 Counterparty 不是計算機科學的項目;為了提高開發速度,它被設計得盡可能簡單。即使我們必須將數據存儲在多重簽名輸出中,而不是太小的OP_RETURN 輸出中。在這個領域,更糟肯定更好。
第二天Jeff 回應:
這就是搭便車。鑑於絕大多數(>90%)比特幣區塊鏈的應用是貨幣使用,使用全節點作為啞數據存儲終端只是在濫用全自願網絡資源。網絡複製交易數據,為什麼不搭便車呢? mastercoin 和Counterparty 並沒有參與現有的社區,而是簡單地按下“開啟”開關並開始使用比特幣P2 P 節點作為不需要的數據存儲。未使用的交易輸出決不打算用作任意數據存儲。它可以被濫用的事實並不能使它正確,或遠程有效,或最佳解決方案。 UTXO(未使用的交易輸出)數據庫是全網的快速訪問數據庫。每個節點都需要該數據庫盡可能小,以便最好地處理網絡事務。將任意數據編碼為未使用的輸出是網絡範圍內的濫用,簡單明了。整個網絡承擔這個代價。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5815887#msg5815887
由於Jeff 在社區中的地位很高,Counterparty 社區中的大多數人似乎都熱衷於參與並解決該問題。例如,BitcoinTangibleTrust 回應說:
感謝您分享您的想法,Jeff。那麼,你會幫助我們開始與現有的比特幣核心開發社區互動嗎?充當負責任的合作夥伴符合Counterparty 的利益,因為如果我們要生存,我們就需要比特幣區塊鏈。您能告訴我們如何開始就這些問題開展合作嗎?
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5816031#msg5816031
另一位Counterparty 開發人員提出了另一點:
比特幣協議有沒有辦法阻止XCP 使用它的方式,而不會破壞其他任何東西?
如果比特幣開發者沒有辦法阻止交易對手相關交易,或許這種反對並不重要,Counterparty 可以在未經許可的情況下繼續使用比特幣。比特幣開發商和當時的礦池運營商Luke-Jr 隨後進入了辯論:
礦工應該過濾掉濫用行為。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5816503#msg5816503
Luke-Jr 然後建議可以使用合併挖掘的側鏈類型結構來構建這些類型的系統,這可以避免區塊鏈膨脹。
問題不在於新的層,而是違背人們的意願強加於人。新層可以在選擇加入的基礎上完成,而不會污染區塊鏈並迫使非參與者存儲數據。
Luke 還被問到為什麼比特幣開發人員將預期的OP_Return 中繼大小減少到40 字節,而最初提出的限制是80 字節。 Luke 回應了以下三點:
-
太多的人認為OP_RETURN 是一個功能,應該被使用。它從來沒有這樣的意圖,只是一種“讓窗戶保持解鎖狀態,這樣當有人闖入時我們不需要更換玻璃”的方式。也就是說,減少人們濫用比特幣造成的損害。
-
40 個字節足以滿足將數據綁定到交易的所有合法需求:您獲得32 個字節用於哈希,再加上8 個字節用於某種唯一標識符(這實際上也沒有必要!)。
-
最初的80 字節提案旨在用於512 位哈希,但被確定為沒有必要。
Luke-Jr 繼續說道:
希望隨著挖礦回歸去中心化,我們將看到對濫用/垃圾郵件交易的容忍度降低,無論是OP_RETURN 變體還是其他變體。現在,如果有人有一個有效的、必要的用例來實際存儲帶有交易的哈希值,那麼顯然礦工應該認真考慮挖礦。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5817170#msg5817170
Luke 當時的礦池也開始過濾掉Counterparty 相關的交易。此時恐懼和不確定性開始在Counterparty 社區中建立。他們需要OP_Return 為80 字節,否則他們將被迫繼續使用OP_CHECKMULTISIG 操作碼。鑑於Luke 的評論,它似乎不太可能達到80 字節。除此之外,一些人擔心開發人員甚至會進一步降低限制,可能會導致Counterparty 脫離網絡。比特幣開發者似乎對Counterparty 不是特別友好,因此有些人可能認為繼續使用比特幣協議可能很困難。
2014 年3 月25 日,以太坊的主要創始人Vitalik Buterin 插話,他認為辯論應該更多地圍繞費用,如果你支付足夠的費用,那麼你的交易應該被合法地包括在區塊內。今天,以太坊的費用算法非常複雜,對於許多不同的區塊鏈用途有不同的費用桶和費率,這從根本上解決了OP_Return 問題。有人可以爭辯說,比特幣上的SegWit 也在一定程度上緩解了這個問題。
這是協議的錯誤,OPRETURN 戰鬥就是這樣一個問題。在理想的世界裡,“虐待”的概念根本不存在;費用將是強制性的,並經過精心設計,以密切匹配給定交易對網絡施加的實際成本,”他說。“如果你可以為你正在做的事情支付費用,那麼你應該能夠做到,不問任何問題。 ”
來源:https://www.coindesk.com/markets/2014/03/25/developers-battle-over-bitcoin-block-chain/
2014 年3 月27 日,Counterparty 改變了交易方式以繞過Luke-Jr 的挖礦過濾器。然而,第二天Luke 評論說:
好消息!在不到5 分鐘的時間內以及1 行代碼,就可以添加過濾器以阻止這種無用的東西。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5955613#msg5955613
Luke-Jr 還將Counterparty 比作一種濫用形式:
這是濫用行為,因為您強迫他人根據他們的自由選擇下載/存儲您的數據。每個完整節點都必須下載完整的區塊鏈(可修剪與否!)。每個完整節點都同意下載和存儲金融交易。並非每個完整節點都同意存儲其他任何內容。為此,您需要100% 的共識,而不僅僅是某些子集(即,不是礦工;不是開發人員)甚至是多數。此外,每個人都可以自由存儲不在區塊鏈中的數據。把它放在區塊鏈中沒有任何好處,只是你把它強加給那些不想要它的人。你來解釋這怎麼就不是濫用……
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5826443#msg5826443
對比特幣開發者的憤怒
正如人們所預料的那樣,比特幣開發者的擔憂最終遭到了一些Counterparty 開發者和用戶的沮喪和憤怒。我們在下麵包含了他們的一些評論。首先來自一個名為“porqupine”的用戶評論Luke-Jr 的礦池阻止Counterparty 交易:
與其負責任地致力於尋找解決方案的開發人員相比,這很好——你在宣傳貓捉老鼠遊戲。你意識到你也在說網絡中立?並試圖將人們應該和不應該在區塊鏈上進行的交易交到私人手中。對您不喜歡的某些人的下一步製裁是什麼?在您不贊成政府外交政策的國家/地區的節點廣播交易的製裁?
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5955738#msg5955738
2014 年3 月21 日,porqupine 繼續說:
等一下,當它決定:每個節點都同意存儲X 類型數據而不是Y 類型數據時。也許我也不同意存儲洗錢、非法毒品和武器、人類奴役等交易。你基本上是在否定協議中立性,並決定協議應該和不應該用來存儲什麼,而不僅僅是你’ 不是以第一人稱說話,而是使用代詞Us,給人的印像是你是在代表所有礦工或協議用戶作為一個整體說話。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5826584#msg5826584
其他人表示擔心為什麼Jeff 和Luke 有權越過其他人來阻止某些用例。
我無法相信這種態度。我不知道比特幣有所有者。我以為我和大約一百萬其他人是所有者
Counterparty 的聯合創始人PhantomPhreak 說:
首先,Counterparty 交易是金融交易。其次,每個全節點都同意下載和存儲比特幣區塊鏈。也就是說,符合比特幣協議的交易,Counterparty 交易顯然是這樣做的。看在上帝的份上,中本聰在創世區塊中嵌入了一條政治信息……你對比特幣可能的用例的看法比其他人要狹隘得多。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5826770#msg5826770
他或她繼續說:
比特幣做了很多原本不打算做的事情。是的,我們非常喜歡使用比現在更優雅的解決方案。 Counterparty 最初的設計目的是使用OP_RETURN 輸出來存儲其所有的消息數據,我覺得這非常優雅,並且對區塊鏈的影響最小。我們計劃所有消息格式都圍繞Gavin 在官方比特幣博客上宣布的80 字節限制。我們只使用多重簽名輸出,因為我們別無選擇。我們不想擴展比特幣協議。我們希望完全在其中做一些事情,並且盡可能簡單和直接,以獲得穩定性、安全性等方面的好處。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5827473#msg5827473
同樣,我們只在區塊鏈中存儲金融交易,並且我們正在為我們正在使用的空間付費。 OP_RETURN 輸出中的金融交易對於全節點存儲來說並不比其他任何東西更痛苦。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5827688#msg5827688
另一位名為“bitwhizz”的用戶說:
如果你不想存儲它,就不要,相當簡單,不要使用比特幣,不要下載區塊鏈,你的scott 免費。然而,我的同意意味著我相信比特幣不僅具有交易功能,而且基於這一事實,沒有人擁有它,並且有OP_RETURN 功能,我不明白為什麼應該根除該功能,因為你不想存儲您已經可以自由選擇的數據。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5827897#msg5827897
“Anotheranonlol”說:
我真的無法理解Counterparty 交易如何不構成金融交易?我也不能理解這樣的觀點,因為說,1000 個節點中的1 個節點不願意接受這個數據,默認情況下應該被禁止。在最近的噩夢是mt.gox 以及由於將您的餘額存儲在中心化實體上而造成的大量黑客攻擊、盜竊、關閉和損失之後,似乎Counterparty 已經想出了一個解決方案,該解決方案允許一個去中心化、無需信任的解決方案來解決這個問題。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5827776#msg5827776
“Baddw”說:
事實上,任何人都可以隨時將任意數據存儲在區塊鏈中。它已經並且正在被用於此目的。每個運行比特幣節點的人都應該已經知道這一點,如果他們不知道,這應該是他們安裝Bitcoin-QT 時出現的通知的一部分(如果有的話;我不記得見過)。任何比特幣交易都可能只是簡單的資金流動,也可能是情書,也可能是引爆炸彈的觸發器。消除這種可能性會扼殺比特幣。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5827749#msg5827749
Baddw 接著說:
計算歷史(實際上是整個人類技術歷史)中的許多最偉大的發展都是人們發現其發明者無意使用的東西的結果。好在大多數發明者對他們的發明沒有那麼保護,他們不拒絕讓其他人將其用於新事物。那些做到了的人,發現自己很快就被超越了。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5827925#msg5827925
從這些評論中可以清楚地看出,許多Counterparty 用戶和開發人員對比特幣開發人員的立場感到驚訝和失望。儘管該項目繼續進行,Mastercoin 也是如此,但很可能,無論好壞,一些開發人員因此離開了比特幣,轉而在其他區塊鏈系統(如以太坊)上構建他們的協議。在我們看來,正是這個2014 年的時刻比其他任何時刻都更重要。但是,其他人可能有不同的看法。
合併挖礦的側鏈
在整個OP_Return 辯論中,Counterparty 和區塊鏈膨脹的反對者通常提到某種形式的合併挖礦側鏈作為Dapps 的解決方案。實際上,據說中本聰喜歡這條道路,並且據說在2010 年12 月支持它用於域名系統:
我認為BitDNS 有可能成為一個完全獨立的網絡和獨立的區塊鏈,但與比特幣共享CPU 能力。唯一的重疊是讓礦工可以同時搜索兩個網絡的工作量證明。
來源:https://bitcointalk.org/index.PHP?topic=1790.msg28696#msg28696
將這些Dapp 系統作為側鏈實施存在許多困難,與2014 年相比,我們對這些弱點的理解比2014 年更好,當時許多人只是認為它們可以工作。
-
複雜性——最重要的弱點之一是實施和構建側鏈解決方案的複雜性。為了早日推出協議並贏得市場份額,這些項目沒有時間建立側鍊和與比特幣的合併採礦系統。
-
比特幣作為原生資產——可能無法將非託管比特幣作為側鏈上的運營資產,因為可能無法建立無需信任的雙向掛鉤。對於許多Dapps 來說,這是一個很大的弱點,例如他們可能希望使用比特幣作為分佈式交易所的主要交易對。這個弱點在2014 年似乎並沒有得到很好的理解,許多人只是假設它可以以某種方式起作用。
-
有限的擴展優勢——使用側鏈的優勢可能因用例而異。例如,如果要建立一個分佈式交易所,每一次出價、出價和匹配都可能需要主鏈的所有安全保障。有了這麼多的主鏈使用,對於每個用戶在交易所的每一個可能的動作,側鏈系統的擴展優勢可能非常有限。在鏈上本地提交投標可能只使用大約90 個字節,而存儲訂單信息的散列以及需要識別的結構和開銷可能在鏈上大約50 個字節,因此不會節省太多空間。
2014 年3 月,Counterparty 開發者(xnova) 概述了他對側鏈的反對觀點如下。
此外,除非我在這裡忽略了某些東西,否則我們仍然需要從第二個區塊鏈中的區塊中解析出數據(至少假設它是比特幣或比特幣衍生實現)來獲取我們存儲的數據。因此:* 它不會啟用SPV 類型的Counterparty 客戶端,因為Counterparty 提供的彩色幣功能(即DEx、投注、資產回調、股息、差價合約等)* 它會降低Counterparty 交易的安全性。這將大大增加實現的複雜性(即增加錯誤和漏洞的機會),唯一可疑的好處是輕微* 減少我們對區塊鏈的存儲需求(即每筆交易可能減少20-40 字節?)。我只是不明白這在這裡有什麼意義。還有一點:Counterparty 可以為比特幣帶來巨大的好處,如果/隨著以太坊(和其他類似的非比特幣元“2.0”類型的幣)進入視野,這一點將變得更加明顯。至少我個人的感覺是,比特幣很可能需要生態系統中具有這種功能的產品,以有效地與以太坊和(未來)人群的功能列表和吸引力競爭——或者有被淘汰的風險,至少在投資者和金融市場運營商中是這樣,這提供了將數十億甚至數万億美元帶入比特幣生態系統的能力,因為它獲得了更多的認可、信任和思想分享。
來源:https://bitcointalk.org/index.PHP?topic=395761.msg5799174#msg5799174
似乎一些支持側鏈作為解決方案的人對許多Dapp 應用程序並不特別感興趣,也沒有嘗試過它們。因此,他們從未考慮過構建分佈式交易所的複雜性,以及每個用戶的幾乎每一個動作都需要安全性。大多數比特幣開發者似乎對他們感興趣的東西很開放,並且很清楚他們想要什麼:抗審查貨幣、非政治貨幣、電子現金等……
結論
2014 年左右之後,大多數對Dapps 感興趣的開發人員都專注於在以太坊或其他系統上構建,而不是在比特幣上。以太坊隨後獲得了大量開發者的興趣和動力,而比特幣上的Dapp 開發則很少。這篇文章的重點是要強調,造成這種情況的主要驅動力不是必要的費用,也不是以太坊的虛擬機和以太坊更強大的技術能力,只是很多比特幣人和比特幣開發者不想要比特幣上的Dapp,他們對比特幣不感興趣。這些功能。無論好壞,一些Bitcoiner 故意將這些Dapp 開發者中的許多人趕走。一些比特幣支持者認為,大多數Dapp 活動都與不可持續的騙局有關,或者出於安全或其他原因,這種活動在比特幣上是不可取的。
自2014 年以來,許多人的觀點發生了變化。比特幣需要交易費才能生存。在2016 年後的環境中,我們有許多完整的區塊和更高的費用,人們更普遍地認為,任何付費交易都是“合法的”。以太坊上的某些Dapps,例如Uniswap 等交易所,或AAVE 和Compound 等借貸協議,在某種程度上已被證明既成功又有趣。儘管如此,比特幣人是否足夠關心比特幣上的這些協議,更不用說是否有人真正構建和使用它們,仍然是一個懸而未決的問題。