【ブロックチェーン】ブロックチェーンの特徴を実現する技術
ブロックチェーンには、①分散化、②対改ざん性、③データの保存形式という3つの特徴があります。
この特徴を実現するために、いくつかの暗号技術を組み合わせて使用し、分散システムによるネットワークを構築しています。
ブロックチェーンが目指すWEB2.0で発生した課題解決のための基本的な技術について、今回は書いて行きます。
ブロックチェーンを支える基本的な技術
ブロックチェーンはクライアント・サーバーを利用した中央集権的なインターネットにより発生した、ネットワーク上の問題に対する一つの答えとして登場しました。
なので、まずはサーバーを所有すような管理者のいない、ネットワークの参加者同士でネットワークを構成する、分散化されたネットワークを構築し維持する技術が使われています。
そのようなネットワークの場合。見知らぬ人同士で直接やり取りを行うことになりますし、ネットワーク参加者全員がそのやり取りを監視する仕組みとなり、利用者のセキュリティ上の懸念が生まれます。
そのため、ネットワークの構築にも複数の暗号技術を組み合わせることで、安全な取引を可能とすると共にネットワークに保存するデータの真正性も保障しています。
暗号技術
扱うデータの正確性や透明性、参加者同士のトラストレスな直接のやりとりを実現するために、ブロックチェーンにおいて暗号技術は欠かせません。
主に、
・ハッシュ関数
・共通鍵暗号方式
・デジタル署名
といった暗号技術が用いられています。
ハッシュ関数
ハッシュ関数には、
・逆算できない(不可逆性)
・入力データが違えば、出力データが大きく変わる(無相関)
・入力データの長さに関わらず、出力データは同じ長さ(固定長)
・入力データから出力データの計算は簡単(検証性)
という特徴があります。
これらの特徴により、データの正確性が保障されているだけでなく、容量の限られるブロックでも一定量のデータを保管できるようにしています。
これにより、ブロックの前後関係を証明し正しい連続データであることが分かるようになっています。
またPoWによるマイニングでナンスを求める過程でも、ハッシュ関数が利用されています。
ブロックチェーンを支える暗号技術として、ハッシュ関数は様々な場面で活用されているのです。
公開鍵暗号方式
公開鍵暗号方式は、秘密鍵と公開鍵の2本の鍵を利用した暗号技術です。
秘密鍵と公開鍵は対になっていて、公開鍵は文字通り参加者に公開されています。
簡単な流れを説明すると、まずあるファイルを公開鍵を利用して暗号化します。その公開鍵と対になる秘密鍵の所有者が暗号を解除(復号)し、ファイルを受け取る、となります。
このファイルが、ブロックチェーンではアドレスやトランザクションにあたります。なので、実際にやり取りする相手のみ内容を知ることができ、安全な取引を実現しています。
となると、公開鍵から秘密鍵が推測出来ないようにしなければなりません。
そこで、楕円曲線暗号という技術を使って秘密鍵から公開鍵を生成することで、その問題を対処すると共にデータ量を抑えています。
また、秘密鍵を保存する専用の入れ物として「ウォレット」があります。直訳すると財布ですが、資産ではなく鍵が保存されているのです。
デジタル署名
トランザクションは取引データなので
・誰が発行したのか
・改ざんされていないか
を証明する必要があります。
デジタルデータはなりすましや改変が簡単なので、これらを暗号技術を利用して証明するのです。
ここまでに紹介したハッシュ関数と公開鍵暗号の技術を利用し、送信者は
・送りたいデータ
・暗号化された送りたいデータのハッシュ値
を相手に送ります。
受け取り側は、
・データから導き出されるハッシュ値
・暗号化されたデータを復号して得られたハッシュ値
をもとめ、一致しているかを確認するという流れで行われます。
ブロクチェーンではこのハッシュ値が一致するかどうかの検証を、ネットワークに参加する各ノードが行い、正当なトランザクションかどうかを判断します。
分散システム
ブロックチェーンの特徴の一つである「分散化」に関わるものです。
・P2Pネットワーク
・コンセンサスアルゴリズム
このようなコンピューター技術を使用し、分散化を実現するためのシステムを構築しています。
P2Pネットワーク
ブロックチェーンは、ノード同士を直接つなげてネットワークを構成する、P2P(Peer-to-Peer)方のネットワークにより分散化を実現しています。
ネットワークを利用するには、WEB2.0ではどこかのサーバーにアクセスして情報を得ていましたが、P2P方式によりネットワークに参加するだけで利用ができます。
どこか特定のサーバーにアクセスしないという点ですでに分散化されているわけですが・・・
それだとサーバーの役割がなくなり逆に不便にも思えます。
しかし、P2Pネットワークでは参加するノードがサーバーの役割も果たしているので問題ありません。
参加するノードがすでに参加しているノードと接続してネットワークを形成し、ブロック情報のコピーを保存するデータベースとして機能し、ネットワークを維持するプログラムを実行する。
というのが大まかなノードの役割です。
これにより、どこかのノードが攻撃を受けたとしても、他のノードが正確な情報を持っているためネットワークを維持しサービスの提供を続けることが出来ます。(単一障害点が無い)
コンセンサス・アルゴリズム
クライアント・サーバー方式の場合、サーバーを管理する人・団体が保守を行う事によりサーバー内のデータをどのように扱うかを決定しています。
サーバー管理者が定めたルールに基づき運用され、サービスが提供されていると言えます。
しかし、今までのP2Pネットワークでは、参加するノード全てが同じ役割を持つため、参加者によってデータの扱いが違ったり、改ざんされ不正なデータが実行されてしまう可能性があるため大きなネットワークとしての実用が難しい技術でした。
解決法として、データの整合性を取るために参加者がどのブロックを保存するかを多数決で決めるというのが可能性として考えられます。
多数決は民主的な手段なので、管理者のいないネットワークの管理手段としては良いでしょう。
しかし、参加しているノード数を特定できないため、過半数かどうかの判断が難しいというのも、P2Pネットワークを利用する上での問題でした。
それを解決したのが、ブロックチェーンでの最大の発明と言われている、コンセンサス・アルゴリズムです。
コンセンサスとは、「当事者双方の意見の一致」とウィキペディアでは説明されています。
参加者が「チェーンにつなげるべき正しいブロックはこれ!」と意見を一致させるための方法といえます。
様々な方法がありますが、代表的なのはPoW(Proof of Work)とPoS(Proof of Stake)です。
どちらの方法にも成功したノードには、報酬として仮想通貨が支払われるというメリットがあります。
PoWはブロックが出来た時に計算問題が出され、一番早く説いたノードがブロックチェーンにブロックを保存できるという仕組みです。自由主義経済における、競争の概念を取り入れたとも言えるでしょう。
PoSはステーキングという投票行動を利用します。一番多く票を集めたノードが、ブロックを保存できるという仕組みです。投票は民主主義社会における一番民主的な方法とされています。
どちらも仕組みだけではPoWにおける計算能力の提供やPoSにおける票を集める活動に参加する必要はありませんが、そこに報酬があることで参加者が納得の行く「意見の一致」を生み出すことができるのです。
つまり、「どのブロックを登録するか」という「当事者の意見の一致」の問題を「このブロックを誰が登録するか」という問題に置き換え、それを実行する事に対する経済的なインセンティブを付与したものが、コンセンサス・アルゴリズムです。
これにより、多数決でどこを過半数とみなすかといった問題(ビザンチン将軍問題)を回避するだけでなく、不正な方法でのブロックの生成を防いでいます。
相互に作用することで特徴を作り上げている
ブロックチェーンは利用者が相互に安全なやり取りや、ネットワークを使用するメリットを受けられるように設計されています。
①分散化、②対改ざん性、③データの保存形式、といった3つの特徴は、暗号技術と分散システムで使われている技術の要素がそれぞれに作用することで、成り立っています。
説明が重複しているところがあるかもしれませんが、それもブロックチェーンの特徴であり、ブロックチェーンが一体何なのか分かりにくくなる要素だとも思います。
3つの特徴の記事で書いたことも合わせると、ブロックチェーンとは。
「コンセンサス・アルゴリズムにより維持されるP2P型の分散ネットワーク上に参加するコンピューターが相互に保存するデータベース」
とも言えます。
しかし、参加するノードが全て同じデータを保持するとなると、ネットワーク上では別の問題も発生します。
その対策について次回は書こうと思います。
参考にさせていただきました。
[itemlink post_id="164″]
[itemlink post_id="165″]
[itemlink post_id="168″]
ディスカッション
コメント一覧
まだ、コメントがありません