DAppsでの秘密鍵管理調査

やりたいこと

MCH(My Crypto Heroes)のようなDAppsが、どうやって秘密鍵の管理等を行っているか調査してみた。

PC & ブラウザ

Walletとして、MetaMaskを利用。
MetaMaskで生成したアドレスに対して、取引所を利用して、etherを振り込む。
そうした後、ゲーム内でEtheriumを使ってて、GUM(ゲーム内通貨)を購入できる。

MetaMaskを有効化すると、web3 objectがインジェクトされるので、普通に、web3.js使ってwebアプリを開発すればいいっぽい。
MetaMask を使用した Web3 の初期化 - Qiita

モバイル & ブラウザ

Go Walletや、Trust Walletといったウォレット機能付きモバイルブラウザを利用する。
上記のウォレットで、PCの時のMetaMaskと同じことができる。

この記事見るとわかりやすい。
https://makionaire.com/dapps-introduction/

モバイルブラウザでもweb3.js使ってアプリ開発しとけば、動くんじゃないかなと思うんだけど、要調査。

モバイル & アプリ

ここに関しては想像が入ってます。 違ったら教えてください!

ウォレット機能付きモバイルブラウザであるtokenPocketさんという会社?が提供しているらしい。
Dappsもトークンも。イーサリアムを、あなたのポケットに。

Webview 使ってる気がする。
教えて!Webviewって何?ネイティブと何が違うの? | 株式会社ランチェスター

秘密鍵は、こんな感じで端末に保存しているんじゃないかなと思う。
What is an Ethereum keystore file? – Julien M – Medium

技術的には、ウォレット機能付いたブラウザアプリを作って、さらにモバイル向けのWEBアプリ作ったって感じ?
MCHは、ブラウザアプリをtokenPocketさんが、WEBアプリをMCHを作ってるdoublejump.tokyoさんが分担して作ったと考えると分かりやすそう。

まとめ

DApps使いたい場合は、ウォレット機能付きモバイルブラウザが必要っぽい。
もちろん秘密鍵を毎回入力してもらえれば問題ないけど、それは面倒だし、サーバ保存はセキュリティや法律的に厳しい。
なので、ウォレット機能付きモバイルブラウザ and メタマスク連携できる形でサービスを作って行くのが基本なんだなーって感じ。

例えば、日本だと、go wallet が、app store みたいな感じになって、ここからユーザはゲームとかサービス探して、開発者はここに新しいアプリを載せて、みんなに知ってもらうみたいな世界観なのかなーって思った。
で、大きくなったら、webviewでネイティブアプリ化していって、もっとUI必要だよねってなったら、Walletごとネイティブで、開発するみたいな。
GO!WALLET (ゴーウォレット) | DApps・ブロックチェーンゲームに対応したクリプトウォレットアプリ