Protocol

什麼鍵用於創建腳本?

  • April 10, 2019

我正在嘗試在我的交易中籤署輸入。問題是:必須在“腳本”中使用哪個密鑰,私有的還是公共的?在那裡公開私鑰會很愚蠢,對吧?但是,如果我提供公鑰(每個人都知道),網路如何確定是我呢?

公鑰在腳本中使用。從技術上講,它是pubKeyHash,即RIPEMD160(SHA256(publicKey)),這意味著在交易花費之前不會洩露公鑰。

驗證者可以確保使用特定公鑰鎖定的錢是你花的方法是對花費它的交易進行數字簽名,私鑰與公鑰匹配。可以根據公鑰驗證數字簽名,以確保只有相應的私鑰可能創建了簽名。

假設 P2PKH 交易具有scriptPubKey以下形式:

OP_DUP OP_HAS160 pubKeyHash OP_EQUALVERIFY OP_CHECKSIG

要花費的輸入腳本具有以下形式

signature publicKey

當輸出被花費時,花費交易的簽名和公鑰在scriptPubKey被評估之前被壓入堆棧。

該腳本首先使用 with 複製堆棧頂部的公鑰OP_DUP,然後OP_HASH160在頂部項目上執行。(HASH160 執行與創建原始文件相同的 RIPEM160 和 SHA256 pubKeyHash)。這將從堆棧中刪除重複的公鑰並用公鑰雜湊替換它。

然後腳本將pubKeyHash嵌入到堆棧中的內容scriptPubKey推送到堆棧中。然後比較堆棧頂部的兩項是否相等(OP_EQUALVERIFY),並從堆棧中彈出。如果相等測試失敗,腳本會提前失敗。

棧頂剩餘的公鑰和簽名成為 的參數OP_CHECKSIG,驗證整個交易的簽名是否對應公鑰。簽名和公鑰從堆棧中彈出並替換為真或假,表示腳本評估的最終結果。

引用自:https://bitcoin.stackexchange.com/questions/85958