Bitcoin Script P2PKHの解説




Bitcoin Scriptとは

Bitcoinをはじめ、BitcoinからハードフォークしてできたBitcoinCash、BitcoinSV、LitecoinなどでBitcoin Scriptが動作しています。

Bitcoin Scriptの基本動作はスタックマシンです。OP_CODEというオペレータをスタックに積んで順番に処理するようになっています。BitcoinはBitcoin Scriptを使って送金処理を行なっています。

Bitcoin Scriptの仕組みは同じでもそれぞれの通貨で使用できるOP_CODEが違ったり、実行されているScriptの中身が少し異なります。Bitcoinで使われているOP_CODEは下記に定義されています。

Script – Bitcoin Wiki

P2PKH Pay-to-Public-Key-Hashとは

P2PKHはBitcoinがSegWitを導入する前に使われていた送金するためのスクリプトです。現在はBitcoinCash、BitcoinSV、Litecoinなどで使われています。

送金のスクリプトの基本的なルールは、UTXOのoutputに含まれるLocking Script(scriptPubKey)を解除するためにUnlocking Script(scriptSig)をinputに入れて解除することです。このトランザクションに対して秘密鍵で署名してブロードキャストすることで送金が完了します。

上記を踏まえて、P2PKHはLocking Scriptに送金相手のPublicKey:公開鍵のRIPEMD160(SHA256(PublicKey))したハッシュ値を含むLockgin Scriptで送金することを言います。

では実際にLocking ScriptとUnlocking Scriptの中身を見ていきます。

※補足解説:スクリプト中に現れる<>は中の値をスタックにプッシュするという意味です。

Locking Script

OP_DUPはスタックの1番上に入っている値をコピーしてスタックに追加します。OP_HASH160はスタックの1番上に入っているスタックを取り出してRIPEMD160(SHA256())に処理を通してスタックに追加します。

20-bytes-pubkey-hashは送金先の公開鍵をRIPEMD160(SHA256(PublicKey))した値で20 Bytesのハッシュ値になります。

OP_EQUALVERIFYはスタックの1番上と2番目の値を取り出し比較します。

OP_CHECKSIGは公開鍵と署名の値を取り出し、トランザクションデータと一致するか検証を行います。一致した場合Trueがスタックに積まれUTXOを使用できることになります。

OP_DUP OP_HASH160 <20-bytes-pubkey-hash> OP_EQUALVERIFY OP_CHECKSIG

Unlocking Script

自身の秘密鍵で署名した結果と、秘密鍵に対応する公開鍵をセットします。

<signature> <pubkey>

上記で紹介したLocking ScriptとUnlocking Scriptを同時に実行して検証が成功すれば送金することができます。

The following two tabs change content below.

髙妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 2018年仮想通貨のスマホウォレットを提供するGinco Incにブロックチェーンエンジニアとして入社。






よく読まれている関連記事はこちら




コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です