ブロックチェーンについて
最終更新日: 2018/04/05 5:07pm
こんにちは。経理の小高です。
昨年来、AI(Deep Learning)、IoT(Internet of Thing)と話題の技術を「つまみ食い」してきました。どうせなら、ということでFintechの中核技術として露出の多いブロックチェーンについてです。
ブロックチェーンというのは「台帳の形態」を指しています。「台帳」中の1件は、1つの取引(トランザクション)をあらわしています。たとえば、誰かにお金を払いました、とか。
この取引を発生順にブロックに詰め込んで、ブロックを数珠繋で管理するので、「ブロックチェーン」と呼ばれます。
ブロックチェーンの一番の特徴は「分散型の台帳」であるという点です。
これを理解するために一般的な「分散型ではない台帳(集中管理された台帳)」を見て見ましょう。
下の図はインターネットバンキングを簡単に表したものです。サーバーと書いたのは銀行の台帳、つまり、お金の残高や送金などの取引データのことです。インターネットバンキングでは、銀行で一括管理されている台帳がインターネットを介して利用されます。
下はブロックチェーンでの「分散型の台帳」です。台帳がAからDのすべての人の手元にある(皆が同じものをもつ)ことから、分散型と言われます。マイナーと書いたのは、ニュースでよく聞くマイニング業者のことですが、台帳を持つという意味では普通の人と同じ役割を持ちます。台帳間に線を引いたのは、これらの台帳が相互にデータをやり取りするという意味です。典型的には、すべての参加者が1:1で接続されます。このようなネットワークをP2P(ピア・ツー・ピア)ネットワークといいます。
ブロックチェーンを理解するには、取引が発生したときの動きを追うのがいいので、上の図を初期状態として(ビットコインでの)台帳管理の仕組みを時系列で追いかけてみます。
まず、Bでなんらかの取引が発生して台帳への変更が要求されたとします(下の図)
そうすると、「データを変更したよ」というのが各ピア(相手)に伝搬されます。
上の図ではすべて相手に変更情報が伝搬しましが、場合によっては、下のように一部の人(D)への連絡が遅くなってしまう場合があり得ます。
このような「台帳の変更と伝搬」は(物理的に離れた場所にある)台帳で不規則に発生しますが、この段階では「まだ台帳への変更は仮のもの」です。仮の変更がある程度貯まるか、ある程度の時間が経過すると、仮の変更を「確定」する人がいます。
これがよく聞くマイナー(マイニング業者)です。マイニングはだれでも行うことができますが、純粋な「計算競争」なので実質的にはマイニング業者がトランザクションを確定します。
以上のプロセスで台帳の変更(トランザクション)が確定すると同時に、「ブロックが1つ確定」されます。ブロックは確定されると、直前に確定されたブロックにくっつきます。ブロックが数珠つなぎになるので、ブロックチェーンというわけです。
ブロックを確定する人をマイナー(採掘業者)と呼ぶのは、ブロックを確定させると報酬がもらえるためです。報酬は誰かからもらえるのではなくて、プログラムが勝手に決定しています。仮想通貨には国のような「発行体」がありません。通貨はマイニングの報酬としてだけ市中に投入されます。
以上が流れになりますが、ここまで見てくると以下のような疑問がわくと思います。
- 自分のお金しか使えない(盗まれない)ようにしなくてはならない。
- 確定するブロックが全世界で統一されない場合はどうしたらいいか。
- データが改ざんされるかもしれない。
- 取引が確定する前に何度も振り込めるのではないか。
これらにはITだったり運用だったりのロジックがありますが、最終的には、ビットコインの運用実績を根拠にして「なんとかなる」と考えられています。
さて、以上のように「ブロックチェーン=仮想通貨」というイメージがあるのですが、「台帳に記録するのはなにも仮想通貨に限らなくてもいいよね」ということができます。
そこで、最近では、ブロックチェーンと仮想通貨を切り離して、「ブロックチェーンのコンセプトを転用」しようという大きな流れがあります。有名どころでは以下の事例があります。
海外送金:みずほファイナンシャルグループ、SBIホールディングス
ブロックチェーン(もしくは、それに類似したロジック)でやり取りされる取引のことは「スマートコントラクト」と呼ばれています。以上は金融業界(Fintech)の括りですが、以下のように物流・サプライチェーンへの適用も提唱されています。
2018年以降、ブロックチェーンが普及する4つのシナリオ:オラクル
さてさて。
Bitcoin CoreはGitHubで公開されているMITライセンスのオープンソースですし、Ethereumもオープンソース(ライセンスはCC0)です。論より証拠、ということで触ってみました。仕事柄一年中Linuxをいじっていますので、Ubuntuへのインストールは問題なく完了。
ここまで来て、「待てよ」と思ってブロックチェーンをしばらくやめることにしてしまいました。
- 業界内でのデータ授受に適用する場合、データフォーマットがいるはずで、結局、業界VANみたいな話になっちゃうのではなかろうか。そうしたら、胴元がサーバで管理した方がよさそうな。。。
- 業務アプリ内に分散台帳を持たせるみたいな(直情的な)やり方は(データ量の観点から)できないし、これってクラサバになっちゃうんじゃないのかな。。。
- クラサバになったら(昔みたいに)プログラムの更新だとかすごい大変になっちゃって、結局、サーバーサイドにもどっちゃうんじゃないの。。。
なんていうイメージが浮かんでしまったからなんです。もっとよく研究しないとですね。
←「イー・レンジャーのかわら版 25号(2018年4月号) AWS CloudFrontとWAFのお話です」前の記事へ 次の記事へ「第2回AIエキスポにいってきました」→