編譯|GaryMa 吳說區塊鏈
背景
2023 年 9 月,比特幣开發者 Luke Dashjr 向 Bitcoin Core Github 倉庫提交 PR, 即更新 “datacarriersize” 以過濾 “銘文” 這類攜帶新型腳本數據的交易,背後對應的價值觀是認爲 “銘文”交易屬於漏洞攻擊,應當修復禁止。
默認情況下,Bitcoin Core 對未確認交易的 OP_RETURN 輸出數量和嵌入的數據量進行限制,其默認值爲 80 字節。通過配置 -datacarriersize 選項,用戶可以更改對數據量的限制。然而,目前該選項僅適用於 OP_RETURN 輸出。
該PR的改動使得配置了-datacarriersize的用戶不僅能夠限制OP_RETURN輸出中的數據量,還能夠限制嵌入見證數據的數量。
需要注意的是,該 PR 並未實現一種全面的方式來識別見證數據中的“任意”嵌入數據(因爲目前沒有一種確定的方法來實現這一點)。它主要檢查了針對銘文數據的 OP_FALSE OP_IF ... OP_ENDIF結構。這個結構通常用於處理銘文數據。
盡管該 PR 下也有大量开發者對此展开討論,但Bitcoin Core 代碼維護者 achow101 於 2024 年 1 月 5 日正式關閉該 PR,achow101 最後陳詞表示,(Luke 提出的)這個 PR 是有爭議的,這一點非常明顯,並且在目前的狀態下,沒有希望達到一個對所有人都可接受的結論;在這個時刻,我看不出有任何理由保持它开放的狀態,並繼續發送通知,以維持那些不斷來回的僵持不下的討論。
Bitcoin Core 另一位代碼維護者 gloria 將針對這一話題的开發者正反兩方觀點進行匯總,吳說編譯如下。
支持禁止“銘文”的觀點
1、“禁止銘文,這是一種垃圾交易”
這些類型的交易用於ordinals、NFT、數據攜帶或一些非金融交易的用例。這種流量是“垃圾交易”,由於高交易流量和費用,它破壞了比特幣用於支付的使用。
● 這些垃圾交易使得比特幣的真正用途越來越難以使用。
● 插入數據是對 taproot 腳本的一種欺騙和濫用。
● 能夠嵌入隨機字節是一種“漏洞” 。
● 如果比特幣是貨幣(它是!)...那么非貨幣交易應該盡可能減少。
● 對 ordinals 的歡呼者是以太坊\反比特幣極端主義者,那些呼喊“我們需要改變比特幣文化”的人,是浪費時間的噴子。
● 這是對網絡的誤用,它是爲金融交易(白皮書、名稱和代碼指向這一點)而設計的,數據存儲並不是一個預期的用例。
● 這導致了 “網絡擁堵” 和 “更高的費用或更慢的處理時間”,這是一種 “DDoS 攻擊” 。
● 問題不在於銘文,而在於高昂的手續費。
● 比特幣網絡需要立即得到保護,避免垃圾交易攻擊。
2、“銘文和嵌入的數據損害了網絡”
這些類型的交易加重了節點運營商的成本,以某種方式損害了網絡。
● 該 PR 所針對的交易,就是普通節點運營商所承受不住的重要成本來源之一。
● 這些交易通過增加運營節點的成本影響網絡的去中心化。
● 這導致直接在區塊鏈上存儲了不成比例和過多的大數據。
3、“禁止是用戶的需求”
顯然,用戶有需求和特定的用例,因此 Bitcoin Core 應該提供這個選項。否則,人們會自行編寫運行補丁,這可能是不安全的。
● 節點運行者需要一個內置選項來忽略所有現代形式的數據攜帶,這樣他們就不必手動修補他們的節點。
● 如果开發者不幫助節點運行者保護自己免受這種攻擊,他們可能不得不訴諸不當手段來加強防御。
● 我想控制我的內存池政策,我想決定什么是垃圾交易,什么不是。
● 如果礦工認爲比特幣是貨幣而不僅僅是一個無需許可的、不可更改的區塊鏈,他們確實會過濾垃圾交易以使貨幣網絡可用,因此礦工會希望有這個功能。
4、“這只是修復 datacarriersize 以如期工作”
我們限制了 OP_RETURN 中的數據攜帶。這應該適用於所有嵌入交易中任意數據的方法。這一直是 -datacarriersize 的“意圖”,因此這是一個“錯誤修復”。
● luke-jr 認爲 -datacarriersize 沒有隨着 segwit 和 taproot 的引入而更新其他類型的數據攜帶是一個錯誤,並將此定義爲錯誤/漏洞。
● Bitcoin Core 已經標准化了插入超過 83 字節的任意數據和銘文的插入是繞過此限制的一種變通方式,因此這是一個錯誤修復。
● 垃圾交易已經在代碼的各個層面上被過濾了,而且這樣做已經超過十年了。所有這個 PR 做的就是將一個現有的 datacarriersize 限制應用於一種不同形式的數據攜帶,這顯然是一個意料之外的漏洞。
● 如果不是對交易中存儲的任意數據施加限制,那么數據載體限制的目的是什么?
● 這個標准化規則的目的不僅僅是針對原始 scriptPubKey 中包含的數據,而是針對所有形式的任意數據。
反對禁止“銘文”的觀點
1、“這並阻止不了銘文”
這不會阻止銘文。由於它不具有激勵兼容性,因此礦工(以及銘文的用戶當然)不太可能採用這種政策,這意味着它在阻止這些交易方面的效果很小。
● 如果只有 Ocean 池使用這個並且它仍然是一個相對較小的池,它將沒有效果。如果它被廣泛部署,繞過它也是很容易的。
● 從長遠來看,這對礦工來說是激勵不兼容的。
● 礦工不太可能放棄那個收入來源。審查這些交易只會鼓勵私人內存池的發展。
● ordinals 交易最終會進入區塊鏈,繞過內存池,所以這個 PR 對於解決/緩解問題沒有作用。
● 在某種程度上,這是一種嘗試不僅不監控這些交易,而且還試圖阻止它們的使用,這最多會導致這些交易繞過實施這個的節點,或者在最壞的情況下導致直接提交給礦工的交易實踐,這對挖礦的中心化有嚴重風險。
● 銘文愛好者可以通過確保網絡上的少數節點不過濾銘文來維護銘文在網絡上的傳播。
● 顯而易見,這必然導致從過濾內存池中構建的區塊模板的總區塊獎勵比從所有未確認交易中構建的區塊模板低。這意味着任何過濾銘文的礦工都是在減少自己的收入,從而使不過濾礦工受益。
2、“我們不能編寫代碼來檢測所有嵌入式數據”
一般來說,我們無法阻止嵌入任意數據的交易。銘文存在於衆多嵌入數據的方式中(我們永遠無法完全涵蓋)。最好是保留最有效率的方法,即那些對網絡資源成本影響最小的方法。
● 沒有一種通用的方法可以過濾所有當前和未來的數據攜帶方式。這會在非常關鍵的代碼路徑中引發無休止的貓鼠遊戲。
● 試圖阻止所有類型的數據嵌入將導致這段代碼變得越來越復雜。每次發生這種情況時,都會對維護者施加很大的壓力,迫使他們迅速推進‘停止垃圾交易。
● 據我所知,沒有合理的方法可以阻止人們在見證(witnesses)中存儲任意數據,而不激勵更糟糕的行爲和/或破壞合法的使用案例。
3、“此更改可能有害”
這個 PR,它改變了默認的內存池策略,可能對獨立節點運行者和網絡有害。
● 排除將被挖掘的交易對節點是有害的。參與交易中繼和擁有內存池的意義在於能夠預測下一個區塊的樣子。故意排除那些存在非常明確(盡管愚蠢)的經濟需求的交易,破壞了這種能力。
● 最終,運行此補丁的用戶仍然處理包括銘文的區塊。他們只會損害自己的費率估算,減慢區塊驗證速度,且對其他節點的有用性降低。
● 通常更改默認政策是危險的。使先前標准的交易變爲非標准意味着現在有些人可能會發現訪問他們的資金變得更加困難。“通過改變默認值,而不是選擇加入,它代表了對依賴 Bitcoin Core 構建區塊模板的礦工的潛在破壞性和不受歡迎的行爲變化... 這將代表一種溫和的沒收形式,應當避免。
4、其他反對該 PR 的觀點
● 一般而言,使用內存池政策來阻止使用現在已經無效,盡管它過去曾被以這種方式使用。雖然歷史上非標准性已被用來阻止一些繁重的操作,我相信:
○ 這在這些滿區塊空間已成常態的情況下遠不太相關,因爲它無論如何都不會減少節點運營成本。
○ 無力阻止已經存在市場的交易,這些交易每天支付數十個 BTC 的手續費。
● 基於用例“審查”交易的嘗試是不恰當的。自由市場決定比特幣的用途。我們無權告訴人們應該如何使用比特幣。如果你認爲你的設計更加優雅,那就去做吧,讓自由市場決定哪個更好。
● 比特幣是一個去中心化的無需許可的網絡...任何人都可以以他們想要的方式使用他們的比特幣,無論出於什么原因這種用途多么令人反感。
● 這改變了-datacarriersize的作用,除了改變默認政策,它將OP_RETURN輸出大小的政策和新的嵌入冗余腳本代碼中的數據限制捆綁在一起,使得無法配置你的節點以匹配 26.0 及更早版本的默認政策。
海量資訊、精准解讀,盡在新浪財經APP責任編輯:張靖笛
標題:“過濾”比特幣銘文的 PR 貼下 开發者們有哪些正反觀點?
地址:https://www.utechfun.com/post/319442.html