--- image: https://cdn-images-1.medium.com/max/900/1*7czdycTLhHSdqJgdGilVFQ.png --- # 由淺入深理解 Bitcoin NFT 技術— Ordinals  <br> ### ▮ 前言與摘要 其實過去在比特幣上嘗試生成 NFT 的項目與方法不少,如試圖在比特幣上建立 DNS 的 Namecoin (BIP15)、試圖給比特幣作記號 Colored coins 等等,但 Ordinals 可以說是目前最新且最成功的案例。 本篇文章旨在闡述比特幣透過 Ordinals 協議實現 NFT 的方式,涉及大量比特幣專有名詞以及技術方法,並非通俗白話的基本介紹,希望讀者斟酌閱讀。 <br> ### ▮ 實現方式 首先,每個 BTC 可以被分解成 1 億個單位,稱為 「 sats 」(Satoshi 的縮寫),而軟體工程師 Casey Rodarmor 1 月底在比特幣區塊鏈上推出了 Ordinals 協議,這個協議允許用戶和建設者在每個 「 sats 」 上刻上數據並有效、方便管理。 從白話上講,Ordinals 協議讓開發者能夠向「聰」刻上任意內容並對每一聰進行標記、編號。每一聰由原先 BTC 的計價單位變成了 NFT 的單位。 要實現這點,採用了「Inscription(銘文)」,來為比特幣區塊鏈上為每個聰創建唯一標識,確保每個 NFT 都是唯一的且不能被複製。通過使用 Inscriptions 銘文,Ordinals Protocol 提供了一種可靠且安全的方式來創建和管理比特幣區塊鏈上的 NFT,確保每個 NFT 都是唯一的、不可更改的,會被永久地標記在交易的第一個輸出的第一個 sat 上。 此外,基於以太坊的 NFT 和比特幣之間的核心區別之一是,以太坊 NFT 通常指向 IPFS 系統上的鏈外數據。而比特幣有了這個 Ordinals 協議,所有的數據將直接被刻在鏈上。 <br> ### ▮ 實作概述 銘文儲存在 Taproot script-path 腳本中, **利用 OP_FALSE 讓 OP_IF 到 OP_ENDIF 中間區段的 code 永遠不會被執行, 就可以將想備註的檔案、文字寫進去永久保存** 其中能做到的容量上限為 4MB (一個區塊的極限大小) 此外,由於 2017 Segwit 升級引入隔離驗證的機制,Segwit 把 scriptSig (解鎖簽名腳本、witness)移到交易 Input 外,就是交易和簽名分開了,給了從 scriptSig 拉出來的 witness 75% 的隔離見證打折,表示這個 script 僅需原先正常價格的1/4 Taproot 的升級,讓這些圖片資料得以有足夠空間上傳,也因為是 Segwit 讓 witness 的形式有隔離見證打折,陰錯陽差的造成了現在在 Bitcoin 上面存放資料反而有特別優待的感覺 而 Taproot 創建銘文需兩步驟: 1. **commit** 創建一個 taproot 輸出(該輸出會提交一個包含銘文的 scriptSig 解鎖腳本,此時 script 本身還未上鏈,只是生成了一條 taproot script 路徑),並提交該交易,確保只有擁有正確簽名的人才能在未來的輸入中使用它 2. **reveal** 花費上述交易生成的 UTXO ,由於此時必須將包含銘文的 scriptSig 作為 input 來解鎖上述 UTXO,因此就在鏈上揭示了銘文的內容 - 更詳細的技術細節與原理紀錄於文末 - 銘文官方範例 ```javascript= <signature> OP_FALSE // 由於為 FALSE 故以下 Code 不會被執行 OP_IF // 開頭 OP_PUSH "ord" // ord 表示這是屬於 Ordinals 協議 OP_1 // OP_1 後的內容表示這個文件的類型 OP_PUSH "text/plain;charset=utf-8" // 表示為文本 OP_0 // OP_0 可能有多段,因為一次 PUSH 不能超過 520 bytes OP_PUSH "Hello, world!" OP_ENDIF // 結尾 <public key> ``` <br> ### ▮ 和以太坊 NFT 的差別  - 補充 1. Ordinals 完全存在鏈上而且完全不可變,而以太坊通常需使用 IPFS ,鏈下易改 2. Ordinals 沒有單獨額外的 MetaData,故不需要擔心丟失 Data 的風險 <br> ### ▮ 稀有度   - common:區塊中的非首個 satoshi - uncommon:約每隔 10 分鐘,產出區塊中的首個 satoshi - rare:每隔 2016 區塊,約每兩個禮拜之難度調整後的第一個區塊的第一個satoshi - epic:每隔 210000 區塊,約每 4 年之產量減半後的第一個區塊的第一個 satoshi - legendary:每經過 6 次產量減半,約 24 年,難度調整和產量減半會同時發生,每個週期後的第一個區塊的第一個 satoshi - mythic:創始區塊中的第一個 satoshi <br> ### ▮ 目前生態系  <br> ### ▮ 優勢與挑戰 - 優勢 - 不改變比特幣設計基礎,實現 NFT 功能,保留了比特幣安全性等優點 - 早期藍海,從投資的角度來看還有待完善,存在增長潛力 - 以真正去中心化方式儲存,並且完整的存在鏈上,而不是隨心所欲可以更改的集中式服務器儲存 - 銘文 NFT 攻佔有限的區塊空間,從而推升費用讓礦工受益幫助比特幣 POW 網路可持續性的發展 - 無任何審核許可機制,也沒人有權下架,實現完全去中心化 - 挑戰 - 比特幣錢包覆蓋率目前還很低,推廣困難 - 占用過往轉帳買賣的交易區塊空間,故產生爭議且共識不足 - 目前操作須具備些許專業知識,較為複雜,門檻較高 - 基礎設施非常不完善,不管是交易、查看數據等工具都很楊春 - 目前場外交易仍然為大宗,流動性和真假安全都是大挑戰 - 存儲的所有內容都是永久性的,包括任何非法或令人反感的內容 <br> --- **⭐ 以下內容難度較高,深度較深,若無興趣可直接跳過, 但相關中文資料較稀少,想用中文多了解 Bitcoin 技術的朋友建議閱讀** <br> ### ▮ 補充 — 雜項 1. script 腳本資料不會被儲存節點記錄到 UTXO set,但會被全節點所記錄 2. Taproot 取消了 script size 的上限,可以利用 **tapscript** 擺脫原有的數據儲存限制 3. 原先 OP_RETURN 上限是不得超過 80 bytes,而 Tapscript 無上限,**只要 transaction 的大小小於一個區塊 block 的上限 (4 MB)** 就好 4. Ordinals 創始人稱這種銘文為 **Digital Artifact** (數位藝術品)而非 NFT 5. sat 基本運作:[a b] [c] [d e f] → [a b c d] , e 和 f 的 sat 被礦工收走 6. Ordinals 官方將 OP_FALSE、OP_IF、OP_ENDIF 的新運用稱為 **envelope 信封** 7. 個人地址為 1 開頭的 **Pay-to-PubKeyHash (P2PKH,支付給密鑰)**, 腳本地址為 3 開頭的 **Pay-to-ScriptHash (P2SH,支付給腳本)** 8. 詳細 **P2PKH** 和 **P2SH** 比較,可以參考 [[Mastering Bitcoin 筆記] Standard Transactions](https://medium.com/@wilsonhuang/mastering-bitcoin-%E7%AD%86%E8%A8%98-standard-transactions-undone-bfb9b4ed0ed8) 這篇中文文章,~~雖然原作者能要被抓去關了~~。 <br> ### ▮ 補充 — Segwit Segregated witness (segwit) ,俗稱「隔離見證」,是 2017 年 Bitcoin 的升級,也就是 Taproot 再前一次的升級(四年才一次升級)。 最早他的出現是為了解決 transaction malleability 這個 bug。在計算 transaction size 的算法上,給了從 scriptSig 拉出來的 witness 75%的折扣優惠,也就是說同樣一筆 transaction 如果採用 segwit,可以因為 transaction size 計算上較小,而有著更便宜的手續費(礦工也因為這次升級得以收更多 transaction )。 <br> ### ▮ 補充 — Taproot Taproot是最近對比特幣區塊鏈進行的升級,於2021年11月啟用。這是一次軟分叉,由三個主要特性組成:MAST,默克爾抽象語法樹,Taproot 以及 Schnorr 簽名,使交易更有效率、隱私與安全。 簡而言之,Taproot 啟用了「Schnorr簽名」,允許進行更複雜的多簽名交易等功能,透過聚合簽名提升效率。因為要支援 Schnorr signature,所以 Bitcoin 的 script system 勢必要做一些改動 (BIP-342) ,淘汰效率低落的 opcode 和新增一些新的 opcode 的同時,Bitcoin Core 也順便取消了 Bitcoin script size 的上限。 Taproot 的主要好處之一是增強隱私,通過將多個 Output 捆綁成單一輸出變成 P2TR ,從而使所有交易看起來都是相同的,無法判斷背後是個人單簽還是多簽或者是其他複雜合約,無論涉及的交易複雜性如何。 總歸來說,Taproot被視為比特幣區塊鏈的一個重要進展,因為它提供了一個基礎,可以實現更複雜和安全的交易,同時保持網絡的核心價值,即效率和隱私。 <br> ### ▮ 補充 — 為甚麼 Taproot 創建銘文需兩個步驟? 一個比特幣交易輸出 Output 包含: 1. 比特幣數量(聰) 2. 花費這些比特幣時所需滿足的條件 也就是**鎖定腳本 locking script** , 而接收方日後要花費這些 UTXO 時, 需要生成一個解鎖腳本 scriptSig。 而 Taproot 的升級是將 pay-to-key 和 pay-to-script 結合為 pay-to-Taproot, `「 Q = P + Hash ( P , m ) ∗ G 」` 其中 m 為一 MAST 的默克爾根,而這 MAST 包含了能花費 UTXO 的條件, P 為能花費這筆 UTXO 的公鑰,稱 tap_tweak,由 merkle branch 聚合而成的 G 為橢圓曲線中的 Generator Point, 簡單來說 私鑰Hash * 常數G 可產生不可逆的公鑰(無法除回去) 所以想花這筆交易有兩辦法, 1. 因為妳知道 H(P, m),也知道 P 的私鑰,所以就把這兩個數結合作為私鑰,並對 X 加密,所以系統可以拿公鑰 Q 去解密 X 認證你有不可否認性 (類似傳統 pay-to-key 就是拿私鑰做解密) 2. 可以批露 P 跟 m 讓大家知道 Q 跟 m 確實相關,而這個批露也就是 reveal ,通過批露條件(解鎖腳本) 來花費 UTXO (滿足 P scripts Leaf version 也就是 merkle branch 的 path 來解密) 而 Ordinals 就是把銘文作為解鎖腳本 scriptSig 存為一個 MAST 的根, 存入 MAST 時不會有人知道這個條件,只有在花費 UTXO 批露時才會顯現。 <br> ### ▮ 值得參考的文章 1. [panewslab,一文看懂什麼是BTC NFT以及未來潛力](https://www.panewslab.com/zh_hk/author/8ehq0ap2.html) 2. [panewslan,深度探討比特幣鏈上NFT:Ordinals 變革及比特幣可擴展性](https://www.panewslab.com/zh_hk/articledetails/x6xjhhi7.html) 3. [aimultiple,Ultimate Guide to Ordinal Inscriptions/Bitcoin NFTs in 2023](https://research.aimultiple.com/ordinal-inscriptions/) 4. [鑽石手,Ordinals是什么?BTC NFT爆发会带动哪些机会?](https://www.youtube.com/watch?v=YqC4OnXX4zY&t=310s&ab_channel=%E9%92%BB%E7%9F%B3%E6%89%8BDiamondHands) 5. [動區,詳解比特幣隔離見證 Segwit -工作原理與案例分析](https://www.blocktempo.com/segwit-for-dummies-concept-and-case-study/) 6. ⭐ [Dapp Learning,比特币NFT的基本原理和特性——Ordinals](https://www.youtube.com/watch?v=RpoDtNwWSBo&t=2096s&ab_channel=DappLearning) 7. ⭐ [Ordinal Theory 官網](https://docs.ordinals.com/introduction.html) 8. ⭐ [PureTeaux,Illegitimate bitcoin transactions](https://read.pourteaux.xyz/p/illegitimate-bitcoin-transactions) 9. [知乎,學習筆記 OP_RETURN](https://zhuanlan.zhihu.com/p/53754605) 10. [知乎,比特幣上的 NFT,靠譜嗎?](https://zhuanlan.zhihu.com/p/611373815) 11. [徐粲邦 Medium,Mastering Bitcoin — CH5 Transactions](https://medium.com/@bun919tw/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3-bitcoin-nft-ordinals-3811b0eb9fed) 12. ⭐ [徐粲邦 Medium,深入理解 Bitcoin NFT — Ordinals](https://medium.com/@bun919tw/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3-bitcoin-nft-ordinals-3811b0eb9fed) 13. [登鏈社區,Ordinal NFT 實現原理](https://learnblockchain.cn/article/5376) 14. [hiro,What Are Bitcoin Ordinals?](https://www.hiro.so/blog/what-are-bitcoin-ordinals) 15. [BTC Study,Taproot 升級詳解](https://www.btcstudy.org/2021/11/02/the-taproot-upgrade-explainer-from-Suredbits/) 16. [BTC Study,比特幣升級提案 Taproot 技術解讀](https://www.btcstudy.org/2021/09/29/bitcoin-taproot-a-technical-explanation/) 17. [Wilson Huang,[Mastering Bitcoin 筆記] Standard Transactions](https://medium.com/@wilsonhuang/mastering-bitcoin-%E7%AD%86%E8%A8%98-standard-transactions-undone-bfb9b4ed0ed8) 18. [律動,比特幣NFT協議Ordinals生態匯總](https://www.theblockbeats.info/news/35521) ###### tags: `Blockchain Research`
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up