BitCoinとBlockChainにまつわる誤解ーそんなことはできない

# 言いたいことを一行で
BlockChainはいろいろと面倒な制約がありますので，KISSの原則を忘れないようにしましょう．権力分立の原理をどうやっても守りたいという政治的な主張がない限り，BlockChainを応用するのはナンセンスです．

# はじめに
BitCoinの中核をなすBlockChainと呼ばれる技術が今ホットですね，いろんなところで耳にします．BlockChainとはようは皆で合意（AさんがBさんにXを渡したという取引記録）を形成していく分散型合意形成アルゴリズムです．ボランティアで参加したコンピュータ全員で協力して改ざんが困難な取引記録を作っていこうというアルゴリズムです．

BlockChainアルゴリズムを銀の弾丸，あるいは魔法の杖か何かだと勘違いしている人がたくさんいて，音楽や電子書籍のデジタルライツ，はたまたマイナンバー制度の管理に使えると主張している方々をちらほら見かけます．いくつか引用します．

+ http://togetter.com/li/634064
+ http://agora-web.jp/archives/1582945.html

> たとえば、デジタルコンテンツは、かつてコピー問題に悩まされ続けてきた。完全なコピー防止は技術的には可能だが、著しくユーザーの利便性を下げる。
もし、イーサリアムのブロックチェーンにデジタルライツを記録すれば、完全なコピー防止と、所有権の移動を、利便性を下げることなく実現することができる。
（中略）
デジタルの音楽のコピー問題もこれで解決する。音楽を聞く際にキーを要求すればい。そのキーは、iTunesが管理するのではなく、ビットコイン的なネットワーク上で所有権を管理する。
この仕組でわたしがある曲を、別の人物に譲渡した場合、私はその曲をもう再生できない。再生できるのは譲り受けた人物だけだ。そしてその人物も曲のコピーができない。

また，有名なホリエモンもコメントしていたりします

+ http://weblog.horiemon.com/100blog/30837/

> システム開発コストに一兆円もかかるわけないやん笑。もしそんなにかけたらアホやん。ブロックチェーンテクノロジー使えばかなーりやすくできるぜ / 消費税負担軽減策還付上限年4,000円めどで検討

彼らは嘘は言ってはいませんが，BlockChainアルゴリズムをこれらに応用するのは全くのナンセンスだとおもいます．フォークとナイフの代わりにクレーン車をつかって食事をするようなものです．見た目には面白いパフォーマンスかも知れませんが，全く実用的ではありません．ようは，BlockChainの表面的なところだけを見て深く理解していないのでしょう．このドキュメントはBlockChainにまつわるそういった誤解を解き，BlockChainの正しい応用方法を模索していくための議論の足がかりになればなと思って書きました．間違っていることを言っているかもしれませんので，その時はコメント欄やTwitterで罵倒してもらって結構です．というかぜひぶつけてください．議論したいと思っています．

# コピー問題にブロックチェインを応用するのはナンセンス
はじめにBlockChainをデジタルコンテンツのコピー問題に応用するというアイデアについて検討したいと思います．はっきり言ってナンセンスです．BlockChainのアルゴリズムはコピーを防ぐものじゃありません．上述したように，誰それAが誰それBに何かを渡したというのをみんなで監視して合意するだけのものであり，これでコピー問題を防ぐことはできないのはちょっと考えればすぐに分かることだとおもいます．

音楽やソフトウェアといったデジタルコンテンツはそれ自体に価値があります．そのため，BlockChainのネットワークから切り離してデータをコピーさえしちゃえばいくらでも複製を作って勝手に配布して楽しむことができます．発案者は暗号キーを要求すればよいと書いてありますが，再生する瞬間はその暗号を解読するわけですから（そうしなければ再生できませんからね）悪意のあるクライアントが暗号解除段階でコピーしてしまえば全く意味がありません．コピーしておいて，システム外（たとえばBitTorrentとか）で配布すればCrack完了で配布し放題です．BlockChainはデジタルコンテンツのコピー問題解決に応用してみても，何の解決にもなっていません．

BlockChainアルゴリズムの応用先の一つであるBitCoinでそれができない（と言うかやる意味が無い）のは，貨幣というものはそれ自体に価値がないからです．貨幣というものはそれ自体を眺めて楽しむものではありません．貨幣というものは誰か他の人に譲渡できて初めて価値が生じるものです．ぶっちゃけると，BitCoinだっていくらでも複製は作れるんです．勝手に自分でBitCoinを増やすことはいくらでもできます．ただ作っても，それを誰か（BitCoinネットワークに参加している多くの人々）に渡す際に「君は過去，このCoinを誰々に渡してるよね？コピーしてるね？不正してるね？」と拒否されるからやる意味が無いという話です．BitCoinのコピーをつくって自分のWallet内のCoinの数が増えても，それを誰かに渡せなければ全く意味がないのでやる価値がないというだけの話です．

また，BitCoinの複製をつくって，システム外で配布するというのも全く意味がありません．BitCoinというものは，BitCoinのシステム内で配布（取引する）することでしか効力を発揮しません．BitCoinをBitCoinネットワーク外で配布するという行為は全く意味のない行為なのです．これが貨幣というメディアとBlockChainの関係で興味深いところでもあります．システム外で配布したところでシステム外では全く意味のない数字の羅列でしかありませんからね．つまり，BitCoinネットワークそれ自体とネットワークに内包されている改ざんが極めて困難な取引記録の羅列が一心同体となって価値を発揮するBitCoin（貨幣）という極めて特殊なメディアであるから，BlockChainでコピー問題が解決されているように見えるだけなのです．BlockChainアルゴリズムの応用先として貨幣を選択したのは（どちらが先かはわかりませんが）極めてスマートで鋭い視点に基づくアイデアだと思います．

まとめると，データそのものに価値がある音楽や電子書籍といったデジタルコンテンツのコピー問題対策としてBlockChainを応用するというアイデアは意味がありません．コンテンツを受け取った人間に悪意があれば，コピーして，システム外で配布してしまえば終わりですし，BlockChainはこれをどうやっても防げません．

# ACにブロックチェインを応用するのはナンセンス
次にホリエモンが提唱する．マイナンバー制度の話について議論したいと思います．

彼はいい加減なことしか言ってないので（コストって何のコストだ？とか）彼のアイデアを正確に把握するのはちょっと難しいのですが，どう好意的に解釈してもナンセンスだなと言わざるをえないとおもいます．これについて詳しく検討したいと思います．

マイナンバー制度で必要なシステムは，おそらく，マイナンバーという日本国民一人一人に与えられる固有識別子（ID）を入力すると，それに紐付けられた個人のデータが取得できるというデータベースシステムだと思います．

もちろん，ただのデータベースではダメです．正しくアクセスコントロール（AC）を行わなければなりません．誰も彼もがIDを入力したら個人データが引き出せるのはどう考えてもまずいです．適切な権限をもった人間，政府の職員とかそういった人たちのみがデータにアクセスできなければなりません．

つまり実現しなければならない本質的な問題は2つです．国民全員の個人情報を保存できるストレージと，ふさわしい人間だけがストレージに保存されたデータにアクセス出来るというアクセスコントロール（AC）です．これら二つをBlockChainで実現する方法を考えてみましょう．

まず，理解すべきは，何度も言って耳にタコができているかもしれませんが，BlockChainは合意を形成するだけのアルゴリズムで，AさんがBさんにXを渡したという取引記録を改ざんが困難な方法で保持するというアルゴリズムです．国民全てのマイナンバーデータを保存するストレージを実現するアルゴリズムや，そのストレージに保存されているデータへの適切なアクセスコントロールを実現するというアルゴリズムはBlockChainとは全く別の独立した仕組みとして考えなければなりません．

つまり，ホリエモンの提唱するアイデアは，一つか二つ別のアルゴリズムとBlockChainを組み合わせて初めて実現出来るものであり，どうもBlockChainで単独で実現出来るものではなさそうです．

BlockChainをつかってストレージ（Key-Valueストレージ）を実現するというプロジェクトは幾つか存在します．Twister（http://twister.net.co/) やBlockstore （http://blog.onename.com/blockstore-bitcoin/) などがあります．彼らはBlockChainアルゴリズムに加えて，BitTorrentのアルゴリズム（Kademlia）を併用することでこれを実現しています．これらのプロジェクトへの詳しい言及は避けますが，BlockChainでユーザ登録や，誰がどんなデータを書いたかを記録していって，実際のデータ保持と配布はBitTorrentのアルゴリズムで実現しているようです．

こういった派生技術を使えばホリエモンの言っていることが実現できそうか？いや，ACの問題が解決されていません．上述したプロジェクトではアクセスコントロールについては一切言及されていません．つまり，誰でもデータにアクセスし放題なのです．これではマイナンバー制度を実現するシステムの構築は無理でしょう．ネットストーキングが容易にできてしまう最悪のディストピア社会が訪れます．

では，BitTorrentにアクセスコントロールを付加する方法は無いのか？と考えてACM Portalを調べてみると，一件見つかりました．NT Borchらの論文がそれですが，どうもまだ論文段階のもののようですね．実現するためにはもうちょっと投資が必要のようですし，少し探してみても，実用的なソフトウェアレベルにはなってないようです．

ここまで考えただけでも彼の言ってることが破綻していることがわかります．BlockChainでマイナンバー制度のシステムを作るコストは全く低くありません．未だ研究段階（しかもアイデア段階）で枯れた技術でもないものを実現可能なレベルに引き上げるのにどれくらいのコスト（時間も金も）がかかると考えているのか？確かに一兆円は無いかもしれないが，野心的過ぎますし，野心的な割に得られるリターンがあまりにも低すぎます．素直にOracle買って中央サーバを永田町に置けば一瞬で解決できるのに，なぜ，わざわざBlockChainでP2Pテクノロジを導入しなければならないのでしょう？エンジニアリング的に全くナンセンスです．

更に考えを進めてみても問題が山積みです．例えば，ユーザ認証（マイナンバーデータベースへのアクセスできるユーザーの登録）はTwisterに習ってBlockChainでやるとしましょう．BlockChainではそれに参加する個人（コンピュータ）はある種の数値（ハッシュ値）で表されますが，そのハッシュ値に紐付けられた人間が現実社会で信用に足る人物であるとどう保証するのでしょうか？そのハッシュ値を持つ個人が間違いなくマイナンバーデーターベースにアクセスを許しても良い人間であるとどう保証するのでしょうか？実際，BitCoinでもこれは問題になっています．BitCoinでは，BitCoinの歴史が始まって以来全ての取引はBlockChainに保持されています．つまり，いつ誰が誰にいくら支払ったのかは全て追跡可能なのです．その意味では匿名ではないのですが，ハッシュ値と現実世界の人間のひも付けができないのです．したがって司法機関はBitCoinを悪用した不正な取引への対処に苦労しています．

となると...また別の，第三のアルゴリズムを組み合わせなければならないのか？それともProof of Workで初期のChainをたくさんつなげた個人Aが偉いという信用度をたくさん持つ（BitCoinのアナロジーを使えば，Proof of Workの成長初期のBitCoin採掘者は簡単にChainをつなげることができるのでたくさんのコインを所持できる）として，その個人Aよりもほかの人の信用度が必ず低くなるように運用していけばよいのか？政府主動でやれば，初期参加者は制限できるから...初期の参加者の政府関係者だけが信用度（コイン）をたくさん保持するように運用して，後の参加者にはどう頑張っても低い信用度しか得られないようにすればあるいは...

とここまで考えて，やっぱり，素直にOracle買って中央サーバを永田町に置けば解決しませんか？となるわけです．安くて，簡単で（簡単ということは構築・保守が容易）言うことなしです．研究レベルで論文出すのは面白そうですが「かなーり安く出来るぜ」というのはどう好意的に捉えても嘘八百もいいところです．

まとめると，BlochChainでマイナンバーデータベースを構築するというホリエモンのアイデアはどう考えてもイケてないです．研究開発レベルからはじめなければならない問題がたくさんあるように見えますし，解決できたとしても投資するコストとリターンが吊り合ってません．すなおに，中央サーバを置けばACも容易に管理できるし，データ引き出し書き込みも速いし，VPNを導入して政府関係施設だけでプライベートネットワークを構築すればよりセキュアです．

#ブロックチェインが適切な選択である状況はまずない
BlockChainは複数の独立したコンピュータが協力して合意を形成するというアルゴリズムです．全てのコンピュータ（ピア）が平等で，特権的な権限を持つピアは一切存在しません．したがって，誰か特定のピアを乗っ取ったところで合意記録の改ざんは不可能ですし，システムを停止することもできません．合意に参加しているピアの大多数を乗っ取らない限り合意記録の改ざんやサービス停止をするのが難しいのです．（正しく運用されれば）特権的なサーバが存在するクライアントサーバ型より攻撃耐性が高いのは明らかです．

このように，複数の独立したコンピュータが協力して何かを行い，参加する全てのコンピュータが平等であるという概念はP2P型と呼ばれます．一方で，ある特権的な特定のコンピュータが存在して，それを利用するだけのコンピュータがその特権コンピュータにぶら下がる形になっているのをクライアントサーバ型と呼びます．世の中にあるほとんど全てのサービスがクライアントサーバ型を取っており，P2P型を採用しているのはごくわずかです．

一般論として，P2P，もっと言えば複数の独立したコンピュータが互いに協調して動作して，特権的なコンピュータが存在しない分散システム－は構築や運用がとても難しく，また利便性も下がります．誰がどこに何を保持しているのかの導くルーティングや，気まぐれな参加者（コンピュータ）がシステムに参加したり離脱したりしてもシステムが正常に機能するように考えなければなりません．あるコンピュータAの後にあるコンピュータBの処理をさせるという同期問題も分散システムでは途端に難しくなります．単体のコンピュータでは当たり前にできていたことが，分散システムでは途端に難しくなるため，ある程度問題規模を下げて考え適切に妥協している分散システムは数多くあります．NoSQL界隈で耳にする「弱い一貫性」などはその典型例であると言えます．

当然BlockChainもP2Pですから，BlockChainに様々な付加価値を付けていこうと考えた時は，種々の工学的に難しい問題と立ち向かわなければなりません．シンプルで構築しやすいクライアントサーバ型と比べて，基本的にP2Pは悪手であると思って良いと思います．ただ，P2Pによる利点があるのも間違いはありませんので，そこら辺はP2Pが持つ様々なコストと満たすべき要求定義との間のトレードオフとなりますが，やはりP2Pの持つ様々なコストは極めて大きく，これらを乗り越えてでも通したい要求定義とはそうお目にかかれそうにもありません．

万難を排して特権をもつ特定サーバを持ちたくないのだという要求であれば，P2PのBlockChainにすべきかも知れません．しかしよく考えてみてください．この万難を排して特権をもつ特定サーバを持ちたくないという要求は，いささか政治的な色が，それもアナーキなものが主張されるサービスでしか発生しそうにありません（事実BitCoinは新自由主義すら通り越していささかアナーキな色を帯びているように思います）われわれが弾圧されている人権活動家なら考えるべき問題かもしれませんが，基本的に日本は自由の国ですし，アメリカやヨーロッパでもそうです．となれば，見世物小屋でもない限り，わざわざBlockChainを選択しなければならないシチュエーションなどほとんど無いはずです[^2]．もう少し加えるならばBlockChainを使ったこの見世物小屋的なスタートアップ [^1] がシリコンバレーで流行ってますが，彼らがちゃんと顧客の要求を考えているようには思えません．ドットネットバブルの再来のようなものでしょう．

#おわりに
BlockChainは面白い技術ですが，個人Aが個人Bに対してXを渡したという合意の事実を改ざんが極めて難しい形で分散して保持するという技術にすぎません．応用先はかなり限られています．~~BlockChainは大量のデータを保持するストレージを提供するアルゴリズムではありませんし，コピーを防ぐものでもありませんし，アクセスコントロールを提供するアルゴリズムでもありません．~~BlockChainを大量のデータを保持するストレージアルゴリズムとして使用するのは基本的に悪手です．また，デジタルコンテンツのコピー防止アルゴリズムとして使うのも基本的に悪手です．そして，アクセスコントロールを提供するアルゴリズムとして応用するのも悪手でしょう．だから，P2PでdecentralizedのBlockChain，BlockChainと騒ぎ立てる前に，クライアントサーバ型で実現可能ではないか？と自問自答してみるべきです．その答えは十中八九Yesです．

[^1]: DHHが彼の著書REWORKで定義した意味でのスタートアップ
[^2]: ちょっと話がずれますが，あのWikiLeaksですらクライアントサーバ型で，サーバはスウェーデンのウェブホスティング会社PRQにあります．PRQは言論の自由と報道の自由を尊重するスウェーデンの法律により保護されており，問題なく動いています．