BitcoinScript
例:OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
トランザクションに埋め込まれている?電子署名と署名の検証を行っている。
左から右に処理していく、チューリング完全でもなくループは発生しない。
送るビットコインが次にどのようにしたら使用することができるようになるかを記述している。
スクリプトの実行後に1(true)が残れば検証成功, 0(false)検証失敗
2 + 4 == 6のスクリプト
2 4 OP_ADD 6 OP_EQUAL
署名の検証ではScriptPubkeyとScriptSigをつなげた一連のスクリプトを実行する
例
? + 4 = 6となる鍵を鍵を持つ人がUTXOを使用できるとすると
table:Script
スクリプト 内容
ScriptSig 2
ScriptPubkey 4 OP_ADD 6 OP_EQUAL
検証スクリプト 2 4 OP_ADD 6 OP_EQUAL
通常、ScriptSigには秘密鍵による署名を使ったスクリプトを、ScriptPubkeyにが公開鍵を使ったスクリプトを設定する
よく使われるスクリプト
table:Script
OP_EQUAL 入力が等しいとき1を返し、そうでない場合は0を返す
OP_VERIFY 一番上のスタック値がtrueでない場合、無効のトランザクションとする。一番上のスタック値を削除
OP_EQUALVERIFY OP_EQUALのあとにOP_VERIFYを実行する
OP_CHECKSIG トランザクション全体の入出力、及びスクリプトがハッシュされる。使用する署名はこのハッシュと公開鍵
の有効な署名である必要がある。有効であれば1、無効であれば0を返す。
OP_DUP 一番上のスタックを複製する
P2PKHで使われているスクリプト
table:Script
スクリプト 内容
ScriptPubkey OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG
ScriptSig <sig> <pubKey>
検証スクリプト <sig> <pubKey> OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG