ユーニックス総合研究所

  • home
  • archives
  • block-chain-tech

ブロックチェーンの技術について具体的に解説します【初心者向け】

ブロックチェーンの技術について

最近ちまたを賑わしているのはビットコインやメタバース、NFTなどです。
これらの新技術の基盤となるものが「ブロックチェーン」と呼ばれるものです。

ブロックチェーンは既存の技術が寄り集まったビットコインのために生まれた「新しいデータベース」と言えます。
このブロックチェーンを使うことで金融、はては非金融の領域にまで新しいビジネスを作り出すことが可能です。

この記事ではこのブロックチェーンで使われている技術について具体的に解説していきます。

関連記事

個人開発者がブロックチェーンとは?をわかりやすく解説してみた
メタバースとブロックチェーンの関係【The Sandbox】
ブロックチェーンの技術について具体的に解説します【初心者向け】
ブロックチェーンとP2Pの関係性とは?
ビットコインの仕組みを個人開発者が解説します【仮想通貨、ブロックチェーン】

ブロックチェーンとは?

ブロックチェーンとはビットコインなどで使われている技術のことを言います。
より具体的にはこれは新種のデータベースです。
分散的にデータベースを管理し、それらを「P2P」という通信技術によって連携させることで機能しています。

ブロックチェーンでは取引の履歴を記録します。
この取引のことを「トランザクション」と言い、データベースに記録される履歴を「ブロック」と言います。
このブロックは時系列で連続したブロックがチェーンのようにつながっています。
1つのブロックは前のブロックの「ハッシュ」を記録しています。

ブロックチェーンを破壊しようとする攻撃者が、ブロックのデータを改ざんしようとしたとします。
しかし1つのブロックを改ざんすると、その改ざんしたブロックから生成されるハッシュ値がその次に繋がっているブロックが持っているハッシュ値と矛盾するようになります。
つまりブロックチェーンを改ざんしたい場合はすべてのブロックを改ざんしなければなりません。

このため現実的には改ざんが難しいと言われています。
また改ざんするためにはブロックチェーンの参加者から「合意」を得なければなりません。
この「合意」を得てブロックチェーンを更新する仕組みを「合意形成」と呼びます。
合意する人はほとんどいないので現実的に改ざんはほぼ不可能です。
*ただし「51%攻撃」と言う攻撃もあります(後述)

ブロックチェーンではデータベースを分散的に管理します。
データベースを持っている参加者を「ノード」と呼びます。
ノードはP2Pという通信技術によって相互に通信を行い連携します。

P2Pは従来のクライアント・サーバー型の通信モデルとは違い、1つのノードが複数のノードと相互に通信を行い、「P2Pネットワーク」というネットワークを構築する通信技術です。
P2Pは「ゼロダウンタイム」と呼ばれ一度稼働するとネットワークが落ちることがほぼありません。
そのためブロックチェーンは一度稼働したら永遠に仕事をし続けます。

改ざん不可能なブロックと、ゼロダウンタイムな通信技術によってブロックチェーンの信頼性は担保されています。
他にもブロックチェーンの信頼性を担保する技術はあります。
このためブロックチェーンが管理するデータ、つまり「取引履歴」には信頼性が生まれます。

ブロックチェーンの台帳

ブロックチェーンはトランザクションと呼ばれる取引ブロックと言う履歴の単位で管理しています。
このブロックが寄り集まったものを「台帳」と言います。
ブロックがチェーンで連なっている集合が台帳です。

既存のデータベースで言えばこれはテーブルのようなものです。
レコードというブロックが連なって構築され、それが管理されています。

+-----------------+  
| 台帳            |  
|+--------------+ |  
|| Block        | |  
|+--------------+ |  
|| Block        | |  
|+--------------+ |  
|| Block        | |  
|+--------------+ |  
||              | |  

ブロックのハッシュ値

ブロックチェーンの各ブロックは前のブロックのハッシュ値を持っています。
この「ハッシュ値」とは、特定の文字列から生成される一意の値のことを言います。

ハッシュ値を生成するアルゴリズムを「ハッシュアルゴリズム」と言います。
これは昔なら「md5」、最近では「sha256」などが知られています。

たとえばプログラミング言語のPythonで「sha256」のハッシュ値を計算するには↓のようなコードを書きます。

import hashlib  

text = b"Block Chain"  
myhash = hashlib.sha256(text).hexdigest()  
print(myhash)  
# 7e7eb1d0b9472461ae6b448e274285004cbb111c898cbd97d4a94480fe489933  

↑の例では「Block Chain」というバイト列から「7e7eb1d0b9472461ae6b448e274285004cbb111c898cbd97d4a94480fe489933」というハッシュ値が生成されています。

このハッシュ値は元のテキストが「Block Chain」なら必ず同じハッシュ値が生成されます。
つまり、ブロックが持つハッシュ値と、前のブロックから生成できるハッシュ値が違うということは、前のブロックが違うブロックになっているということになります。
このためブロックの改ざんの発見ができます。

ブロックチェーンのスマートコントラクト

ブロックチェーンでは「契約」は自動的に行われます。
この契約を自動で実行する仕組みを「スマートコントラクト」と言います。

スマートコントラクトによって取引が自動で成立するようになります。
これは例えるなら自動販売機のようなものです。

自動販売機はコインを入れて商品を選択すればあとは自動で取引が成立して商品をゲットすることができます。
このような機械的な仕組みをプログラム的に行うのがスマートコントラクトです。

ブロックチェーンの合意形成

ブロックチェーンではどのようにデータの正当性を管理しているのでしょうか。
これは「合意形成」と呼ばれる仕組みによります。

ブロックチェーンに新しいブロックを加える場合、ブロックチェーンの参加者からそのブロックについて「合意」を得る必要があります。
合意を経て承認されることではじめてそのブロックをデータベースに加えることができます。

合意形成では改ざんや二重支払いなどがないか計算によって確認します。
このためブロックチェーンに参加するノードが増えれば合意形成も強化されます。
(ただし悪意のあるノードが少ないことが条件)

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

合意形成では「どのノードがデータベースにブロックを加えるか」という決定が必要になります。
つまりデータを書き込める人の選出です。

この合意形成のアルゴリズムの1つがPoW(プルーフ・オブ・ワーク)と呼ばれるものです。
このアルゴリズムは「計算(マイニング)」を最も早く完了させた人を選出するシンプルなものです。

ビットコインで聞いたことがあるかもしれませんが「マイニング」とはブロックチェーンにデータを書き込む作業のことを言います。
このマイニングを行う人を「マイナー」と呼びます。
マイナーが競争して計算、つまりデータの書き込み処理を行います。
そして一番早かった人が代表者に選出されます。

ビットコインではこの代表者に新規のビットコインを報酬として発行します。
このためマイナーはビットコインを得るために積極的に合意形成に参加します。
そのためシステムの正当性が維持されます。

しかし計算のために膨大な電力を必要とすることや、「51%攻撃」という悪意のある参加者が全体の51%を占めると不正な操作が可能になる攻撃が存在するなど、デメリットも存在します。

P2P

Webでポピュラーな通信技術は「クライアント・サーバー型」と呼ばれるものです。
これは中央に配置するサーバーがコンテンツを提供して、その周りにいる複数のクライアントがコンテンツを得るという通信形態です。

たとえばFacebookやAmazonなどのWebサイトも通信の形態はクライアント・サーバー型です。
Webでは非常に一般的な通信と言えます。

クライアント・サーバー型は中央のサーバーがダウンすると、周りにいるクライアントはデータを得ることができなくなります。
そのため通信障害になりやすい通信形態と言えます。

このような障害になりやすい状態を「単一障害点がある」と言います。

いっぽうP2P(Peer To Peer)では「ノード」と呼ばれる通信を行うパソコンが、他のノードと相互に通信を行うことでネットワークを構築します。
この各ノードが通信によって構築するネットワークを「P2Pネットワーク」と言います。

ちなみにPeer(ピア)とは「対等の者」や「仲間」などの意味を持ちます。

P2Pはたとえば1つのノードがダウンしても、他のノードが生きていればネットワークは維持されます。
そのためP2Pネットワーク全体をダウンさせるにはすべてのノードをダウンさせる必要があります。
このためP2Pは単一障害点が無く、障害耐性があります。

ブロックチェーンでは攻撃に弱いクライアント・サーバー型ではなく攻撃や障害に強いP2P型を採用しています。
このためブロックチェーンを使うビットコインなどは10年以上も稼働し続けている実績を持っています。

ハイブリッドP2PとピュアP2P

P2Pには「ハイブリッドP2P」と「ピュアP2P」があります。

ハイブリッドP2Pは検索などを行うサーバーが存在し、通信自体は各ノード間で行われます。
クライアント・サーバーとP2Pを混ぜたような通信形態です。
このため単一障害点があります。

いっぽうピュアP2Pは検索も通信も純粋にノード間のみで行います。
そのため単一障害点がありません。

おわりに

今回はブロックチェーンで使われている技術について解説しました。
ブロックチェーンは既存の技術を組み合わせて実現されています。
未知的な印象があった人も腑に落ちたのではないでしょうか。

ブロックチェーンを知ることはこれからのITの世界を知ることになると思います。
押さえておいて損は無いでしょう。

🦝 < ブロックチェーンで取引しよう

🐭 < スマートコントラクトでOK