2016年1月4日月曜日

今話題のブロックチェーンとは何なんだ? 部外者の技術者として考察してみる。

最近、IT業界を取り巻くメディア(日経BPとTechCrunch等)ではブロックチェーンなる技術が話題です。

ブロックチェーンとは、bitcoinを構成する技術であり、それ自体が金融システムを変革するものなどと言われています。しかしメディアではブロックチェーンの本質について説明しない記事が目立ちます。

現状の大きな問題として、ブロックチェーンやbitcoinについて解説する記事の多くは、bitcoin関連の仕事をしている起業家や研究者などの利害関係者による記事が多いというバイアスがあります。また技術者ではないジャーナリストが書いた記事も、技術的な本質に突っ込めていないものが目立ちます。

本記事では、bitcoinに関して利害関係を持たない一技術者として、ブロックチェーンに関して考察を試みようと思います。私はbitcoinの専門家でもなんでもないので、認識等は間違っているところも多々あるかもしれませんので、ご指摘頂ければ幸いです。

ブロックチェーンとは何を実現する技術なのか


さて、まずブロックチェーンとは何なのかですが、bitcoinを構成する技術であり、具体的にはbitcoinの取引履歴を記録した巨大な台帳ファイルのことを指します。

しかし、一般記事ではブロックチェーンという名称で、bitcoinを可能にしている分散P2Pトランザクションなどの幅広い技術を指すことが多いようですので、以下、本記事でもブロックチェーンという場合は、幅広くbitcoinの技術全般を指すことにします。

さて、そもそもブロックチェーンとは、科学的に見て何が新しいのでしょうか?

ブロックチェーンは、中央の特権サーバが決済履歴を管理することなく、さらに特殊な電子機器を用いることなく、決済(トランザクション)の二重実行防止を実現した点で画期的な技術と言えます。

電子マネーというのは、通常、支払を行うのに中央のサーバと通信して支払を指示する必要があります。なぜなら電子マネーを持っている人が、直接に他の人に支払を行った場合、その裏付けとなる電子マネーを二重に支払いに使っていないかどうか確かめる手段がないからです。(電子データは複製が自由に可能なので、二重支払が自由にできてしまう)

通常の場合は、サーバが決済データを一元管理して、同じマネーが二回支払われていれば拒否するようになっています。これが通常の電子マネーの実現方法です。要するに銀行振込と同じですね。

場合によっては、電子マネーは特殊な電子チップに格納され、支払を行うと、電子チップの中の電子マネー情報が消去されることにより、二重支払を防止する場合もあります。この場合は、電子チップが正しく製造され、第三者が改竄出来ないことを前提にしています。

この二重支払の防止を、中央サーバも特殊な電子機器もなく実現したのがブロックチェーン技術です。

(ちなみに単なる電子契約を行うのにブロックチェーンは不要です。契約書は裏付けとなる資産を保証するものではありませんから、公開鍵暗号方式を使えば普通に実現出来ます)

ブロックチェーンはどうやって二重支払防止を実現するのか


ブロックチェーンの二重支払防止技術は、基本的に多数決による認定に頼っています。多くのbitcoin参加者が取引を監視し、その結果として、二重支払がもし行われた場合であっても、取引を監視している人の採択結果により、どちらが正しい決済として認められるかが決まります。

そのさいbitcoinでは不特定多数の人が市場に参加出来ますので、多数決をする場合の投票権を持つ母集団が定められません。そのためbitcoinでは、コンピュータによる計算量を投票権として採用し、採決をした人に報酬を支払うというルールにより、多くの人が監視して正しい採決が行われるような仕組みにしています。

(IPアドレスごとに票を持たせるような仕組みでは、IPアドレスを多数持つ人が有利になってしまうので、特定の人に投票権が偏らない仕組みとして計算量を採用している)

この「計算量」により投票権が決まるという仕組みがブロックチェーンの肝といえる技術です。これは暗号学やP2P分野の研究において大きな新発明と言えるでしょう。

但しブロックチェーンの大きな弱点として、計算量によって投票する仕組みなので取引ごとに膨大な計算量が無駄にされるという点と、採決が複数回繰り返されることによって決済が確定するので、決済が確定するまでに10分以上の時間を要してしまうという点があります。

この計算量が無駄にされるという性質はかなり致命的なものです。なぜなら計算を行うにはサーバ機器代と電気代がかかるのであり、貴重なエネルギーやサーバなどの資源を無駄に浪費していることになります。これは非常に困った性質です。

ではP2Pのメリットとは何なのか


bitcoinはそれほどまでに特殊な技術を用いて、中央サーバが存在しないP2Pトランザクションを実現していますが、そのメリットはなんなのでしょうか?

じつはbitcoinは匿名性を実現するためにP2Pにしているわけではありません。取引の履歴は全て公開されており、誰でも取引の履歴を追っていくことが可能なのです。これは通常の中央サーバを用いても実現可能です。

中央サーバがないことによるメリットは、主に規制に従う義務を負わなくなるということの一点に尽きると思います。

中央サーバがある場合、その運用者は、電子マネーの運用主体であると見なされ、様々な法的義務を負うことになります。すなわち規制にがんじがらめにされ、もし何か政府とトラブルになった場合には、最悪サーバが差し押さえられる危険があるということです。

しかし中央サーバがなく、さらにソフトウェアの開発もバザール方式で行われていれば、電子マネーの運用主体が存在しないということになりますので、法的規制を受けなくなります。事実、日本でもbitcoinビジネスを行うことは2016年1月現在では法的に自由のようです。

ここがbitcoinのとても面白い点ですね。開発者は無政府主義的な思想を持っていることが伺われます。実際にTorという暗号化インターネットの中では、bitcoinを使ったアングラ通販サイトが存在し、ヘロインの塊1kgなどを通販で売っているのを目にしました。

で、ブロックチェーンは金融機関などの一般社会で使えるの?


最近では、ブロックチェーンが金融機関や一般社会での取引に使えるという説を唱える評論家が数多くいます。しかし私はそうした説に極めて懐疑的です。

まず金融機関や一般社会での取引には、中央サーバがあってはいけない、P2Pが望ましい利用場面というのが全く存在しないというのが最大の理由です。

中央サーバによる決済は、ブロックチェーンを使った決済よりも圧倒的に速く安く確実かつ簡単に実現できます。

ブロックチェーンにより、決済システムがより安く高速に実現出来るという論を唱える評論家がいますが、そういう人が技術的根拠を提示しているのを一切みたことがありません。

そもそも、単純に通貨の価値を他に移転するだけのトランザクションなど極めて低コストであり、最近のサーバ費用を考えれば、わざわざコストを下げるような必要など一切ありません。

銀行のシステムが高額なのは、極めて複雑なビジネスロジックを実現しているからであり、bitcoinのような単純な価値移転とは比べものになりません。

P2Pや分散技術というのは、基本的に極めて高度な技術を必要とするものであり、それによる性能へのオーバーヘッドも多くあります。どうしてもP2Pや分散が必要となるやむをえない理由がなければ、単一のサーバで処理するほうがずっと楽に行うことができます。

とくにP2P技術(多数の信頼出来ないコンピュータが協調するもの)は、ほぼ現実社会で使い物になる技術ではないと私は考えます。あまりに複雑すぎて構築も運用も極めて難しいだけでなく、性能へのオーバーヘッドが大きすぎるからです。

一時期はWinnyなどのP2P技術が持てはやされましたが、今でも実際に使われているものはBittorrentくらいではないでしょうか?

残念なことに大学や研究所などの研究者にとっては、複雑で実現困難な技術であるほど、自分たちの研究論文を書きやすいので、往々にしてこういう「筋の悪い」技術をあえて推奨する研究者が多くいるのです。筋が良くて簡単に実現出来る技術はいくら優れていても彼らの飯の種にはならないのですね。

でもブロックチェーンはbitcoin形式だけじゃないのでは?


※本章で主に批判している対象はこちら → ブロックチェーンの正体 | TechCrunch Japan

ブロックチェーンの本質は「分散型台帳」であり、bitcoinとは違う使い方が出来るなどという人が最近増えていますが、それは全く計算機科学について知らない素人の妄言に過ぎません。

まず第一に分散型のデータベースに関して言えば、計算機科学においてこれまでもずっと研究されてきています。

分散型トランザクションにおいても、参加者が信頼できるのであれば、quorumなどという多数決による投票のアルゴリズムが昔から存在します。AmazonのDynamoDB分散データベースのようにquorum的な多重化で故障を防ぎ性能を向上しているシステムは既に存在します。[論文]

ブロックチェーンがこうした技術について新たに付け加える点は何一つありません。


で、参加者を中途半端に信頼して、弱い計算量のブロックチェーンを導入するということを提案する人もいますが、それはセキュリティの観点から見れば愚の骨頂です。

計算量を投票に使う方法は、あくまで不特定多数の参加者が、報酬につられて膨大な計算量を投入しているからできる方法なのです。特定少数のノードが中途半端な計算量を投じても、何の保証にもなりません。誰かが不正をする気になれば、そんな計算量など一瞬で破ることが可能でしょう。

もしどうしても特定多数の100%信頼出来ないノードで投票を行うのであれば、一人一票方式の方がずっとマシなのではないでしょうか。中途半端な計算量ならその気になればいくらでも投入可能ですが、特定のちゃんと身元が割れた参加者であれば一人一票以上を手にすることはできないのですから。わざわざ計算量を投票権に使う意味は全くありません。

(それでも不正のインセンティブがあれば、LIBOR不正事件のように結託して不正を行う場合もあるでしょうから、きちんと管理された中央サーバを使う方がずっと安心だと思いますが・・・)

ブロックチェーンというのは計算機科学における一つの基礎技術を指すのであり、それを専門外の評論家や弁護士などが表面上の点だけを捉えて、間違った情報を流布するのは良くない傾向だと思います。

ITについて専門外の人が論考する自体は良いことだと私は思いますが、計算機科学について知識のない人が、科学技術上の観点について憶測で論考するのは望ましくないですね。

とくにセキュリティに関わる場合は、致命的な事故を招く場合もあるので危険です。

IT技術者が立場にとらわれずに技術的な論考を表明をすることがもっと求められているかもしれませんね。


参考リンク:
  1. ブロックチェーンをもう一段深く理解する
  2. Busting 7 Blockchain & Bitcoin Myths - Crowdfund Insider 
  3. BitCoinとBlockChainにまつわる誤解ーそんなことはできない - Qiita (2016/1/10追加)
  4. なんでもかんでもブロックチェーン?何をもってブロックチェーン?ブロックチェーンの用語の混乱を整理してみる(議論たたき台) | ビットコイン&ブロックチェーン研究所 (2016/2/15追加、大変優れた整理なのでお勧めします。私はこの整理でいうとフルコンボのブロックチェーンは面白いと捉えますが、他のものには極めて懐疑的です)
  5. ブロックチェーンという言葉に騙されないために - いもす研 (imos laboratory)  (2016/12/10追加)

この記事が広まったので補足: (2016/1/7 15:45 バンコク時間)

私はブロックチェーンやbitcoin自体を否定するつもりでこの記事を書いたわけではありません。世の中で、技術的裏付けを全く提示せずにブロックチェーンが「ゼロダウンタイムのトランザクションを低コスト」で実現する技術だとか言うようなジャーナリストなどが目立つので、それに対して疑問を呈する意味で書きました。

一般的な(bitcoinに詳しいわけではない)技術者として見ると、bitcoinやそれに関連する技術が「ゼロダウンタイムのトランザクションを低コスト」で提供するような技術とは、そもそも目的からして全くかけ離れており、そうした紹介がされることには強い違和感があります。しかし世の中の記事では、その違和感を埋めてくれるような技術的説明が全くありません。それに一石を投じたかったということです。

ただし、現時点で技術的に説明されてないとしても、ベンチャー企業などがその技術を開発中であり開発成功する可能性はありますし、そうした可能性を否定する意図は全くありません。

ましてやbitcoin関連技術やブロックチェーンが単なる分散データベース以外のもっと新しい用途で使われることを否定する意図はありませんし、そのような記述をしたつもりもありません。私の筆の滑りもあるでしょうが、その点については、慎重に読んでいただければ理解していただけると思いたいところです。

1 件のコメント:

  1. 1点だけ。
    > この「計算量」により投票権が決まるという仕組みがブロックチェーンの肝といえる技術です。これは暗号学やP2P分野の研究において大きな新発明と言えるでしょう。
    それはビットコインの説明としてはいいと思うけど、ブロックチェーンの肝としては正確ではないと思う。
    なぜならば Bitcoin の場合は偽造不可能な価値として計算量を使っているだけで、計算を必要としない Proof of Stake で動いているブロックチェーンも存在するから。偽造不可能な価値の投入量で、分岐してしまったデータのどれが最も正しいかを機械的に決められる、というのが肝ではないだろうか。

    返信削除