IDQ Soul Wallet 【2023年2月時点のもの】
【2023年2月時点のもの】
What it does
IDQ | Soul Wallet は Web3 の一般的な普及を目指したウォレットプロダクトです。
Web3 時代とは「デジタルで個人が Wallet と PHR ヘルスデータ DID で個人管理ができること」だと考えています。
Web3 はまだ一般的には普及しておりません。これがその起爆剤になります。
機能性とポイントは3つ:
1. 秘密鍵がいらないのにデジタル ID/送金のセキュアで使い方がすごく簡単!
2. QR コードをスマホでスキャンするだけで Wallet アクセス OK!
3. API ファースト(API 接続のところで今回、産学連携の PDI 認証システムをプラグインするだけで使用できます。また企業間連携やパートナシップも可能)
The problem it solves
秘密鍵を管理しなければならない煩雑さ・難しさ主流になっているウォレット「MetaMask」の UX の課題仕組み上、PC とスマホの両方に対応させるのにも開発コストがかかる
Challenges I ran into
ユーザーに鍵管理の存在を意識させないシステムにするために、署名及び送金が必要となる処理をAPIサーバー側で作り込みましたがここの開発が難しかったです。また、単なるウォレットの開発に加えてDIDの発行及びVerifiable Credentialsの発行用のスクリプトの開発も行いました。特にVerifiable Credentialsについては、まだまだドキュメントも少なく仕組みを理解してスクリプトを作り込むのに苦労しました。
Technologies I used
使用した分散型インフラと API
ION generateKeyPair
ION generateRequest
ION AnchorRequest
Pinata pinFileToIPFS
Pinata |Gateway
Pinata |pinList
使用した Blockchain
Avalanche Fuji Chain(Testnet)
使用した tech stack
truffleスマートコントラクトの開発のため
React.jsフロントエンドの開発のため
expressAPI サーバー開発のため
superAgentフロントエンドから API を呼び出すため
承認制送金システム実装のため
SmartContract分散型アプリケーション開発のため
ION(DID)DID の生成及び DID ドキュメントの生成のため
ethers.jsAPI サーバー側でスマートコントラクトのメソッドを操作する処理を実装するため
Blocto SDKログイン機能の実装するため
RESTful APIAPI 開発・設計・公開のため
Figma画面デザイン考案のため
ERC20 TokenIDQ Token 開発のため
Verifiable CredentialDID と紐づくデータを検証可能な状態で公開するため
Pinata API IPFS へのファイルアップロードのため
erifiable Credentials と DID ドキュメントの登録・保管・参照のため
Stripe APIIDQ トークン購入機能実装のため
MUI Componentフロントエンドの開発を効率化させるため
How we built it
IDQ Soul Walletは、ユーザーに鍵管理を意識させないこと・DID連携を管理するために3つのコンポーネントに分けて構成されています。
・フロントエンド
・スマートコントラクト(バックエンド)
・API サーバー
フロントエンドは、React.jsで開発を行いました。
スマートコントラクトは、truffleにて開発を行っております。独自トークンのためのMyTokenコントラクトとDID連携及びウォレットの管理のためのFactoryWalletを開発しました。
APIサーバーについては、Expressを使って構築し、秘密鍵を必要とする全ての処理とDIDの生成を実装しております。また、DIDドキュメントを生成してipfsにアップロードしています。
What we learned
DIDの生成及びVerifiable Credentialsの生成方法の学びました。
また、独自実装によりユーザーにメタマスクのようなウォレットアプリの存在を意識させない方法としてバックエンド側でブロックチェーン関連の処理を肩代わりするアーキテクチャの開発手法を学びました。
What's next for
・UNCHAINのWeb3助成金プロジェクトへの応募
・開発者に使ってもらいやすくするために,ブラウザの拡張機能とVsCodeの拡張機能としての開発の検討
・Gtihubのコミット量に応じたトークン発行機能の開発