ブロックチェーンって何?

最新技術解説

今回はブロックチェーンについての解説です。まず、結論を確認しておきましょう。

広義のブロックチェーンとは以下の条件を満たすプロトコルまたはその実装のことです。

・参加者の中に意図しない動作をする者がいても正しい取引ができる
改ざんが非常に困難である
停止しない
・多数の参加者に同一のデータを分散する

ブロックチェーン自体は以下の様な技術です。

1. 複数の取引履歴をブロックとしてまとめ、タイムスタンプを付与する
2. ブロックをハッシュ化し、次のブロックに繋げる
3. ハッシュ化する際に、計算量の多い計算をさせることで信頼性を向上させる

イマノ君
イマノ君

ねぇユウ兄!

Bitcoin ってどこの誰が管理してるの?

現金とかなら銀行だけど…

ユウ兄
ユウ兄

Bitcoin はブロックチェーンという分散技術を用いて利用者同士で管理しています。

それでは、今回はブロックチェーンについて説明しましょうか。

イマノ君
イマノ君

みんなで管理している…??

でもそれって沢山問題が出てこないかな?

ユウ兄
ユウ兄

鋭いですね!

単純に利用者が管理するとなると問題が沢山出てきます。

それらを解決するために発案されたのがブロックチェーンです。

従来の通貨とBitcoinの違い

ユウ兄
ユウ兄

まずは、Bitcoin とそれまでの通貨について比較してみましょう。

イマノ君
イマノ君

現金とか電子マネーとの比較だね!

どこに存在誰が管理
現金現実に存在日本銀行
電子マネー情報として存在電子マネーの発行元
Bitcoin情報として存在利用者
従来の通貨と Bitcoin との比較
ユウ兄
ユウ兄

簡単にどこに存在しているのか誰が管理しているのかについて比較します。

Bitcoin は電子マネーと同様に情報として通貨が存在します。

しかし、現金・電子マネーとは違い特定の管理者がいないんですね。

イマノ君
イマノ君

利用者ってなってるから、使っている人が管理しているの?

ユウ兄
ユウ兄

そうです!

そもそも、Bitcoin は第三者機関に依存しない通貨として開発されました。

第三者機関として信頼できるP2P通信網で代用しようとしたんですね。

イマノ君
イマノ君

P2P通信…???

ユウ兄
ユウ兄

P2P通信は個人と個人が直接データのやり取りを行う通信方法です。

詳しくはまた別の機会にしましょう。

P2P通信網の持つ課題

ユウ兄
ユウ兄

第三者機関の代わりになる信頼できるP2P通信網が解決しなければいけない課題に触れていきましょう。

ユウ兄
ユウ兄

解決しなければならなのは大きく分けて次の2点です。

1. 通貨の偽造

2. 通貨の多重使用

イマノ君
イマノ君

つまり、不正な利用をできない様にしたいんだね!

通貨の偽造

ユウ兄
ユウ兄

まずは通貨の偽造からです。

通貨ですから偽物を作ったり書き換えたりすることは防がないといけません。

ユウ兄
ユウ兄

通貨の偽造を防ぐために Bitcoin では
1. トランザクション(取引履歴)にデジタル署名
2. それをハッシュ化して繋げる

ということを行います。

イマノ君
イマノ君

デジタル署名…?ハッシュ化…?

ユウ兄
ユウ兄

これらの用語についての詳しい説明は別にしますが、今は

デジタル署名: デジタル版のハンコ
ハッシュ化: あるデータと鍵を使って生成される短い文字列

だと考えてください。

ユウ兄
ユウ兄

この様に前のトランザクションのデータを用いて次のトランザクションを生成するため、書き換えが非常に困難になるんです。

通貨の多重使用

ユウ兄
ユウ兄

1つの通貨を何度も使用するという多重使用という問題もあります。

Bitcoin では単純に1番早く届いたトランザクションのみを信用するという方法をとっています。

イマノ君
イマノ君

2番目に届いた同じトランザクションは使われないから何回も同じ通貨が使えないんだね!

ユウ兄
ユウ兄

そうです!

ただ、これを実現するためには2つの条件があります。

全員が全てのトランザクションを知っている必要がある

ユウ兄
ユウ兄

Bitcoin では複数人で取引の管理をするため、1番早いトランザクションを判断するためには全ての人が全てのトランザクションを知っている必要があります。

イマノ君
イマノ君

知らないトランザクションがあるとそれが1番目のトランザクションの可能性があるってことだね!

ユウ兄
ユウ兄

そうです!

そのために P2P で繋がった人同士が情報を伝達します。

ユウ兄
ユウ兄

この様にして全体が全てのトランザクションを保有できる様にします。

トランザクションの順番を知っている必要がある

ユウ兄
ユウ兄

最も早いトランザクションを知るためには全てのトランザクションを正しい順番で保持する必要があります。

イマノ君
イマノ君

順番がわからないと本当に早いかどうかがわからないもんね!

ユウ兄
ユウ兄

これを実現するためにはタイムスタンプという技術を用います。

イマノ君
イマノ君

タイムスタンプ?時間のスタンプ?

ユウ兄
ユウ兄

タイムスタンプは特定の時間以降に改ざんがされていないことを示す仕組みです。

Bitcoin では複数のトランザクションを1つにまとめてハッシュ化し、繋げることで実現しています。

ユウ兄
ユウ兄

この複数のトランザクションの塊をブロックと言います。

イマノ君
イマノ君

ブロックをチェーンみたいに繋げるからブロックチェーンなんだね!

新しく出てきた課題

ユウ兄
ユウ兄

ここまでのことを一旦整理しましょう

ユウ兄
ユウ兄

2つの問題の解決方法について説明しました。

イマノ君、覚えていますか?

イマノ君
イマノ君

通貨の偽造はデジタル署名をつけてハッシュ化して繋げて対策

多重使用はブロックにまとめてハッシュ化して繋げて対策

だよね!

ユウ兄
ユウ兄

素晴らしい!

しっかり聞いていますね!笑

ユウ兄
ユウ兄

しかし、ここまでしても新しく問題が出てきます。

イマノ君
イマノ君

えぇ対策したのにまた問題が出てくるんだね…

ユウ兄
ユウ兄

問題は4つあります。

1. ブロックの偽造

2. 複数に分岐してしまうチェーンの選択

3. ただ利用するだけの人が出てきてしまう問題

4. 通貨の発行

です。

イマノ君
イマノ君

こんなに沢山の問題が出てきちゃったの!?

ユウ兄
ユウ兄

そうなんです。

ただ、今回は Proof of Work (PoW) という技術を使うことで全て解決します!

Proof of Work; PoW

ユウ兄
ユウ兄

PoW は実行するのは大変だが検証するのは楽な計算のことです。

ユウ兄
ユウ兄

この PoW を使って以下の3つのルールを作成します。
1. PoW をブロックのハッシュを作成する際に含める

2. ブロックを作成した場合に報酬を受け取れる

3. ブロックを繋いだチェーンについては最も長く繋がっているチェーンを選択

ユウ兄
ユウ兄

この様にすることで先ほどの4つの問題が解決できます!

イマノ君
イマノ君

ほんとに!?結構簡単なルールだけど…

ユウ兄
ユウ兄

そうなんです。

まず、Aさんがブロックの偽造を行うと考えてみましょう。

ユウ兄
ユウ兄

Aさんは自身の偽造したブロックにつながるチェーンを1人で伸ばさなければなりません。

イマノ君
イマノ君

1番長いチェーンが信用されるからだね。

ユウ兄
ユウ兄

そうなんです。

しかし、偽造されていないチェーンはAさん以外の全員で伸ばします。

PoW を含んでいるため容易にはチェーンを伸ばせないことを考えるといずれAさんのチェーンは正常なチェーンに抜かされてしまいます。

イマノ君
イマノ君

なるほど。偽造しないのが多数派であることが前提なんだね。

ユウ兄
ユウ兄

そうです。

この偽造しないのが多数派となる様に、ブロックを作成する人を増やす必要があります。

そこで、ブロックを作成すると通貨を付与することで作成者を増やします。

イマノ君
イマノ君

でもあまり増えちゃうと同じブロックで違うチェーンができちゃわないの?

ユウ兄
ユウ兄

よく思い出してください。

2つの同じトランザクションが来た時は…?

イマノ君
イマノ君

そうか!早い方だけ信用するんだったね!

ってことは、ブロックを作ったのに報酬をもらえない人がいるの?

ユウ兄
ユウ兄

そうなんです。

特定のブロックを最も早く計算できた人にだけ報酬が支払われるという仕組みです。

参考文献

ユウ兄
ユウ兄

今回は以下の文献を参考にしました。

どれもわかりやすく説明してくれているのでイマノ君も読んでみては?

イマノ君
イマノ君

えー。

【保存版】超わかりやすいブロックチェーンの基礎知識|ビジネスブログ|ソフトバンク (softbank.jp)

Bitcoin: A Peer-to-Peer Electronic Cash System

ビットコインとブロックチェーン | アンドレアス・M・アントノプロス, 今井崇也, 鳩貝淳一郎 | 工学 | Kindleストア | Amazon

コメント

タイトルとURLをコピーしました