ブロックに入る取引データは、どのように生成される?
ここまでブロックのデータ構造やブロック生成のプロセスの解説によって、中央管理者がおらずともデータの更新から共有までが、安全かつ自動的に行われていくことがご理解いただけたでしょうか。
次に、それぞれのブロックに入る取引のデータが、どのように生成されるかを見ていきたいと思います。
一つひとつの取引データの内容は、「2017年1月15日12時00分に、AというアドレスからBというアドレスへ0.5BTCが送金されました」といったものです。ここで重要なのは、本当にAさんが送金したのか、また本当にAさんの所有する暗号通貨を送金したのかという点です。
この問題の解決のために、ブロックチェーンでは、インターネットサイトの閲覧においても用いられる「公開鍵暗号方式」と呼ばれる技術を利用しています。公開鍵暗号方式とは、インターネット通信を行う際の、データの機密性および真正性を担保するために利用されています。
データの機密性とは、データの中身を読み取れないようにすることで、データの真正性とは、送信者が正しいかを確認できるようにすることです。
公開鍵暗号方式では、自分だけが知っている「秘密鍵(プライベートキー)」と、外部に公開している「公開鍵(パブリックキー)」というペアの暗号鍵があります。
公開鍵は、秘密鍵をもとに生成されますが、公開鍵から秘密鍵を知ることはできません。ハッシュ値とそのもとのデータの関係に似ています。実はその通りで、ここにもハッシュ関数が利用されています。
この鍵を用いて、データの暗号化を行うことができます。このときの暗号化とは、もとのデータをハッシュ関数にかけて、解読の難しい英数字の文字列にすることだと思ってください。
ここで秘密鍵によって暗号化されたデータは、公開鍵で復号ができますが、公開鍵によって暗号化された内容は秘密鍵を持っている者だけしか閲覧することができません。
暗号化されたデータを、もとのデータに戻すことを復号化と呼んでいます。
[図表1]公開鍵暗号方式とは?
電子署名ができることが「暗号通貨の所有」の証明に
さて、田中さんという人が、暗号通貨を誰かに送金したいとしましょう。まず、送金者である田中さんは、自分の秘密鍵を用いて取引の内容を暗号化します。そうして暗号化された取引の内容を、ブロックに入れてもらうために送信します。これを「ブロードキャスト」と呼びます。
この時、暗号化された取引の内容は、田中さんの公開鍵でしか復号できません。逆に言うと、田中さんの公開鍵で復号し、取引内容を確認できるということは、確実に田中さんが送信したものだと断定できます。
ブロードキャストされた取引データを受け取ったマイナーは、田中さんの公開鍵で取引内容を復号することで、田中さんが行ったものだと確認できてから、ブロックの中に記録していきます。
その後のフローは、これまでに説明した通りです。
この例のように、送信された内容が確実に田中さんが行ったと証明する手段を「デジタル署名」と呼んでいます。
暗号通貨の送金の場合に、「電子署名する(デジタル・シグネチャー)」というのは、取引内容を自分の秘密鍵で暗号化することと同義と言えます。この電子署名は、銀行を利用しての送金の際に行う、書面への印鑑およびサインでの本人確認にたとえることができるでしょう。
所有している暗号通貨を送金できるのは、電子署名が正しく行われた時だけです。
それはつまり、電子署名ができる(=秘密鍵を所有している)ことが、暗号通貨の所有の証明とも言えるわけです。
まさに、秘密鍵は銀行印のような存在ですので、大切に保管することが重要です。
秘密鍵とはデジタルデータですので、実際は、「5937845929966acf30f407fbdejdl5baed1d69fd23wne6ee1af66ce32571efddeeff」のような文字列です。
そのため、物理的に存在する銀行印よりも管理がしにくい上、もしインターネット上で公開してしまうとコピーをされ、不正に電子署名が行われて暗号通貨を送金されてしまうかもしれません。
暗号通貨を保有されている方は、秘密鍵の管理をしっかりと行われたほうが、賢明でしょう。
このように、取引内容に対して電子署名を行うという方法を取ることで、正しい暗号通貨の所有者だけが送金を行える仕組みを担保しています。
したがって、勝手に他人の持つお金を送金することはできません。
[図表2]暗号通貨の送金の流れ