inapp-wallet——アプリに埋め込めるブロックチェーン

by fujimura
開発ブロックチェーン
#Web3#ブロックチェーン#Ethereum#ERC-4337#Web3Auth#AccountAbstraction#ウォレット#Next.js

あなたがプレイしているゲームのキャラクターやレアアイテムが、ゲーム会社のサーバではなく自分のものとしてブロックチェーン上に記録されているとしたら——。そのキャラクターを他のゲームで使ったり、別のプレイヤーに売ったり、引退後も手元に残しておいたりすることができます。

こうした仕組みを支える アカウント抽象化(Account Abstraction) という技術は約2年前から存在していましたが、当初は実装のハードルが高く、なかなか広まりませんでした。最近になって対応するライブラリが充実し、一般的なWebアプリに組み込みやすくなってきたため、ゼミで試しに実装してみました。その報告をかねて、inapp-wallet(アプリ内ウォレット) という考え方を紹介します。

「ウォレット」が普及を阻んできた

ゲームのアイテムやデジタルアートをブロックチェーン上で所有する仕組みは、NFT(Non-Fungible Token)として数年前から存在しています。ところが「実際に使う」となると、多くの人が途中で諦めてしまいます。

なぜか。ブロックチェーンを使うには ウォレット というものが必要で、その準備が煩雑だからです。

  • ブラウザに専用の拡張機能(MetaMaskなど)をインストールする
  • 12〜24個の英単語からなる「シードフレーズ」を紙に書いて保管する
  • 送金のたびに「ガス代」と呼ばれる手数料を暗号通貨で支払う

ゲームを遊ぼうとしているユーザーに、こうした手順を踏ませることはできません。

inapp-walletとは何か

inapp-walletは、これらの障壁をアプリ側が引き受ける仕組みです。ユーザーがブロックチェーンの存在を意識しなくていいように、ウォレット機能をアプリやゲームの中に埋め込んでしまうというアプローチです。

ユーザー側の操作はシンプルです:

Googleでログイン ウォレットが自動生成 NFTやトークンを使える

シードフレーズも専用アプリも不要。ブロックチェーンの知識がなくても、普通のWebサービスにログインするのと変わらない体験でウォレットが手に入ります。

何ができるようになるか

inapp-walletが普及すると、こんなことが自然にできるようになります:

  • ゲームのキャラクターやアイテムをNFTとして所有する——ゲームサービスが終了しても、自分の手元に残る
  • ゲーム内で稼いだトークンを別のアプリで使う——ゲームをまたいだアイテム経済圏が生まれる
  • デジタルコンテンツの「本物」を持つ——画像・音楽・動画の所有権をブロックチェーンで証明する
  • サービス間でアイデンティティを持ち歩く——別々のアプリでも「同じ自分」として活動できる

これらはいずれも、ユーザーが「ブロックチェーン」という言葉を知らなくても成立します。アプリがすべてを透過的に処理するからです。

裏側を支える2つの考え方

inapp-walletのUXを実現するために、2つの重要な技術的考え方があります。

① 社会的ログインによる鍵管理(Web3Auth)

ブロックチェーン上の所有権は「秘密鍵」という暗号鍵で管理されます。従来はユーザー自身が管理しなければなりませんでしたが、Web3Auth のようなサービスを使うと、Googleアカウントなどの既存のログイン情報と紐付けて鍵を安全に管理できます。

鍵は分散して保管されるため、GoogleもWeb3Auth自身も単独では鍵を復元できません。ユーザーは安全性を保ちながら、パスワード管理の手間なしに鍵にアクセスできます。

② アカウント抽象化(Account Abstraction)

通常のブロックチェーン操作には「ガス代」が必要で、ユーザーはあらかじめ暗号通貨(ETH)を持っていなければなりません。アカウント抽象化(ERC-4337)という仕組みを使うと、このガス代をアプリ側(開発者)が代わりに負担できるようになります。

ユーザーから見れば、ゲームのアイテムを受け取っても送ってもお金がかからない——まるで手数料ゼロのサービスのように体験できます。

デモを試してみる

これらの仕組みを実際に組み合わせたデモを公開しています。Googleアカウントがあれば、ETHも専用アプリも不要で試せます。

デモサイト: smart-wallet-demo.vercel.app
ソースコード: github.com/kofujimura/smart-wallet-demo

ログインするだけでウォレットアドレスが発行され、テストネット上でNFTやトークンの確認・送金を体験できます。コードはNext.js + Web3Auth + Permissionlessで構成されており、実際のアプリへの組み込み方の参考にもなります。

「見えないブロックチェーン」へ

ライブラリの充実によって、inapp-walletの実装は以前より格段に簡単になりました。とはいえまだ情報は少なく、実際に動くものを作るまでには試行錯誤が必要でした。今回のデモがその足がかりになれば幸いです。

インターネットを使うときに「TCPとHTTPの仕組み」を知らなくていいように、ブロックチェーンを使うときも「秘密鍵とガス代の仕組み」を知らなくていい——そんな体験を実現する部品が、ようやく揃ってきた段階だと感じています。