區塊鏈學習(4)交易(二)
阿新 • • 發佈:2018-09-09
圖靈 比特幣 生成 入棧 部分 pub png 組合 數字
上次大致講了比特幣的交易模式。接著講講比特幣的交易。比特幣的交易驗證引擎依賴於兩類腳本來驗證比特幣交易:一個鎖定腳本和一個解鎖腳本。
鎖定腳本鎖定了一個輸出值,同時它明確了今後花費這筆輸出的條件。鎖定腳本往往含有一個公鑰(即比特幣地址)。解鎖腳本是解開輸出上設定的花費條件的腳本,同時它將允許輸出被消費。解鎖腳本是每一筆比特幣交易輸入的一部分,而且含有一個通過用戶的私鑰生成的數字簽名。
每次交易都會通過執行鎖定腳本和解鎖腳本來驗證這筆交易。一次交易的輸入指向的UTXO,這個UTXO有一個鎖定腳本,如果這個輸入的解鎖腳本能解開UTXO中的鎖定腳本, 則可以使用這個UTXO。下圖就是腳本驗證之前將解鎖腳本和鎖定腳本串聯而成的組合腳本。
比特幣腳本語言被稱為基於棧語言,圖靈非完備的,就是沒有循環或者復雜流控制功能。比特幣的腳本語言就是由一堆命令和參數組成的,上圖中的DUP,HASH160,EQUALVERIFY,CHECKSIG就是命令<sig> <Pubk> <PubkHash>就是參數。腳本的執行方式和表達式的執行有點像。比如 2 5 + 這個後綴表達式,2和5就是參數,+ 是命令,2先入棧,5再入棧,遇到+ 是執行命令得出2+5得到7。比特幣的腳本執行也是類似的。下面看下最常用的P2PKH,以上圖的解鎖腳本和鎖定腳本為例。
腳本的存在增加了交易驗證的多樣性,也使比特幣作為一種可編程貨幣,但Standard()函數定義了五種類型的標準交易。這五種標準交易腳本是僅有的被客戶端和大多數運行客戶端的礦工們所接受的腳本。P2PKH、P2PK、MS、P2SH和OP_Return。這裏只介紹了P2PKH。
區塊鏈學習(4)交易(二)