經(jīng)過(guò)第五章的學(xué)習(xí),其實(shí)對(duì)區(qū)塊鏈有一個(gè)更深的了解,就是,不僅區(qū)塊前后相連,而且交易和交易之間也是相連,一個(gè)普通交易的輸入部分總是前面某個(gè)交易的輸出UTXO。在《比特幣 (1):傳統(tǒng)貨幣和比特幣的區(qū)別》中看到的相連,就是普通交易之間的相互連接;在《比特幣 (2):區(qū)塊鏈的大致結(jié)構(gòu)》中看到的相連,是區(qū)塊之間的相互連接。
假設(shè)你已經(jīng)閱讀完第五章,對(duì)于為啥需要腳本也比較清楚了。首先明確一下,交易輸入其實(shí)是之前某個(gè)交易的某個(gè)輸出UTXO,是按照之前那個(gè)交易的Hash值加上對(duì)應(yīng)輸出在該交易中的位置標(biāo)記的。一旦UTXO被選中,錢包會(huì)為每個(gè)UTXO生成包含簽名的解鎖腳本,換句話說(shuō),每個(gè)解鎖腳本都對(duì)應(yīng)的是一個(gè)之前某個(gè)輸出的某個(gè)UTXO。
對(duì)于解鎖腳本加上鎖定腳本拼在一起,按照棧的方式運(yùn)算,這個(gè)書中第五章已經(jīng)說(shuō)得很明確了,最重要的是棧操作的最后一步:
棧內(nèi)是
其實(shí)CHECKSIG很簡(jiǎn)單,就是基于一定的規(guī)則,看看之前錢包生成的
正如前面所述,正在檢查的這個(gè)解鎖腳本,是放在該交易下面的該輸入中,會(huì)對(duì)應(yīng)一個(gè)之前某個(gè)交易的某個(gè)輸出UTXO,那么假設(shè),之前這個(gè)交易叫 TxPrev,而當(dāng)前包含這個(gè)解鎖腳本的交易叫TxNew(即TxNew的某個(gè)輸入是該UTXO)。按照上圖中說(shuō)明的CHECKSIG的步驟(根據(jù)簽名類型SIGHASH_ALL對(duì)整個(gè)交易進(jìn)行驗(yàn)證):
1. 在棧中pop出
2. TxPrev中該UTXO對(duì)應(yīng)的輸出腳本,也即鎖定腳本,會(huì)有很多的操作系列,每個(gè)操作系列之間使用OP_CODESEPARATOR分隔。取這個(gè)腳本最后一個(gè)操作系列,也就是倒數(shù)第一個(gè)OP_CODESEPARATOR和腳本結(jié)束之間的部分(上圖與該邏輯不符合),取出來(lái)即為Subscript,注意該Subscript對(duì)應(yīng)的是TxPrev下面的一個(gè)輸出UTXO。
(3. 在Subscript中去掉簽名)
4. 在Subscript中移除OP_CODESEPARATORS
5. 之前從棧中彈出的
6. 復(fù)制TxNew為TxCopy
7. 將交易TxCopy中的所有輸入中的解鎖腳本置為空(因?yàn)樯厦嬲f(shuō)過(guò),CHECKSIG是和生成
8. TxCopy中正在檢查的解鎖腳本位置,替換為經(jīng)過(guò)步驟4處理完的Subscript
9. 序列化TxCopy,添加4字節(jié)的簽名類型,即在步驟5中提到的簽名類型,因?yàn)樵?中是1個(gè)字節(jié),現(xiàn)在變成4個(gè)字節(jié),這時(shí)候才會(huì)涉及大小端問題,存為小端模式。得到的最終信息假設(shè)叫verifyThisStr。
10. 之前
至此,交易腳本的驗(yàn)證過(guò)程結(jié)束。
這里面最重要的是:
1. 生成verifyThisStr的過(guò)程,確保了每次進(jìn)行加密解密的內(nèi)容都不一樣
2. 個(gè)人錢包使用用戶的私鑰進(jìn)行加密,其他人利用用戶公開的公鑰進(jìn)行解密
-
區(qū)塊鏈
+關(guān)注
關(guān)注
112文章
15565瀏覽量
107623 -
比特幣
+關(guān)注
關(guān)注
57文章
7006瀏覽量
142317
原文標(biāo)題:區(qū)塊鏈系列--比特幣 (5):交易腳本詳解
文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
究竟比特幣是什么
比特幣交易所系統(tǒng)開發(fā)如何適應(yīng)海外市場(chǎng)?
比特幣交易平臺(tái)排名情況
比特幣是不是電子貨幣_(tái)比特幣怎么交易
比特幣交易網(wǎng)站哪個(gè)好?比特幣交易網(wǎng)站排名一覽
比特幣ETN代表著比特幣交易所交易基金的一個(gè)軟開端
比特幣OTC場(chǎng)外交易市場(chǎng)具有哪些特點(diǎn)?
比特幣期貨的交易模式及風(fēng)險(xiǎn)
什么是灰塵比特幣交易
比特幣交易究竟是如何運(yùn)作的

評(píng)論