Transaction(署名)
2.電子署名
<署名の流れ>
https://gyazo.com/8b1fd3dae77c7d8a5934919016ac185d
図2:署名のフローチャート
table:signature hashの元ネタ
項目 説明
version トランザクションのバージョン
in_count インプットの数
in_list インプットをシリアライズしたもののリスト
out_count アウトプットの数
out_list アウトプットをシリアライズしたもののリスト
lock_time ロックタイム
signature hash type 署名の種類
table:signature hash type(署名の種類)
種類 署名対象 Input 署名対象 Output
SIGHASH_ALL 全てのInput 全てのOutput
SIGHASH_NONE 全てのInput
SIGHASH_SINGLE 一つのInput 一つのOutput
SIGHASH_ALL + SIGHASH_ANYONE-CANPAY 一つのInput 全てのOutput
SIGHASH_NONE + SIGHASH_ANYONE-CANPAY 一つのInput
SIHASH_SINGLE + SIGHASH_ANYONE-CANPAY 一つのInput 全てのOutput
<署名検証>
Bitcoinではトランザクションの有効性を検証するためにScript言語というものを用いています。
ScriptPubKeyには電子署名をする命令、インプットのScriptSigには電子署名をスクリプト言語で記述します
スクリプト言語はスタック(先入後出し)で構成されます。
記述されたスクリプトの実行後のスタックの状態をみて、署名検証の成功を判断します
スタックが1なら成功、それ以外は失敗です
https://gyazo.com/3dfe7e2a418d4b51caee5df399c042ef
図3:署名の最終スタック状態