親バカエンジニアのナレッジ帳

webのエンジニアをやっており、日頃の開発で詰まったことや書き残しておきたいことを載せています。育児のイロハという育児サイト(https://ikujip.jp)の開発も行っているため、その開発で使用されている技術についても掲載しています。

ブロックチェーンってなんだ?

ビットコインを始めとした仮想通貨の登場により、名前を聞くことが多くなったブロックチェーン
ブロックとは?チェーンとは?果たしてこれはどんな仕組みで動いているのでしょう?
そして従来までのサーバ管理システムに比べて、どんなメリットがあるのでしょうか?

ブロックとは?チェーンとは?

仮想通貨の取引を例に挙げますと、それぞれの取引はまとまってブロックと呼ばれる単位になります。
そして、それぞれのブロックは次々に連なっていき、その連なりがブロックチェーンと呼ばれています。

ほんとざっくりとした説明になりましたが、ブロックチェーンでは、このブロックを生成していく技術の奥深さに特徴があり、データが改ざんされにくいという点で信頼を得ているのです。

ブロックチェーンはデータを分散して管理している

従来最も使われているサーバ-クライアントの構成に対して、ブロックチェーンではデータを分散して管理していることに特徴があります。

サーバ-クライアント技術では、クライアント(ブラウザなど)はサーバにリクエストを投げ、サーバはそれに対してレスポンスを返すという流れがありますよね。

この流れではサーバが常に中心となって動くため、サーバがアプリケーションを管理する上でとても大切な役割を担っています。
もしサーバが高負荷になってダウンしてしまうと、ユーザは誰一人としてアプリケーションを利用することができないのです。

対してブロックチェーンでは、特定のサーバがアプリケーションを管理しているわけではなく(一部管理している場合もありますが)、ユーザ同士がネットワークで繋がることでデータを管理し合う仕組みになっています。
これはP2P(ピアツーピア)という仕組みです。
サービスの参加者がみんなで情報を管理し合っている点に特徴があります。

P2Pって具体的になに?どこで動いてるの?

参加者みんなで管理と言われてもピンと来ない方もいますよね。
一時期とても話題になったWinnyなどのファイル交換ソフトを想像してみてください。
あの類のソフトはP2Pの技術が使われているものが多いのですが、使用されたことがあればイメージがつきやすいと思います。

Winnyでは、ある1つのサーバに繋いでいたわけではなく、ユーザ間が繋がっており、欲しいファイルが見つかればダウンロードできる仕組みになっていました。
(著作権問題などで揺れた側面が強かったですが、一旦その話題は置いておいて...)

接続されているユーザー同士でバケツリレーのごとくデータを送受信しており、同じ時間帯にどれだけ多くのユーザーが利用したとしても、1箇所にアクセスが集中することを避けることができるのです。
通信経路をしっかり分散させれば、ユーザが増えれば増えるほどネットワークが拡張していくすごい技術ですね。

十数年前に注目されていた技術がまた注目されることになるのも驚きですね。

すべてのデータは公開されて誰でも見ることができる

ブロックチェーンのデータは、ユーザ同士で送受信をしているため、誰でも見ることができます。
じゃあセキュリティ面がザルなんじゃない?と思われがちですが、データは暗号化されているので心配いりません。
すべてのデータはハッシュ値という意味がわからない文字の並びとなっており、内容を読み取ることはできないのです。

先述しましたが、ブロックチェーンではブロック生成時のマイニングという方法に特徴があり(ここでは詳細は省きます)、基本的には不正なデータを作成できない仕組みがあります。

確かに以下のようなデータを改ざんされた事件もありますが、

www.google.co.jp

基本的には改ざんにはとてつもない計算力を持ったコンピュータが必要であり、一民間人が不正を行うことはできないはずです。

世界の51事例から予見する ブロックチェーン×エネルギービジネス

世界の51事例から予見する ブロックチェーン×エネルギービジネス

ブロックチェーンアプリケーション開発の教科書

ブロックチェーンアプリケーション開発の教科書