💻

CoinbaseのSmart WalletがWeb3オンボーディングを劇的に改善するので、デモと技術解説をする

2024/07/18に公開1

はじめに

CoinbaseのSmart Walletは、Account Abstractionを使ったスマートコントラクトウォレットです。
このウォレットによって、iPhoneのネイティブな機能(keychainによるpasskeyの管理, 生体認証)を使ってウォレットを扱うことができるようになりました。

これはMetaMaskのような「セルフカストディだけどウォレットを事前に準備する必要がある」パターンとも、Web3Authのような「ソーシャルログインで事前準備不要だけど、鍵を直接管理できない」パターンとも違います。

両方のいいとこ取りで**「セルフカストディ」かつ「ウォレットの事前準備不要」**という新しいパターンです。

これによるユーザー体験の向上は劇的で、海外を中心にエンジニアの間で非常に話題になっています。
一方で、日本ではあまり騒がれておらず、この変化を伝えることの重要性を感じました。

この記事では、Coinbase Smart WalletによるWeb3アプリケーションのオンボーディング体験を、デモを通して紹介します。

後半では、このウォレットの裏側で使われている技術について説明します。

デモ

まずは技術的なことには触れず、デモを通してユーザー体験だけを伝えます。

事前準備不要で、ここからそのまま触れます。
https://coinbase-smart-wallet-create-connect-sign.vercel.app/

ウォレットの作成とNFTのmint

以下の2つがメインのワークフローです。

  1. 生体認証でウォレット作成
  2. 生体認証で署名してNFTをmint

iPhoneのSafariで開いたWeb3アプリケーションに対して、MetaMaskなどのウォレットアプリに遷移することなく、iPhoneネイティブの機能でウォレットを作成できていることがわかるかと思います。

また、そのウォレットにガス代としてのETHを補充することなく、ガスレスでNFTをmintするところまで完了しています。

動画は52秒ですが、まさに52秒で上記の内容が完了します。

https://youtu.be/JzRjMBZAi78

Disconnect & Reconnect

デモサイトで一度ウォレットをdisconnectした後の挙動ですが、次回からはそのウォレットが自動的に認識されるようになります。

そのため、2回目以降はより簡単に接続できます。

https://youtu.be/lwBF_xA6XzU

Sign out

ウォレットをSign outすると、

  1. 新しいウォレットの作成
  2. 以前作成したウォレットの接続

が選べるようになります。

動画の場合、以前作成した複数のウォレットがiPhone内にPasskeyとして保存されているため、そこから接続するウォレットを選んでいます。

https://youtu.be/9e4w6YoYFDg

公式のダッシュボードでウォレットの管理ができる

CoinbaseのWallet用ダッシュボードにも同様にログインできるので、ここでウォレットの管理ができます。

アドレスを表示したり、暗号資産やNFTのtransferをすることができます。

https://wallet.coinbase.com

https://youtu.be/JJcMsFL0T0c

PCでもスマホと同じウォレットを使用可能

スマホと同じウォレットをPCから使いたいときは、PC側でQRコードを表示させて、スマホのカメラで読み込むと、スマホの生体認証からログインできます。

動画にはスマホの画面は映っていませんが、QRを表示したあと、スマホを操作しています。

https://youtu.be/aQ6HpIAN0Gg

デモコード

今回のデモのコードはGitHubで公開しているので、興味のある方は是非手元で動かしてみてください。
https://github.com/ryokomy/CoinbaseSmartWallet-Create-Connect-Sign

技術について

ここまでで、「ウォレットの作成」や「トランザクションの送信」といったWeb3ならではの体験を、事前準備なしで、非常に簡単に実現できることを確認できたかと思います。

ここからは、少し技術的な話を付け加えていきます。

どのようにウォレットの作成をしているか?

ERC-4337のAccount Abstractionの規格に沿ったスマートコントラクトウォレットを作成しています。

ウォレットはデプロイする前の状態で、アドレスだけ取得して使っています。

スマートコントラクトウォレットはよく「ウォレット作成時にスマコンをデプロイしないといけない」と誤解されていますが、実際は上記のように、デプロイせずにアドレスを取得することができます。詳しくは、以前投稿したXのポストで説明しているので、興味があればご覧ください。

なぜ暗号資産なしでトランザクションが送信できるのか?

ERC-4337では、ユーザーの代わりに別の誰か(gas sponsor)がガス代を支払うことができるからです。

このデモでは、Baseのテストネットワーク(Base Sepolia)を使用していますが、Coinbaseがgas sponsorをしてくれています。

なぜ生体認証でトランザクションが送れるのか?

生体認証による署名を検証するコードをスマートコントラクトに書いているからです。

こちらも詳しくは以前投稿したXのポストで解説しているので、ぜひそちらをご覧ください。

このアドレスのウォレットは他のチェーンでも使えるのか?

使えます。

ウォレットのダッシュボードからQRコードを表示すると、対応チェーンのアイコンが並んでいます。

なぜスマートコントラクトウォレットなのに、複数チェーンで同じアドレスを使えるかは、以前のXのポストで解説しているので、気になる方はそちらをご覧ください。

まとめ

CoinbaseのSmart Walletを使うと、ウォレットなどの事前準備なしで、iPhoneのネイティブな機能(keychainによるpasskeyの管理)を使ってセルフカストディウォレットを扱うことができるようになりました。

この体験は従来のWeb3オンボーディングに比べて非常にスムーズで、マスアダプションを確実に前進させます。

このデモをきっかけに、Web3オンボーディングの最新事例を理解し、使いやすいWeb3プロダクトがどんどん増えることを期待しています🚀

お知らせ

X(旧Twitter)ではより高頻度にWeb3関連の情報を発信しています🔊
フォローよろしくお願いします!
https://x.com/ryoheikomy

Discussion