今回はブロックチェーンについての解説です。まず、結論を確認しておきましょう。
広義のブロックチェーンとは以下の条件を満たすプロトコルまたはその実装のことです。
・参加者の中に意図しない動作をする者がいても正しい取引ができる
・改ざんが非常に困難である
・停止しない
・多数の参加者に同一のデータを分散する
ブロックチェーン自体は以下の様な技術です。
1. 複数の取引履歴をブロックとしてまとめ、タイムスタンプを付与する
2. ブロックをハッシュ化し、次のブロックに繋げる
3. ハッシュ化する際に、計算量の多い計算をさせることで信頼性を向上させる
ねぇユウ兄!
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
コメント