中本聰刪除的OP_CAT現在要恢復,為何?


在比特幣亞洲大會上,建立了一個技術文檔中心,討論恢復OP_CAT操作指令。萬物島BTC工作室也進行了相關討論,並鼓勵撰寫系統性文章。比特幣腳本指令刪除了OP_CAT等指令,只保留OP_SIZE。有提案在Tapscript中增加類似OP_CAT功能。目前需要恢復OP_CAT是為了增強比特幣主網的可編程特性。 Taproot、MAST、Tapscript等新技術為比特幣功能擴充提供了準備。建議權利決定者可能為核心開發團隊和礦工社區,最終可能會通過提案。整體來看,比特幣網路的發展取決於經濟因素。

作者|付少慶,SatoshiLab,萬物島BTC工作室

正文

比特幣亞洲大會上我們建立了一個技術文件中心,在比特幣的腳本語言中要不要恢復OP_CAT操作指令,之後在萬物島BTC工作室的門會議中,大山老師也建立了相關的問題,並鼓勵我們工作室的學員寫一份有系統的文章。

為什麼一個指令在業內人士大會上會被討論?這個事情下面有哪些問題?

一、OP_CAT的基礎知識

要恢復OP_CAT這個問題,我們先了解一些與OP_CAT相關的基礎知識。在開發語言中,操作碼(opcodes)也會稱為指令或函數,是構成開發語言的基本組成元素。我們都可以稱為指令。

1.1OP_CAT 具有什麼功能?

在很多開發的語言中,連接兩個字串一般多用concat,所以OP_CAT 的縮寫也應該是來自concat 這個單字,形成OP_CAT 的指令。

範例1:java開發語言中的concatString str1 = “Hello”;String str2 = “world”; //注意有空格String str3 = str1.concat(str2);System.out.println(str3);輸出結果就是Hello world

例2:mysql 中的concatselect CONCAT(“My”,“SQL”)from Result;執行結果就是顯示“MySQL”這幾個字元。

在高階開發語言中,concat(即字串拼接)的使用頻率非常高,而且在許多情況下也非常重要。例如一些場景:

資料展示與輸出:在許多場景下,我們需要將資料以字串形式進行展示或輸出,例如將不同的資料項目連接成一個完整的資料、將資料格式化為特定的字串,有時會需要使用字串拼接操作。

資料處理與:在資料處理中,有時需要將字串進行拼接以產生新的字串,將檔案路徑拼接成一個完整的路徑、將URL參數拼接成一個完整的URL,這也是字串拼接的基本應用。

如果語言是普通語言,則毫無疑問會有這個字元連接功能,但開發語言有些特殊,所以常見錯誤是包含這個字元連接指令。 字元連接指令是一種腳本語言,它是一種非程式性的指令。

關鍵字:

1. 常數。如:OP_0,OP_FALSE

2. 流程控制。如:OP_IF,OP_NOTIF,OP_ELSE,…

3. 堆棧。如:OP_TOALTSTACK(把輸入壓入輔堆疊的項部,從主堆疊刪除),…

4. 字串。如:OP_CAT(連接兩個字串,已停用),OP_SIZE(把頂元素的字串長度壓入堆疊(無需彈出元素))

5. 位元邏輯。如:OP_AND,OP_OR,OP_XOR

6. 算術邏輯。如:OP_1ADD(輸入值加1),OP_1SUB(輸入值減1)

7.加密貨幣。如:OP_SHA1(輸入用SHA-1演算法HASH.),OP_CHECKSIG()

8.偽關鍵字

9. 保留關鍵字

比特幣腳本指令常見的類型:

腳本:

1. 支付到比特幣地址的標準交易(pay-to-pubkey-hash)

2. 標準比特幣產生交易(pay-to-pubkey)

3. 可證明的無法花掉/可刪除

4. 任何人都可以消費輸出

5. 猜謎交易

五個標準版本交易腳本包括:支付到公鑰雜湊(P2PKH)、支付到公鑰、多重簽章(限定最多15 個金鑰)、支付到腳本雜湊(P2SH),以及資料輸出(OP_RETURN)。

在網址:https://en.bitcoin.it/wiki/Script 中有詳細說明。

1.2比特幣語言刪除OP_CAT與其他指令的刪減

其實在早期的比特幣腳本語言中也是有字元連結的,也就是「OP_CAT」操作碼開始存在,後來被刪除了。在比特幣的腳本語言中,OP_CAT可以實現多個UTXO解鎖腳本位元組字串組合連接處理,可以提升BTC主網的可程式特性和運算複雜度。考慮到安全性的考慮(也有可能是對穩定性的考慮),在2010年8月,這個操作碼被移出比特幣協議。

在比特幣的腳本語言中,開始和字元操作相關的指令很多,在之後大部分都被刪除了,刪除了OP_CAT、OP_SUBSTR、OP_LEFT、OP_RIGHT,只保留了OP_SIZE。如下圖所示。

不僅刪除了暴力操作指令,還刪除了不少其他指令。

1.位元操作相關指令

曾被中本聰刪除的OP_CAT,為何現在要恢復?

2.算術操作

曾被中本聰刪除的OP_CAT,為何現在要恢復?

為什麼要刪減指令?關於科技發展變化的詳細內容,讀者可以閱讀《導致暴力極端主義的新科技發展總結》。

2為什麼有人要“恢復OP_CAT”

網路媽媽在說比特幣要“恢復OP_CAT”,這是眾人對這個事情的一個嚴重的誤解。但確實需要OP_CAT那樣的字元連接功能,是要在Tapscript中增加這個類似的功能,於是要產生「恢復OP_CAT」這件事情。

2.1「恢復OP_CAT」提案與眾人的誤解

在介紹相關內容前,我們需要先對BIP有所了解。 BIP是比特幣改進提案的縮寫,直接翻譯為:比特幣改進提案。包含以下幾種狀態,它們之間的狀態轉換如下圖所示:

曾被中本聰刪除的OP_CAT,為何現在要恢復?

2023 年10 月,Bitcoin Core 開發者Ethan Heilman 和Botanix Labs 首席軟體工程師Armin Sabouri 共同發起了一個比特幣改進提案(BIP)草案,名為“OP_CAT”,讓這個討論有了一個新的高度。詳細提案內容查看網址:https://github.com/bip420/bip420

Tapscript 提案的新腳本(12行)如下

曾被中本聰刪除的OP_CAT,為何現在要恢復?

提案中還有一段重要的話:此實作受到OP_CAT 原始實作的啟發,該實作在提交「其他變更」4bd188c 將其停用之前存在於比特幣程式碼庫中:

參考的原始比特幣腳本程式碼(13行)如下:

曾被中本聰刪除的OP_CAT,為何現在要恢復?

BIP420 RP草案,僅包含簡潔的12行程式碼(與原來的BTCscript很相似),卻傳遞了明確的伯仲的功能性質,定義了一個新的Tapscript操作碼,允許在堆疊上連接兩個值。此操作碼實現的靈感明顯來自原始被刪除的OP_CAT。此文字被使用不同的顏色來標識,在強調不是在比特幣的原始指令中恢復相關指令,而是在Taproot的擴充中Tapscript中重新實作一個類似的指令。

在比特幣的指令中恢復某些指令和在Tapscript中產生新指令是不同的概念,有不同的範圍。

2.2哪些功能或應用程式需要恢復OP_CAT

完全理解問題需要兩部分知識:

在1.1 節中,我們已經知道在中字符連接concat 非常常見且重要的功能,在高級開發語言或功能豐富一些中爭奪這個功能。 有這個共識,再了解到比特幣的變化,就會理解恢復OP_CAT 的根本原因。

目前一些想法在比特幣網路上開發功能的團隊與專案方希望恢復這個指令。有一個指令,可以實現更強大的智能合約(比特幣網路上的智能合約,只是不是圖靈完備的)。這個功能的添加,會支援完全依賴智慧合約的創新方法,還可以把比特幣從僅為支付服務的網路中,發展成一個更多功能、可擴展的運算平台。

比特幣已經透過Taproot 為擴充功能做好了準備。我們需要詳細了解一些知識:Taproot、MAST、Taproot Scripts。最好閱讀《導致比特幣再次爆發的新技術發展總結》,了解比特幣技術爆發的底層變化。

比特幣技術透過隔離見證Segwit擴充了比特幣的OP_RETURN 功能,使得比特幣可儲存的實際空間擴大,區塊最大可以到達4M。這些擴大出來的空間,目前被人們大量的使用在儲存文字或圖片等場景,但設計者旨在用於擴展比特幣的功能。因為為了擴展功能產生了幾個BIP協定BIP340、BIP341 和BIP342,其中BIP340引入了可以同時驗證多個交易的Schnorr簽名,取代了橢圓曲線數位簽章演算法(ECDSA),再一次擴大了網路容量並加快了批量交易的速度,為部署即將到來的智能合約提供了的可能性;BIP341實現了默克爾化抽象語法樹(MAST)來優化區塊鏈上的交易資料;BIP342(Tapscript)採用比特幣的腳本編碼語言擴充的比特幣原生腳本能力的不足。

隔離見證與Taproot 的空間擴大,導致了Schnorr、MAST 樹和TapScripts 的產生,它們要完成的使命是比特幣主網的功能擴大。 4M 的載入可以儲存大量的程式碼,只要Tapscript 的功能夠強大,就能開發出非常多的應用程式。但目前Tapscript 剛誕生,很多指令還不夠完善,會出現以下步驟擴大Tapscript 指令功能狀況。

3比特幣協定在Web3.0中的滯後與作用

即使透過第2節我們了解到了恢復OP_CAT的提案內容與原因,那我們怎麼評價螞蟻事件?因為不光要增加OP_CAT,Tapscript還會增加指令,那要掌握這個增加的基本原則有哪些呢?我們讚賞從更宏觀的角度來看比特幣。

3.1Web3.0應用架構與分層協定設計思想

在《從狀態機的角度觀察比特幣二層,可以看到未來Web3.0 應用的架構與建設路徑》文章中,我們已經大致勾畫出了Web3.0 應用架構,如下圖所示:

曾被中本聰刪除的OP_CAT,為何現在要恢復?

這就是為什麼區塊鏈是“以比特幣為開,以比特幣為支點”,所有區塊鏈都是比特幣的廣二層或測試技術。

: Web3.0應用架構,我們欣賞並欣賞分層設計(尤其是底層應該具有實現)。系統劃分和方法的製定,透過系統整合、可維護性和可擴展性,提高系統設計的可靠性和可靠性。我們使用的在地化平台,採用的TCP/IP協定:

曾被中本聰刪除的OP_CAT,為何現在要恢復?

在協定的底層,TCP協定和IP協定只需要實現最簡單,最基礎的功能,那些應用層的協議,如FTP、SMTP、IMAP、HTTP等協定都在高層實現,會封裝在TCP協定和IP協定中。

如果你想讓網路成為主流,那麼你需要了解網路的基本概念,包括IP位址、IP位址轉換、IP位址轉換等等,而這些概念在網路上都是很常見的,比如說網站建置、網站設計、網站維護、網站優化等等,而這些概念在互聯網上都是很常見的,比如說網站建設、網站設計、網站維護等等,而這些概念在互聯網上都是很常見的,比如說網站建設、網站維護等等, …

3.2 過度設計與實用即可兩篇論文的哲學思想

我們知道,我們並沒有找到任何可以證明我們準確性的可靠證據,我們首先提出了兩種觀點:過度設計和足夠。 (也許我們知道了同樣的觀點,因為比特幣的發展決策是很多因素決定的,比特幣的去中心化文化使得它的發展會由許多因素決定,或者是由人類群體的思想決定。)

全文編譯並譯即為兩種不同的思想,它們各自有不同的優點。以下是它們的缺點和一些改進:

1.改革設計

過度設計功能:

可擴展性強:過度設計通常會考慮未來所需的變化,能夠應對各種擴展和改變。

過度的系統能夠適應各種不同的情況,

建立長期關係:在後期維護之間有很多功能,長期維護是最重要的。

成果設定優點:

耗時:過度設計更多的時間和資源完成,就會中斷。

資源浪費:過度設計可能會引入複雜的功能或結構,浪費了資源。

可能過於複雜:過度設計會導致系統結構過於複雜,增加了系統維護和理解的努力。

適用情境(整體範圍包括參考GPT部分內容)通常適用於全新的,有範例可以參考,且初始需求較少或不夠明確,但預期需求變化較大,可以適用編制經驗,制定大型軟體或平台的底層設計。

2.夠用即可

足以可使用的功能:

簡單明了:夠用即可思想了解解決當前需求,使系統保持簡單和易於理解。

節約資源:足夠的心思避免過度浪費時間和金錢。

快速交付:足夠可用的即可交付產品或系統,滿足使用者的基本需求。

足以即可的缺點:

無法適應變化:足以用即可思想目的適應未來的需求的變化,需要進行較大的修改和調整。

可擴展性差:足以可用於思想目標系統缺乏可擴展性,難以添加新功能和組件。

夠用即可的適用場景:要實施的項目沒有可以參考的範例,或是可參考的範例很少,不知道發展的方向和目的地,可以採用夠用即可的方式。還有那些小項目完全適用即可的想法。對於創新性項目,很多時候也會採用這種原則,因為未來完全不明確。

並不是對立的概念,而是一種思考方式的不同。在比特幣的原始腳本BTCscript上世界各地採用足夠的使用即可原則,但Tapscript是一種原始腳步的擴展,可以參考一些編程場景,但需要一些時間才能設計好。在Taproot和Tapscript的使用上也只是一層與二層之間的連接技術,不應該使用,甚至要使用Tapscript功能。這樣我們就找到了設計Tapscript的上限與上限。

3.3Web3.0(下一代網路)的輝煌未來

在3.2 節中我們表達了在Tapscript 的指令設計上可以適當的過度設計,但上限是滿足連接比特幣一層和二層的需求即可。但在早期,尤其是比特幣價格還不過高的情況下(每次簡單交易執行不超過100 美元,都政治不過高)和分散式系統的二層或三層還不成熟的情況下,很多人還是會開發溢出功能,這導致Tapscript 也可能包含溢出的指令。

從另一方面來看,區塊鏈技術與整個Web3.0 的建設,以及比特幣區塊鏈技術的演進,以及比特幣網路基礎設施的構建都不應該局限於開發複雜的功能。

在《從狀態機的角度觀察比特幣二層,可以看到未來Web3.0應用的架構和建設路徑》我們透過中國互聯互通發展狀況統計報告了解Web2.0的豐富應用。在統計報告中,可以看到Web2.0中的應用程式已經非常豐富,並且擁有龐大的使用者群體。這些應用程式包括:即時通訊、網路影片、短影片、網路支付、網路購物、搜尋引擎、網路新聞、網路音樂、網路直播、網路遊戲、網路上線、網路文學、網路購物、線上辦公室、線上旅遊預定、線上教育、線上醫療、…,幾乎涵蓋了人們生活的全部領域。除了這些消費互聯網的內容,在產業互聯網中也有很多的應用。

曾被中本聰刪除的OP_CAT,為何現在要恢復?

2020.12 – 2021.6各類網路應用使用者規模及網友使用率

這些應用程式都還沒有進入Web3.0 的世界。當這些應用程式進入Web3.0 時代後,使用者規模和效能要求更高。所以比特幣網路承擔著在未來十分重要的任務,使得它必須要用分層的結構來建立真正的Web3.0 世界。那麼在比特幣網路功能上就以簡單穩定為主,以服務一層與二層的連結技術為主。自身的主張不要過度使用比特幣網路的連結技術,給Tapscript 一個擴充空間,但不要有太多的功能。

4 是否恢復OP_CAT 誰有決定權

透過前面的內容,我們知道這個提案的真實內容,是在Tapscript中產生一個類似的OP_CAT的指令功能,而不是恢復比特幣腳本在原來的OP_CAT中。對於這個提案誰有決策權呢?核心的開發團隊礦工社群?

如果我們從利益的角度分析,Tapscript中產生OP_CAT指令的可程式性,並需要更多的主網程式和應用,這樣就會增加主網的效益。礦工會最積極的支持者,開發者因為增加了開發可能性也會支持。

比特幣核心團隊一直以來都秉持著一種按期完成的工作,但他們不會同意? 的技術支援。 其實這個事件還牽扯到一個較大的問題,對於Tapscript 的推廣,需要製定一套規則,對於它的比特幣主鏈的BTC 腳本,決策上是否能夠適當解決一些問題? 比特幣的BIP 協議以太坊的EIP 協議,以及提議的分級也許是個不錯的方法。

透過整理這篇文章,我個人的判斷這個建議最終會獲得通過,不然Tapscript的功能就太弱了,也許過程會有些曲折。

: 在比特幣世界,由於沒有權威機構的支持,比特幣的權利不再是世界公認的原則,而經濟因素是決定性因素,最終導致通過比特幣網絡的原因是大多數人的利益驅動的。即使Tapscript被過度設計了,我們仍使用中期經濟因素矯正。

資訊來源:0x資訊編譯自網際網路。版權歸作者萬物島ThreeDAO所有,未經許可,不得轉載

Total
0
Shares
Related Posts