前回は、ビットコインにおいてお金は取引の履歴で表されることを説明しました。
今回は、その取引をビットコインではどう表しているかについて説明します。
少しコンピュータの要素が強くなってきますが、電子署名、ハッシュといった専門用語についても、非エンジニアに向けてやさしく解説していきます。
第一回から読みたい方はこちらからどうぞ。
取引の表し方
取引は主に以下の情報です。
- 誰から
- 誰に
- いくら送った
ビットコインにおいてもこれらの情報のカタマリとして表現しています。さらに、ビットコインにおける取引には2つのポイントがあります。
これは、現実世界の銀行振込でも同じですね。銀行振込でAさんからBさんに100円を送る場合は、Aさんの100円以上入っている銀行口座から、Aさんの通帳と銀行印で本人であることを証明します。
これをコンピュータ上で表すための仕組みを説明してきます。以下の図の例では、Aさんが100円持っている状態からBさんへ100円送る取引を示しています。
Aさんが100円持っていることを示すために、100円持っている状態の取引から、Bさん宛の取引を作成します。
そして、Aさんが本人であることを証明するために、電子署名という仕組みを使っています。取引の情報(Bさん宛のアドレス、金額)をハッシュ値という値に変換し、それに対してAさんしか知らない鍵(通帳と銀行印に相当)を使って署名をします。
これで、AさんからBさんへいくら送ったかという取引の情報を示せます。
さて、ハッシュや電子署名といった専門用語がでてきたので、これらについて説明していきます。
ハッシュとは
ハッシュとは、あるデータを一定長の小さなデータに変換することです。
ハッシュには以下の特徴があります。
元のデータを小さなデータに変換し、その値が元のデータを一意に示すという性質が便利なことから、いろいろな場面で使われており、電子署名にもこのハッシュが使われています。
ハッシュについては、ここだけでなく、取引の承認の仕組みでも使われていますので、記憶にとどめておいてください。
送金者を証明する仕組み「電子署名」
電子署名とは、あるデータについて、それを作成したのが作成者本人であることを示すための仕組みです。
電子署名には公開鍵暗号方式という暗号の仕組みが使われています。公開鍵暗号方式とは、秘密鍵(人に公開しない鍵)と、公開鍵(人に公開する鍵)のペアの鍵を使って暗号化する仕組みです。
電子署名では、上の図のように、署名者の秘密鍵にて署名(暗号化)したハッシュ値は、署名者の公開鍵にて復号化 する (元のデータに戻す)という形で使います。
これによって誰でも、署名者(Aさん)の公開鍵で復号化したハッシュ値と、取引データから計算したハッシュ値とを突き合わせることで、取引が改ざんされていないことが確認できます。
公開鍵は、ビットコインにおいては宛先を示すアドレスとしても使用しています。先の取引を示す図での「Bさん宛」を示す情報は、実はBさんの公開鍵です。
公開鍵からは秘密鍵が推測できないようになっており、公開しても秘密鍵が漏れることなく安全です。ただし、秘密鍵が漏れると、送金の権利が漏れるということなりますので、その人のすべてのビットコインが盗まれるということになります。
取引の履歴=電子署名のチェーン
取引の構造としては、以下の図のようになります。
ビットコインにおいて、お金(取引の履歴)は、電子署名のつながり(チェーン)として表現しているというわけです。
次回:取引の承認の仕組み
次回からはいよいよビットコインの肝となる取引の承認の仕組みについて説明していきます。