今回のおはなし
みなさんこんにちは。
VIPPOOL でエンジニアをやっています、星月です。
前回は P2PKH の動作原理について解説しました。
それでは実際にテンプレートを埋める方法について説明していきます。
各要素とコインアドレスの関係
まずは各要素の関係について確認しておきましょう。
基本的に一方通行ですが、コインアドレスと公開鍵のハッシュだけ、
相互に変換可能なところに注意してください。
秘密鍵と公開鍵のペアを作成する
openssl を使うと簡単に作れます。
secp256k1 という名前の曲線を使いますが、比較的新しいバージョンの openssl でないと
使えないので注意してください。
$ openssl ecparam -genkey -name secp256k1 -out wallet.pem $ openssl ec -in wallet.pem -conv_form compressed -text Private-Key: (256 bit) priv: 00:8d:6a:af:b3:37:d6:e3:dd:5a:96:c1:54:95:c6: cd:4b:65:1e:52:d0:82:e3:e2:a7:89:28:35:bb:94: 9c:e1:07 pub: 02:b4:ee:a1:4b:61:45:a8:97:f8:75:61:3c:80:fe: 3b:3f:50:d4:69:a5:b2:88:6b:50:5f:55:f6:a3:08: b9:e8:74
priv が秘密鍵 256bit、pub が compressed 形式の公開鍵です。
公開鍵のハッシュを求める
次は公開鍵のハッシュを求めます。
公開鍵の : を \x に置換して繋げてから、
openssl で sha256, ripemd160 の順でハッシュを計算します。
$ printf "%b" "\x02\xb4\xee\xa1\x4b\x61\x45\xa8\x97\xf8\x75\x61\x3c\x80\xfe\x3b\x3f\x50\xd4\x69\xa5\xb2\x88\x6b\x50\x5f\x55\xf6\xa3\x08\xb9\xe8\x74" | openssl sha -sha256 -binary | openssl sha -ripemd160 (stdin)= db2e054bb576dc63283c0060abd46df14057c2de
これが公開鍵のハッシュです。
今回はここまで。
ご質問、ご意見等ありましたらお気軽にリプライください。