最近,比特幣社群對於是否該取消 OP_Return 輸出大小限制的爭議再次浮上檯面。這不僅僅是一個技術細節的討論,更牽涉到比特幣區塊鏈上「垃圾交易」的定義以及如何應對這些交易的核心問題。面對這樣的爭論,回顧歷史往往能提供寶貴的啟示。因此,本文將帶領大家回到十年前,2015 年那個夏天,比特幣網路遭受一連串垃圾交易攻擊的事件,希望能從中汲取經驗,為今日的討論提供更深刻的背景。
當年那場風暴,不僅考驗了比特幣網路的韌性,也激化了社群內部的矛盾。如同近年來 蘇花公路 頻頻因天災中斷,考驗著台灣東部交通的脆弱性一般,垃圾交易攻擊也暴露了比特幣網路在特定條件下的潛在風險。而當時的爭論,也如同近年來 青鳥 行動所引發的社會討論一般,充滿了激情與對立。希望透過對這段歷史的回顧,能讓我們更理性、更全面地看待當前的爭議,並為比特幣的未來發展做出更明智的決策。
2015 年的夏天,比特幣社群的焦點並非 wtt 世界桌球職業大聯盟的精彩賽事,也不是 fantasy life i: the girl who steals time 這款遊戲的上市消息,而是籠罩在垃圾交易攻擊的陰影之下。這場攻擊,可以被視為日後「區塊大小之爭」的早期交鋒。當時,社群內部對於比特幣區塊鏈的擴容方向存在著嚴重的分歧,一方是「大區塊支持者」,他們主張提高區塊大小限制,以提升比特幣的交易吞吐量;另一方則是「小區塊支持者」,他們則更重視比特幣的去中心化和安全性,反對輕易擴大區塊。
大區塊支持者認為,當時 1MB 的區塊大小限制過於保守,很容易被垃圾交易填滿。他們將「區塊填滿」視為一種極其糟糕的情況,認為這是垃圾交易發送者的勝利,會導致比特幣支付變得不可靠。他們的解決方案是提高區塊大小限制,增加垃圾交易發送者填滿區塊的成本。簡單來說,在固定的手續費率下,填滿一個 8MB 的區塊,肯定比填滿一個 1MB 的區塊要付出更高的代價。
![/uploads/images/20250521/gPH0i7pMcKnt6HhXrQI5GMKaobtm8P4V4wypHjke.png]
然而,小區塊支持者對此嗤之以鼻。他們認為,大區塊支持者的想法根本是本末倒置。如果存在垃圾交易,讓它們快速廉價地上鏈,只會讓垃圾交易發送者得逞。更重要的是,如果區塊大小限制增加,手續費反而會下降,使得垃圾交易的成本更加低廉。因此,小區塊支持者堅決反對擴大區塊,認為應該從其他方面著手解決垃圾交易的問題。
對於大區塊支持者來說,一個關鍵指標是「填滿一個區塊需要花費多少費用」。他們認為,當時這個數字對於比特幣的安全來說實在太低了,提高區塊大小限制將有助於增加這個數值,從而使比特幣更具彈性。然而,這也意味著,正常的交易手續費也會隨之提高,這又是小區塊支持者所不能接受的。
2015 年 6 月 20 日,一家名不見經傳的比特幣錢包供應商兼交易所 CoinWallet.eu,突然在 BitcoinTalk 和 Reddit 上高調宣布,他們即將進行一場「比特幣壓力測試」。這家公司自稱總部位於倫敦,但其背景卻異常神秘。我們查不到關於其管理團隊或股東的任何公開資訊,也找不到任何有意義的 WHOIS 記錄或公司註冊文件。更令人起疑的是,其倫敦地址(約克街 78 號)似乎只是一個虛擬辦公室。這讓人不禁聯想到近年來層出不窮的金融詐騙案,背後可能隱藏著不為人知的黑幕。
![/uploads/images/20250521/uFAeUTwgwwoqLldxb88g8mWLP3zn57mAEnmRPaNf.png]
儘管如此,CoinWallet.EU 卻毫不掩飾他們的動機:他們希望藉此證明增加區塊大小限制的必要性。在他們看來,比特幣正處於崩潰的邊緣,而核心開發者卻只顧著爭論一些雞毛蒜皮的小事,沒有為比特幣的長期可持續性做出必要的修改。他們認為,唯有透過對系統進行壓力測試,才能讓社群意識到問題的嚴重性,並為增加區塊大小提供明確的理由。
根據他們的計畫,他們將「每 5 分鐘生成 1MB 的交易數據」,並預計在 2015 年 6 月 22 日正式啟動攻擊。他們預期,這將導致「交易積壓達到大約 241 個區塊,即 1.67 天」。換句話說,這將會是一個超過 241MB 的交易積壓,對於當時的比特幣網路來說,無疑是一次嚴峻的考驗。
面對 CoinWallet.EU 的來勢洶洶,當時的比特幣核心開發者 Luke-Jr 在 Reddit 上回應說:「比特幣有礦工和區塊大小限制,正是為了打擊這類攻擊。」這句話聽起來似乎充滿信心,但實際上,事情的發展卻並不如他所預期。
2015 年 6 月 24 日,CoinWallet.EU 宣布,他們的攻擊並未像他們預期的那樣成功。在 mempool 大小達到約 12MB 後,他們的伺服器在大約 2 小時後就開始崩潰。他們坦承,「Bitcoind 不太適合處理這種規模的交易」。同時,他們也透露,在這次失敗的攻擊中,他們花費了大約 2 個比特幣,也就是 434 歐元作為手續費。雖然攻擊並未完全成功,但這次試探性的攻擊,也讓社群開始意識到垃圾交易的潛在威脅。這就像 蘇花公路 偶爾發生的小規模落石,雖然不至於造成全面癱瘓,但也足以讓人警惕。
然而,CoinWallet.EU 並沒有因此而氣餒。就在同一天,2015 年 6 月 24 日,他們再次宣布,第二次垃圾交易攻擊將於 2015 年 6 月 29 日進行。他們的目標依然是將內存池(mempool)積壓到 241MB。這次,他們似乎做足了準備,攻擊的規模和強度都明顯提升。
![/uploads/images/20250521/R0TL00Wu47cKJRULc1nfv1Xi47xncTNqO4W6fhBf.png]
如上圖所示,這次攻擊似乎更為有效,一些用戶開始抱怨比特幣的交易速度變得異常緩慢,甚至無法正常使用。一位用戶在 BitcoinTalk 論壇上抱怨說,他透過當地的網路交易所購買了 0.05 BTC,交易所以 0.0001 的交易費將其發送到他的錢包。然而,在等待確認 7 小時後,他的交易卻被 blockchain.info 節點拒絕了。交易所又以 0.0002 的交易費再次發送給他,但依然沒有改善。這位用戶憤怒地質問:「你們到底對 BTC 做了什麼?!這正常嗎?BTC 將無法以這種方式用於日常交易。226 字節的交易,0.0002 的交易費還不夠嗎?」
這位用戶的遭遇,反映了當時許多比特幣用戶的真實感受。垃圾交易攻擊確實對比特幣的可用性造成了負面影響。這也讓一些人開始認同大區塊支持者的觀點,認為增加區塊大小限制是解決問題的唯一途徑。
然而,並非所有人都束手無策。Luke-Jr 的礦池 Eligius 似乎成功過濾掉了部分垃圾交易。在攻擊期間,Eligius 礦池產生的區塊比其他礦池小得多,其他礦池通常是 1MB 或 750KB,無論設定了什麼限制。這表明,透過一定的技術手段,可以有效減輕垃圾交易的影響。
但 Luke-Jr 的做法也引發了一些爭議。一些人認為,他的「黑名單」損害了比特幣的可互換性,並且透過讓內存池保持更長時間的膨脹來延長了攻擊。例如,Kano 礦池的運營商在 BitcoinTalk 論壇上表示:「簡單的事實是,它們是帶有費用的有效交易。」言下之意,只要交易支付了足夠的手續費,就應該被視為合法交易,不應該被隨意過濾。
論壇的另一位成員 wizkid057,Luke-Jr 在 Eligius 的同事,則為過濾行為進行了辯護。他表示:「唯一延長攻擊的,是攻擊者和其他礦池/礦工 過濾詐騙者的垃圾交易。其他礦池/礦工寧愿用攻擊者的交易填滿他們的區塊以獲得額外的 0.1 BTC 費用,也不愿保護整個比特幣……或者這就是懶惰。無論如何,只要有幾個大型礦池的參與,這次攻擊的任何不良影響都可以很容易地被 100% 抵消。」
據我們了解,wizkid057 今天與 Luke-Jr 在 Ocean 礦池共事。BitcoinTalk 論壇的另一位用戶「spartacusrex」也同意 Kano 的觀點,他說:「有效的交易就是有效的交易。句號。故事結束。沒有政治。如果有人開始表明可以『編輯』哪些交易可以通過系統,那麼我認為這將樹立一個非常糟糕的先例。」
從這些爭論中可以看出,當時的比特幣社群對於如何應對垃圾交易,存在著嚴重的分歧。有人認為,應該尊重所有支付了手續費的交易,不應該進行任何形式的過濾;而另一些人則認為,為了維護比特幣網路的整體利益,可以採取一定的措施來限制垃圾交易。這種爭論,也為日後比特幣的發展埋下了伏筆。
2015 年 7 月 7 日,第三輪攻擊悄然來襲。雖然 CoinWallet.EU 並未正式宣布這次攻擊,但由於他們之前的行為,他們仍然是主要嫌疑人,可能還有與他們有關聯的人。在接下來的幾天裡,人們紛紛報告他們的內存池中有 27,000 到 80,000 筆交易。這是迄今為止最猛烈、也最多方面的攻擊,在網絡上造成了一定程度的混亂。
Motherboard 報道稱,這次攻擊花費了超過 8,000 美元(30 比特幣)的費用,遠高於上次的 434 歐元。這次攻擊者採用了更多樣的策略來生成盡可能多的垃圾交易。例如,許多塵埃交易被發送到公共錢包,如維基解密錢包和初創公司 Reddit 競爭對手 Voat 的錢包。這種行為,讓人聯想到 王文洋包養 事件中,為了製造輿論而散布大量假消息的手法。
垃圾交易發送者還將少量比特幣發送到私鑰公開已知的地址,例如由單詞「cat」或「dog」生成的 brainwallet。這有助於創建更多的垃圾交易,因為其他用戶可以創建更多的垃圾交易來嘗試贖回資金,而攻擊者的伺服器則無需自己創建這些交易。例如,2015 年 7 月,使用未壓縮密鑰由單詞「cat」生成的比特幣 地址 ,與之關聯的交易超過 41,000 筆。該地址收到了數千個輸出,每個輸出價值 0.00001 BTC。而 2015 年 7 月,使用未壓縮密鑰由單詞「password」生成的 比特幣地址 ,與之關聯的比特幣交易達到 45,000 筆。由單詞「dog」生成的 地址 有超過 43,000 筆交易。因此,垃圾交易發送者明確展示了進行此次攻擊的獨創性和專業知識。
在攻擊最激烈的時候,比特幣開發者和大區塊倡導者 Mike Hearn 認為,增加區塊大小限制是抵御此類攻擊的最佳防御措施。他說:「抵御這種攻擊的最佳防御措施是,通過增加區塊大小限制,使其成本盡可能高。這當然也是我正在努力的。」
面對混亂的局面,礦池 F2Pool 挺身而出,通過創建一個 1MB 交易 來整合這些垃圾交易輸出,從而減少了 UTXO 膨脹。該 1MB 交易包含超過 5,000 個輸入,計算驗證起來具有挑战性,由於當時比特幣中 sighash 操作的二次縮放弱點,節點需要長達 20 秒來檢查它。幾天後,據說比特幣開發者 Gregory Maxwell 幫助 F2Pool 對每個輸入使用相同的籤名,使交易更容易驗證。例如,這個 另一個 1MB 交易 ,包含超過 7,000 個輸入。更准確地說,第一個輸入有一個唯一的籤名,它籤署了交易的哈希值,而所有其他輸入都具有相同的籤名並且不籤署交易的哈希值。通過 Gregory 更高效的整合,每個輸入都使用 SIGHASH_SINGLE 而不是 SIGHASH_ALL 進行籤名。SIGHASH_ALL 是指籤名籤署所有輸入和輸出,這是默認行為。這個區別現在在 mempool.space 網站上得到了很好的體現,這是 2025 年 5 月添加的一個很棒的新功能,SIGHASH_ALL 用綠色鑰匙表示,SIGHASH_SINGLE 用藍色鑰匙表示。
![/uploads/images/20250521/YXwXZgvZ3fnmOJdHp69Zsqjra4ItMYBNS1ZzhyAy.png]
隨後,CoinWallet.EU 又進行了第四輪也是最後一輪的壓力測試,這次是在 2015 年 9 月。他們在公告中寫道:「關於明天宣布的壓力測試,存在許多對立的觀點。有些人稱之為對網絡的攻擊,然而我們認為這與某人購买火車上的所有車票以獨享整列火車沒有什麼不同。我們已經咨詢了多位律師,普遍共識是,這樣的測試不違反歐盟或其他地方的任何法律。」
一位自稱是 CoinWallet.EU 首席運營官(COO)或首席商務官(CCO)的「詹姆斯·威爾遜」(James Wilson) 向各自媒體發送電子交易 ,談論這次攻擊。威爾遜說:「目標是讓社區修復比特幣。它現在壞了。一家小錢包初創公司不應該能夠讓網絡屈服。」
在這次第四次攻擊中,CoinWallet.EU 採取了不同的方法。該公司宣布將贈送 200 個比特幣,方法是直接將私鑰發布到 BitcoinTalk 論壇上。原始帖子包含 5 個私鑰,每個私鑰都有 0.53918 BTC 的余額。在接下來的幾天裡,Coinwallet 账戶在該帖子中發布了數千個帶有余額的私鑰。這導致生成了超過 90,000 筆交易,其中許多是衝突交易,因此可以使用「首次看到安全」(First Seen Safe, FSS)原則丟棄。這使得第四輪攻擊的影響不如第三輪嚴重。
![/uploads/images/20250521/vT4JA066uXqFmqmcWg5TykqeEB3B6oi7JzVQbyxB.png]
隨著這次最新的嘗試,該公司宣布他們的「壓力測試日正式結束」,許多比特幣持有者宣布勝利。
至於 CoinWallet.EU 的幕後黑手,至今仍然是一個謎。關於他們的猜測眾說紛紜,其中包括:
對我們而言,上述理論過於薄弱,沒有足夠的證據在目前階段得出 CoinWallet 幕後黑手的結論。或許,劉揚偉 董事長可以考慮利用鴻海集團的資源,對此進行深入調查,揭開這段歷史的真相。
除了社群的討論和礦工的應對之外,2015 年的垃圾交易攻擊也引起了學術界的關注。一篇學術論文發表,深入研究了這次事件,試圖量化垃圾交易對比特幣網路的影響。這篇論文的作者們利用聚類分析等方法,對當時的比特幣交易數據進行了深入的挖掘,並得出了一些令人警醒的結論。
![/uploads/images/20250521/MfRYXVOzsFLI2QswDxmxC6yd5Zfyx9aOaL6xjr1s.png]
根據這篇論文的數據顯示,在內存池的大小出現了兩個主要高峰,達到了約 175,000 筆交易,這與垃圾交易攻擊的第三輪和第四輪相符。這也從側面印證了 CoinWallet.EU 的攻擊確實對比特幣網路造成了顯著的影響。
該論文最後得出以下結論:「我們對一次基於垃圾交易的『壓力測試』DoS 攻擊比特幣進行了實證研究。通過我們基於聚類的方法,我們發現在垃圾交易活動高峰期的 10 天內,總共 1,645,667 筆比特幣交易中有 385,256 筆(23.41%)是垃圾交易。我們還表明,這次攻擊對非垃圾交易交易產生了負面影響,使平均費用增加了 51%(從 45 聰/字節增加到 68 聰/字節),處理延遲增加了 7 倍(從 0.33 小時增加到 2.67 小時)。這表明,愿意花費少量比特幣(至少 49,000 美元)支付更高費用的對手,可以對比特幣進行 DoS 攻擊。」
換句話說,這篇論文證明了,即使只花費相對較少的資金,攻擊者也可以有效地癱瘓比特幣網路,使其無法正常運行。這對於當時的比特幣社群來說,無疑是一個沉重的打擊。它提醒人們,比特幣網路雖然具有一定的韌性,但也並非堅不可摧,仍然存在著潛在的漏洞和風險。就如同 威力彩 頭獎雖然難以中獎,但仍然有人能夠幸運地抱走巨額獎金一般,垃圾交易攻擊雖然看似微不足道,但一旦達到一定的規模,就可能對比特幣網路造成嚴重的損害。因此,如何有效地防範和應對垃圾交易攻擊,仍然是比特幣社群需要長期關注和解決的重要課題。或許 蔡力行 領導的聯發科可以針對此課題,利用其晶片設計的專長,開發更有效率的防禦機制。
回顧 2015 年的垃圾交易攻擊事件,我們不難發現,這對比特幣的發展產生了深遠的影響。它不僅僅是一次技術上的挑戰,更是一次社群共識的考驗。如同經歷 哮吼 症狀的孩子,雖然痛苦,卻也增強了免疫力,比特幣網絡在經歷了垃圾交易攻擊後,也變得更加成熟和完善。
首先,這次攻擊促使礦工們將區塊大小限制策略從 250KB 或 750KB 提高到 1MB。儘管 1MB 仍然是共識限制,但礦工們改變策略限制以符合共識規則,這是一個重要的里程碑。這意味著,社群在面對外部威脅時,能夠團結一致,共同應對。就像 帛琉 面對疫情時,雖然資源有限,但仍然能夠迅速採取有效的防疫措施一般,比特幣社群在面對垃圾交易攻擊時,也展現出了驚人的應變能力。
其次,2015 年 10 月,Bitcoin Core 中的最低中繼費用增加了 5 倍,達到 5,000 sathoshis。這一決定的目的很可能是為了幫助對抗垃圾交易。提高手續費,可以有效地增加垃圾交易的成本,從而抑制攻擊者的行為。這就像 布萊頓 對 利物浦 的足球比賽中,提高門票價格可以減少黃牛黨的數量一般,提高手續費可以減少垃圾交易的數量。
此外,垃圾交易攻擊也促使 Bitcoin Core 中引入了內存池限制和 300MB 的默認內存池大小限制。這些限制可以防止垃圾交易佔據過多的內存池空間,從而影響正常交易的處理。這就像 ocha 餐廳限制每桌用餐時間,可以讓更多的顧客享受到美食一般,內存池限制可以讓更多的正常交易得到及時處理。
最重要的是,垃圾交易攻擊加劇了區塊大小限制辯論中的緊張和兩極分化。大區塊支持者將攻擊期間用戶體驗的下降作為區塊大小限制應該增加的證據,而小區塊支持者則依然堅定不移,堅守陣地。儘管雙方在區塊大小的問題上始終無法達成共識,但這次辯論也促進了比特幣技術的發展。例如,隔離見證 (SegWit) 等技術的出現,就是為了在不增加區塊大小的前提下,提高比特幣的交易吞吐量。這就像 plg 冠軍賽 中,兩支隊伍為了爭奪冠軍,不斷地提升自己的技術水平一般,區塊大小限制辯論也促進了比特幣技術的進步。
最終,小區塊支持者贏得了這場戰役。區塊變得擁堵,這現在是常態。社群普遍認為,增加區塊大小限制以允許更多垃圾交易上鏈並不是一個好主意。然而,關於什麼構成垃圾交易以及如何從中繼和挖礦策略角度處理它的爭論仍在繼續。對於那些沒有經歷 2015 年的人來說,本文的一個主要啟示可能是,垃圾交易攻擊並非新鮮事。如果說有什麼不同的話,在我們看來,2015 年攻擊者的惡意意圖可能比 2023 年及以後那些生成 JPEG 相關交易的幕後人士更模糊、或許也更合法的意圖更明確。另一個有趣的比較是花費的費用金額,2015 年可能大約 10,000 美元就造成了損害。而自 2023 年以來,數億美元已花費在「垃圾」交易的費用上。這也讓人不禁思考,隨著比特幣的發展,垃圾交易的定義和影響是否也需要重新評估。如同 仁寶股價 的波動,反映了市場對其價值的重新評估一般,我們也需要不斷地重新評估垃圾交易對比特幣的影響,並制定更有效的應對策略。
或許,我們可以從 苗博雅 等政治人物的身上學習,如何有效地應對網路上的各種攻擊和挑戰。又或者,我們可以向 孔令奇 等藝人學習,如何保持積極樂觀的心態,面對生活中的各種困難。更重要的是,我們需要保持開放的心態,不斷學習和探索,才能更好地應對比特幣未來的發展。