導致比特幣再次爆發的新技術發展總結

2024-04-21 20:04:08

原文作者:付少慶,SatoshiLab,萬物島 BTC 工作室

1. 比特幣原有技術的主要探索與衝突

比特幣的原有技術一直存在大規模應用與比特幣應該具有的能力的衝突問題。大規模應用和交易規模是否意味着更復雜的交易指令和更大的交易空間?是否意味着一定要在比特幣單一系統上實現所有的功能?在早期,比特幣生態技術發展不完善的情況下,這些現象似乎都是比特幣本身的問題。隨着技術的發展,很多問題會得到更清晰的答案。

在本文中列出一些相關問題,以及對這些問題的產生與解決過程。通過這篇文章,可以看到這些問題與技術之間的關聯性,以及比特幣主鏈與相關“測試鏈”的變化過程。比特幣的技術一直被不同的項目與團隊在探索中(包括以太坊都是對比特幣不完善的一種探索),只是在比特幣主網上產生的變化一直不夠明顯,直到 Taproot 等技術的產生,推動了 Ordinals 協議等協議產生之後,重新進入了一個新的發展高潮。

從整體看這些發展過程與產生的相關技術,我們能夠看到他們之間的聯系,可以推測出更多發展方向與整體架構。

1.1. 比特幣的腳本語言與幾次刪減指令

比特幣的編程語言是一種逆波蘭範式的腳本語言,沒有循環語句和條件控制語句(稍後看 Taproot&Taproot Script 擴充了這塊能力)。因此,人們常說:比特幣腳本語言不是圖靈完備的,這導致比特幣腳本語言,有一定的局限性。

當然,由於這些局限性,黑客就沒辦法使用這種腳本語言寫一些死循環(會造成網絡癱瘓),或者一些能導致 DOS 攻擊的惡意代碼,也就避免了比特幣網絡受到 DOS 攻擊。比特幣的开發者,也認為核心區塊鏈,不應該具備圖靈完整性,來避免一些攻擊和網絡堵塞。

但是,也正是由於這些局限性,比特幣網絡,沒有辦法運行其他復雜的程序了,沒辦法完成一些“有用”的功能。而後面發展的一些區塊鏈系統,為了解決具體問題,滿足用戶的需求,直接改變了這點。如,以太坊使用的語言就具備了圖靈完備。

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

關鍵字:

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_ 1 ADD(輸入值加 1),OP_ 1 SUB(輸入值減 1)

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

8. 僞關鍵字

9. 保留關鍵字

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

腳本:

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

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

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

4. Anyone-Can-Spend 輸出

5. 猜謎交易

五個標准類型的交易腳本包括:支付到公鑰哈希(P2P KH)、支付到公鑰、多重籤名(限定最多 15 個密鑰)、支付到腳本哈希(P 2 SH),以及數據輸出(OP_RETURN)。

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

刪減比特幣支持的指令

比特幣歷史上有多次刪減指令的事情發生。下面的圖表中,紅色部分是已經刪減掉的指令。

(1)字符串操作

(2)

(3)算術操作

為什么要刪減指令?安全性只是一方面的考慮,如果我們用分層設計的思想看待刪減指令會理解其合理性,這樣做能讓底層協議更基礎更穩定。也許中本聰一开始就意識到了這個問題,不然不會主動的刪減指令。我們常人的思維是建造一個直接滿足用戶的需求,具有完善指令和系統功能的小系統,而不是一個需要協作的大型協議。

這樣也就造成了一種事實,只有比特幣適合作為一層網絡。我在《比特幣價格過高會促生一個新的替代鏈產生》文章中分析過這種現象,從經濟學視角和技術視角分析,有產生比特幣替代鏈的可能性。但從比特幣的基本特點和分層設計的角度,幾乎只有比特幣能夠作為一層網絡基礎設施,即使有替代鏈也是一個 1.5 層的產物。在一層網絡這個層面,真品只有比特幣,能有一些替代作用的鏈最多是 A 貨。

1.2. 比特幣分叉歷史、原因與意義

在比特幣的發展歷史,除了刪減指令問題,另一方面是區塊大小之爭,這經常造成比特幣的硬分叉。

BTC 創立之初並沒有限制區塊大小,以便能夠在相同時間處理的交易筆數。但當早期 BTC 價格非常低,惡意交易的成本也非常低,為了解決這一問題,中本聰在 2010 年 9 月 12 日主持了一次軟分叉,添加了區塊體積不得超過 1 MB 的限制。 中本聰指出但這種限制是臨時性的,未來可以以可控和逐步的方式提高區塊限制,以便滿足擴容的需要。

下圖為比特幣的分叉歷史:

隨着比特幣的流行,網絡交易擁堵和確認時間增長問題愈發嚴重。2015 年 Gavin Andresen 和 Mike Hearn 宣布將在新版 BitcoinXT 中實現 BIP-101 提案,希望將區塊上限提高至 8 MB。而 Greg Maxell,Luke Jr,Pieter Wuille 等核心开發者則持反對意見,認為這種做法會提高運行全節點的門檻,而且帶來不可控的影響。這場爭論最終在議題和參與範圍均出現了擴大化。

從上面的內容,我們看到中本聰也表達了“區塊大小這種限制是臨時性的,未來可以以可控和逐步的方式提高區塊限制,以便滿足擴容的需要。”但什么時候分叉支持更大區塊,單獨分出一條鏈支持大區塊是否可以解決問題?在不斷的爭議中,也產生了衆多的案例。如,BCH 區塊大小是 8 M,後來又增加的 32 M。BSV 區塊大小是 128 M。而除了 BCH(和後面的 BSV)以外,這一時期還出現了許多其它 BTC 分叉幣,據 BitMEXResearch,僅在 BCH 分叉後的一年內,就出現了至少 50 種新的分叉幣。

稍後的內容我們會看到,在比特幣主網上面 Segwit 和 Taproot 也在一定程度上將區塊的空間從 1 M 提升到了 4 M。

比特幣的分叉是一種發展探索,在嘗試通過自身的改變來完成對更多需求的支持。其中有用戶需求、礦工需求、投資人需求、开發者需求、……。

1.3. 比特幣發展中的幾個典型探索

中本聰離开後,繼承人 Gavin Andresen 主導建立了 Bitcoin Core 和 Bitcoin 基金會。在此期間,針對 BTC 的可拓展性探索一直存在,尤其是在資產發行領域。

(1)Colored Coins(染色幣)

eToro 首席執行官 Yoni Assia 在 2012 年 3 月 27 日發表的一篇文章中第一個提出彩色幣。這個想法不斷發展,在 Bitcointalk 等論壇上,彩色硬幣的概念开始形成並獲得關注。最終 Meni Rosenfeld 於 2012 年 12 月 4 日發布了一份詳細介紹彩色貨幣的白皮書。

染色幣的設想是通過給比特幣的特定部分添加特殊的標注(即染色),來代表更廣泛的資產和價值。染色幣在實現上出現了一系列實體,大致分為兩類:

1)基於 OP_RETURN: 如 Flavien Charlon 在 2013 年提出的 Open Assets,利用 OP_RETURN(在 Bitcoin v 0.9.0 中被提出,可以用於在 Bitcoin 上存放少量的數據,最初的限制為 40 bytes,後提高至 80 bytes)。操作碼存儲到腳本中,並通過外界讀取的方式來完成“染色”和交易。(這種模式與 Ordinals 依靠外部索引確定資產合法性類似)。

2)基於 OP_RETURN: 典型代表是 ChromaWay 在 2014 年提出的 EPOBC Protocol,EPOBC 資產的額外信息存儲在比特幣交易中的 nSequence 字段,每個 EPOBC 資產的類別和及合法性需要追溯到 genesis 交易來確定。

(2)MasterCoin(OMNI)

JR Willett 在 2012 年 1 月 6 日發布了 MasterCoin 的設想,並取名“比特幣第二份白皮書”,並在 2013 年 7 月通過 ICO 的方式正式啓動項目,最終募集到了 5120 個 BTC(當時價值 50 萬美元)。MasterCoin 和 Colored Coins 區別在於它建立了一個完整的節點層,通過掃描比特幣區塊來維護狀態模型數據庫,該數據庫駐留在區塊鏈之外的節點中。這種設計可以提供比 Colored Coins 更復雜的功能,例如創建新的資產、去中心化交易所、自動化價格反饋等。2014 年,Tether 也通過 Mastercoin 協議在比特幣上推出了穩定幣,即我們熟知的 Tether USD (OMNI)。

( 3)CounterParty

Counterparty 於 2014 年正式推出。Counterparty 也使用 OP_RETURN 將數據存儲至 BTC 網絡中。但與染色幣不同,資產在 Counterparty 不是以 UTXO 的形式存在,而是通過 OP_RETURN 載入信息來表明資產的轉移,當一個資產持有者使用持有地址對歹有特殊數據的交易進行籤名後,資產便完成了轉移。通過這種方式,Counterparty 可以實現資產的發行、交易以及兼容以太坊智能合約的平臺。

除此以外,也有觀點認為 Ethereum、Ripple 和 BitShares 也屬於更廣義的“Bitcoin 2.0 ”。

1.4. 比特幣的不完美與分層協議

比特幣系統的不完善(或局限性)主要表現在幾個方面(本文中的不完善是根據以太坊白皮書中的總結,並非是真正的不完善。

1. 比特幣的账戶系統 UTXO

在當前的區塊鏈項目中,主要有兩種記錄保存方式,一種是账戶/余額模型,一種是 UTXO 模型。比特幣採用就是 UTXO 模型,以太坊、EOS 等則採用的是账戶/余額模型。

在比特幣錢包當中,我們通常能夠看到账戶余額,然而在中本聰設計的比特幣系統中,並沒有余額這個概念。“比特幣余額”是由比特幣錢包應用派生出來的產物。UTXO(Unspent Transaction Outputs)是未花費的交易輸出,它是比特幣交易生成及驗證的一個核心概念。交易構成了一組鏈式結構,所有合法的比特幣交易都可以追溯到前向一個或多個交易的輸出,這些鏈條的源頭都是挖礦獎勵,末尾則是當前未花費的交易輸出。

所以現實世界中沒有比特幣,只有 UTXO。比特幣的交易由交易輸入和交易輸出組成,每一筆交易都要花費(spend)一筆輸入,產生一筆輸出(output),而其所產生的輸出,就是“未花費過的交易輸出”,也就是 UTXO。

如果要實現智能合約,UTXO 這種账戶模型存在非常大的問題。以太坊黃皮書的設計者 Gavin Wood 對 UTXO 的理解十分深刻。 以太坊的最大新功能點是智能合約,因為智能合約的考慮,Gavin Wood 要基於 UTXO 去實現圖靈完備的智能合約是困難的。而账戶模型是天然的面向對象的,對每一筆交易,都會在相對應账戶上進行記錄(nonce++)。為了易於管理账戶,而引入了全局狀態,每一筆交易都會改變這個全局狀態。這和現實世界是相對應的,每一個微小的改變,都會改變這個世界。因此以太坊使用了账戶系統,後期的公鏈基本都是基於各種類型的账戶系統實現的。

UTXO 的另一個嚴重缺陷是,不能為账戶的取款額度提供精細的的控制。這點在以太坊的白皮書中有相關的說明。

2. 比特幣的腳本語言,非圖靈完備

盡管比特幣腳本語言可以支持多種計算,但是它不能支持所有的計算。最主要的缺失是比特幣的腳本語言,沒有循環語句和條件控制語句。因此,我們說:比特幣腳本語言不是圖靈完備的。這導致比特幣腳本語言,有一定的局限性。當然,由於這些局限性,黑客就沒辦法使用這種腳本語言,寫一些死循環(會造成網絡癱瘓),或者一些能導致 DOS 攻擊的惡意代碼,也就避免了比特幣網絡受到 DOS 攻擊。比特幣的开發者,也認為核心區塊鏈,不應該具備圖靈完整性,來避免一些攻擊和網絡堵塞。但是,也正是由於這些局限性,比特幣網絡,沒有辦法運行它復雜的程序了。不支持循環語句的目的是避免交易確認時出現無限循環。

為了安全性,不支持圖靈完備的理由是不充分的。而且非圖靈完備的語言所做的事情很有限。

3. 比特幣的其他不完善,安全性、擴展性

挖礦的中心化問題,比特幣挖礦算法基本上是讓礦工千萬次地輕微改動區塊頭,直到最終某個節點的改動版本的哈希小於目標值。然而,這種挖礦算法容易被兩種形式的中心化攻擊。第一種,挖礦生態系統被專門設計的因而在比特幣挖礦這一特殊任務上效率提高上千倍的 ASICs(專用集成電路)和電腦芯片控制。這意味着比特幣挖礦不再是高度去中心化的和追求平等主義的,而是需要巨額資本的有效參與。第二種,大部分比特幣礦工事實上不再在本地完成區塊驗證;而是依賴中心化的礦池提供區塊頭。這個問題可以說很嚴重:當前,排名前三的採礦池間接控制着比特幣網絡中約 50 %的處理能力。

擴展性問題是比特幣的一個重要問題。使用比特幣,每小時增長約 1 MB。如果比特幣網絡每秒處理 Visa 的 2000 次交易,則每三秒鐘將增長 1 MB(每小時 1 GB,每年 8 TB)。較低的交易次數,也引起比特幣社區的爭議,大區塊鏈雖然可以提高性能,但問題是中心化風險。

從產品生命周期的角度,比特幣一些小的不完善,可以在自身系統中得到改善,改善的方法受到當前系統的限制。但如果可以在一個新系統中解決這些問題,就完全可以不考慮老系統的限制問題。既然要打造一個新的區塊鏈系統,那么設計新系統的時候,這些小的功能完善也一並進行設計與升級改造。

分層設計

分層設計是一種人類處理復雜系統的手段和方法論,通過將系統劃分為多個層次結構並定義各層之間的關系和功能,以實現系統的模塊化、可維護性和可擴展性,從而提高系統的設計效率和可靠性。

對於一項廣泛和龐大的協議體系,使用分層會有明顯的好處。這樣做使人們容易理解,容易分工實現與容易分模塊改進等優點。如計算機網絡中的 ISO/OSI 的七層模型設計,但具體的實現中,可以合並一些分層,例如,具體的網絡協議 TCP/IP 是四層協議。具體說協議分層的優點: 各層次之間是獨立的、靈活性好、結構上可分割开、易於實現和維護、能促進標准化工作。

從分層協議的角度看,比特幣因為要處於最基礎的底層,那么他的 UTXO、非圖靈完備、出塊時間長、區塊容量小、創始人的消失、……,都不是缺點,反而是作為一層網絡應該具有的特點。

注釋:作者在《一文梳理比特幣二層(Layer 2)建設的基礎知識體系V1.5 版》對協議分層有更詳細的說明。

2. 比特幣發展中的重要新技術(區塊擴容與能力擴容)

在上一節我們探討了比特幣原有技術的主要衝突和一些探索案例,但很多導致了硬分叉或產生了全新的異構鏈。在比特幣本身這條區塊鏈上,這種探索也產生了很多成果,本質上是區塊的擴容與能力的擴容。他們主要表現在以下幾個方面。

2.1. OP_RETURN

比特幣的开發者一直想擴展比特幣的能力,表現在幾個方面:

(1)OP_RETURN 的使用

OP_RETURN 是一個腳本操作碼,用來終止腳本並返回棧頂的值。這個操作碼類似於編程語言中的返回函數。在比特幣的歷史上,OP_RETURN 操作碼的功能被多次修改,現在它主要被用作為在账本上存儲數據的一種方法。OP_RETURN 操作碼的功能曾在過去發生過重大變化,現在它是一個重要的機制,使用它我們就能在鏈上存儲任意數據。

OP_RETURN 最初是用於提前結束腳本執行的返回操作,執行結果將作為棧頂項目被呈現出來。這個操作碼最初有一個容易被利用的漏洞,但中本聰很快修補了該漏洞。

對 OP_RETURN 功能的進一步更改

在 Bitcoin Core 的 v 0.9.0 那次升級中,“OP_RETURN 輸出”腳本被制作成標准輸出類型,允許用戶將數據附加到“不可花費的交易輸出(unspendable transaction output)”上。這類腳本中可用的數據量的上限最初被限制為 40 字節,然後提升至 80 字節。

將數據存儲在區塊鏈上:

將 OP_RETURN 改為始終返回 false 造成了有趣的結果。由於在 OP_RETURN 之後不會評估任何操作碼或數據,因此網絡用戶开始使用此操作碼來存儲任意格式的數據。

在比特幣現金(BCH)的時期,即 2017 年 8 月 1 日-2018 年 11 月 15 日,能夠附加到 OP_RETURN 輸出的數據長度被擴展到 220 字節,更大的數據能夠促進區塊鏈上創新的應用,例如在區塊鏈社交媒體上發布內容等。

在 BSV 上, 220 字節的限制依然被保留了一小段時間。隨後,在 2019 年 1 月,由於 OP_RETURN 操作碼以節點不驗證任何後續操作碼的方式終止腳本,所以節點也不會檢查腳本是否在 520 字節的最大腳本大小限制內。由此一來,網絡上的節點運營商決定將最大交易體積提高到 100 KB,從而賦予开發者有更多應用創新的自由,讓新的應用可以將更大、更復雜的數據放入比特幣账本。那時有一個應用例子,有人將將整個網站都放入了 BSV 帳本中。

OP_RETURN 雖然有一定的功能擴展,但總體來說能力還是有限。於是產生了隔離見證的技術。

(2)Segwit 隔離見證

隔離見證,即 Segregated Witness(簡稱 SegWit),由 Pieter wuile(比特幣核心开發人員、Blockstream 聯合創始人)在 2015 年 12 月首次提出,後來形成了比特幣 BIP 141 。隔離見證將比特幣區塊中交易的數據結構稍加修改,以解決如下問題:

1)transaction malleability 問題。

2)SPV 證明中傳輸交易的籤名成為可選項,能夠減少 Merkle proof 傳輸的數據量。

3)變相增加區塊容量。

前兩項主要是增加安全性和性能,其中對新技術影響最多的是第三項,變現增加了區塊的容量(見下面的概念 Block weight),從而為比特幣的能力擴容打下來基礎,以至於後面的 Taproot(隔離見證的第二個版本)的進一步加強。

雖然變現擴大了區塊容量,但隔離見證也受到區塊大小限制。比特幣的區塊大小限制為 1 M bytes,由於 witness 數據不包含在這個限制中,為了防止 witness 數據被濫用,仍然對總的區塊大小做了限制。引入了一個新概念叫塊重量(Block weight)

Block weight = Base size * 3 + Total size

Base size 是不包含 witness 數據的塊大小

Total size 總大小是按 BIP 144 中所述序列化交易的塊大小(以字節為單位),包括基礎數據和見證數據。

隔離見證限制 Block weight <= 4 M。

隔離見證還在技術上使得比特幣的擴容可以使用閃電網絡,這裏不詳細介紹這部分的內容。

(3)Taproot 隔離見證V2版本

如果直接使用 Taproot 這個單詞,很多人以為是一個新概念,但如果告訴你這是隔離見證的第二個版本,大部分人都會明白其中的關聯性。與 Taproot 相關的 BIP 是 340 , 341 , 342 ,他們的名稱是:BIP 340 (Schnorr Signatures for secp 256 k 1),BIP 341 (Taproot: SegWit version 1 spending rules),BIP 342 (Validation of Taproot Scripts)。

2021 年 11 月,Taproot 以軟分叉的形式正式生效。此次升級由 BIP 340、BIP 341 和 BIP 342 組合。其中 BIP 340 引入了可以同時驗證多個交易的 Schnorr 籤名,取代了橢圓曲线數字籤名算法(ECDSA),再一次擴大了網絡容量並加快了批量交易的處理速度,為部署復雜的智能合約提供了可能性;BIP 341 實現了默克爾化抽象語法樹(MAST)來優化區塊鏈上的交易數據存儲;BIP 342 (Tapscript)採用比特幣的腳本編碼語言擴充的比特幣原生腳步能力的不足。

由隔離見證 Segwit 與 Taproot 的空間擴大,導致了 Schnorr、MAST 樹和 Taproot Scripts 的產生,他們要完成的使命是比特幣主網的功能擴大。

2.2. Schnorr、MAT、Taproot Scripts

通過 2.1 節,我們看到了比特幣在擴容和擴能上面的不斷探索,直到產生了 Taproot 技術,以及相關的幾個重要技術 Schnorr、MAST、Taproot Scripts,比特幣的能力格局才真正被打开。

(1)Schnorr 籤名

Taproot 的發展,在擴充能力的同時,對籤名算法有了一定的要求,於是 Schnorr 籤名开始出現,並用來替代橢圓曲线數字籤名算法(ECDSA)。Schnorr 籤名是一種數字籤名方案,可以高效且安全地對交易和消息進行籤名。它最早由克勞斯·施諾爾(Claus Schnorr)在 1991 年的一篇論文中描述。Schnorr 因其簡單性、可證明的安全性和线性性而受到贊譽。

Schnorr 籤名的優勢:

1)Schnorr 籤名具有多種優勢,包括高效性、增強的隱私性,同時保留了 ECDSA 的所有功能和安全假設。Schnorr 籤名可以實現較小的籤名大小、更快的驗證時間,並且對某些類型的攻擊具有改進的抵抗能力。

2)Schnorr 籤名最顯著的優勢是密鑰聚合(key aggregation),將多個籤名聚合為一個籤名,該籤名對其密鑰的總和有效。換句話說,Schnorr 使得多個合作方能夠生成一個對他們的公鑰總和有效的籤名。籤名聚合使得多個籤名者的籤名可以合並為一個單一的籤名。

密鑰聚合能夠降低交易費用並提高底層可擴展性,因為來自多籤名設置的電子籤名在區塊中佔用的空間與來自單方交易的籤名相同。Schnorr 的這個特性可以用於減小多重籤名支付和其他與多重籤名相關的交易的大小,例如,閃電網絡通道交易。

3)Schnorr 籤名的另一個重要特性是不可篡改性。

4)Schnorr 還提供了很多隱私優勢。它可以讓多重籤名方案與傳統的單一公鑰無法從外部區分,Schnorr 使得觀察者在鏈上活動中更難區分多重籤名的支出和單一籤名的支出。此外,在 n-of-m 多重籤名設置中,Schnorr 使得外部觀察者更難通過查看鏈上信息來確定哪些參與者在交易中籤名,哪些沒有籤名。

Schnorr 籤名被實現在 BIP-340 中,作為 Taproot 軟分叉升級的一部分,並於 2021 年 11 月 14 日在區塊高度 709, 632 上激活。Schnorr 使 BTC 的數字籤名更快、更安全、更易處理。值得注意的是,Schnorr 籤名與 BTC 的密碼學算法向後兼容,這樣就可以通過軟分叉升級引入它們。

(2)MAST 抽象語法樹

MAST 在中英文中的縮寫說明有一點點歧義。BIP 官方(BIP 114)和一些文章使用 MAST 的縮寫為: Merklized Abstract Syntax Tree(默克爾抽象語法樹)。其它一些資料使用 Merklized Alternative Script Trees (MAST)翻譯成中文 Merklized 替代腳本樹 (MAST)。在《Mastering Bitcoin》這本圖書中,和一篇文章都是這個縮寫說明:https://cointelegraph.com/learn/a-beginners-guide-to-the-bitcoin-taproot-upgrade。

默克爾抽象語法樹和 Merklized 替代腳本樹 (MAST)從作用上看起來相同。從翻譯的角度,我個人感覺保持比特幣官方 BIP 協議中的用法。

MAST 背後的概念來自於兩種概念, 抽象語義樹和默克爾樹

抽象語義樹(AST) 屬於計算機科學中的編譯原理和形式語言學的知識領域。抽象語義樹是編譯過程中的一個中間表示形式,用於表示源代碼的語義結構。它將源代碼轉換為一種樹形結構,其中每個節點代表一個語義單元,而邊表示它們之間的關系。抽象語義樹在編譯器的詞法分析和語法分析階段起到重要作用,幫助編譯器理解源代碼的含義並進行後續的優化和生成目標代碼的過程。通俗說抽象語義樹(AST) 是一種通過將一個程序分割成獨立的小塊來描述程序的方法,這樣會讓程序變得更容易分析和優化。為了生成一個 AST,需要把所有的方程與其前提用箭頭連接起來,直至所有的前提都被找出。下圖即是一段腳本的 AST。

另一方面,默克爾樹則可用來驗證某個元素是否是屬於某個集合,且無需知曉整個集合的全貌。舉個例子,比特幣的簡易支付驗證錢包(SPV wallet)就使用默克爾樹來驗證某筆交易是否存在於某個區塊中,這樣無需下載完整的區塊,可以節省帶寬。

要生成一棵默克爾樹,先要把每個元素都各自哈希一次,生成各自唯一的標識符;然後這些標識符配對之後再次哈希,生成這一對標識符的標識符;如此不斷重復,直至只剩下一個標識符,稱為 “默克爾根”,它就是一個短小精悍、但是標記了整個集合的標識符了。

在驗證某個元素屬不屬於某個集合時,擁有整個集合的人可以向你提供從那個元素到默克爾根路徑上的所有標識符。這樣就能證明,這個元素確實在這個集合內。

簡而言之,AST 背後的技術讓你可以把一個程序分成多個小塊,而默克爾樹讓我們可以驗證這些小塊確實是一個完整程序的一部分,且不必暴露整個程序。這就是 MAST 的基本原理,可以讓花費者用一個默克爾證明來替換在單次交易中沒有用到的條件,優點是: 減少交易體積、提高隱私性,並支持更大的合約

具體的 MAST 樹在網上有很多案例,懂得程序开發的人員,梳理一個 MAST 的流程就可以清楚相關的邏輯。

既然有了 MAST 抽象語法樹,那么就需要擴展比特幣原生語法的能力,於是 Taproot Scripts 就產生了。

(3)Taproot Scripts

在 BIP 342 協議中入 Tapscript 腳本,Taprootscript 是原始比特幣腳本的升級版,也可以被稱為一種語言,但它實際上是帶有命令的操作碼的集合,這些命令為另兩個 BIP 的實施助力。Taprootscript 還取消了 10000 字節的腳本大小上限,為在比特幣網絡創建智能合約提供了更好的環境。(該升級也為後來 Oridnals 的誕生埋下基礎,因為 Ordinals 協議就是利用的 Taproot 的 script-path spend scripts 腳本來實現的附加數據)。詳細資料可以查閱官方網址:

https://github.com/bitcoin/bips/blob/master/bip-0342.mediawiki

當前 TaprootScript 的能力還沒有被充分發揮,後期的更多建設會體現出其威力。例如,比特幣一層網絡與二層網絡的連接技術,應該更多的使用 Taproot、MAST 與 TaprootScripits。

2.3. Ordinals、Inscriptions、BRC 20 以及其他協議

在比特幣的生態有了 Segwit、Taproot、Schnorr、MAST、Taproot Scripts,這些基礎的工具,新的應用就开始產生了。开始階段的應用是那些輕量級,簡單的應用。

(1)Ordinals 序數協議、銘文、BRC 20

Ordinals 協議的誕生與 sat 的概念高度相關,協議提出序數(Ordinals)和銘文(Incriptions)的概念。序數(Ordinals)指為比特幣網絡上的每個 Satoshi( 聰 )按照开採順序分配一個數字的編號方案。協議中,無論 sat 在不同的錢包之間如何轉移,其序數標識都保持不變。運行 Rodarmor 开源軟件 ORD 的比特幣全節點可以跟蹤這些帶編號的聰。這為人們提供了一個精確跟蹤每個聰,並進行獨立驗證的機制。

銘文(Inscriptions)是通過在聰上刻錄信息。通過結合 SegWit 和 Taproot,Ordinals 協議可以在比特幣區塊上為每個聰刻錄一個小於 4 MB 的文件,也就是銘文。銘文可以包含各種形式的信息,如文字、圖片、視頻等。下圖是樣例銘文截圖。

簡單來說,序數的編號方案為每個聰提供了唯一的可追溯的編號,使聰擁有了非同質化的特點。銘文可以在序數上添加不可分割的數據信息,類似於在一張白紙上進行藝術創作。兩者結合,讓比特幣擁有了新的 NFT 標准。Ordinals 的本質其實很簡單,它更像是一個 NFT 協議,只不過與 ETH 或是其他公鏈的 NFT 元數據(MetaData)大多存儲於 IPFS 或是中心化服務器不同,Ordinals 的元數據嵌入到了交易的見證字段(Witness Data),像是被“銘刻”到某個特定的聰上一樣這也是銘文這個詞的來源。

BRC-20 :受 Ordinals 協議啓發,Twitter 用戶@domodata 於 2023 年 3 月 8 日創建比特幣實驗性的可替代代幣標准 BRC-20 。Ordinals 協議通過給每個聰賦予不同的“屬性”來創造 BTC 網絡 NFT,BRC-20 則通過給定一個統一的“格式”以及“屬性”來創 BTC 上的 FT,也就是同質化代幣。

BRC-20 通過 Ordinals 協議將一段 JSON 文本寫入 BTC 銘文來部署代幣合約、鑄幣和轉移代幣(Depoly、Mint、Transfer),部署的關鍵在於代幣名稱、總供應量、單次最大鑄造量等。對於轉账或买入/賣出的交易,會刻有額外的 NFT 來跟蹤鏈下余額。“先到先得”的鑄幣機制,帶來了公平的發行與參與機會;同時由於 BTC 生態基礎設施相對不完善,有一定的學習門檻,低流動性使得 BRC-20 代幣能夠輕易被拉升,ordi,sats,rats 等 BRC 20 代幣开啓了一波造富的神話。

(2)其他協議-Atomicals,ARC 20

Atomicals 協議的誕生頗有戲劇性,創始人 Arthur 在 Ordinals 協議剛發布時,想在它之上开發一個 DID 項目,但在开發過程中,他發現 Ordinals 協議有很多局限性,不利於支持他想實現的一些特性。於是, 2023 年 5 月 29 日,Arthur 在推特上發布了第一條關於 Atomicals 協議構思的推文,經過幾個月的开發後,Atomicals 協議於 2023 年 9 月 17 日上线。後來,Atomicals 協議衍生出 Dmint、Bitwork、ARC-20、RNS 等四大概念,未來還將推出 AVM 和拆分方案。

類似 Ordinals 與 BRC 20 ,在 Atomicals 上面部署同質化代幣就形成了 ARC 20 。對於 ARC 20 感興趣的讀者,可以進一步閱讀。

https://docs.atomicals.xyz/arc20-tokens

(3)其他協議-Rune

隨着發展,作為 Ordinals 的創始人 Casey Rodarmor 發表文章指出:BRC-20 代幣具有“UTXO 擴散的不良後果”,並建議將 Runes 作為基於 UTXO 的替代方案。現有的各類協議,普遍存在着協議實施復雜、用戶體驗差、垃圾未花費交易輸出(UTXO)、操作需要原生代幣等問題。

Runes 的轉移使用 OP_RETURN,協議消息中的第一個數據輸出被解碼為一個整數序列,這些整數被解釋為(ID,OUTPUT,AMOUNT)元組序列。如果解碼後的整數個數不是三的倍數,則該協議消息消息無效。ID 是要進行轉账的 Token ID、OUTPUT 是要分配給的輸出索引(即分配給第幾個輸出)、AMOUNT 是要分配的運行量。處理完所有元組分配後,任何未分配的 Runes Token 都將分配給第一個非 OP_RETURN 輸出,其余的可以通過將 Runes 協議分配給包含協議消息的 OP_RETURN 輸出來刻錄 Runes Token。

Runes 的發行:基於 UTXO 的同質代幣追蹤。如果協議消息有第二次數據推送,則為發行交易。第二次數據推送被解碼為兩個整數,SYMBOL,DECIMALS。如果還有其他剩余整數,則協議消息無效。SYMBOL 是一個基本 26 位可讀符號,類似於 Ordinals 名稱中使用的符號,目前唯一有效的字符是 A 到 Z。DECIMALS 是顯示發行 Runes 時應使用的小數點後的位數。如果 SYMBOL 尚未分配,則該 Runes Token 將被分配一個 ID 值(從 1 开始)。如果 SYMBOL 已經被分配,或者是 BITCOIN、BTC 或 XBT,則不會創建新的符文。這是 Runes 協議的特殊之處。它沒有將余額記錄鏈接到錢包地址,而是將記錄放在 UTXO 本身中。

新的 Runes Token 從發行交易开始,指定供應量、符號和小數位數,並將該供應量分配給特定的 UTXO。UTXO 中可以包含任意數量的符文代幣,無論其大小如何。UTXO 僅用於跟蹤余額。然後,傳輸函數使用該 UTXO,將其分割成多個任意大小的新 UTXO,包含不同數量的符文,將記錄發送給其他人。相對於 BRC-20 ,Runes 減少了一層服務器共識,變得更加簡單,同時不依賴鏈下數據,沒有原生代幣,非常適合比特幣的原生 UTXO 模型。

(4)其他協議-BTC stamps,SRC 20 ,SRC 721

比特幣 Stamps 系統由 Mike In Space 於 2023 年 3 月發布,最初是 Counterparty 上的一個概念驗證項目(一個自 2014 年以來就存在的比特幣L2)。由於其底層協議的更新,Stamps 已完全轉向比特幣,去年夏天,現在被稱為 SRC-20 。創始人 Mike 最初將 Stamps 設想為鑄造永久性比特幣 NFT 的一種方式。然而,該協議已經擴展到復制 BRC-20 ,這是一種批量可替代代幣,自 Casey Rodarmor 於 2023 年 1 月推出 Ordinals 以來,由於銘文熱潮的興起,這種代幣在比特幣上蓬勃發展。

Stamps 和 Ordinals 之間的主要區別在於架構。這是因為 Stamps 將它們的元數據存儲在多重籤名未花費交易輸出(UTXO)中,而 Ordinals 則將它們的元數據存儲在比特幣交易的“見證”部分中。這種設計上的區別顯現出了开發者的取舍。就是說,Stamps 的 UTXO 方法使它們不可修剪,因此看起來是永久性的,盡管它們的制造成本比 Ordinals 鑄造更昂貴。相反,Ordinals 使用見證數據的方式最終使它們可被修剪,它們的制造成本比 Stamps 更低。

因此,雖然 Ordinals 可能為當今加密領域的 NFT 提供最佳的持久性成本比(也可以在以太坊上獲得鏈上 NFT,但它們的構建成本相對比 Ordinals 更高),但 Stamps 目前似乎提供了最佳的直接永久性保證。

在 BTC stamps 產生後,开始產生了 SRC 20 與 SRC 721 ,原理與 BRC 20 相似。BRC-20 是建立在 Ordinals 協議上的,而 SRC-20 是建立在 BTC STAMPS 上的。感興趣的讀者,可以進一步閱讀 SRC 20 與 SRC 721 相關文檔。

https://docs.openstamp.io/introduction/src20-protocol

https://docs.openstamp.io/introduction/src721-protocol

介紹至此,比特幣在一層網絡上的重要新技術都已經介紹。在之後的擴容與擴能方面,开始借助比特幣的上層設施,如比特幣的 Layer 2 或借助閃電網絡等實現的更高層,如 RGB。這方面的文章建議閱讀《一文梳理比特幣二層(Layer 2)建設的基礎知識體系V1.5 版》和《從狀態機的角度觀察比特幣二層,可以看到未來Web3.0 應用的架構和建設路徑》,或者其他關於比特幣二層建設或架構設計方面的文章。

3. 新技術的使用方法和未來需要的發展

通過第二節的內容,我們看到比特幣生態的技術發展已經為更大規模的應用打下了基礎。但因為發展需要一個過程,和部分相關技術的不成熟,使得當前流行的應用與最終的常見應用還有比較大的區別。

3.1. 新技術的使用方法

從前面兩節我們可以看到,比特幣技術的發展本質上是 區塊的擴容與能力的擴容

在區塊擴容上,隔離見證導致了事實上的區塊擴容,雖然有各種提議可以裁剪掉見證部分,但這種事情發生的概率不大,尤其是見證部分被賦予了更多含義之後。

在擴充能力上,Taproot、Schnorr、MAST、Taproot Scripts,等技術賦予了比特幣更多的能力。尤其是 MAST+Taproot Scripts 會擴充比特幣原生腳本語言的能力,加上其他幾項技術會擴展比特幣語言處理復雜場景的能力。但這些能力擴容也會加大比特幣开發和理解的難度,畢竟這些 Scripts 开發不是高級語言。並且這部分的能力擴充,會滯後於用戶對於區塊容量擴充的理解與學習速度。

因為使用區塊擴容簡單,使用能力擴容復雜,這就是首先會產生用戶將那些小圖片 NFT 寫入比特幣主網,和產生了 BRC 20 等應用的原因。當前比特幣主網上的多種應用幾乎都是在探索區塊擴容後的應用。一小部分應用开始能力擴容的探索,例如,BEVM 的一層和二層連接有一定的代表性,較多的使用了上述基本元素構建的功能。其 Shnorr 籤名 +MAST 合約 + 比特幣輕節點網絡的 BTC L2解決方案,是一個很好的學習連接一層與二層的案例。未來會有更豐富的能力擴充的案例產生。

能力擴充的邊界應該在哪裏?我們可以從分層設計的角度來評判,如果這些能力擴充更多的是作為比特幣一層與二層的連接技術,那么就不應該將能力擴充變得過於復雜。但基於我們人類豐富的創造力和資產發行與管理的強大吸引力,一些團隊或個人會探索出更多的能力擴充場景的案例。

3.2. 未來發展的需求

區塊鏈技術產生的最直接原因是數字貨幣,所以發行資產、管理資產等應用是比特幣或區塊鏈領域的一個最直接需求。不管是從彩色幣的探索到 BRC 20 ,ARC 20 等應用,還是以太坊上面的 ICO,IDO 等應用,都是在探索資產發行。像 Uniswap,Lending,AMM,都是資產管理的應用,這部分應用在以太坊等網絡上已經得到成熟發展,隨着比特幣生態技術的發展,這些資產管理應用會轉移到比特幣生態,更多的應該是在比特幣二層上面進行。

在滿足了發行資產、管理資產等需求,才會有精力和時間去發展屬於Web3.0 時代(也可以稱為價值時代)的大規模應用。未來Web3.0 時代大規模應用的系統架構,我在《從狀態機的角度觀察比特幣二層,可以看到未來Web3.0 應用的架構和建設路徑》有相關的描述。

建設的路徑是不斷滿足需求的過程,可以分為短期、中期、長期三個階段。短期是通過比特幣主網上面的新技術產生的應用和基於鏈的二層建設的簡單階段,產生的應用完成主要的能力擴充,滿足各種金融應用。中期基於鏈的二層建設的中後期與基於分布式系統的二層建設,滿足各種金融應用與信任應用。長期是基於比特幣生態的大規模建設完成真正的Web3.0 時代的建設。

參考文獻說明

(1)ABCDE 研報《[ABCDELabs]:比特幣的過去、現在和未來》

(2)https://en.bitcoin.it/wiki/Script

(3)https://en.bitcoin.it/wiki/Segregated_Witness

(4)https://en.bitcoin.it/wiki/Taproot_activation_proposals

(5)《超級詳解隔離見證(segregation witness)》, https://blog.csdn.net/t46414704152abc/article/details/105638788

(6)《釋疑:什么是比特幣默克爾化抽象語法樹?》, https://baijiahao.baidu.com/s?id=1709873918363821702

(7)https://github.com/bitcoin/bips

(8)https://bitcoinops.org/en/topics/tapscript/

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

巨鯨點名SocialFi是「爆火賽道」、迷因幣分散策略已沒賺頭!

爭 議巨鯨合體!動區於昨日(二)晚上 8 點舉行一場 Space 活動,主題為 《零和遊戲:爭議巨...

AC
2 2小時前

彭博分析師:SEC週五凌晨4點將批准以太坊現貨ETF「19b-4文件」

知 名彭博高級 ETF 分析師 Eric Balchunas 今(23)日清晨 表示 ,我們最快可...

Natalia Wu
2 2小時前

勇敢的人先享受世界,和 OKX Web3 一起步入比特幣時光長廊

2 010 年 5 月 22 日,加密先驅 Laszlo Hanyecz 用一萬枚 BTC 購買了...

廣編頻道
2 2小時前

牛市「買新不買舊」,數據分析這套投資理論真的可行?

近 期,市場熱議在創業投資(VC)和 CEX 這種利益壟斷集團的壓力之下,專案方團隊為給早期投資機...

odailynews
2 2小時前

Nvidia財報超預期:營收年增262%股價破千元,4大亮點一次看!AI概念幣齊揚

美 國科技公司龍頭 Nvidia(輝達)今(23)晨公布 2025 年第一季財報,財報數據優於市場...

Ting
2 2小時前

星球日報 | 拜登擬聘請meme經理以在競選中爭取年輕選民支持;zkSync或將不進行女巫審查(5月23日)

頭條 拜登競選團隊擬聘請 meme 經理,試圖以此爭取年輕選民支持 據 The Washingto...

星球日報
2 2小時前