在比特幣中啟用零知識證明:從OP_CAT到狀態證明和BitVM

進階Aug 16, 2024
探索如何將零知識證明 (ZK) 集成到比特幣中,重點關注兩種 SNARK 驗證方法:在比特幣腳本中啟用OP_CAT和利用 BitVM。雖然OP_CAT允許在比特幣腳本中直接支援SNARK,但BitVM引入了欺詐證明和鏈狀態證明以降低驗證成本。
在比特幣中啟用零知識證明:從OP_CAT到狀態證明和BitVM

摘要

本文探討了在比特幣中啟用ZK驗證的實際方法,涵蓋了比特幣的UTXO模型、腳本限制、Taproot、OP_CAT、BitVM和Chain State Proofs等主題。文中清楚地論證了將ZK整合到比特幣協議中是不可避免的。文章突出了兩種潛在途徑:一種是重新引入OP_CAT操作碼,直接支持比特幣腳本中的SNARK驗證——這一變化有很高的最終批准可能性。第二種方法圍繞著BitVM,它包含欺詐證明。此外,ZeroSync團隊提出的Chain State Proofs旨在減少節點客戶端驗證歷史數據的成本。


主要文字:要完全理解比特幣,將其視為一個社會系統是有幫助的。在早期,比特幣的創造者定義了節點必須運行的軟體,就像建立統治社會的規則一樣。比特幣的穩定性取決於對其基本性質的廣泛共識,引出了像「比特幣在其核心是什麼?」和「比特幣應該發展成什麼?」這樣的問題。然而,就這些問題達成共識是非常困難的,因為意見各異且不斷演變。


這追溯到比特幣的歷史起源。當中本聰發布比特幣白皮書時,他說:“我正在研究一個全新的電子支付系統。這個系統是完全的P2P,並且不需要依賴任何第三方。” 這段文字是在 Cypherpunks 郵件列表上發表的(這是一個成立於1992年的電子郵件討論組,由一群關注隱私保護和密碼學技術的密碼學家和技術愛好者組成)。

然而,比特幣在產品設計層面限制了數據吞吐量。它可以每個單位時間處理的交易數量是有限的。如果要處理的交易數量急速增加,用戶將發起價格戰,以成功快速完成交易,進而迅速增加支付的手續費。在2024年區塊獎勵減半後,比特幣網絡中支付最高手續費的單筆交易出現,具有中等優先級別的交易的手續費達到150美元。可以說,比特幣網絡的昂貴交易費用已成為一個問題。

為了解決交易費用的問題,人們已經投入了大量資源開發閃電網絡。但根據2016年發表的一篇論文指出,閃電網絡實際上只能支持數千萬用戶,無法實現其全球支付系統的願景。除了過高的交易費用外,還存在另一個問題,即比特幣從未能夠實現其設想的匿名性。

中本聪在一个密码朋克电子邮件讨论组中指出,比特币具有隐私保护功能,交易发起者可以完全匿名。然而,虽然交易发起者不需要进行KYC,但比特币链上的交易数据泄露了大量信息,严重暴露了用户隐私。虽然有一些带有隐私功能的钱包客户端在一定程度上解决了上述问题,但这些钱包客户端的开发人员面临各种威胁。例如,Samourai CoinJoin钱包的开发人员在2024年4月被FBI逮捕,一周后,Wasabi钱包的开发人员关闭了他们的CoinJoin协调组件。显然,这些所谓的隐私钱包并不完全值得用户信任。

總的來說,比特幣的許多概念直到今天仍然遠未實現,相關技術仍在持續發展中。即便如此,許多比特幣社區的人相信比特幣的協議設計應該保持不變,但也有許多人,如我,熱衷於對比特幣進行改進。那麼,比特幣應該朝著什麼方向進步呢?


對於上述問題,比特幣社區中有許多提案,其中最好的理論結果應該與ZK和SNARKs相關。通過ZK和SNARKs,可以實現以下功能:

  1. 顯著提高隱私: 使用同態Peterson承諾對交易金額進行保護,並使用區間證明顯著提升用戶隱私(如在Blockstream的Element側鏈中所做的);使用可鏈接簽名(如Monero)來隱藏交易蹤跡;實現真正的私密交易(如Zcash)。

  2. 提高交易吞吐量

許多技術解決方案可以解決比特幣現有的問題,但為什麼這些技術沒有被整合到比特幣協議中呢?答案在於修改協議的困難。與以太坊不同,比特幣沒有像以太坊基金會這樣的中央組織。任何協議更改都需要高度的社區共識,涉及大量的談判和利益平衡。因此,儘管以太坊定期更新其EVM操作碼,比特幣的協議自成立以來幾乎沒有變化。

在某些方面,這種修改協議的困難是有益的。如果更改容易實施,惡意的改變或攻擊更有可能。這引出了一個問題:如何在不修改協議的情況下改善比特幣的性能?


要回答這個問題,我們需要重新複習比特幣的一些基礎知識。當您將比特幣轉移到其他人時,您會創建一筆交易並將其廣播到比特幣網絡。交易的輸出數據指定了轉移的BTC數量。接收方隨後可以創建一筆新交易來花費收到的BTC,在此過程中生成新的輸出數據。

需要注意的是,比特幣不像以太坊那樣具有全球狀態,尤其是缺乏賬戶狀態;它只有交易輸出數據。每個交易輸出有兩種狀態:要麼已被收款方花費,要麼保持未花費。未花費的交易輸出(UTXO)是我們熟悉的。除了相關的比特幣數量,每個交易輸出還附有一個以比特幣腳本語言編寫的腳本。只有能夠向該腳本提供正確證明(見證)的人才能花費UTXO。

Bitcoin Script 是一種基於堆疊的編程語言,具有一系列操作碼。附加到 UTXOs 的程序通常由多個操作碼組成,根據堆疊進行計算並將結果返回給它。自比特幣誕生以來,許多常見的比特幣腳本一直存在。例如,最常見的腳本由一個公鑰和一個檢查數字簽名的操作碼組成。該操作碼要求在花費或解鎖 UTXO 時,必須提供與公鑰相對應的數字簽名。

建議閱讀:[接近比特幣:了解BitVM的背景知識(1)]


比特幣 Script 的功能

比特幣腳本能做什麼:

  • 重新排列堆疊並執行相等性檢查(以驗證特定條件並確保交易安全性和有效性)。
  • 執行條件操作,類似於 if-else 陳述。
  • 對32位元數字進行有限的算術運算,如加法和減法。
  • 哈希數據並驗證ECDSA和Schnorr簽名。

比特幣腳本無法做到的事情:

  • 沒有循環、跳躍或遞迴;它不是圖靈完備的,具有非常有限的編程能力。
  • 無法執行位元運算。
  • 缺乏乘法和除法的操作碼。
  • 無法在堆疊上連接元素。
  • 對於讀取和驗證鏈上交易數據的能力非常有限。比特幣腳本無法直接訪問每筆交易的金額,也無法傳遞狀態(UTXO是一次性使用的,每次轉移都會銷毀舊的並生成新的)。

在比特幣的早期版本中,一些上述的“不能做”的功能是可能的,但由於安全漏洞,Satoshi Nakamoto後來禁用了某些opcodes。例如,OP_CAT opcode可以結合兩個堆疊元素,用於遠程攻擊比特幣節點並導致崩潰。 Satoshi出於安全考慮禁用了OP_CAT和其他opcodes。

那麼,比特幣腳本能夠驗證SNARKs嗎?從理論上講,即使比特幣腳本不是圖靈完備的,但其基本操作足以驗證任何計算。然而,在實際應用中,SNARK驗證不可行,因為驗證步驟所需的程式大小超過了比特幣的最大區塊限制4MB。雖然我們可以在大有限域中嘗試算術運算,但成本會非常高。例如,在BitVM中,將兩個254位整數相乘導致比特幣腳本大小接近8KB。此外,如果沒有OP_CAT,驗證Merkle證明的成本也很高,因為這需要類似循環的操作。


為什麼不直接修改比特幣協議以添加更強大的操作碼呢?正如先前提到的,就新協議規則達成多數共識是非常困難的。比特幣缺乏集中的決策者,而任何旨在改進比特幣腳本的提議都將面臨來自具有不同觀點的利益相關者的相當大反對。在比特幣網絡中沒有有效的方式來衡量社區共識,如果在沒有共識的情況下強行更新可能導致鏈分裂。當然,比特幣並非完全不可變。最近的更新分別是2017年的SegWit和2021年的Taproot。


Taproot升級改變了許多規則,從理論發布到實際激活,花了三年半的時間。啟用Taproot的關鍵因素在於它沒有改變現有的安全假設,並且明顯改進了比特幣協議。例如,它允許使用Schnorr簽名代替ECDSA。兩者都基於離散對數假設並使用相同的橢圓曲線,但前者更有效率並且需要更少的計算。

此外,Taproot對比特幣的改進可以分為以下三個方面:

首先,Taproot降低了具有多个条件分支的腳本的驗證成本,使比特幣能夠支持更複雜的程序。

其次,Taproot減少了需要在鏈上揭露的腳本數據量,您可以將多個腳本程序組裝成一個Merkle樹,每個腳本位於不同的葉子上。如果您想觸發某個腳本,您只需要揭露它所在的葉子和Merkle證明;

第三,Taproot還添加了其他機制設計。


考慮到比特幣在 Taproot 中整合更高級功能的先例,人們可能會想知道為什麼沒有引入用於 SNARK 驗證的專用操作碼。關鍵差異在於 OP_SNARK 所需的複雜性和共識。與 Taproot 不同,後者具有清晰、簡潔的設計,贏得了廣泛的支持,而 OP_SNARK 的提案卻千差萬別,很難讓社區團結在一個方法上。如果實施,每個比特幣節點都需要支持這個特定的 SNARK 驗證方法,這將顯著增加技術需求。此外,OP_SNARK 的複雜性是一個重要的障礙——Taproot 增加了大約 1600 行代碼,這是社區標準可以管理的,而 OP_SNARK 則涉及更加複雜的編碼。此外,當很少有人完全掌握其細節時,確定誰將評估 OP_SNARK 的激活並達成共識,增加了困難的層面。考慮到這些挑戰,OP_SNARK 的升級不太可能在不久的將來實現。

然而,在比特幣腳本中驗證SNARKs還有其他方法。我們可以通過添加更簡單的操作碼使比特幣腳本更加功能強大,從而允許人們在腳本中實現SNARK驗證程序。但事實上,在比特幣腳本語言中撰寫SNARK驗證程序非常困難。因此,Blockstream研究團隊正在開發Simplicity,這是一種旨在取代比特幣腳本的編程語言。Simplicity專門為區塊鏈共識系統設計,並且有意不具有圖靈完備性,這使得進行靜態分析和正式驗證變得更加容易。


讓我們把注意力轉向一個看似簡單但具有重大影響的提案,這個提案可能會顯著增強比特幣的腳本能力:重新啟用 OP_CAT 操作碼。 OP_CAT 最初包含在比特幣的早期代碼中,但後來由中本聰因其在特定條件下可能啟用 DoS 攻擊的潛力而被禁用。然而,比特幣社區內部現在對於重新啟用它表現出了日益增長的興趣。

OP_CAT的功能很简单 - 它从堆栈中取出顶部的两个元素,将它们连接起来,然后将结果推送回堆栈。尽管这可能看起来很基础,但它有潜力在比特幣的腳本語言中實現重大改進。例如,當前的比特幣腳本無法訪問某些在鏈上的交易數據,如涉及的金額,但使用OP_CAT,這種功能可以被引入。此外,OP_CAT還可以在驗證Merkle證明方面起到重要作用。

從本質上講,OP_CAT 是一個低級操作碼升級,可能會帶來各種新功能。許多人指出,OP_CAT 可能在實現各種目標方面起到關鍵作用。一個重要問題是,OP_CAT 是否可以在腳本中協助 SNARK 驗證。答案是肯定的。由於 Merkle 證明驗證是驗證基於 FRI 的 SNARK 的一個步驟,OP_CAT 將是一個有價值的補充。過去,設計用於 SNARK 驗證的腳本可能太大而無法符合比特幣的區塊大小限制,但 OP_CAT 可以幫助簡化這些腳本,使其更加緊湊。

多年來一直在討論 OP_CAT,人們對其在交易內省中潛在作用的認識不斷增強。與其他提議相比,其主要優勢之一是它曾經是比特幣腳本的一個組成部分,這可能使其更容易達成社區共識。然而,它的缺點是啟用 OP_CAT 可能對一些礦工可提取價值(MEV)利潤產生負面影響,這導致社區對其重新啟用持續進行辯論。

總結來說,比特幣可以通過重新引入像OP_CAT這樣的簡單操作碼來實現SNARK驗證腳本的進一步發展。此外,還值得一提的是最近提出的“Great Script Restoration”建議,該建議重新引入了乘法操作碼,使得所有算術運算都可以以任意精度進行。

此外,在評估 OP_CAT 對比特幣網絡的影響時,重要的是考慮其對比特幣節點運營商的影響。為了確保比特幣保持抗審查和去中心化,社區努力讓盡可能多的人運行節點來驗證交易。如果比特幣要實施 SNARK 驗證,這將不會顯著提高節點運作成本,這將不會對比特幣的安全性或抗審查性產生很大影響。

目前,一個比特幣區塊最多可以容納4MB的數據,新的區塊大約每10分鐘挖掘一次。大多數區塊都填滿了比特幣腳本和見證數據(類似於數字簽名)。平均而言,每個區塊可以容納7,000到10,000個簽名驗證,每個區塊最多可以進行約80,000次驗證。舉例來說,我的2020年英特爾CPU大約需要3.2秒來驗證一個比特幣區塊。顯然,區塊驗證速度受到影響的因素不僅僅是簽名驗證所需的時間。

此外,如果比特幣交易最終支持零知識(ZK)證明,交易生成時間的任何增加可能都不是一個主要問題。用於長期資產存儲的硬件錢包通常配有屏幕和專注於密鑰存儲和簽名創建的緊湊設計。這些錢包通常配備相對低功耗的 CPU,如 240MHz 雙核處理器,但它們可以有效地處理比特幣交易。


我做了一個小調查,問用戶對於簽名設備生成證明的最大延遲可以接受多久。許多人對於更長的等待時間是可以接受的,尤其是如果可以獲得顯著的收益。因此,如果我們將零知識證明引入比特幣交易,似乎不會有太大的問題。我們花了很多時間討論對比特幣底層設計的潛在變更,但是有很多應用可以在不修改比特幣本身的情況下開發。值得一提的是一個與BitVM相關的應用程序,稱為鏈狀狀態證明。該方法使用零知識證明來驗證區塊哈希的正確性。


這項技術對比特幣有什麼影響?首先,鏈狀態證明能夠大大減少同步和驗證比特幣歷史數據所需的工作量,進而降低運行節點的成本。目前,從創世塊同步和驗證數據到最新塊在高端設備上需要約5小時30分鐘,而在樹莓派級別的設備上需要幾天的時間。鏈狀態證明可以顯著縮短這個過程。

其次,鏈狀態證明在推進BitVM方面起著關鍵作用。 ZeroSync團隊已經徹底研究了鏈狀態證明並開發出一個簡化版本,稱為“標頭鏈證明”。這種方法使用零知識證明驗證比特幣區塊標頭,創建一個包含比特幣歷史上所有850,000個區塊標頭的“標頭鏈”。每個區塊標頭被哈希成80位元組的證明。該方法需要對每個標頭進行雙SHA-256計算,以驗證相關的工作證明。 ZeroSync利用STARKs生成這些標頭鏈證明,成本約為4,000美元,驗證在我的瀏覽器中僅需約3秒。


然而,由於標頭鏈證明並不驗證區塊內的交易,它們只能假設具有最多工作證明(PoW)的區塊鏈是有效的,並依靠比特幣客戶端從此鏈同步最新的區塊。在這種設置中,攻擊者理論上可以創建具有無效交易的區塊,之後添加更多區塊,並生成標頭鏈證明以誤導同步歷史數據的客戶端。但是,這樣的攻擊成本將是極高的,並且很可能會被現有的比特幣全節點客戶端檢測到。

然而,即使這種攻擊成功的機會很低,如果它能讓攻擊者偷走大量的比特幣,標頭鏈證明也不被認為是一個完全安全的解決方案。為了驗證鏈的完整狀態,我們需要確保所有比特幣區塊的內容都是有效的,包括基於secp256k1橢圓曲線的ECDSA和Schnorr簽名驗證。比特幣的歷史區塊每個月包含大約3000萬個簽名,歷史上總共約25億個簽名,還有大量的SHA-256計算。因此,比特幣網絡每月產生約7GB的區塊數據,歷史數據超過650GB——實際上,這個數字可能會是原來的2到3倍。


現在,讓我們看看BitVM。BitVM允許比特幣驗證任何計算任務,提供了一種在不修改協議的情況下執行SNARK驗證的最佳方式。BitVM使用兩種方法克服了比特幣的腳本大小限制。首先,它利用了Taproot MerkleTree腳本結構。其次,它使用KV存儲方案,可以跨單個腳本訪問,便於連接到大量腳本程式。但是,比特幣協議並沒有強制執行此KV存儲方案的完整性。BitVM通過使用欺詐證明來檢測惡意證明者來解決這個問題。如果證明者提出無效聲明或使用錯誤的KV存儲,其他人可以在比特幣區塊鏈上發起交易,以報告證明者的不當行為並扣押證明者的質押資產。


總之,比特幣正在努力應對重大挑戰,雖然已經提出了各種提案來解決這些問題,但不太可能獲得比特幣社區的快速接受。協定更改在短期內無法實現,這反映了比特幣去中心化和安全性的優勢和限制。SNARKs和STARK的潛力在社區內引起了相當大的興奮。從中長期來看,BitVM似乎是集成SNARK驗證的最有前途的方法,儘管它需要進一步的研究和開發才能完全實用。重新啟用OP_CAT操作碼是另一個值得探索的途徑,但它需要證明重新啟動的好處大於風險,並確定哪些簡單的操作碼可以促進SNARK驗證或比特幣腳本中的類似功能。最終,比特幣社區旨在提高技術的實用性並支援更多可操作的用例。

閱讀原始內容:https://www.youtube.com/watch?v=GrSCZmFuy7U

免責聲明:

  1. 本文轉載自 [Geek Web3], 所有版權歸原作者所有 [業界Web3]. 如果有对此转载的异议,请联系Gate Learn團隊,他們將迅速處理。
  2. 免責聲明:本文中所表達的觀點和意見僅為作者個人觀點,不構成任何投資建議。
  3. 由Gate Learn團隊進行對該文章的其他語言版本的翻譯。除非特別註明,禁止複製、分發或剽竊翻譯後的文章。

在比特幣中啟用零知識證明:從OP_CAT到狀態證明和BitVM

進階Aug 16, 2024
探索如何將零知識證明 (ZK) 集成到比特幣中,重點關注兩種 SNARK 驗證方法:在比特幣腳本中啟用OP_CAT和利用 BitVM。雖然OP_CAT允許在比特幣腳本中直接支援SNARK,但BitVM引入了欺詐證明和鏈狀態證明以降低驗證成本。
在比特幣中啟用零知識證明:從OP_CAT到狀態證明和BitVM

摘要

本文探討了在比特幣中啟用ZK驗證的實際方法,涵蓋了比特幣的UTXO模型、腳本限制、Taproot、OP_CAT、BitVM和Chain State Proofs等主題。文中清楚地論證了將ZK整合到比特幣協議中是不可避免的。文章突出了兩種潛在途徑:一種是重新引入OP_CAT操作碼,直接支持比特幣腳本中的SNARK驗證——這一變化有很高的最終批准可能性。第二種方法圍繞著BitVM,它包含欺詐證明。此外,ZeroSync團隊提出的Chain State Proofs旨在減少節點客戶端驗證歷史數據的成本。


主要文字:要完全理解比特幣,將其視為一個社會系統是有幫助的。在早期,比特幣的創造者定義了節點必須運行的軟體,就像建立統治社會的規則一樣。比特幣的穩定性取決於對其基本性質的廣泛共識,引出了像「比特幣在其核心是什麼?」和「比特幣應該發展成什麼?」這樣的問題。然而,就這些問題達成共識是非常困難的,因為意見各異且不斷演變。


這追溯到比特幣的歷史起源。當中本聰發布比特幣白皮書時,他說:“我正在研究一個全新的電子支付系統。這個系統是完全的P2P,並且不需要依賴任何第三方。” 這段文字是在 Cypherpunks 郵件列表上發表的(這是一個成立於1992年的電子郵件討論組,由一群關注隱私保護和密碼學技術的密碼學家和技術愛好者組成)。

然而,比特幣在產品設計層面限制了數據吞吐量。它可以每個單位時間處理的交易數量是有限的。如果要處理的交易數量急速增加,用戶將發起價格戰,以成功快速完成交易,進而迅速增加支付的手續費。在2024年區塊獎勵減半後,比特幣網絡中支付最高手續費的單筆交易出現,具有中等優先級別的交易的手續費達到150美元。可以說,比特幣網絡的昂貴交易費用已成為一個問題。

為了解決交易費用的問題,人們已經投入了大量資源開發閃電網絡。但根據2016年發表的一篇論文指出,閃電網絡實際上只能支持數千萬用戶,無法實現其全球支付系統的願景。除了過高的交易費用外,還存在另一個問題,即比特幣從未能夠實現其設想的匿名性。

中本聪在一个密码朋克电子邮件讨论组中指出,比特币具有隐私保护功能,交易发起者可以完全匿名。然而,虽然交易发起者不需要进行KYC,但比特币链上的交易数据泄露了大量信息,严重暴露了用户隐私。虽然有一些带有隐私功能的钱包客户端在一定程度上解决了上述问题,但这些钱包客户端的开发人员面临各种威胁。例如,Samourai CoinJoin钱包的开发人员在2024年4月被FBI逮捕,一周后,Wasabi钱包的开发人员关闭了他们的CoinJoin协调组件。显然,这些所谓的隐私钱包并不完全值得用户信任。

總的來說,比特幣的許多概念直到今天仍然遠未實現,相關技術仍在持續發展中。即便如此,許多比特幣社區的人相信比特幣的協議設計應該保持不變,但也有許多人,如我,熱衷於對比特幣進行改進。那麼,比特幣應該朝著什麼方向進步呢?


對於上述問題,比特幣社區中有許多提案,其中最好的理論結果應該與ZK和SNARKs相關。通過ZK和SNARKs,可以實現以下功能:

  1. 顯著提高隱私: 使用同態Peterson承諾對交易金額進行保護,並使用區間證明顯著提升用戶隱私(如在Blockstream的Element側鏈中所做的);使用可鏈接簽名(如Monero)來隱藏交易蹤跡;實現真正的私密交易(如Zcash)。

  2. 提高交易吞吐量

許多技術解決方案可以解決比特幣現有的問題,但為什麼這些技術沒有被整合到比特幣協議中呢?答案在於修改協議的困難。與以太坊不同,比特幣沒有像以太坊基金會這樣的中央組織。任何協議更改都需要高度的社區共識,涉及大量的談判和利益平衡。因此,儘管以太坊定期更新其EVM操作碼,比特幣的協議自成立以來幾乎沒有變化。

在某些方面,這種修改協議的困難是有益的。如果更改容易實施,惡意的改變或攻擊更有可能。這引出了一個問題:如何在不修改協議的情況下改善比特幣的性能?


要回答這個問題,我們需要重新複習比特幣的一些基礎知識。當您將比特幣轉移到其他人時,您會創建一筆交易並將其廣播到比特幣網絡。交易的輸出數據指定了轉移的BTC數量。接收方隨後可以創建一筆新交易來花費收到的BTC,在此過程中生成新的輸出數據。

需要注意的是,比特幣不像以太坊那樣具有全球狀態,尤其是缺乏賬戶狀態;它只有交易輸出數據。每個交易輸出有兩種狀態:要麼已被收款方花費,要麼保持未花費。未花費的交易輸出(UTXO)是我們熟悉的。除了相關的比特幣數量,每個交易輸出還附有一個以比特幣腳本語言編寫的腳本。只有能夠向該腳本提供正確證明(見證)的人才能花費UTXO。

Bitcoin Script 是一種基於堆疊的編程語言,具有一系列操作碼。附加到 UTXOs 的程序通常由多個操作碼組成,根據堆疊進行計算並將結果返回給它。自比特幣誕生以來,許多常見的比特幣腳本一直存在。例如,最常見的腳本由一個公鑰和一個檢查數字簽名的操作碼組成。該操作碼要求在花費或解鎖 UTXO 時,必須提供與公鑰相對應的數字簽名。

建議閱讀:[接近比特幣:了解BitVM的背景知識(1)]


比特幣 Script 的功能

比特幣腳本能做什麼:

  • 重新排列堆疊並執行相等性檢查(以驗證特定條件並確保交易安全性和有效性)。
  • 執行條件操作,類似於 if-else 陳述。
  • 對32位元數字進行有限的算術運算,如加法和減法。
  • 哈希數據並驗證ECDSA和Schnorr簽名。

比特幣腳本無法做到的事情:

  • 沒有循環、跳躍或遞迴;它不是圖靈完備的,具有非常有限的編程能力。
  • 無法執行位元運算。
  • 缺乏乘法和除法的操作碼。
  • 無法在堆疊上連接元素。
  • 對於讀取和驗證鏈上交易數據的能力非常有限。比特幣腳本無法直接訪問每筆交易的金額,也無法傳遞狀態(UTXO是一次性使用的,每次轉移都會銷毀舊的並生成新的)。

在比特幣的早期版本中,一些上述的“不能做”的功能是可能的,但由於安全漏洞,Satoshi Nakamoto後來禁用了某些opcodes。例如,OP_CAT opcode可以結合兩個堆疊元素,用於遠程攻擊比特幣節點並導致崩潰。 Satoshi出於安全考慮禁用了OP_CAT和其他opcodes。

那麼,比特幣腳本能夠驗證SNARKs嗎?從理論上講,即使比特幣腳本不是圖靈完備的,但其基本操作足以驗證任何計算。然而,在實際應用中,SNARK驗證不可行,因為驗證步驟所需的程式大小超過了比特幣的最大區塊限制4MB。雖然我們可以在大有限域中嘗試算術運算,但成本會非常高。例如,在BitVM中,將兩個254位整數相乘導致比特幣腳本大小接近8KB。此外,如果沒有OP_CAT,驗證Merkle證明的成本也很高,因為這需要類似循環的操作。


為什麼不直接修改比特幣協議以添加更強大的操作碼呢?正如先前提到的,就新協議規則達成多數共識是非常困難的。比特幣缺乏集中的決策者,而任何旨在改進比特幣腳本的提議都將面臨來自具有不同觀點的利益相關者的相當大反對。在比特幣網絡中沒有有效的方式來衡量社區共識,如果在沒有共識的情況下強行更新可能導致鏈分裂。當然,比特幣並非完全不可變。最近的更新分別是2017年的SegWit和2021年的Taproot。


Taproot升級改變了許多規則,從理論發布到實際激活,花了三年半的時間。啟用Taproot的關鍵因素在於它沒有改變現有的安全假設,並且明顯改進了比特幣協議。例如,它允許使用Schnorr簽名代替ECDSA。兩者都基於離散對數假設並使用相同的橢圓曲線,但前者更有效率並且需要更少的計算。

此外,Taproot對比特幣的改進可以分為以下三個方面:

首先,Taproot降低了具有多个条件分支的腳本的驗證成本,使比特幣能夠支持更複雜的程序。

其次,Taproot減少了需要在鏈上揭露的腳本數據量,您可以將多個腳本程序組裝成一個Merkle樹,每個腳本位於不同的葉子上。如果您想觸發某個腳本,您只需要揭露它所在的葉子和Merkle證明;

第三,Taproot還添加了其他機制設計。


考慮到比特幣在 Taproot 中整合更高級功能的先例,人們可能會想知道為什麼沒有引入用於 SNARK 驗證的專用操作碼。關鍵差異在於 OP_SNARK 所需的複雜性和共識。與 Taproot 不同,後者具有清晰、簡潔的設計,贏得了廣泛的支持,而 OP_SNARK 的提案卻千差萬別,很難讓社區團結在一個方法上。如果實施,每個比特幣節點都需要支持這個特定的 SNARK 驗證方法,這將顯著增加技術需求。此外,OP_SNARK 的複雜性是一個重要的障礙——Taproot 增加了大約 1600 行代碼,這是社區標準可以管理的,而 OP_SNARK 則涉及更加複雜的編碼。此外,當很少有人完全掌握其細節時,確定誰將評估 OP_SNARK 的激活並達成共識,增加了困難的層面。考慮到這些挑戰,OP_SNARK 的升級不太可能在不久的將來實現。

然而,在比特幣腳本中驗證SNARKs還有其他方法。我們可以通過添加更簡單的操作碼使比特幣腳本更加功能強大,從而允許人們在腳本中實現SNARK驗證程序。但事實上,在比特幣腳本語言中撰寫SNARK驗證程序非常困難。因此,Blockstream研究團隊正在開發Simplicity,這是一種旨在取代比特幣腳本的編程語言。Simplicity專門為區塊鏈共識系統設計,並且有意不具有圖靈完備性,這使得進行靜態分析和正式驗證變得更加容易。


讓我們把注意力轉向一個看似簡單但具有重大影響的提案,這個提案可能會顯著增強比特幣的腳本能力:重新啟用 OP_CAT 操作碼。 OP_CAT 最初包含在比特幣的早期代碼中,但後來由中本聰因其在特定條件下可能啟用 DoS 攻擊的潛力而被禁用。然而,比特幣社區內部現在對於重新啟用它表現出了日益增長的興趣。

OP_CAT的功能很简单 - 它从堆栈中取出顶部的两个元素,将它们连接起来,然后将结果推送回堆栈。尽管这可能看起来很基础,但它有潜力在比特幣的腳本語言中實現重大改進。例如,當前的比特幣腳本無法訪問某些在鏈上的交易數據,如涉及的金額,但使用OP_CAT,這種功能可以被引入。此外,OP_CAT還可以在驗證Merkle證明方面起到重要作用。

從本質上講,OP_CAT 是一個低級操作碼升級,可能會帶來各種新功能。許多人指出,OP_CAT 可能在實現各種目標方面起到關鍵作用。一個重要問題是,OP_CAT 是否可以在腳本中協助 SNARK 驗證。答案是肯定的。由於 Merkle 證明驗證是驗證基於 FRI 的 SNARK 的一個步驟,OP_CAT 將是一個有價值的補充。過去,設計用於 SNARK 驗證的腳本可能太大而無法符合比特幣的區塊大小限制,但 OP_CAT 可以幫助簡化這些腳本,使其更加緊湊。

多年來一直在討論 OP_CAT,人們對其在交易內省中潛在作用的認識不斷增強。與其他提議相比,其主要優勢之一是它曾經是比特幣腳本的一個組成部分,這可能使其更容易達成社區共識。然而,它的缺點是啟用 OP_CAT 可能對一些礦工可提取價值(MEV)利潤產生負面影響,這導致社區對其重新啟用持續進行辯論。

總結來說,比特幣可以通過重新引入像OP_CAT這樣的簡單操作碼來實現SNARK驗證腳本的進一步發展。此外,還值得一提的是最近提出的“Great Script Restoration”建議,該建議重新引入了乘法操作碼,使得所有算術運算都可以以任意精度進行。

此外,在評估 OP_CAT 對比特幣網絡的影響時,重要的是考慮其對比特幣節點運營商的影響。為了確保比特幣保持抗審查和去中心化,社區努力讓盡可能多的人運行節點來驗證交易。如果比特幣要實施 SNARK 驗證,這將不會顯著提高節點運作成本,這將不會對比特幣的安全性或抗審查性產生很大影響。

目前,一個比特幣區塊最多可以容納4MB的數據,新的區塊大約每10分鐘挖掘一次。大多數區塊都填滿了比特幣腳本和見證數據(類似於數字簽名)。平均而言,每個區塊可以容納7,000到10,000個簽名驗證,每個區塊最多可以進行約80,000次驗證。舉例來說,我的2020年英特爾CPU大約需要3.2秒來驗證一個比特幣區塊。顯然,區塊驗證速度受到影響的因素不僅僅是簽名驗證所需的時間。

此外,如果比特幣交易最終支持零知識(ZK)證明,交易生成時間的任何增加可能都不是一個主要問題。用於長期資產存儲的硬件錢包通常配有屏幕和專注於密鑰存儲和簽名創建的緊湊設計。這些錢包通常配備相對低功耗的 CPU,如 240MHz 雙核處理器,但它們可以有效地處理比特幣交易。


我做了一個小調查,問用戶對於簽名設備生成證明的最大延遲可以接受多久。許多人對於更長的等待時間是可以接受的,尤其是如果可以獲得顯著的收益。因此,如果我們將零知識證明引入比特幣交易,似乎不會有太大的問題。我們花了很多時間討論對比特幣底層設計的潛在變更,但是有很多應用可以在不修改比特幣本身的情況下開發。值得一提的是一個與BitVM相關的應用程序,稱為鏈狀狀態證明。該方法使用零知識證明來驗證區塊哈希的正確性。


這項技術對比特幣有什麼影響?首先,鏈狀態證明能夠大大減少同步和驗證比特幣歷史數據所需的工作量,進而降低運行節點的成本。目前,從創世塊同步和驗證數據到最新塊在高端設備上需要約5小時30分鐘,而在樹莓派級別的設備上需要幾天的時間。鏈狀態證明可以顯著縮短這個過程。

其次,鏈狀態證明在推進BitVM方面起著關鍵作用。 ZeroSync團隊已經徹底研究了鏈狀態證明並開發出一個簡化版本,稱為“標頭鏈證明”。這種方法使用零知識證明驗證比特幣區塊標頭,創建一個包含比特幣歷史上所有850,000個區塊標頭的“標頭鏈”。每個區塊標頭被哈希成80位元組的證明。該方法需要對每個標頭進行雙SHA-256計算,以驗證相關的工作證明。 ZeroSync利用STARKs生成這些標頭鏈證明,成本約為4,000美元,驗證在我的瀏覽器中僅需約3秒。


然而,由於標頭鏈證明並不驗證區塊內的交易,它們只能假設具有最多工作證明(PoW)的區塊鏈是有效的,並依靠比特幣客戶端從此鏈同步最新的區塊。在這種設置中,攻擊者理論上可以創建具有無效交易的區塊,之後添加更多區塊,並生成標頭鏈證明以誤導同步歷史數據的客戶端。但是,這樣的攻擊成本將是極高的,並且很可能會被現有的比特幣全節點客戶端檢測到。

然而,即使這種攻擊成功的機會很低,如果它能讓攻擊者偷走大量的比特幣,標頭鏈證明也不被認為是一個完全安全的解決方案。為了驗證鏈的完整狀態,我們需要確保所有比特幣區塊的內容都是有效的,包括基於secp256k1橢圓曲線的ECDSA和Schnorr簽名驗證。比特幣的歷史區塊每個月包含大約3000萬個簽名,歷史上總共約25億個簽名,還有大量的SHA-256計算。因此,比特幣網絡每月產生約7GB的區塊數據,歷史數據超過650GB——實際上,這個數字可能會是原來的2到3倍。


現在,讓我們看看BitVM。BitVM允許比特幣驗證任何計算任務,提供了一種在不修改協議的情況下執行SNARK驗證的最佳方式。BitVM使用兩種方法克服了比特幣的腳本大小限制。首先,它利用了Taproot MerkleTree腳本結構。其次,它使用KV存儲方案,可以跨單個腳本訪問,便於連接到大量腳本程式。但是,比特幣協議並沒有強制執行此KV存儲方案的完整性。BitVM通過使用欺詐證明來檢測惡意證明者來解決這個問題。如果證明者提出無效聲明或使用錯誤的KV存儲,其他人可以在比特幣區塊鏈上發起交易,以報告證明者的不當行為並扣押證明者的質押資產。


總之,比特幣正在努力應對重大挑戰,雖然已經提出了各種提案來解決這些問題,但不太可能獲得比特幣社區的快速接受。協定更改在短期內無法實現,這反映了比特幣去中心化和安全性的優勢和限制。SNARKs和STARK的潛力在社區內引起了相當大的興奮。從中長期來看,BitVM似乎是集成SNARK驗證的最有前途的方法,儘管它需要進一步的研究和開發才能完全實用。重新啟用OP_CAT操作碼是另一個值得探索的途徑,但它需要證明重新啟動的好處大於風險,並確定哪些簡單的操作碼可以促進SNARK驗證或比特幣腳本中的類似功能。最終,比特幣社區旨在提高技術的實用性並支援更多可操作的用例。

閱讀原始內容:https://www.youtube.com/watch?v=GrSCZmFuy7U

免責聲明:

  1. 本文轉載自 [Geek Web3], 所有版權歸原作者所有 [業界Web3]. 如果有对此转载的异议,请联系Gate Learn團隊,他們將迅速處理。
  2. 免責聲明:本文中所表達的觀點和意見僅為作者個人觀點,不構成任何投資建議。
  3. 由Gate Learn團隊進行對該文章的其他語言版本的翻譯。除非特別註明,禁止複製、分發或剽竊翻譯後的文章。
即刻開始交易
註冊並交易即可獲得
$100
和價值
$5500
理財體驗金獎勵!