最近兩周我在研究BTC生態(tài)和各種銘文項目的時候,發(fā)現(xiàn)很少有文章能夠清晰地把原理和技術細節(jié)介紹的清楚:比如銘文在鑄造的時候,交易是如何發(fā)起的,UTXO里面的sats到底是怎么被追蹤的,銘刻的內容到底是放在腳本什么地方,以及BRC20在轉賬的時候為何需要兩次操作?我發(fā)現(xiàn)不了解這些技術細節(jié),就很難搞明白 BRC20,BRC420,atomicals, stamps, 符文Runes這些各種協(xié)議的區(qū)別,本文將深入到BTC區(qū)塊鏈的基礎知識,試著回答上述問題。
區(qū)塊鏈本質是一種多用戶記賬技術,用計算機科學術語來說,是一種分布式數(shù)據(jù)庫,每一段時間內的記錄(賬目)組成一個區(qū)塊,然后根據(jù)時間先后順序進行賬本擴展。
我們用excel做了表格來說明區(qū)塊鏈的工作原理。一份excel文件代表了一個區(qū)塊鏈,其中每一個單獨表格表示一個個區(qū)塊,區(qū)塊按照時間順序從560331,560332.一直到最新的560336. 560336會在區(qū)塊內打包最近的交易。區(qū)塊內部主體部分就是我們在會計領域最常見的復式記賬法,一邊地址記做借出(debit)就是inputs from,另一邊地址記做貸入(credit)就是outputs to。Value對應相應地址的BTC數(shù)量。Inputs的幣的數(shù)量會大于Outputs幣的數(shù)量,差額就是用戶層面的轉賬費,也是礦工(記賬人)的取得的手續(xù)費。區(qū)塊頭部會獲取上一個區(qū)塊高度,上一個區(qū)塊的哈希值,本區(qū)塊的建立時間(時間戳),和隨機數(shù)。那么做為去中心化的記賬技術,到底是誰來搶到下一個區(qū)塊的記賬權呢?靠的就是這個隨機數(shù)和與之對應的哈希值。擁有算力的礦工通過對當前區(qū)塊的隨機數(shù)進行哈希計算,最先得到符合條件哈希值的礦工擁有下一個區(qū)塊的記賬權并且贏得區(qū)塊獎勵和轉賬費。最后是腳本區(qū)域,可以用來做一些擴展應用,比如腳本op_return可以當做附言欄。需要注意的是,在實際的區(qū)塊中,腳本區(qū)是附著在input和output信息中的,而不是真的另外單獨一個區(qū)域。比如附著在input的腳本是解鎖腳本(ScriptSig),需要錢包地址進行私鑰簽名授權允許轉出,而附著在output的腳本是鎖定腳本(ScriptPubKey),用來設置收到該BTC的解鎖條件(一般情況條件就是“有相應私鑰的人才能消費”)。
上面兩張圖是原始的input和output的數(shù)據(jù)結構表,在執(zhí)行層面,腳本表現(xiàn)為交易信息的附帶參數(shù),其中解鎖腳本(ScriptSig)因為需要私鑰授權,也被稱為“見證數(shù)據(jù)”(witness data)。
盡管比特幣網絡已經運行了超過10年,沒有發(fā)生過什么顯著的事件,但曾多次出現(xiàn)交易成本飆升到不再可行的高點。因此,比特幣的開發(fā)人員一直在討論如何最好地擴展網絡,以處理未來不斷增長的交易量。
2017年,這場辯論達到高潮,比特幣開發(fā)社區(qū)分裂成兩派,一派是支持使用軟分叉實施名為SegWit的功能,另一派是支持直接區(qū)塊擴容的“大區(qū)塊”派。
我們在上文提到了解鎖腳本需要用到私鑰授權生成“見證數(shù)據(jù)”,那么是不是可以把這個見證數(shù)據(jù)從區(qū)塊中分離,從而變相增加每個區(qū)塊可容納的交易數(shù)呢?隔離見證(Segregated Witness)在2017年8月激活正式激活。它的實現(xiàn)方式正是將所有的交易數(shù)據(jù)分為兩部分,一部分是交易的基本信息(Transaction Data),另一部分是交易的簽名信息(Witness Data),并把簽名信息保存在一個新的數(shù)據(jù)結構中,是被稱為“隔離見證(witness)”的新區(qū)塊中,并與原始交易分開傳輸。
在技術上,SegWit的實施意味著交易不再需要包括見證數(shù)據(jù)(不會占用比特幣原本為區(qū)塊安排的 1MB 空間)。取而代之的是,在一個區(qū)塊的末尾,為見證數(shù)據(jù)創(chuàng)建了一個額外獨立的空間。它支持任意的數(shù)據(jù)轉賬,并有一個折扣的 "區(qū)塊重量(block weight)",巧妙地將大量的數(shù)據(jù)保持在比特幣的區(qū)塊大小限制內,以避免硬分叉的需要。這樣,比特幣交易的交易數(shù)據(jù)大小提高了上限,同時降低了簽名數(shù)據(jù)的交易費用。在SegWit升級之前,比特幣的容量上限是1MB,而SegWit之后,雖然單純交易的容量上限仍舊是1M,但隔離見證空間的大小達到了4MB。
Taproot 于2021年11月實施,由 3 項不同的比特幣改進提案 (BIP) 組成,其中包括:Taproot、Tapscript 及其名為「Schnorr 簽名」的全新數(shù)字簽名方案。Taproot 旨在為比特幣用戶帶來諸多好處,例如提升交易私密性和降低交易費用。還將讓比特幣執(zhí)行更多復雜的交易,從而拓寬應用場景(新增加了一些操作碼opcodes)。
這些更新是 Ordinals NFT的關鍵推動因素,它將NFT數(shù)據(jù)存儲在 Taproot 腳本路徑的花費腳本(spent script)中(見證數(shù)據(jù)空間)。這次升級使得結構化和存儲任意的見證數(shù)據(jù)變得更加容易,為 "ord" 標準奠定了基礎。隨著數(shù)據(jù)要求的放寬,假設一個交易可以用其交易和見證數(shù)據(jù)填滿整個區(qū)塊 -- 達到4MB的區(qū)塊大小(見證數(shù)據(jù)空間)限制 -- 極大地擴展了可以放在鏈上的媒體類型。
也許有人會問,既然在腳本中放入一些字符串,那對這些字符串沒有限制條件嗎?萬一真的執(zhí)行這些腳本呢?如果隨便放內容,那會不會出現(xiàn)錯誤代碼拒絕出塊呢?這就要提到 OP_FALSE指令。OP_FALSE(在比特幣腳本中也表示為“0”)確保腳本語言中的執(zhí)行路徑永遠不會進入OP_IF分支,并保持未執(zhí)行狀態(tài)。它充當腳本中的占位符或空操作(No Operation),類似于高級語言中的“注釋”,來保證后續(xù)的代碼不被執(zhí)行。
相關閱讀推薦
最新資訊
最新游戲
經典臺球單機版
查看三職業(yè)傳奇手游
查看我的世界boss挑戰(zhàn)手機版
查看臺球之王
查看恐怖雙胞胎中文版最新版
查看歡樂釣魚大師華為版
查看饑荒:夢魘王座手機版
查看精英槍戰(zhàn)訓練營
查看LoveMeKillMe
查看熱門文章
熱門游戲
刺激戰(zhàn)場國際服正版
查看寶可夢劍盾
查看蜘蛛紙牌空當接龍 v2.44安卓免費版
查看火柴人神射手最新版 v2.2.6安卓版
查看英雄城堡 v1.4.6安卓版
查看卡通農場最新版
查看草莓公主甜心跑酷 安卓版v1.2.3.2
查看猿族時代正版 v0.65.1最新版
查看皇帝成長計劃2手機版 v2.2.3
查看悠久之樹
查看新三國志曹操傳官方版 v1.0.10
查看天龍八部2飛龍戰(zhàn)天手游(附攻略) 官方版v6.5.0
查看雷神之錘
查看bikeMayhem中文版 v1.6.2
查看三國兵臨天下最新版 v1.0.6安卓版
查看草莓公主甜心跑酷游戲 最新版v1.2.3.2
查看彈殼特攻隊安卓版
查看鐵甲鋼拳 v1.85.59安卓版
查看