第二回ビットコインの仕組み(送金編)

こんにちは☼

晴れて第二回を迎えることができました。🎉ビットコインの仕組みシリーズ。

前回ビットコインとはいったいどういうものかについて説明しました。(伝わっているとうれしいけど……)

今回は、ブロックチェーンの深みに入っていく前段階として、ブロックチェーンのメインの処理である、送金が一体どのように行われているかを見ていきましょう。

ただ、ビットコインにおいて残高データの中身が一体どのようになっているのか、まだ説明をしていなかったので、まずはそこから話していきましょう〜!⤴️

ビットコインの残高データの正体

前回、ビットコインでは残高のデータベースをネットワークにつながっているサーバー間で共有することで成り立っていると言いました。

前回説明に使った残高のデータベースがこちらf:id:ingentity:20180904004357p:plain

ビットコインにおける実際のデータはこのようにユーザーと残高が直接対応している訳ではありません。

では一体どのように残高を記録しているのでしょう。

f:id:ingentity:20180904181459p:plain

かなり簡単化していますが、これがビットコインにおける残高データベースの大まかな形になります。

ビットコインの残高データはブロックという単位に分けられ、それが鎖状に繋がっているのでブロックチェーンと呼ばれています。

そして、赤い枠で囲まれた部分がトランザクションと呼ばれるデータで、通貨が誰から誰へいくら移動したかを示しています。

緑色の枠で囲まれた部分は通貨の獲得を表していて、これに関しては後ほど詳しく説明しますのでいまは取り合えず、単に通貨を獲得していると考えてください。

このようにビットコインは、通貨の獲得とその後の移動を全て記録し、それを辿ることで最終的に現在誰がいくら持っているのかを把握できるようになっています。

この例での武田さんの残高は、2番目のブロックで90円獲得していますが、田中さんに67円送金し、最後のブロックでも竹下さんに3円送金しているため、

90 - 67 - 3

で20円となります。

同様に他の人のトランザクションに関しても辿っていくことで、残高を把握てきます。

ビットコインにおける送金の仕組み

ビットコインでは、誰でも自分が保持しているお金を他のユーザーに送金することができます。

どのようにして、送金が行われるかと言うと、単にトランザクションを発行するだけです。

例えば、田中さんが武田さんからりんごを買うために120円送金するといった場合を考えます。

まず、田中さんは新しいトランザクションを作ります。

f:id:ingentity:20180906004741p:plain

そのトランザクションを田中さんはビットコインのサーバーに送信します。

f:id:ingentity:20180906004904p:plain

サーバーは田中さんの残高を確認し、本当に120円以上田中さんが持っていれば、正しく処理が可能であると判断し、新規ブロックに田中さんのトランザクションを組み込みます。

f:id:ingentity:20180906005612p:plain

f:id:ingentity:20180906005732p:plain

このブロックが正しくブロックチェーンに組み込まれた時点で送金が完了となります。

f:id:ingentity:20180906005958p:plain

武田さんはブロックチェーン情報をダウンロードして、正しく送金が行われていることを確認すると、田中さんにりんごを受け渡します。

f:id:ingentity:20180906010307p:plain

これが送金の大まかな流れになります。

ただし、この説明でシステムが成り立つには大きな前提が三つあります。

1つは、田中さんのお金を引き出すようなトランザクションは田中さんにしか作れないこと。

2つ目は、誰も田中さんの作ったトランザクションを書き換えることができないこと。

そして3つ目は、ビットコインのサーバーは正しいトランザクションのみを集めた正しいブロックを作り、正しくブロックチェーンに接続すること

ビットコインではこれら3つの条件を全て満たしています。
次回以降、これらの条件が一体どのようにして保証されるのかというところを見ていきたいと思います。(ほんとは今回説明するはずだったんですが…‥)


長くなってしまったのでここまで!

それでは、さよなら〜👋