# Bitcoin NFT Ordinals ### 實作方法 銘文儲存在 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= 銘文範例 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 // 結尾 ``` <br> ### 補充 1. 這些腳本資料不會被儲存節點記錄到 UTXO set,但會被全節點所記錄 (UTXO set 是儲存那些還沒被花費的 UTXO) 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 信封** <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月啟用。這是一次軟分叉,引入了新的腳本功能,使交易更有效率、隱私與安全。 簡而言之,Taproot 啟用一種新的腳本語言「Schnorr簽名」,該語言允許進行更複雜的多簽名交易和其他高級功能,提升簽名效率。因為要支援 Schnorr signature,所以 Bitcoin 的 script system 勢必要做一些改動 (BIP-342) ,淘汰沒效率的 opcode 也新增一些新的 opcode 的同時,Bitcoin Core 也順便取消了 Bitcoin script size 的上限。 Taproot 的主要好處之一是增強隱私,通過將多個 Output 捆綁成單一輸出進行「支付到合約」,從而使所有交易看起來都是相同的,無論涉及的交易複雜性如何。 總歸來說,Taproot被視為比特幣區塊鏈的一個重要進展,因為它提供了一個基礎,可以實現更複雜和安全的交易,同時保持網絡的核心價值,即效率和隱私。 <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> ### 值得參考的文章 1. [panewslab,一文看懂什麼是BTC NFT以及未來潛力](https://www.panewslab.com/zh_hk/author/8ehq0ap2.html) 2. [aimultiple,Ultimate Guide to Ordinal Inscriptions/Bitcoin NFTs in 2023](https://research.aimultiple.com/ordinal-inscriptions/) 3. [鑽石手,Ordinals是什么?BTC NFT爆发会带动哪些机会?](https://www.youtube.com/watch?v=YqC4OnXX4zY&t=310s&ab_channel=%E9%92%BB%E7%9F%B3%E6%89%8BDiamondHands) 4. [動區,詳解比特幣隔離見證 Segwit -工作原理與案例分析](https://www.blocktempo.com/segwit-for-dummies-concept-and-case-study/) 5. ⭐ [Dapp Learning,比特币NFT的基本原理和特性——Ordinals](https://www.youtube.com/watch?v=RpoDtNwWSBo&t=2096s&ab_channel=DappLearning) 6. ⭐ [Ordinal Theory 官網](https://docs.ordinals.com/introduction.html) 7. ⭐ [PureTeaux,Illegitimate bitcoin transactions](https://read.pourteaux.xyz/p/illegitimate-bitcoin-transactions) 8. [知乎,學習筆記 OP_RETURN](https://zhuanlan.zhihu.com/p/53754605) 9. [知乎,比特幣上的 NFT,靠譜嗎?](https://zhuanlan.zhihu.com/p/611373815) 10. [徐粲邦 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) 11. ⭐ [徐粲邦 Medium,深入理解 Bitcoin NFT — Ordinals](https://medium.com/@bun919tw/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3-bitcoin-nft-ordinals-3811b0eb9fed) 12. [登鏈社區,Ordinal NFT 實現原理](https://learnblockchain.cn/article/5376) 13. [hiro,What Are Bitcoin Ordinals?](https://www.hiro.so/blog/what-are-bitcoin-ordinals) ###### 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