當我們討論比特幣交易的運作原理時,P2PKH 在比特幣交易中發揮著很重要的作用。它有助於確保比特幣的交易和存儲。 P2PKH的全寫是 “Pay to Public Key Hash”。公鑰哈希是比特幣地址的多種格式之一,另一種是P2SH,“Pay to Script Hash”。 基本上,P2PKH就是代表著“支付給這個比特幣地址”。這是在區塊鏈上的指令,將比特幣從目前擁有者轉移到新擁有人地址。每個比特幣交易的背後,都有一些代碼在後台運行,該代碼是比特幣編碼語言。

基本原理

在深入討論P2PKH概念之前,令一個極其重要的概念是Unspent Transaction Outputs(UTXO),即是未消費的交易輸出。在比特幣交易中,UTXO是我們經常使用和消費的東西。 UTXO的支出只能是一次,在我們使用它之後,我們將其稱為支出交易輸出。

交易運作的概念

在每個交易中,它將包括數字、輸入、輸出和鎖定時間。

輸入: 在這種情況下,包含 端點、序列號解鎖編碼 (又稱為 scriptSig)。 

輸出: 包含所花費的金額和鎖定編碼值,也稱為scriptPubKey

在每個交易中,它將包括數字、輸入、輸出和鎖定時間。

每筆交易至少要有一個輸入和輸出。輸入是用作告知網絡需要消耗那種UTXO,並確保允許使用它們。輸出是用於確保未來的交易將能夠使用新創建的UTXO。 

以下圖顯示了交易關係:

建立交易的步驟

步驟 1:

確定先前包含UTXO的交易(您擁有的比特幣)

步驟 2:

新交易輸入點的設立是用於識別前交易已使用的UTXOs

步驟 3:

最後,如創建新的UTXOs去解鎖下一個交易,您必須為新交易建立輸出,這樣鎖定編碼值便會包含條件

步驟 4:

最後,建立一個符合先前交易鎖定編碼的解鎖編碼。最後一步是收件人的簽名,該簽名也將包含在解鎖編碼中,但是,這部分將實際放在交易的中間。 

術語

1. PubkeyScript (另稱為 scriptPubKey 或 locking script);
2. SignatureScript (亦稱為 scriptSig 或 unlocking script)

PubkeyScript是一張記錄了交易記錄的指令列表,它控制了下一名使用者如何解鎖已接收的比特幣並傳送。收款人會製造一個 signature script,而該文件必須滿足最後一個發送者創建的PubkeyScript的參數。

PubkeyScript的參數:

1. 公鑰哈希 (Public Key Hash) (比特幣地址)
2. 電子簽署

P2PKH地址的擁有者只能透過提供公鑰哈希和私鑰簽名來解鎖 PubkeyScript和使用已發送的資金。

在一般情況下,Bob 會提供比特幣地址給 Alice,而Alice 會將比特幣發送給Bob。Alice 輸出的時候會設立一個PubkeyScript。Alice 完成交易後,交易被發送到了比特幣網絡上,比特幣便會出現在Bob 的錢包裏。

如果Bob想使用他剛剛收到的比特幣,他必須證明自己是Alice 指定的比特幣地址的擁有人。 Bob 需要建立一個包含他的電子簽署和公鑰的scriptSig。

ScriptPubKey 制定比特幣轉移的條件。在 P2PKH,條件就是「比特幣地址的擁有人能證明自己擁有該錢包地址,才能將比特幣傳遞給其他人」,而這個人只能是Bob。

因此,scriptSig是由 Bob 制定的數據,它能夠配合由Alice 制定的 scriptPubKey的要求,他就可以將比特幣發送給另一個人。

真實例子

為了更好地理解這一點,讓我們看一個例子。我們從blockchain.com進行了隨機抽取一個交易,您可以按 此處。

輸入:

Pkscript:

Hex:

76a9144fd31c644c4b46c153601d0e194ab689570f4ce488ac

ASM:

OP_DUP
OP_HASH160
4fd31c644c4b46c153601d0e194ab689570f4ce4
OP_EQUALVERIFY
OP_CHECKSIG

Sigscript:

Hex:

483045022100c71b09c8161ca14b6ef96f155173bda080d72bb77953122f268b9527ff806f9302200fac42255dbe0317bbbea75837fe2e9e9bfdb3fc1161d5c45353dfdf4ecba074012102f4c4c2b0b7c23b472cdc8c27d22a41677d7e69e220675647ccf231831e5113cf

ASM:

3045022100c71b09c8161ca14b6ef96f155173bda080d72bb77953122f268b9527ff806f9302200fac42255dbe0317bbbea75837fe2e9e9bfdb3fc1161d5c45353dfdf4ecba0740102f4c4c2b0b7c23b472cdc8c27d22a41677d7e69e220675647ccf231831e5113cf

In the example above, we can see the PubKeyscript and the scriptSig denote as Pkscript and Sigscript. Pkscript, as before, represents the instructions that are given to the user so that they can unlock the script. You can see that there are two representations of the Pkscript, one in Hex and another in ASM. Hex is the hexadecimal representation of the Pkscript and ASM, assembly, is the representation of Bitcoin’s scripting language op-codes. 

The OP that you see in front of the ASM Pkscript are codes of instruction that execute by the CPU. The Hex and the ASM are also relatively the same except for the “48” and 21” that indicate via (bolded) in the Sigscript for Hex. So these are op-codes that inform the interpreter to put a specific amount of bytes into a stack. Hence, for the Sigscript, it tells you to put 72 bytes (0x48) to the stack and 33 bytes (0x21) for the public key. 

輸出:

Hex:

In the example above, one transaction records as “spent” and in red, and the other records as “unspent”, in green. The “spent” transaction means that the output was spent in a subsequent transaction and will not be able to be spent again. The “unspent” transaction (UTXO) is available for spending in future transactions.

ASM:

從上面的示例來看,對於ASM中的Pkscript,再次有“ OP”代碼,它們是CPU要執行的指令。在代碼中,您可以看到它要求CPU“驗證”用戶,還要求“ checksig”以確保交易有效。這就是允許比特幣交易在確保准確性的同時還保持安全性的原因。

總結

支付給公鑰哈希是一個重要的概念,它描述所有權限的轉移。還有許多其他種類,例如P2PK,P2SH,P2MS等,但是它們都是基於同一個概念上運作。

參考

通訊

What is Hedget (HGET)?

What is Hedget (HGET)? What is Hedget (HGET)? If you are reading this article then I assume that you have heard about DeFi. DeFi also

更多

What is Rio DeFi?

What is Rio DeFi? What is Rio DeFi? Rio DeFi is a blockchain technology company. The mission of Rio DeFi is to accelerate the mass

更多

Crypto 101: What are Privacy Tokens?

When you hear Privacy Tokens you might think of something similar to Bitcoin and Ethereum, two extremely well-known cryptocurrencies. However, unlike Bitcoin and Ethereum, privacy

更多

區塊鏈 101:什麼是 IOTA?

IOTA is a distributed ledger technology that is used to record and execute transitions between devices in the Internet of Things (IoT) ecosystem. IOTA hopes

更多

加密貨幣101:什麼是 Tezos (XTZ) ?

歡迎閱讀加密貨幣101:什麼是 Tezos (XTZ) ? Tezos是一個去中心化應用程式(dApps)和智能合約的區塊鏈平台。這平台是由Google X和Waymo的研究工程師Arthur Breitman和Arthur Breitman的妻子Kathleen Breitman 開發。

更多