ブロックチェーンについての所感

こんにちは、[freee](https://www.freee.co.jp/) でCTO 兼 概念のほうを担当しています、 @yokoji です。

この記事は [freee Engineers Advent Calendar](http://qiita.com/advent-calendar/2015/freee) の最終日になります。

freeeでは、「スモールビジネスに携わるみんなが創造的な活動にフォーカスできるように」というミッションの実現を目指す中で、[金融機関との連携](https://www.freee.co.jp/news/11financial-institution-4626.html)をすすめており、昨今ではFintechの文脈で取り上げられることも増えてきました。

Fintechの流れの頻出トピックとしては、機械学習、ブロックチェーン、サイバーセキュリティなどいろいろありますが、今回はその中で、先週[Linux Foundation主導でプロジェクトが立ち上がった](http://www.linuxfoundation.jp/news-media/announcements/2015/12/jp_linux-foundation-unites-industry-leaders-advance-blockchain)分野であり、エンジニアのみなさまにはあまりピンと来ていなさそうな（私のまわりだけ？）ブロックチェーン技術について、所感を書き留めておきます。

## ブロックチェーンとはなにか

ブロックチェーンとはなにか？の概要についてはすでにいろんな記事が公開されているので、詳細はそちらを見ていただければと思いますが、私はブロックチェーンについて以下のように理解しています。

> * ブロックチェーンの本質的な価値は、「互いに信頼のないネットワークの中で、信頼できる合意記録を効率的につくれること」
> * そしてさらに、「ネットワークに互いの信頼が仮定できれば、信頼できる合意記録をより効率的につくれること」が、ビジネス上とても重要

ここでの合意とは、所有権の移動や、伝達、認知、依頼、承認、認証、契約など、法的なものからそうでないものまで、個人間・企業間の合意からコンピュータ同士の合意まで、記録する価値があるものすべてが対象になることがポイントかなと思います。万能感があってわくわくしますね。

## ブロックチェーンは何を変えるのか

信頼できる合意記録、あるいは取引記録はビジネス上のあらゆるシーンでとても大切で、多くの企業ではこれまで、記録の信頼性を高めるするために、組織や中央集権システムをつくり、ガバナンスを整備し、それらにとても大きな時間的・金銭的コストを払ってきました。起こるかもしれないリスクを避けるために莫大なコストがかかったり、高いトランザクションコストのために企業活動が制限されているのが現状です。

例えば、[IBMが提示するサプライチェーンの例](http://www.ibm.com/blogs/think/2015/12/17/how-blockchain-will-transform-business-and-society/)だと、工業製品が世にでるまでには、企画・設計・購買・組み立て・配送・修理など、さまざまな工程で多くの取引先との合意形成が必要ですが、それぞれの記録・参照プロセスは独立していて、管理方法が別々だったり、システムやデータベースも別々だったりすることが多いです。これまで彼らは関連する取引同士を結びつけるために多大な時間やお金をかけ、システム間をまたいだエラー対応に労力を注いできました。

また金融システムの例で言うと、トランザクションのコストを考慮してメンテナンス時間を設け、バッチ処理で決済を行っているため、2015年のいまでも24時間リアルタイム決済ができる環境は整っておらず、企業活動のスピードは大きく制限されています。

ブロックチェーンがビジネスにもたらすイノベーションは、これらの効率化によるビジネスプロセスの高速化とリアルタイム化、低コスト化、圧倒的な冗長性によるダウンタイムゼロの実現です。仕組みにより不要なリスク対策がいらなくなり、煩雑な契約や決済、資産などの管理が一元化できて、ミスも減り、安定していて、コストも減る。最高ですね！


## ブロックチェーンを支える技術

ブロックチェーンが信頼の依りどころとしているのは、公開鍵暗号とよく設計された分散型合意システムです。量子コンピュータ云々の話はありますが、公開鍵暗号はしばらくは崩壊しない前提でスコープから外し、今回はよく設計された分散型合意システムに注目してみます。

分散されたノード間での合意形成といえば、往年のP2Pネットワークが取り組んできた課題そのもので、まさにブロックチェーンはP2Pネットワーク上で実現されています。

理想のP2Pネットワークは「すべてのノードは平等な情報と権限をもち、自律的かつ民主的に動く。そして世界は善意に支えられて栄える」のですが、現実は世知辛いもので、そんなにうまくいかないことが多いです。

そこで現実的なP2Pネットワークの課題となってくるのが、複数ノード間の効率的なルーティング、動的なネットワークトポロジ管理、ノードの信頼性担保です。

P2Pなどの分散システムの文脈から発展し、現実的な問題の解決に利用されている大規模なルーティングや動的ネットワーク管理の方法には、クラウド技術として実績のあるプロトコルも多く、すでに身近で利用されているものもたくさんあります。例えば、Windows Azureなどでルーティングに利用されているDHT（分散ハッシュテーブル）や、Serfで利用されているGossip Protocolなどは、代表的なプロトコルのひとつです。

また、ノードの信頼性担保（誰を信頼するか）も難しい問題ですが、ノード毎の信頼度をスコアリングすることでネットワーク全体の健全性を保つ方法など多数の研究成果があり、こちらも現実的な問題解決に役立ちそうです。

P2Pシステム自体が根本的に善意を前提としたシステムなので、悪意のあるノードの侵入や大規模なエラーに弱いという弱点があります。この特性からくるセキュリティリスクをいかに避けるかというところも、ブロックチェーンの普及に向けた大きな課題になってきそうです。

P2Pネットワーク関連の技術については[足がかりとなりそうなサーベイ論文](http://ac.els-cdn.com/S1084804515000879/1-s2.0-S1084804515000879-main.pdf?_tid=6abd5804-aa5d-11e5-bbfd-00000aab0f27&acdnat=1450975570_b054045a73e9e364607de542c68dd385)もあるようなので、興味のある方はぜひご一読いただければと思います。

## トランザクション速度と信頼性のバランス

ブロックチェーンでは、複数ノードへの情報伝達やブロックの計算に時間がかかるため、ナイーブに確実なトランザクションを期待すると、特に大規模なネットワークではとても時間がかかります。Bitcoinではトランザクション速度をある程度犠牲にすることで信頼性を担保していますが、金融取引などのビジネスでは、理想のユーザ体験を考えると大規模な環境での高速なトランザクションは必須要件でもあります。

そこでビジネスアプリケーションへの適用で課題となってくるのが、トランザクションのスピードと信頼性のバランスをどうとるかです。バランスはアプリケーションによって設計が変わりますが、前述の通り、ネットワークに信頼を仮定することである程度両立させることができるところが、ブロックチェーンのもたらすイノベーションのポイントのひとつです。

P2Pネットワークに信頼を仮定するための方法はいろいろあり、主なものには

* 参加できるノードの審査を設け、信頼できなさそうなノードは早期検知して排除する
* 信頼ネットワークに階層構造を設け、上位ティアのノードの管理を強化して中央集権的なアプローチを導入する

のような方法があります。後者の例で言うと、上位ティアのノードから信頼できるブロックチェーンのチェックポイントを下位ティアのノードに伝えることで、ブロックの検証時間を削減するといった手法が用いられることがあります。

他にも、実際にブロックチェーンの本格運用がはじまれば、P2Pネットワークに由来するさまざまなパフォーマンス問題も出てきそうです。パッと思いつくのは、以下のような課題でしょうか。

* コンピューティングリソースやネットワークリソースが複数ノード間でさまざまに異なる環境では、パフォーマンスの低下が無視できなくなり、トランザクションのスピードを担保するために参加ノードの審査にはコンピューティング性能、ネットワーク性能の閾値を設ける必要がでてくる
* ノードの参加・離脱の頻度が激しいネットワークが必要になれば、動的なネットワークトポロジ管理やルーティング制御で課題がでてくる

## ブロックチェーンはスモールビジネスを変えるか

日々の記帳、請求書管理、さまざまな契約書、決済、経費精算など、スモールビジネスの業務には、社内外のコミュニケーションにおいて、常に信頼できる合意記録が求められます。

ブロックチェーンを利用してこの信頼ネットワーク構築を圧倒的にスケーラブルに出来れば、社内だけでなく、社外のパートナーとも協働しやすい環境ができるかもしれません。

スケジュール管理や資産管理が圧倒的に便利になり、柔軟で高速なサプライチェーンが実現し、中小企業間のシェアリングエコノミーが加速することで、いち事業体としてのポテンシャルを超えたビジネスがたくさん生まれ、スモールビジネスからイノベーションがどんどん起こる環境が生まれることも考えられます。

また、政府が管理する登記・戸籍情報なども、ブロックチェーンの仕組みがまさに向いていそうです。個人番号カードを通して日本国民は電子証明書の秘密鍵を１人１つ持てる時代なので、相性はよさそうです。


## freeeとしてのブロックチェーンへの取り組み

結論からいうと、freeeの現状のサービスではコストメリットを享受できるサイズのネットワークや取引がないため、すぐに活用するというタイミングではないという所感です。中規模以下の取引でも活用を進めるためには、キラーアプリの出現と、具体的な業務フローに則して使いやすいAPIを備えたプラットフォームが必要かと思います。

日本においてもいろいろなブロックチェーンプラットフォームが生まれてきつつあるようなので、例えば弊社オフィスハック部の活動として、社内で価値基準に則した行動が褒められる文化を作るための、社内通貨を使った実証実験をやってみたら面白いかなと思いました。社内の文化や価値基準がどのように伝播するのかを可視化できるし、これ自体が弊社の価値基準のひとつ「Hack Everything」を体現していていい感じです。

ノードの管理・監視やデータ分析など、P2Pネットワークにおける中央集権的な処理はコストが高いので、ここにもチャレンジングな課題があるかもしれません。

会社のカルチャーを盛り上げつつ、ブロックチェーンの勘所や分散システムの知見を得られたらハッピーですね。


## まとめ

以上、ブロックチェーンについて所感を書き留めてみました。クラウド技術しかり、P2Pネットワークが現実世界の問題を解決するためには、理想を追いすぎず、中央集権的な手法とのハイブリッドが現実的なのかなという感想もありつつ、ブロックチェーンのもたらすであろう世界観は、スモールビジネスにとっても非常に魅力的です。

freeeでは、スモールビジネスに関わるひとたちが本業に集中できるためのプラットフォームをつくるための手段として、ブロックチェーンが真価を発揮するタイミングを見極めるために、今後もウォッチしていきたい所存です。

## freeeではエンジニアを募集しています

freeeでは、[技術の原理原則を愛し、技術が世の中をよくするという信念と飽くなき好奇心をもつ、課題志向なエンジニアを募集しています](https://jobs.freee.co.jp/)。




最後に、freee社はじめてのAdvent Calendarを企画し開発チームを熱狂させてくれた、IoTの世界をオフィスのトイレから変えていくナイスガイ @teppei_tosaに感謝！また来年もやりましょう！