前回のrudoさんの記事に続き、FiNANCiEではブロックチェーンサービスをどう作ってきたかの話です。今回はブロックチェーンとUX面での考察になります。
ブロックチェーンをやめた
出だしから、何を言ってるんだと思われるかもしれないですが、最後までお付き合いください。
FiNANCiEは当初、MetaMaskというETHウォレットを利用して各ユーザのブラウザから直接コントラクトを呼び出していました。これが一般的なDAppsの利用方法だからです。Crypto KittiesやMy Crypto Heroesも同じですね。
しかし、一番初めのベータテストを2018年の夏に実施したところ、やはり多くの課題がありました。まずは速度です。当時は自前のしょぼいインスタンスに建てたGethにアクセスしていたのですが、パラメータ設定も厳しめにしていたので5人のテストでもコントラクト実行のたびに「あれ、反応がないです・・」という微妙な空気が流れてしまいました。(数十秒後に通る)
ほかにも、何も説明せずにチュートリアルを開始してもらうと、「え、MetaMaskってなんですか」みたいな話になり、よくよく考えると仮想通貨を持っていない人にとっては、次のようなめちゃくちゃ高いハードルを越える必要がありました。
- サービスに会員登録してチュートリアルをみる
- MetaMaskが必要といわれ、ダウンロードしてインストールする
- MetaMaskの英語の注意文を読み、秘密鍵を作成する。忘れないようにする。
- 仮想通貨取引所をさがして、登録する
- 本人確認書類を提出し、数日後にハガキが届く
- はがきを受け取って仮想通貨取引所に入金する
- 入金した日本円でETHを買う取引所によっては「指値」「成行」などを理解しておく必要あり
- 入金直後は資金移動制限があるので、半額を自分のMetaMaskウォレットに送金する
- FiNANCiEに戻ってきて、自分のMetaMaskをFiNANCiE上に紐づけて、利用開始。その際、GAS代として20円程度支払う。
残念ながら日本では「ちょっとレート悪いけどShapeShiftでクレカでETH買ってきてよ!」とはいろいろな観点から案内できませんし、すべきではありません。
このため、もしその仕様で推し進める場合、ターゲットユーザは「クリプトのリテラシーが高いユーザーとその周辺くらいまで」となってしまいます。これは非常に悩みました。しかしFiNANCiEのやりたいことを考えると、普通のユーザが使えないとサービスとして広がらないと考え、思いきって捨てることにしました。
FiNANCiEはDAppsであることを捨て、バックエンドにブロックチェーンを使った一般的なwebアプリケーションにすることにしました。
台帳コントラクトを開発する
しかしながら、全てブロックチェーンを捨てるのではなく、Plasmaをはじめとする高速化や、その他の技術的革新、法的整備により簡単に仮想通貨でブロックチェーンアプリケーションが気軽に楽しめるようになる未来を見据えて、内部的に切り替えしやすい機構を開発することにしました。
前回ご紹介したRaidenのダッチオークションやBancorのマーケットプレイスはすべてスマートコントラクトで実装されていますが、これらはもともとETHを払い込むことを想定して作られているため、改修が必要があります。
そこで、日本円で払い込まれたお金をブロックチェーン上で扱いやすくするための独自トークンをERC-20ベースで用意しました。ただトークンを作るだけでは動作しないため、ダッチオークションおよびBancor側に手を加えます。具体的には、独自トークンを管理する台帳コントラクトを用意し、そこから実際の各コントラクトを呼び出すようにします。
Bancorの場合、ETHのネイティブトークンと、ERC-20では扱いに差があったため多少のハックが必要でしたが、最終的には実装することができました。
#コードを監査する
このようにして実装したスマートコントラクトのコードですが、リリースするにあたりバグやセキュリティホールがあってはいけません。スマートコントラクトの開発はソフトウエアというよりハードウエアに似ているといわれますが、そう簡単に書き換えられないという性質は確かに似ています。
もし、不具合があった場合は、再度工場に発注して新製品を作るように、お客さんに依頼して新しいコントラクトに引っ越ししてもらう必要があります。
まとめ
今回はブロックチェーンとUX面という観点で、FiNANCiEが何故いまの形になったかをまとめてみました。
まだまだ、やりたい事はたくさんあるけどひとつひとつ積み上げてよりよいプロダクトにしていきたいと思っています。
恒例になってしまいますが、FiNANCiEではエンジニアを募集しております!コンシューマー向けサービスとして既に提供を始めているブロックチェーンサービスってまだまだ少ないので、かなり面白い経験がつめるのではなかいと思います。興味お持ちの方は、是非こちらからお声がけください!