比特幣二層網路可行性探討(下):Ordinals vs Taro

引言

在Ordinals vs Taro 系列文章的上篇中我們簡單地介紹了Taro 協議中對Taro 資產的鑄造、轉帳操作的理論實現。在這裡,我們將回顧Ordinals 以及Colored Coin 的實現理論來進行對比,並且進一步介紹Taro 的實現以及現有的進展,以深層地探討Bitcoin 二層網絡實現的可行性。

文章會分為以下四個部分:Bitcoin 同質化代幣起源Colored Coin、序數理論與Ordinals、Taro 實現及進展、拓展閱讀:Atomicals Protocol。

回顧:萬物起源Colored Coin

彩色幣(Colored Coin)是由Yoni Assia、Vitalik Buterin 等人在2012 年所提出的一種在比特幣網路上產生的新的代幣[1] [2]。彩色幣應該是目前常見的ERC-20 代幣的雛形,它在當時被用來代表資產、進行投票,這和今天ERC-20 所承載的功能是類似的。在曾經的彩色幣瀏覽器Coinprism 上,我們還能看到在2015 年時人們所發行的一系列資產,圖片截自網頁在2015 年所留下的快照:Coinprism Snapshoot – archive.org。

Coinprism Snapshoot 原理

彩色幣透過」染色「的方式將一組比特幣和其他比特幣區分出來,對彩色幣的實現方式有兩種:ChromaWay 提出的EPOBC 協議和利用OP_RETURN 存放元資料的開放資產(Open Assets)。在這裡,簡單地介紹開放資產的實現原理,這也是Yoni 等人在Colored Coins 白皮書中所提及的方法[3]。

OP_RETURN 在Bitcoin v0.9.0 中被提出,可以用於在Bitcoin 上存放少量的數據[4],起初的限制存放40 bytes 長度的數據,後續被增加到80 bytes。彩色幣白皮書(2013)中使用了40bytes 長度的編碼來實現染色,而在2016 年的彩色幣協議規範[5]中使用了80 byts 長度的規範。 2016 年的彩色幣協議規範較為複雜,其中還涉及彩色幣的迷你腳本語言,這裡不作展開介紹。彩色幣最初的想法是利用OP_RETURN 將特定的編碼訊息存放在一筆交易的輸出腳本中,然後依靠鏈下的索引程序去識別這些交易的合法性(正如2022 年底所出現的Ordinals)。

創建資產

最初的彩色幣白皮書中,創建資產的資料編碼如下所示比特幣二層網路可行性探討(下):Ordinals vs Taro

彩色幣白皮書中的編碼格式

編碼資料以0x0043438000 (”CCP”)開頭以標識這是一筆彩色幣創世交易,隨後跟兩個位元組表示當前協議的版本。再後的兩個位元組是增發說明,全為0 表示該資產不可增發,全為1 表示該資產可無限增發。最後的31 bytes 用來存放關於染色的資訊。白皮書中所描述的一項資產創世交易如下

比特幣二層網路可行性探討(下):Ordinals vs Taro

在輸出的OP_RETURN 中的編碼資料顯示了這筆交易是資產的創世交易,依據編碼規則,這筆交易所創建的資產可以由地址為17zt…sSrb 的錢包無限增發(因為輸入的第一個地址是該地址,按照協議它可以作為增發地址),而在OP_RETURN 輸出前的地址可以識別為接收創世資產的地址,前三個地址會接收9,900,000 個該資產,而最後一個地址會接收19,900,000個該資產。由此可以看出,彩色幣中每個聰被染色對應某個染色資產。

為什麼接收的資產數量會被減去10,000?這是由於協議中定義了預設10,000 的填充(padding),這樣可以使得10,000 聰是不被染色的,以避免粉塵交易。

資產轉移

資產的轉移可以設計得較為複雜,例如在一筆交易中轉移不同染色的多種代幣,但是為了方便表示轉移的過程,這裡假定轉移的是單一的染色代幣。並且轉移時涉及到輸入的序號(sequence,它是Bitcoin 交易的輸入中的一個字段,通常在瀏覽器中可以看到nSequence 字段),它的二進製表示該筆輸入將代幣輸出到哪一個輸出中。例如6(110b)表示輸出到第1、2 筆輸出中,而非第0 或其他筆輸出中。一筆代幣轉移交易如下所示,這裡省略了輸入、輸出的地址資訊。圖中的深色表示該筆輸入或輸出被進行了染色。

比特幣二層網路可行性探討(下):Ordinals vs Taro

彩色轉帳交易

把它表示為彩色幣的轉移狀態,即去除掉padding 並且將序號的二進制轉換為易讀的形式,可以得到初始狀態如下,輸出的染色標記是通過最後的狀態表示的,這裡直接標記出來。

比特幣二層網路可行性探討(下):Ordinals vs Taro

彩色幣轉帳狀態示意

從第0 個輸入開始遍歷序號進行狀態的轉移,其過程的轉移過程如下圖所示

比特幣二層網路可行性探討(下):Ordinals vs Taro

轉帳狀態變化

  • 從輸入0 轉移5 個染色資產到輸出1 中,此時輸出0 和1 中的space 均減去5,由於是轉移到1,且輸入0 是染色資產,所以輸出1 的染色值(colored value)加5;
  • 輸入1 轉移10 個染色資產到輸出1 中,此時輸出1 中先減去min(5, 10) = 5,轉移到1,且輸入1 是染色資產,所以cvalue 加5;
  • 輸入1 轉移10 個染色資產到輸出2 中,此時輸出2 中先減去min(5, 10) = 5,轉移到2,且輸入1 是染色資產,所以cvalue 加5;
  • 輸入2 轉移20 個染色資產到輸入1 中,從它們的space 中均減去min(0, 20) = 0,但是輸入2 未被染色,所以輸出0 中沒有cvalue 的變化;

透過這個過程,可以看出彩色幣的轉移規則是比較繁雜的,鏈下的索引程序需要按照一系列的規則在Bitcoin 的UTxO 的基礎上再實現一個對彩色幣轉移的UTxO 計算。在2012 年的彩色幣白皮書中也提及了去中心化交易所技術,在一筆交易中完成彩色幣的交換。可惜的是,這項技術所需的部分簽名交易技術(PSBTs – BIP0174)在2017 年才被納入BIP,在當時這就需要一個中心化的平台來標識以透過訂單簿的方式實現(那麼,這還是中心化嗎?)。

比特幣二層網路可行性探討(下):Ordinals vs Taro

彩色幣白皮書中的Dex

而2016 年的v2 版本的彩色幣協議規範中,更進一步設計了彩色幣中所需的字節碼、轉移地址、驗證規則。可惜的是,這套規則由於受限於當時Bitcoin 的功能限制並沒有得到更進一步的發展,而且2015 年出現的以太坊更進一步使得這樣的設計顯得雞肋,彩色幣也於此結束了它的發展。也有人說彩色幣失敗的原因是它和原生的btc 耦合在一起,在某些情況下就會被當成btc 發送出去而減少。但是筆者認為它失敗的原因是流通的不便捷以及應用場景較少。

序數理論:Ordinals

時間來到2022 年12 月,得益於2017 年的隔離見證、部分簽名交易技術,以及2021 年的Taproot 升級激活,Casey Rodarmor 發明了序數理論[7]:序數是一種比特幣的編號方案,這是的追蹤和轉移單一sat 成為可能[6],它按照每個比特幣被挖掘出的順序以及交易時根據先入先出的規則來進行編號。

序數的表示方式:

  • 整數符號:2099994106992659 這個序號是依照挖掘聰的順序分配。
  • 十進位符號:3891094.16797,第一個數字是挖掘聰的區塊高度,第二個數字是區塊內聰的偏移量。
  • 度符號:3°111094′214″16797‴,具體的度數表示原理見序數理論手冊
  • 百分數符號:99.99971949060254%。以百分比表示聰在比特幣供應中的位置。
  • 名字:satoshi(聰)。使用字元a到z對序號進行編碼。

Inscription

序數理論更多是對Bitcoin 的最小單位sat 的追溯,它所設計的規則使得每個sat 都有自己獨一無二的編號。而基於序數理論,可以把鏈上一些獨特的數據和這些sats 關聯起來,也就是」銘刻「銘文。銘文被存放在taproot 腳本中,taproot 腳本對內容的限制很少,而且可以獲得額外的見證折扣,這使得銘文的儲存較為經濟。銘文的Taproot 腳本格式類似:

比特幣二層網路可行性探討(下):Ordinals vs Taro

它被存放在Reveal 交易的輸入見證腳本中,由鏈下的索引節點(ord)在遍歷區塊時識別並且將它顯露出來。

而受限於索引而無法在鏈上進行操作的原因,這使得Inscription 需要實現其他額外的功能時只能由ord 的開放來實現,例如近期的父子銘文,以及幾個月前的詛咒銘文索引。銘文的基本想法是和Colored Coin 極為相似的,它們將資料存放在交易中由鏈下的程序進行索引,而不同之處在於銘文是將資料存放到輸入的Taproot 腳本中,Colored Coin 則是將編碼數據存放到一筆輸出。

至此,Bitcoin 的生態得以發展,人們可以在鏈上鑄造NFT,並且得益於部分交易簽名技術,交易市場也隨之出現。銘文的技術本身和彩色幣是極為相似的,它們都將資料存放到鏈上,並由鏈下的索引工具來進行索引。然而, 由於時代的不同以及所面向的功能不一樣,這使得彩色幣受限於當時Bitcoin 的功能缺陷而沒有得到更多地發展。使得Ordinals 得以發展、爆發的應該是它更低的銘刻費用(相較於前期競品bitcoin stamp[8]),以及受益於部分簽名交易技術所出現的市場使得人們可以方便地進行銘文的交易。

BRC-20

此後基於銘文的BRC-20 協議也在2023 年3 月出現,正如上篇所說,這樣的同質化代幣實現方式頗有暴力美學的美感,將代幣的鑄造、轉移過程寫在紙上,剩下的交給BRC-20 索引器,這相當於在Bitcoin 的索引Inscription 之上再加了一個索引。當然,在實際的實作中BRC-20 索引器是可以直接忽略其他的NFT 鑄造而只關心BRC-20 的鑄造、轉移的。

而BRC-20 至此也有了一點比特幣二層網路的樣子:二層網路處理一系列的交易,定期和主鏈通訊、提交交易實現捆綁來確保去中心化。在BRC-20 中則是體現為索引器索引使用者的帳戶餘額來確保某些BRC-20 銘文是否有效(處理交易),轉移、鑄造的過程由使用者自己實現(提交交易到主鏈)。

有趣的是,在前不久Ordinals Summit 所放出的照片中,BRC-20 的創始人domo 所展示的一張brc20-swap 的PPT 中提到了這麼兩個概念:Inscription-Based Virtual Machines 和Rollup,這似乎預示著BRC-20 後續也會走入二層網路。

Taro 實現及進展

在上篇中,介紹了Taro 資產在鏈上被鑄造、轉移的原理,那麼在實際中,又是如何實現的?相較於上篇原理的介紹,在這裡我們將會介紹目前Taro 的實作方式和最新進展。

Taro 具體實現

由於眾所周知的原因在本地搭建測試使用的閃電網絡節點無法正常加入測試網絡,在這裡會透過Understanding Taproot Assets Protocol #2 的測試過程來進行說明。

資產鑄造

如上篇所說,資產的鑄造需要選定輸入的UTxO,並且在資產樹中記錄一棵新的梅克爾總和- 默克爾樹(MS-SMT)的根節點資訊。

在完成資產的鑄造後,可以取得資產的資訊:

{

“assets”: [

    {

      “version”: 0,

      “asset_genesis”: {

        “genesis_point”: “ba779153a792a1d49433fd18e56311f8d212992e7d1405cb14af8dffb34e88ce:0”,

        “name”: “fantasycoin”,

        “meta_hash”: “04e552053fd4c8e2c01bc14cb9a0ce00f07d4ffdffff68fe455c70b934b22a43”,

        “asset_id”: “20cecdb6626705bf26ad036084f7423082db6114f0de84046ebf2e84f6852874”,

        “output_index”: 0,

        “version”: 0

      },

      “asset_type”: “NORMAL”,

      “amount”: “100”,

      “lock_time”: 0,

      “relative_lock_time”: 0,

      “script_version”: 0,

      “script_key”: “02b4c71447e74672f8cd5b50a6b430fc73b3caff7866dc905a502fe8adefad3b31”,

      “script_key_is_local”: true,

      “asset_group”: null,

      “chain_anchor”: {

        “anchor_tx”: “02000000000101ce884eb3ff….”,

        “anchor_txid”: “ebe73fb60dfa99d191ed1e43a0509cc93c5223fa202656c469e01d6abfd66356”,

        “anchor_block_hash”: “0000000000000000000000000000000000000000000000000000000000000000”,

        “anchor_outpoint”: “ebe73fb60dfa99d191ed1e43a0509cc93c5223fa202656c469e01d6abfd66356:0”,

        “internal_key”: “03d9f42daae1b7832d77d3ec83ddbb62e71266f6aedf6bcceb944e9672177c9301”,

        “merkle_root”: “634ff6d86b8889f119f505a9bcba38fe4c6bda4b5a40a439fce37184badff63f”,

        “tapscript_sibling”: null

      },

      “prev_witnesses”: [

      ],

“is_spent”: false

}

]

}

這裡的輸出包含了三個重要的欄位:asset_genesis 、script_key 和chain_anchor

  • asset_genesis :說明了資產的創建訊息,例如元資料雜湊值、輸入的UTxO 編號、資產id
  • script_key:類似於P2TR 交易中的ScriptPubKey ,需要滿足條件的見證腳本才能花費這筆代表資產的UTxO(如上篇中提到的UTxO*)
  • chain_anchor:說明了資產在當前所錨定的鏈上交易信息,它存儲了交易、交易哈希值、交易所在區塊的哈希值,該筆資產轉移的輸出UTxO

同樣地,在創世交易ebe73fb60dfa99d191ed1e43a0509cc93c5223fa202656c469e01d6abfd66356 中也產生了對應的輸出,需要滿足輸出ScriptPubKey(透過下一筆交易或金鑰)的腳本私鑰。並且,下一筆交易在用於進行Taro 資產轉移時還需要滿足內部的script_key 要求。

這裡所存在的一個問題是:如何保證這筆UTxO 能夠正常地被用來進行Taro 資產的花費?或許可以強制將私鑰路徑解鎖的方式移除(P2TR 下可以使用私鑰解鎖UTxO 或輸入腳本來解鎖UTxO),讓使用者只能透過腳本路徑的方式必須花費Taro 資產。由於所能查閱的資料有限,這部分問題的解決方案並沒有反映出來,或許這也是Lightning Labs 團隊正在解決的一個問題,正如他們在Github 頁面所說:目前的程式碼還不支援主網的運行,很可能使得用戶丟失Taro 資產以及包含了BTC 的UTxO。

此外,對見證腳本的實作細節也無法查閱到相關資料,如果需要更深層的了解,只能翻閱原始程式碼,而這需要更多的時間,所以在這裡不再進行深入的講解。

資產轉移

在Tar​​o Asset 中,資產的轉移需要轉移的雙方同步它們的universe,正如上篇所說,Taro Universe 保存了Taro 資產的元信息,可以看作保存這一系列交易信息的數據庫。只有在需要證明這些交易、鑄造行為確實發生​​了的時候才會發送交易到Bitcoin 上(這似乎也可以作為一種限制的機制,例如上一小節中對保證UTxO 必然被作為Taro 資產花費的討論) 。所以,在交易前,交易的雙方需要同步資訊以確保交易的有效。此後,發送Taro 資產到另一個地址,這樣會產生一個類似交易的transfer 訊息:

{

“transfer”: {

“transfer_timestamp”: “1684836471”,

“anchor_tx_hash”: “e4efa1c3272009193e961f383b29c1bc84cf6ed8eb0806bf94056a41387835b3”,

“anchor_tx_height_hint”: 2434958,

“anchor_tx_chain_fees”: “12725”,

“inputs”: [

      {

        “anchor_point”: “ebe73fb60dfa99d191ed1e43a0509cc93c5223fa202656c469e01d6abfd66356:0”,

        “asset_id”: “20cecdb6626705bf26ad036084f7423082db6114f0de84046ebf2e84f6852874”,

        “script_key”: “02b4c71447e74672f8cd5b50a6b430fc73b3caff7866dc905a502fe8adefad3b31”,

        “amount”: “100”

      }

    ],

“outputs”: [

      {

        “anchor”: {

          “outpoint”: “b3357838416a0594bf0608ebd86ecf84bcc1293b381f963e19092027c3a1efe4:0”,

          “value”: “1000”,

          “internal_key”: “024a3cb06616bb1545d3a25417a3fa5ccc70c5fbe9ceed8666410ed83745bbe968”,

          “taproot_asset_root”: “42ac8c2338032a0b0ea9b96916da31a8798eef30cbef2a80b8c6d60249e4698d”,

          “merkle_root”: “42ac8c2338032a0b0ea9b96916da31a8798eef30cbef2a80b8c6d60249e4698d”,

          “tapscript_sibling”: null,

          “num_passive_assets”: 0

        },

        “script_key”: “02258420ed4cf219965908102c6f8498da274c251a3463880763ba118c2d946c62”,

        “script_key_is_local”: true,

        “amount”: “79”,

        “new_proof_blob”: “00245663d6bf6a1…”,

        “split_commit_root_hash”: “fdee0a27d560e5223b5e06b7a61d3df5b405942d21cf887fc96b16088874546a”,

        “output_type”: “OUTPUT_TYPE_SPLIT_ROOT”

      },

      {

        “anchor”: {

          “outpoint”: “b3357838416a0594bf0608ebd86ecf84bcc1293b381f963e19092027c3a1efe4:1”,

          “value”: “1000”,

          “internal_key”: “033e42d7bdc3c5161c2dc440667b0f4fca4c4a7d32d13efac12a71994651b048ce”,

          “taproot_asset_root”: “8aada842f74c2b11e9b5a0a716baa0c453855ab6ea316222a8a28e7e79506f41”,

          “merkle_root”: “8aada842f74c2b11e9b5a0a716baa0c453855ab6ea316222a8a28e7e79506f41”,

          “tapscript_sibling”: null,

          “num_passive_assets”: 0

        },

        “script_key”: “0225357fc148c441fbd5c5ea533fd6c33686697967a1cf8c493628788a535f433c”,

        “script_key_is_local”: true,

        “amount”: “21”,

        “new_proof_blob”: “00245663d6bf6a1de069c4562620f…”,

        “split_commit_root_hash”: null,

        “output_type”: “OUTPUT_TYPE_SIMPLE”

      }

    ]

}

}

鑄造資產的使用者使用對應錨定了資產的UTxO 作為輸入,並且產生兩筆輸出到兩個地址。 outputs 中的信息則便於接收者驗證自己所收到的UTxO 是否合法,同時outputs 中的信息也為接收者提供了生成下一次轉賬時所需要的信息,用以生成合法的見證腳本保證這筆UTxO能夠被正常消費。結合前文對資產樹和Taro 資產轉移的過程,asset_id 可以被用於在資產樹中索引到表示資產的葉子節點,葉子節點還存放了資產的總額,而這些資訊被存放在Taro Universe 中,可以將它看作一個鏈下的索引程式。而透過script_key ,可以在對應資產的MS-SMT 中查詢到對應可花費這些資產的餘額。滿足可消費條件的錢包可以利用這些輸出作為下一筆交易的輸入來進行交易。

上面的」轉移「是一個」分割「的過程(100 -> <79, 21>),所以到自身的輸出類型是OUTPUT_TYPE_SPLIT_ROOT,類似的還有合併操作,合併將某個錢包能夠消費的不同script_key 下的資產合併為一份。

Taro 資產所涉及的這些操作只在區塊鏈上體現為一個Pay-To-Taproot (P2TR)的形式,主要的資產轉移過程還是在鏈下發生,所以從這個角度看Taro Asset 可以看作是比特幣的一個二層網路。

最近進展

在Taproot-Asset 頁面中可以看到目前已經實現的功能有:

  • 資產鑄造
  • Taro Universe 的同步
  • 發送/接收資產
  • 導入/匯出資產證明
  • 建立和管理CLI 設定文件

而從最新的v0.2.3 版本來看,Lightning Labs 團隊也正在修復Taro 程式的遺留問題,並且對原來的程式邏輯進行改進,例如將區塊高度添加到資產的鑄造證明。而在該程式的Github 頁面下,也寫到該程式碼不適用於主網,可能導致Taro 資產和BTC 的遺失。在官方討論的Slack 下,開發者也提到閃電網路還不支援Taro 資產。

滿足資產鑄造的的v0.2.0 版本也是在今年五月份才正式發布,該版本已經實現了資產鑄造/ 轉移/ 接收功能,剩下的或許是細化交易規則(正如前文提到的問題),修正程式存在的bug。所以,Taro 資產仍然有很長的路要走,它目前還無法滿足在主網運行的要求,筆者認為,在未來一兩年的時間裡或許有希望能見證Taro 資產的正式運作。

拓展:Atomicals Protocol

在筆者完成系列的上篇,到撰寫本文的兩週時間裡,出現了另一個Ordinals 的競賽—— Atomicals Protocol10(原子協議),它和Ordinals Inscription 的鑄造很像,都是需要一筆commit交易作為輸入,並在見證腳本中寫入」信封「再進行reveal,且資料格式也特別類似:

OP_FALSE
OP_IF
0x0461746F6D // Push “atom” 4 bytes
// Followed by a single push to denote the operation type
// Payload (CBOR encoded) for the operation
OP_ENDIF

ARC-20

ARC-20 是基於原子協議的同質化代幣,它有和BRC-20 完全不一樣的鑄造、轉移規則。

鑄造:ARC-20 的鑄造也需要有預先的代幣部署,部署的方式是發送Atomicals 格式的交易,部署需要指定代幣的名稱、鑄造高度、關聯的圖像、鑄造數量等信息,在索引器索引到後,其他人可以透過索引器得到代幣的資訊並且進行鑄造。 ARC-20 也設計了類似挖礦的鑄造方式,部署者可以指定commit tx 的碰撞前綴和reveal tx 的碰撞前綴,如果有設置這些前綴信息,鑄造者就需要在鑄造的時候選取一個nonce 來改變commit tx 和reveal tx 的雜湊來選擇滿足條件的前綴(截至目前還沒有要求reveal tx 碰撞的需求,但是原始程式碼中擁有該功能)。在用戶找到符合條件的nonce 後會發送鑄造代幣名和滿足條件的nonce 到編碼後的原子協議交易到Bitcoin 鏈上完成鑄造,而餘額信息則由索引器進行索引。

轉移:ARC-20 的轉移和彩色幣極為相似,但又簡單得多,ARC-20 和聰進行了綁定,如果使用到了這些代幣的UTxO 作為輸入,那麼第i 個輸入會流向第i 個輸出,如果沒有足夠的輸出,即輸入數量大於輸出數量的情況下,這些代幣會流向第一個輸出。

比特幣二層網路可行性探討(下):Ordinals vs Taro

原子協定

這樣的轉移方式的好處是避免了像BRC-20 一樣的需要先鑄造transfer 銘文才能交易的過程,使得同質化代幣的交易更為方便,如果使用部分簽名技術,可以透過整合交易的方式來完成單筆交易內的代幣和BTC 的交換,甚至是多種不同代幣的交換。而缺點則是這樣的實現太容易使得用戶丟失代幣了,特別是在用戶接收多份同類代幣,整合過UTxO 後,這些表示著代幣的UTxO 極容易被當作gas 花費出去,甚至是在鑄造其他代幣的過程中花費。

此外原子協議中還包含了NFT、域名(獨立於NFT)的設計,文件中還有未完成的合約、事件,由於官方文件的缺失無法繼續深入介紹。

協議對比

在此需要把Taro 資產、 Ordinals 的BRC-20 代幣以及原子協議進行對比,它們的相似之處在於代幣的鑄造、轉移都是由鏈下程序追踪並記錄的,但是記錄的規則和在鏈上的體現又不盡相同。

比特幣二層網路可行性探討(下):Ordinals vs Taro

各協議對比

結語

最後,在介紹完這些技術後探討Bitcoin 實現的可能性:在常見的二層網路實作中,通常是另外建構一個區塊鏈網路來執行事務,然後將這些已執行的證明放到Layer 1 的主鏈中,這也是Rollup 的基本原理,定期向主鏈提交證明。閃電網絡作為Bitcoin 的一個二層支付網絡,它的實現方式也類似Rollup 技術,交易雙方在建立通道後進行一系列的交互,最後確認的時候關閉通道,再向鏈上提供證明。

Taro 資產設計了類似UTxO 的方式來完成資產的鑄造、轉移,其目的或許在於能夠兼容閃電網絡,使得這樣的交換模式也可以在閃電網絡中生效。雙方只需要利用類似閃電網路的模式進行資產的交換,最後需要回到Bitcoin 時再提交證明交易,以證明這些資產已經再二層網路實現。如果這些資產的實現過程都在Bitcoin 上實現,那麼可以看成每一筆交易都被在Bitcoin 上提交了證明,保證了鏈下的資產證明是有效的。但是這樣的實作方式極度依賴鏈下的Taro Universe 索引,如果元資料遺失,很有可能造成使用者資產的流失。這些索引是十分分散的,或許能夠將這些Universe 組成一個P2P 網絡,形成一個類似IPFS 的分散式儲存?這樣的好處是便於用戶進行同質化代幣類資產的流通,缺點在於非同質化代幣資產就顯得沒有意義(正如會有人問,那為什麼不直接使用ERC721?)。

而BRC-20 是暴力地記錄鑄造、轉帳數據,索引器索引帳本資訊。它所存在的缺點是顯而易見的,用戶需要先銘刻轉帳銘文才能進行轉賬,而這是它依賴Ordinals 實現而不得不滿足的條件。如果BRC-20 不依賴Ordinals 實現而是設計一套類似Ordinals 的設計來實現,或許能滿足較好的流動性,但是這樣或許就不能利用Ordinals 的熱度而爆火了。當然,這樣帶來的好處是索引的方法很簡單,也不用儲存過多額外的元資料(對比Taro 資產所存放的元資料資訊),而這也限制了它的擴充性。而Ordinals 作為NFT 所能表現出的功能是很好的,它的數據存放在鏈上可索引(儘管礦工可以捨棄掉這部分witness 數據),表現出了和ERC-721 不一樣的方式。 Ordinals 本身不能算是一個二層網絡,但是在有了BRC-20 之後表現出了一個二層網絡的樣子,但是數據的變動都是表現在Bitcoin 上,而不是表現在這個二層網絡(索引器)中,它本身只是為了保證記帳的準確。

由此可見,Taro 資產和Ordinals 都有各自的亮點,特別是在同質化代幣和非同質化代幣的實現下,Taro 對同質化代幣的實現考慮得很多,考慮了Taproot 來壓縮交易,使得一筆交易中可以交換數額龐大的資產,以及UTxO 類的交易方式來滿足閃電網路的兼容。但其對NFT 的實現則顯得特別雞肋,相比於Ordinals 銘文的鏈上資料存放以區別和ERC-721 的不同而成為亮點。而基於它所實現的BRC-20 在用戶交易過程中又顯得繁瑣,Taro 資產中的互動不會讓用戶感知這一切。從這樣的對立中很明顯能感受到同質化代幣和非同質化代幣的不同,特別是在Bitcoin 這樣基於UTxO 的區塊鏈上,協議所採取的底層設計方式顯得尤為重要。

資料引用

  1. Colored Coins – wikipedia

  2. bitcoin 2.X (aka Colored Bitcoin) – initial specs

  3. Colored Coins whitepaper

  4. NULL DATA – learn me a bitcoin

  5. Coloring Scheme – Github

  6. 概述- 序數理論手冊

  7. ORDINALS的崛起,BTC生態寒武紀大爆發

  8. Bitcoin Stamps

  9. Atomicals Protocol

  10. Taproot Assets Protocol

  11. Understanding Taproot Assets Protocol #2

Total
0
Shares
Related Posts