比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!

nullthumbnail

技術  2023.07.10

什麼是比特幣 Ordinals 協議/解決方案?比特幣銘文(Inscription)又是什麼?本文將全面解析其技術原理,以及解答常見的疑惑與問題。

什麼是比特幣 Ordinals 協議/解決方案?比特幣銘文(Inscription)又是什麼?本文將全面解析其技術原理,以及解答常見的疑惑與問題。比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!


比特幣Ordinals與銘文

根據 Ordinal & Inscription 的主題,其結構流程為先有了 Ordinal 分割 BTC 的 Satoshi 這個方案後,才有了 Inscription 的概念出來。


先看懂 Ordinal 歷史

  • 2022/02,Ordinal 發佈了 BIP 的草稿,提到了他們認為的 Ordianl 是什麼,闡述了他們如何給 BTC 定位,如何發布序號。
  • 2022/12,Ordinal做了第一次 BTC 上 NFT 的嘗試,Inscription-0。
  • 2023/01,正式的提出 BIP 的編號,在 BTC 的 Github 社群上引發了討論。
  • 2023/02,BTC 接近四兆,歷史最大的區塊被挖出來。同時間,BTC 最重要的幾個人,正在推行 Taproot Wizard 的 NFT。 在此刻,也因為這 NFT 的區塊比較大,大家開始關注Ordinal, Inscription 以及 Taproot Wizard。
  • 2023/04,Inscription 的數量已達百萬級。


什麼是 Ordinals?

  • 序數 (Ordinal):表示順序的數。
  • 序數理論 (Ordinal Theory):給 Satoshi 編號的協議。 第一是因為挖出來的 BTC 可以根據時間編成其對應的編號。 第二是因為 BTC 的所有交易都是有先後順序的,所以可追溯。
  • Satoshi 聰 (Sats):BTC的最小單位,等於 0.00000001 BTC ( 10^-8 BTC)。
  • 範圍:就是所有BTC的總量 (2,100 萬顆),但最小單位是 Sats,所以 Ordinals 的範圍是 0~2,100 兆顆。


Ordinals Draft BIP

  • 根據 Ordinals Draft BIP,Ordinals 本身算是一種 BTC 上的提議,他本身就只是一種計算 Sats 的方式,提供 BTC 應用程序一個穩定的標示符,而不是 BTC 上的二次開發。

舉例:

  • 因為 BTC 是透過 UTXO 以交易作為核心的,而不是以帳戶作為核心。
比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!
 
  • 兩個交易分別是
    • 三個 input
    • 兩個 output
  • Input 的部分
    • 第一個有兩個 sats,所以有兩個 ordinals。
    • 第二個有一個 sats,所以有一個 ordinals。
    • 第三個有三個 sats,所以有三個 ordinals。
  • Output 的部分
    • 首先交易費的部分是會被擺到最後的。
    • 第一個有四個sats,所以有四個 ordinals。
    • 第二個有一個sats,所以有一個 ordinals。


Satoshi 的形式

比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!
 
  • 整數:特定的 Sats 是能夠知道在什麼時候被挖出來的,所以有一定的序號。
  • 小數
    • 第一位是 Sats 被挖出來的區塊高度。
    • 第二位是在區塊的所在位置。
  • 度:如圖所示,依照圖中的間隔由左到右給予 ABCD 的位置
     
比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!
 
  • A 是減半週期和難度調整週期同時發生的點。
  • B 是減半週期
  • C 是難度調整週期
  • D 在區塊中 index 的順序
  • 百分比:這個 Sats 是在挖出多少個之後的
  • 名稱:因為有數字,所以可以透過編碼邏輯給予他一個名字。

根據 Sats 的形式格式,所以 Sats 產生了具有稀有度的特質。

其定義的因素

  • 是不是區塊裡面的第一個。
  • 是不是正好遇到難度調整週期,約每兩週會出現一次。
  • 是不是正好遇到減半週期,約每四年會出現一次。
  • 是不是正好遇到難度調整週期跟減半週期重合的時間點,也就是每 24 年會重疊一次,亦即第一次發生會在 2032。

根據上述因素,有以下稀有度的類型

  • Common:隨便一個不符合上述條件的 Sat
  • Uncommon:身為區塊裡第一個的 Sat
  • Rare:在難度調整週期中的第一個 Sat
  • Epic:在減半週期中的第一個 Sat
  • Legendary:在難度調整週期跟減半週期重合的第一個 Sat
  • Mythic:在創始區塊的第一個 Sat


Inscription 銘文是什麼?

Inscription 就是在 Ordinal 之上附加一層。

因為 BTC 沒有編程,所以沒辦法像以太坊一樣透過智能合約發行 NFT。

所以透過在特定的 Sats 中嵌入數據,因爲每一個 Sats 都是獨一無二的,所以就建立了 NFT。

比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!
 


區塊重量

為了瞭解 Inscription 背後的技術原理,需要先暸解區塊重量的概念。

比特幣社區有一派是希望把區塊體積擴大,但這樣的操作,就會需要經過硬分岔。不過比起以太坊有一個基金會作為權威機構,比特幣在這方面的資源還是比較少的,因此比特幣通常比較傾向軟分岔,讓用戶可以自行決定要不要升級客戶端。

而另一派希望透過隔離見證實現區塊擴容的這些人,就不能用區塊體積這個詞,所以因此出現區塊重量這個詞。

隔離見證:

  • 比特幣具有交易數據和見證數據。
  • 見證數據就是幫節點做核驗的數據,這些數據不存區塊鏈也可以,所以就被隔離了。 這樣區塊裡就能放更多交易,因此隔離見證就屬於一種變相擴容。
比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!
 


OP_Return

  • 字節碼:就是 BTC 腳本中的最小資金單位,也就是最小可編程的部分。
  • OP_Return:就是早期 BTC 網路中,設計用來存放數據的字節碼,限制 80 個字節。
  • Omni_Layer
    • 在 USDT 還沒發行在以太坊之前,所有 USDT 都是發行在 BTC 的 Omni_Layer上的。
    • 當時的 USDT 發行就是透過 Omni_Layer 的字串,來進行交易。


Taproot

  • Taproot 是 BTC 網路在 2021 年 11 月 14 日實施的軟分岔升級,是近期最重要的軟分岔升級。


比特幣共識升級方式

  • 創新
  • 提交 BIP
  • 獲得反饋
  • 協議實現
  • 網路激活:這是 Taproot 施行的階段。
  • 第三方集成:目前已有 Bitcoin Core 以及一些第三方錢包正在實現中,但能不能完全做到 Taproot,需要讓子彈飛一會兒。


Schnorr/Taproot 關鍵節點

  • Taproot 一開始是在 2018 年由 Gregory Maxwell (前 Blockstream 聯合創辦人)提出。
  • 在提出後到 2020 年的期間,就是不斷升級裡面的討論及方案。
    • Schnorr 簽名方案提出
    • Tapscript 提案
    • 版本更新(在 BTC 的郵件組討論)
  • 2020 年初,正式建立三個 BIP 的標準,並進入開發。
  • 其後開始將 BIP 代碼合併至主分支,但主分支離能上線還是有一段距離。
  • 2021 年初,在 Bitcoin Core 0.21.0 的版本將那三個 BIP 的標準融入。
  • 2021 年 11 月,正式施行,BTC 網路正式能使用 Schnorr Taproot 節點。
  • 其後的兩個版本, 迭代先前的版本,且在用戶界面中新增 Schnorr Taproot 地址。


Schnorr/Taproot 特性

  • 擴容 (多簽) 為 Taproot 最大的一個優勢, 一般的多簽是暴露在腳本中的。 而 Taproot 的多簽是具有隱私性的,所以你不會知道是誰在做這些多簽,以及有幾個人在做這多簽,且由於 Schnorr 的簽名算法,其驗證速度是快 2.5 倍的。
  • 可互換性 使得所有輸出以及大部分支出無法分辨出區別。
  • 比特幣腳本語言創新
    • 可支持非常多的多簽人數
    • 可支持更複雜、更私密的腳本邏輯


Taproot 在 Inscription 的作用

原本的比特幣腳本是存在字節限制 10,000 bytes 的, 在 BIP-342 移除了這限制,現在腳本的 size 是遵照區塊重量,這才是目前 Inscription 目前之所以能實現在腳本放那麼大數據量的核心原因。


Inscription 定義數據標準

比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!
 

如果要在特定的 Sats 嵌入數據,只需要在腳本中嵌入特定的數據標準。

完整結構為

  • OP_FALSE 開頭,OP_ENDIF 結尾。
  • 先以 ord 作為開頭符號
  • 再 push 內容格式,編碼方式為utf-8
  • 再 push 內容數據

由於是以 OP_FALSE 作為開頭,所以他會推送一個空隊列到堆棧,以至於他不需要被真正執行。

所以這串數據對於執行層來說是沒有意義的,任何一個節點拿到這數據,都不用去計算或處理它。

通過 Inscription 數據格式不用被真正執行的特性,以及 Taproot 帶來的腳本大小無限制,以及 witness 價格優惠,最後產生 4MB 區塊大小。


Ordinals 有什麼爭議?


區塊空間定價

我們是否真的需要將珍貴的區塊空間,儲存在其他數據上?

在 OP_Return 出來時,當時的開發者認為限制的 80 字節,需要在有必要時才進行儲存。

但在 SegWit ( Witness Data 價格優惠 ) 所產生的變相擴容,以及 Taproot 移除腳本大小限制的這兩件事的出現,使得 BTC 上的 NFT Inscription 的出現。

如果說數量比較大的 BTC 交易其 UTXO 在鏈上數據的價值與意義就已經很大的話,那麼在全節點運行的 NFT 其佔有空間理應也很大。如此導致,原來可能需要 1MB 大小的區塊,現在需要 3、4MB。

按照這樣的平均增長速度,那麼全節點的負擔,也會增長 2~3 倍,甚至 3~4 速度。


Ordinals 衍伸的 Inscription 是否需要一個 BIP ?

Ordinals BIP Discussion:這是其中一個 Ordinals的發明者,想針對 Ordinals 發起一個 BIP 的討論

其中有主要正反兩方的意見,以下是幾個比較核心的反對意見。

  • Ordinals 不是比特幣協議的一部分,他只是 BTC 協議上,一種計算Sats的方式,因此不需要一個 BIP ,而可以在第二層或是外層工作。
  • 該 BIP 不符合 BTC 的哲學,可能破壞了比特幣的開放性或可替代性,因為對於核心開發者而言,他們是希望 BTC 的可替代性是很強的,也就是Fungible的部分。
  • Ordinals 未被大多數比特幣用戶使用,因此沒有普遍價值。
  • BIP-2 明確提到,拒絕 BIP 的理由包括不符合比特幣哲學。


協議資源定價問題

協議的資源定價問題,一直都是一個宏觀且重要的話題。

以太坊網路也曾遇過同樣的問題, 例如早期以太坊網路存在 Gas Token 這樣的東西, 直到以太坊倫敦升級,在 EIP-3529 降低 Gas 退款,使 Gas Token 失效。

GasToken 其利用的是協議的特性,先儲存一堆數據,在銷毀一些數據時,能獲得一些 Gas 的補償。 也就是只要在 Gas 很便宜時,大量的往資料空間存一堆數據,然後在 Gas 貴時,釋放數據。通過釋放數據獲得的補償,就可以降低未來交易的成本。

OPcode Price 以太坊的每個 OPcode 都有其成本,每個 OPcode Price 亦即是每個智能合約是由多少 OPcode 所組成。 這就引發了,究竟 OPcode 要怎麼定的討論。 早期是透過大規模的資源計算去定價,才能產生大概的 OPcode 的具體數據。例如某一個價值是多少的 Gas,智能合約交互時就需要付出多少的成本。

但一旦你去調整了 OPcode Price,就會影響前端智能合約的使用性。比方說提升 OPcode 的部分,可能會帶來一些對於前端 Gas Limit 的限制。 就會導致原來可能會先計算某些交易可能是需要多少 Gas Limit,但調整 OPcode 就使得當初的預估有可能會錯。

Ordinals & Inscription 以上兩點以太坊發生的資源定價的問題,給 Ordinals & Inscription 一個很好的參考。

既然 BTC 協議都開放這兩個功用了,可以試著由 Taproot 以及 Segwit 這兩個升級帶來的好處,去積極嘗試。

有 Ordinals 和 Inscription 這兩項功能的出現,後續肯定也會產生一些衍生問題,那麼屆時就去探索是否需要在 BTC 的 code development 去做一些改變。

如果不需要調整,那麼 Ordinal 這模式就很有可能是 BTC 網路未來的常態。


Ordinals 常見問題解惑

Taproot 升級有增加腳本隱私的部分,想了解其具體的方式?

  • 在 Taproot 之前,多簽的部分,原來是暴露在腳本中的。 打個比方,作為第一個 Input 是不會知道的,但當有 Output 出現時,是可以透過其結構去判斷有幾個多簽的,以及這些人是誰。
  • Taproot 之後,是可以將多簽聚合成一個簽名,如此一來,就沒辦法知道這背後到底有幾個人。

目前看起來 Ordinal 的應用是在 BTC 網路發行 NFT,但加入數據的這個 Feature,是不是還有其他可發展的 Fuction ?

  • 目前看到除了圖片類的,還有許多文字類以及網頁類的在 Ordinals 的瀏覽器內能看到的。
  • 但現在的佈局都屬於比較靜態的,如果想實現動態的事情的話,現在還是做不到的。


Ordinal 是否某程度也將 BTC 變為 NFT 了?

是,每一個 Sats 都是不同的 BTC。


在 BTC 網路上的 NFT,是存在 UTXO 裡面?

對,他是把這些 NFT 生成的數據,存在 UTXO 裏面。

但將來這些 UTXO 被花費時,Ordinal 在轉移的部分,是不需要帶著數據過去的。

所以如果要知道這 Ordinals 的數據,就需要透過鏈上轉移的歷史,去追溯到最初生成這數據的 UTXO 上。


當區塊鏈的數據被修剪後,既然要追溯全歷史,才能知道 Ordinal 的數據,那麼是否要使用 Archive node,不能只有存當下狀態的節點?

按照邏輯上,這件事情是成立的。

不過由於 BTC 網路結構的不同,在實際上有一些差異,以太坊跟比特幣的區別是,以太坊全節點數據裡面除了交易數據還有狀態數據,交易數據、簽名數據跟狀態數據,這些內容數據量太大了,所以需要存儲節點存儲全歷史資料。

但比特幣沒有狀態數據這個內容,所以不需要特別建立一個節點專門做存儲。因此 BTC 不存在只能用 Archive Node,才能追溯全歷史這件事。

因為 BTC 的節點主要分為三個部分。

  • Full Node :這是 Bitcoin core 客戶端默認的模式,這就具有全歷史數據。
  • 修剪庫:對於本地端資源比較受限的,或是本身不需要這麼多資料的,可以去打開自帶的修剪庫。只需要存取區塊頭、最近的一些交易數據,以及自身所需的一些交易數據。
  • SPV:只有區塊頭。

因此在 Default 的情況下,就可以直接透過 Full Node 去獲取全歷史。


因為在 BTC 上的 NFT 需要追溯全歷史,那麼如果我是透過像是 SPV 這種數據比較簡易的節點,會不會在交易 NFT 上面出現問題?

實際上影響不大,因為真正 BTC 上的 SPV 節點非常少。大部分我們常會接觸到的,如錢包等,大多是 API 客戶端,他需要什麼數據就往數據庫裡去要。

如果說為了讓去中心化權重提高,會選用 Full Node,但大多數為了使體驗更好,則會採取利用 API 接口去接的方式。


BTC 的 NFT 數據都在鏈上,不像以太坊的 NFT 可以去向鏈下撈資料?

理論上應該也可以從線下撈,因爲從 Inscription 的定義來看,他只是定義一個數據結構,亦即是只要按這結構就可以索引到。

那麼 Push 的資料是不是就可以 Push 外部的連結,在客戶端的呈現只要能獲取到外部連結的資料,也可以實現從鏈下呈現的功能。


Inscription 目前只有定義存數據的方式,並沒有像 ERC-721 那樣定義存數據的格式?

Inscription 目前定義還是比較廣泛的結構,離 ERC-721 這種標準還是有一些距離的。

所以目前的情況比較像 ERC-721 還沒出來前,在以太坊發 NFT 的時候。

這也是為什麼他們也想成為一個 BIP,因為一但成為 BIP,就相當於官方欽點的 NFT 標準。前端客戶也可以按照這標準去索引,連帶提升效率。

本篇文章整理自潘致雄老師於 MatrixDAO 的直播,文章作者為 Edward。

・ 本文未經同意請勿轉載

icon免責聲明

市場有風險,投資需謹慎。本文不構成投資建議,使用者應考慮本文的任何意見、觀點或結論是否符合其特定狀況。據此投資,責任自負。

crypto_city_linecrypto_city_threadscrypto_city_telegram

加密詞條庫

- 比特幣(BTC)

你可能想知道

即將開始下一篇upcoming

background
login_logo
logo

使用以下帳號繼續

繼續表示您已同意 服務條款與隱私政策

copy

比特幣NFT?Ordinals、銘文是什麼?6大點全面解析技術應用!