ブロックチェーンのハッシュとは?仕組みや関係をわかりやすく解説

カテゴリ knowledge

仮想通貨の取引を行うブロックチェーンには、安全に取引をするためのさまざまな技術が使われており、「ハッシュ」もその中のひとつです。この記事では、ブロックチェーンとハッシュについて、それぞれの仕組みや関係性などを解説していきます。 

1 ブロックチェーンの技術・仕組み

 

ブロックチェーンとは、あらゆる取引のデータを保存する分散型ネットワーク技術のことです。複数のユーザーによって取引が行われると、トランザクションと呼ばれる取引履歴がブロックに記載されます。ブロック内のトランザクションが一定量を超えると新たなブロックが形成され、それぞれがチェーンで結ばれるため、ブロックチェーンと名付けられました。

まずは、ブロックチェーンを理解する上で欠かせない3つの仕組みを解説します。

1.1 P2Pネットワーク

P2P(Peer to Peer:ピアツーピア)とは、ネットワーク上でデータを送受信する際に用いられる通信方式のことです。

通常、あるユーザーが相手にデータを送る場合は、サーバーを通じて送信します。そのため、サーバーがウイルスに感染すると、ネットワーク全体に影響をおよぼす点が問題点でもありました。

しかし、P2Pネットワークでは、サーバーを経由して送信するのではなく、それぞれのユーザーが使用する端末そのものがサーバーの役割を果たします。つまり、従来のネットワークのように全体を管理するサーバーを持たないことで、サーバーを狙った攻撃を受けるリスクを抑えることが可能です。また、万が一あるユーザーの端末がウイルスに感染したとしても、ブロックチェーンのシステム全体は影響を受けにくいという利点もあります。 

1.2 コンセンサスアルゴリズム

コンセンサスアルゴリズムとは、「Consensus」と「Algorithm」を組み合わせた単語で、直訳すると「合意方法」を意味します。

ブロックチェーンのように管理組織を持たない非中央集権型の仕組みでは、仮想通貨を用いて取引が行われると、その取引が正常であったかどうかを判断する必要があります。とはいえ、すべてのユーザーの意見を取り入れるのは困難です。そこで、誰がどのように取引の判断を下すのかをコンセンサスアルゴリズムによって定めているのです。

通貨によって採用されるコンセンサスアルゴリズムは異なりますが、大きく分けて以下の4種類があります。

 

  • PoW(Proof of Work:プルーフオブワーク)

PoWは、コンセンサスアルゴリズムの代表ともいわれ、仮想通貨の中でも特に知名度の高いビットコインやイーサリアムなどが採用しています。

  • PoS(Proof of Stake:プルーフオブステイク)

多くの仮想通貨が採用しているPoSは、マイニングの速さではなく、通貨の保有量の多さが基準となります。

 

  • PoI(Proof of Importance:プルーフオブインポータンス)

PoIは、通貨の保有量のほか、取引回数や取引量をもとにコミュニティへどれだけ貢献しているかを重視し、多くの通貨を保有して活発に取引を行うユーザーを承認者として認めます。

 

  • PoC(Proof of Consensus:プルーフオブコンセンサス)

PoCは、ユーザー数の多さで知られるリップルが採用しているコンセンサスアルゴリズムで、個人ユーザーではなく金融機関などの組織から選出されるのが特徴です。

1.3 スマートコントラクト

スマートコントラクトとは、「Smart」と「Contract」を組み合わせた単語で、直訳すると「賢い契約」を意味します。

たとえば、ユーザーAがユーザーBへ5,000円の商品を売る契約をした場合、商品を売るユーザーAと、5,000円を支払うユーザーBの両者がきちんと債務を履行するために、契約書を作成することがあります。契約書を作成する際には、複製されたり、改ざんされたりするリスクを防ぐため、署名や押印を行うのが一般的です。高額な取引の場合には、保証人を用意することもあります。

スマートコントラクトでは、ブロックチェーン上で行った取引の記録が契約書や債務履行の役目を果たすため、通常の契約のように契約書を作成する必要がありません。ユーザー間の契約はもちろん、債務履行の確認や取引処理も自動で行うことができるため、スムーズな取引が可能です。 

2 ハッシュの仕組み

ブロックチェーンを理解するためには、P2Pネットワークをはじめ、いくつかの特徴を押さえておくことが重要です。しかし、ブロックチェーンに記録された取引データが安全に保護されるためには、さらにもうひとつの技術である「ハッシュ」を知っておく必要があります。 

ハッシュとは、データを通信する際に取引データを英数字の羅列に暗号化する技術のことです。主にデータの偽造や破損のリスクを防ぐための技術で、暗号化するための計算式を「ハッシュ関数」、そして、暗号化された英数字の羅列を「ハッシュ値」といいます。

ひとつのデータから算出されるハッシュ値は、何度計算しても同じ値となりますが、データがわずかでも違えば、まったく異なるハッシュ値へと変化するのが大きな特徴です。

また、データの大きさに関わらず、算出されるハッシュ値の長さは一定となるため、ハッシュ値からもとのデータ量を予測することは容易ではありません。したがって、仮に第三者が不正にハッシュ値を入手したとしても、もとのデータに復元したり、データを書き換えたりすることは不可能だといえるでしょう。

データの送信者は、データから算出されるハッシュ値とともにデータを送信します。受信者は、受け取ったデータをハッシュ関数によってハッシュ値に変換し、送信者から送られたハッシュ値と同じ数値であるかを確認することで、データが改ざんされることなく安全に届いたことを確認します。

前述したように、もととなるデータが同じであれば同じハッシュ値が算出されますが、わずかでも不正に改ざんが行われていればまったく異なる数値が算出されるため、両者はハッシュ値を比較することによって、安全に取引することが可能となるのです。

2.1 ハッシュとブロックチェーンの関係

ここからは、ハッシュとブロックチェーンの関係性について、さらに詳しく解説します。 

冒頭で解説したように、ブロックチェーンとは、取引履歴が記載された複数のブロックをチェーンでつないだものです。ひとつのブロックには、主に「取引履歴」と「前のブロックのハッシュ値」が記載されます。

たとえば、ビットコインのブロックチェーンで用いられるハッシュ関数「SHA256」をもとに、ブロックAのハッシュ値が

「6CA0A41D2138D7257E1684F62C4E62DCBD329C89294242D4F811E1F8D5962F3C」と算出されたとしましょう。続くブロックBには、ブロックAのハッシュ値にブロックBのハッシュ値を加えて計算されるため、まったく異なる

「F8AF15580AEE0AF2504EB053BE2FF72E8CA7D8061929657AB718949E258F0894」というハッシュ値が算出されます。さらにブロックC、ブロックDと続くにしたがって、過去のハッシュ値を加えたハッシュ値が算出されます。

このように、取引履歴だけでなく前のブロックのハッシュ値とともに記録することで、ブロック同士を安全に時系列でつなぐことができるのです。

2.2 ハッシュは何に使われる?

ハッシュは、ブロックチェーン上での取引に欠かすことのできない重要な技術ですが、そのほかにも以下のような場面で活用されています。 

2.2.1 ウェブサイト上のパスワード保存

ウェブサイト上で安全にパスワードを保存するためには「英数字を組み合わせる」「文字数を長く設定する」「誕生日など身近な数字を用いない」などいくつかのポイントがあります。しかし、ハッキング被害などに遭い、それらのパスワードが流出してしまう可能性はゼロではありません。

そこで、パスワードを保護するためにハッシュ技術が利用されます。登録されたパスワードをハッシュ値に変換して保存することで、万が一パスワードのデータが流出してしまったとしても、パスワードそのものが漏れるリスクを抑えられるのです。 

2.2.2 デジタル署名

デジタル署名とは、メッセージやファイルを送信する際に貼付するデータのことです。デジタル署名を添付することで、メッセージやファイルの送信者が作成者本人であることや、通信経路上で不正な改ざんが行われていないことを確認できます。このデジタル署名を作成するために用いられるのが、ハッシュ関数です。

 

たとえば、ユーザーAからユーザーBにメッセージを送るとしましょう。ユーザーAは、送信するデータをもとにハッシュ値を算出し、さらに秘密鍵によって暗号化したものを、データや公開鍵とともにユーザーBへ送信します。ユーザーBは、ユーザーAの公開鍵を用いて暗号化されたハッシュ値を復号し、さらに受信したデータをもとに自ら算出したハッシュ値と比較します。

ユーザーAから送られたハッシュ値と、ユーザーBが算出したハッシュ値が一致すれば、受信したデータは正しいものであると判断できるのです。

2.2.3 データベース内の検索

膨大な量のデータの中から情報を検索する際にも、ハッシュ技術が活用されます。データ量が大きい場合には、すべてのデータ内容を比較して特定の情報を検索するよりも、ハッシュ値に変換されたデータから検索する方がより速く検索でき、検索コストの削減にもつながります。

ただし、データ量が小さい場合には、ハッシュ値に変換するよりもデータ内容を比較しながら検索した方が速い場合もあるため、データ量に応じて判断する必要があります。

投稿者

Liquid編集部