7 - 3 P2PKH 腳本

解鎖腳本 scriptSig

當一筆錢送到某個地址時,這筆錢是被「可以解鎖這個地址的私鑰」的這個腳本鎖定,

也就是 scriptPubKey,這樣做就是要接收方能提供公鑰以及簽章來確認身份。

所以 scriptSig 會是 <signature> <pubKey> 這樣的形式。

鎖定腳本 scriptPubKey

而標準的 P2PKH 的鎖定腳本會是 OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

執行 P2PKH

示意圖:

Script: <signature> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG

執行時將 scriptSig scriptPubKey 擺在一起,準備執行

Script: <signature> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
Stack: [ ]

Script: <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
Stack: [ <signature> ]

Script: OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
Stack: [ <signature> <pubKey> ]

Script: OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
Running: <pubKey> OP_DUP
Stack: [ <signature> <pubKey> <pubKey> ]

<signature> <pubKey> 丟進 stack 裡後,執行 OP_DUP:拿出棧頂,複製一個,再推回棧頂

接著 OP_HASH160, 將棧頂元素做 hash 160,再推回棧頂

Script: <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
Running: <pubKey> OP_HASH160
Stack: [ <signature> <pubKey> <pubKeyHash> ]

再將 <pubKeyHash> 推入

Script: OP_EQUALVERIFY OP_CHECKSIG
Stack: [ <signature> <pubKey> <pubKeyHash> <pubKeyHash> ]

OP_EQUALVERIFY 檢查棧頂兩個元素是否相同

如果相同,最後會執行

Script:
Running: <signature> <pubKey> OP_CHECKSIG
Stack: [ True ]

如果 True,那麼就可以用這筆 UTXO


results matching ""

    No results matching ""