検索
  • eguchi

cosmos-sdkを使ってブロックチェーンベースのアプリケーションを構築してみる



こんにちは。

2019年4月から本プログラムに参加した2期生の江口です。

プログラム内で取り組んだことについて、簡単にまとめていきたいと思います。


CO.NECT 学生起業家支援プログラムとは

東京大学ブロックチェーンイノベーション寄付講座主催のブロックチェーン技術を用いた起業を支援するプログラムです。毎年4月(または10月)から半年間,参加学生は自身でブロックチェーンに関連する事業の立案と、アプリケーションの実装を行います。興味がある学生の方はぜひ次回の募集要項をご確認ください。


本講座での成果物

Technology drivenで動くアプリケーションを作るというコンセプトのもと、具体的には、tendermintコンセンサスおよび、Cosmos-sdkを利用して投票に特化したアプリケーション(Votum Chain)を作るということを行いました。


背景

  • EthereumのPoSへの移行が間近(?)

  • 独自チェーンの登場

  • Blockchainを使ったmodel caseの不在

2019年5月にPrysmatic LabsがEthereum 2.0 Serenityを実装したtestnetをリリースしたことや、10月に開催されたDevconで2020年初頭に予定されている beacon chain の詳細な仕様についての議論が活発に行われるなど、Ethereumコミュニティ内でもPoS自体への注目が集まっています。また、2019年3月にBinanceが、cosmos-sdkを一部利用したBinance Dex Chainをリリースしました。


こうした中、アプリケーションごとにブロックチェーンで状態管理を行うようなシステムが標準的に利用されるようになる未来がくるのではないかと予想し、今回はそのような独自ブロックチェーンを比較的簡単に作ることができるcosmos-sdkを利用してプロダクトを作ってみようと思いました。今後、Blockchainが破壊的イノベーションになりうるかどうかは、Blockchainを利用したユースケースが登場するかにかかっていると考えています。



将来的に解決できる(であろう)社会的課題

vote(投票)はラテン語でvotumと言います。今回作ったアプリケーションは、投票をブロックチェーンで行おうという趣旨で、公共性が高い投票において将来的に利用することができるのではないかと考えています。公共性が高い投票が必要となる場面として、選挙をあげてみます。


選挙の現状

現状の公職選挙は、多くの人が手を介して極めてアナログ方式で運営されており、多くの場合は、自動読み取り機によって分類され、分類された物を計数機でカウントしています。自動読み取り機や計算機にセットするのは人的作業になります。その後、有効票がなくなったら、無効票や疑問票の確認を人的作業で実施します。


人的作業から発生するミスで投票結果が変わりうるということを考えると非常に恐ろしいものがあります。


他にも、選挙をめぐる課題として以下のようなものがあると考えられます。

  1. 一票の格差

  2. 投票率が低い(特に若者の投票率)

  3. 不正選挙

  4. 選挙に関わる莫大な人件費

この中で、ブロックチェーンにおける投票が将来的に採用された場合、集計の人的ミスや3,4といった課題は直接的に解消することができ、2に関しても、関節的に改善することができると考えています。


電子投票の分類

本格的な内容に入る前に、まずは電子投票について整理してみましょう。一般的に、電子投票には2段階あると考えています。


第一段階

第一段階では、投票所で紙に書いて投票していた部分が、端末操作に置き換わるというもので、これは一部の自治体ではすでに実際に行われていたりします(※もちろんブロックチェーンの方は利用されていません)。


第二段階

第二段階では、全てオンライン上で完結する仕組みになっており、名実ともに電子投票と言えるでしょう。


電子投票とブロックチェーン

さて、ここで、電子投票とブロックチェーン投票のあり方についてみていきましょう。

一般的に、電子投票のメリットとして次のようなことが挙げられています。

  • 選挙結果の判明が迅速かつ正確

  • 有権者の意思を正確に反映(疑問票・無効票解消)

  • 自書が困難な有権者も容易に投票可能

ここに、ブロックチェーンを使うことで、次のような効果をプラスすることができます。

  • 投票者の秘密投票は保持できる上に、不正がないかの確認が容易にできる(選管の不正対策)

  • 既存の選挙制度で必要な人件費を大幅に削減できる(コスト削減)

  • 選挙結果を誰でも確認できる(公平性)

電子投票が抱える課題

しかしながら、電子投票には次のような課題もたくさんあります。

  • 本人確認をするための法整備

  • システム障害への対応

  • 投票の秘密の確保

さらに、技術的にも難易度が高いと思われるのは、本人確認の方法です。

  • ワンタイムパスワード

  • 静脈認証

  • 顔認証

  • 指紋認証

  • マイナンバー

と言った手段が考えられますが、どれも認証機構として国が中心になって動かないと(一企業が頑張ったとしても)なかなか実現が難しそうです。


アプリケーションの構成について

本講座では、誰でも公平な投票を可能にするプラットフォームVotum Chainを作りました。具体的には、次のような簡単なロジックをcosmos-sdkを使って構築しました。

  • proposerは、ネットワークに対して手数料を支払い、投票用トークンを獲得する

  • voterは、proposerから投票用トークンを受け取る

  • voterは、proposerが決めた期日までに投票を行う

  • 投票を行うことができるのは、投票用トークンを持っている人だけ

ロジックは非常にシンプルですが、cosmos-sdk自体が開発中のプロダクトということもあり、仕様変更が度々起こって実際に作るのは意外と大変でした。


また、cosmos-sdkで投票アプリケーションを作る意義としては、次の2点が考えられます。

  • Gasの設定ができる

  • 投票形式に合わせてチェーンをカスタマイズできる

仮にEthereum上で同様の仕組みを作ったとした時、投票にかかるGasを0.001ETH程度だとすると、1億人が投票するだけで、100,000 ETHのコストが発生してしまうことになります。これだと、人件費削減をする恩恵をあまり受けられないような感じがします。また、衆議院選、参議院選、地方選挙、国政選挙のように、公職選挙だけでも複数の仕組みが存在します。各選挙ごとに投票のカスタマイズが容易にできるというのが、cosmos-sdkを使う利点と言えるのではないでしょうか。


まとめ

Votum Chainのアプリケーション作成を通して、ブロックチェーンは、選挙において手作業で行われている作業を代替できる可能性があることや、ネットワークが機能している前提で、特定の第三者を信頼しないで、投票する仕組みを作れるということがわかりました。また、実用化にあたっても、少人数の投票では役に立たないが、大規模で正確性かつ信憑性が必要な投票の場合には、役に立つのではないかと考えています。


完全な蛇足になりますが、PSYCHO-PASSというアニメのシーズン3で言及されていたように、将来的に、人間の意思決定過程に最も影響を与える話法、および声のトーンを発生させる新世代AIによって大衆コントロールが行われる可能性があるとしたら、電子投票が完全に実施可能となった場合にも、果たしてそれが有意義な政治に繋がるか依然としてわからない状態になります。テクノロジーの発達とともに、政治・投票のあり方とはといった根本的なところも見直していくことが必要になってくると考えます。


参考:選挙にかかる人件費

https://news.yahoo.co.jp/byline/itoshin/20190718-00134746/

http://www.soumu.go.jp/main_content/000573627.pdf

http://www.soumu.go.jp/main_content/000493011.pdf

http://www.soumu.go.jp/main_content/000547414.pdf


補足

Ethereumには、スケーラビリティの問題があり、その中で、Layer 1におけるソリューションとして注目を集めているプロジェクトの一つにTendermintがあります。Tendermintは、PoSベースのコンセンサスアルゴリズムにすることで、従来のPoW形式のコンセンサスが抱えてたスケーラビリティの問題へ解決策を提示しています。Tendermintには、ABCIと呼ばれるインターフェースがあり、インターフェースに沿った実装を行うことで、コンセンサスレイヤーとアプリケーションレイヤーを分離することができます。また、CheckTx, DeliverTx, Commitのようにトランザクションの種類が決められており、コンセンサスエンジンからアプリケーションロジックに対して、リクエストを行い、そのレスポンスを返す構成になっています。Tendermintは、PoSコンセンサスのためトランザクションの処理が速い、ファイナリティが得られる、1/3までビザンチンノードを許容するなどの特徴のほか、独自のアプリケーションレイヤーをもつブロックチェーンを実装することができます。


Cosmos-sdkは、アプリケーションレイヤーの状態管理を行うフレームワークです。Usabilityの向上を図ることで誰でも簡単にブロックチェーンを構築することができるようになっています。



0回の閲覧

© 2020 Endowed Chair for Blockchain Innovation, the University of Tokyo All rights reserved