
Solanaパスキー:暗号資産ウォレットUXの未来
Solanaアプリには、高速かつ安全でネイティブな暗号資産ウォレットのオンボーディングが必要です。Phantomがこの分野をリードしてきましたが、依然としてユーザー自身がシードフレーズを管理する必要があります。
パスキーはそれを変えます。
WebAuthn標準とFIDO2プロトコルに基づくパスキーは、秘密鍵を保存したり公開したりすることなく、生体認証またはハードウェアベースのログイン(Face ID、Touch ID、Windows Hello、YubiKeysなど)を実現します。
パスキーは、暗号鍵ペアを使用して従来のパスワードを置き換えます。秘密鍵はユーザーのデバイス上にある安全なハードウェアモジュールに保持され、公開鍵だけが共有されます。
ほとんどのアプリがパスワードをパスワードレス認証に置き換えるためにパスキーを使用する一方、Paraは異なる方法で活用しています。ウォレットセッションの暗号学的な認可です。
パスワードもシードフレーズも不要です。ユーザーのデバイスに組み込まれた暗号学的アクセスだけで、シンプルなユーザー体験を提供します。
SolanaウォレットのUXにパスキーが重要な理由
スムーズな暗号資産オンボーディングの必要性は、かつてないほど高まっています。
Solanaモバイルアプリ、開発者の活動、ステーブルコインの取引量が急速に拡大する中、パスキーのサポートにより、新規ユーザーはより簡単かつ安全にオンチェーンで取引できるようになります。
Paraの組み込みウォレットSDKと組み合わせることで、パスキーは次の機能を実現します。
- 即時オンボーディング:インストールもシードフレーズも不要
- 永続的なセッション:再訪時やデバイスをまたいでも接続を維持
- 安全な鍵管理:鍵はデバイスに紐付けられ、フィッシング耐性を確保
SolanaのパスキーサポートとSIMD-0075
ほとんどのWebAuthn認証では、デフォルトでP-256曲線(secp256r1)が使用されます。これはブラウザやデバイス間での幅広い互換性を目的に設計され、広く使われている楕円曲線です。P-256曲線は汎用的なWebログインには適していますが、Solanaには適していません。Solanaは別の楕円曲線であるEd25519(Curve25519ベース)を使用しているためです。Ed25519は、高速で決定論的な署名と、SIMD(Single Instruction, Multiple Data)命令による高スループットな検証に最適化されています。
この不一致は重要です。P‑256とEd25519には直接的な互換性がありません。
現在のWebAuthnパスキーではEd25519署名を生成できず、ブラウザもセキュアエンクレーブを介したEd25519署名用APIを公開していません。そのため、パスキーからSolanaトランザクションへ直接署名することはできません。
この隔たりにより、Solanaでのパスキーサポートには技術的な課題がありました。SIMD-0075(2024年5月承認)では、決定論的署名(nonceリスクなし)、SIMDベクトル化、エコシステム間の相互運用性といった利点を挙げ、Solanaの推奨曲線としてEd25519を改めて確認しました。
2025年6月、Solanaは新しいプリコンパイルを通じて、secp256r1(P-256)署名のネイティブなオンチェーン検証を有効にしました。これにより、アプリはパスキー署名をオンチェーンで検証できるようになりました(ユーザーのログインや本人性証明の確認など)。
しかし、Solanaトランザクションには依然としてEd25519署名が必要であり、WebAuthnパスキーでは生成できません。つまり、パスキーだけではウォレットレベルの署名には不十分です。
そこでParaのインフラストラクチャが役立ちます。
Paraはパスキーをトランザクションへの署名に使用するのではなく、認可プリミティブとして使用します。パスキーによってスコープ付きセッションが解除され、ParaのMPC(Multi-Party Computation)インフラストラクチャで管理されるEd25519互換の署名鍵へのアクセスが許可されます。
この設計は曲線の不一致を回避しながら、次の利点を提供します。
- Solanaとの完全な互換性
- パスキーによる高速でネイティブなオンボーディング
- 安全なセルフカストディとMPCベースの鍵管理
Paraパスキー:単なる認証ではなく認可
Paraは2023年にパスキーベースのセッション認可を導入しました。これは同社の組み込みウォレットSDKの中核機能です。
Paraはパスキーを単なるログイン方法として扱うのではなく、ウォレット操作へのアクセスを安全に制御するために使用します。
ParaのSDKでは、ユーザーがOAuthやメールアドレスとパスワードなどでログインした後に、パスキーを使ってウォレットセッションを認可します。この責務の分離、つまり本人確認には認証、ウォレットへのアクセスにはパスキーを使うことで、Paraの組み込みウォレットにより安全な基盤をもたらします。
Paraに新しいパスキーを登録するとどうなりますか?
クライアント(ブラウザまたはOSレベルの認証情報マネージャー)が鍵ペアを作成します。
- 秘密鍵はデバイスのセキュアエンクレーブ(TPM、Secure Enclave、Android Keystoreなど)に保存されます
- 公開鍵と認証情報のメタデータがサーバーへ送信されます
パスキーの認証情報メタデータには、次の情報が含まれます。
- 認証情報ID(パスキーごとに一意)
- チャレンジnonce
- RP ID(アプリのドメイン)
- 暗号アルゴリズム(通常はP-256)
新しいウォレットを作成するとどうなりますか?
ユーザーがParaでウォレットを作成すると、パスキーが登録され、そのデバイスに紐付けられます。具体的には、次の処理が行われます。
- 認可チャレンジに署名します
- ユーザーがデバイスとウォレットを管理していることを確認します
- 永続化できるスコープ付き署名済みセッションを確立します
このセッションにより、次のような機密性の高い操作が可能になります。
- トランザクションの送信
- 暗号化されたセッション紐付き鍵へのアクセス
- スマートコントラクト操作の承認
ここでParaのアプローチが重要になります。
パスキー自体は、Ed25519が必須のSolanaトランザクションへの署名には直接使用されません。
代わりに、ParaのウォレットSDKはパスキーを認可プリミティブとして使用してセッションを解除します。そのセッションを通じて、組み込みウォレットが使用するSolana互換のEd25519署名鍵にスコープ付きでアクセスできます。
この署名鍵は、Solanaの署名要件と互換性のある、Paraの安全なMPCベースの鍵インフラストラクチャ内に置かれます。
実質的には、パスキーが認可し、ウォレット鍵が署名を実行します。これにより、トランザクションの送信、暗号化された鍵へのアクセス、スマートコントラクト操作の承認といった機密性の高い操作が可能になります。
本人性と署名権限を分離することで、Paraは重要度の高い操作も、単なるユーザーログインではなく暗号学的な認可によって保護します。
Paraパスキーはさらに一歩進み、ブラウザ拡張機能やリカバリーフレーズを使わずに、ウォレットをアプリへ直接組み込めるようにします。
Solana開発者にとってパスキーが重要な理由
Solana開発者にとって、Paraパスキーは次の利点をもたらします。
- ウォレットをアプリに組み込むことで、オンボーディング時のコンバージョン率が向上
- 秘密鍵やシードフレーズを紛失するリスクがない
- Solanaネイティブを維持しながら、UXとセキュリティを改善
パスキーはすでにXelioなどのアプリで利用されています。SMSを介してユーザーをまったく摩擦なく組み込みウォレットへオンボーディングできます。
SWIG Smart Walletなどのほかのプロジェクトでも、安全でアプリネイティブなオンボーディングのため、パスキーベースのフローが採用されています。
パスキーベースのアクセスを備えた組み込みウォレットを採用するアプリが増えるにつれ、ユニバーサルなウォレットUXレイヤーの実現に近づきます。ユーザーはアプリ、デバイス、セッションをまたいで、本人性と署名権限をシームレスに持ち運べます。これは、コンポーザビリティとアプリチェーンが標準になりつつあるSolanaのようなエコシステムで特に重要です。
Solanaアプリにパスキーを追加する方法
ParaのウォレットSDKを使用すれば、パスキーベースのウォレットをSolanaアプリへ5分以内に統合できます。
手順は次のとおりです。
前提条件
まず、Para Developer PortalでPara APIキーを取得します。
次に、プロジェクトのルートにenv.localファイルを作成し、キーを追加します。
NEXT_PUBLIC_PARA_API_KEY=your_para_api_key_here
Next.jsを使用していない場合は、フレームワークに合わせて調整してください。
- Viteでは、
VITE_PARA_API_KEYを使用します - Node.jsでは、
process.env.PARA_API_KEYを参照します
1. Para SDKでセッションを初期化する
まず、アプリをParaProviderでラップし、フロントエンドでPara SDKを設定します。これにより組み込みウォレット環境が準備され、ユーザーセッションを作成または復元できるようになります。
<ParaProvider
paraClientConfig={{
env: Environment.BETA, // or Environment.PROD
apiKey: YOUR_API_KEY,
}}
externalWalletConfig={{
appName: YOUR_APP_NAME,
wallets: ["PHANTOM","GLOW","BACKPACK"],
walletConnect: { projectId: YOUR_WALLET_CONNECT_PROJECT_ID },
solanaConnector: {
config: {
endpoint: ENDPOINT_FOR_SOLANA_CONNECTION,
chain: SOLANA_CHAIN,
},
},
}}
paraModalConfig={{
oAuthMethods: ["GOOGLE","TWITTER","TELEGRAM"]
authLayout: ["AUTH:FULL","EXTERNAL:FULL"]
recoverySecretStepEnabled: true
onRampTestMode: true
}}
>
{REST_OF_APP}
</ParaProvider>2. Heliusを使用してトランザクションに署名し、送信する
セッションが有効になると、ParaのSDKとHeliusを介してSolanaトランザクションに署名し、送信できます。この署名機能は、@solana/kit JavaScript SDKの標準signTransactionメソッドを公開します。
const connection = new Connection(HELIUS_RPC_URL);
const solanaSigner = new ParaSolanaWeb3Signer(para, Connection);
const tx = new Transaction().add(...);
const signedTx = await solanaSigner.signTransaction(transaction);
await connection.sendRawTransaction(signedTx.serialize());Paraを使用すると、秘密鍵を公開したりブラウザ拡張機能を要求したりすることなく、パスキーのUXとSolanaネイティブなオンチェーン署名を実現できます。
まとめ
Solanaは主流へと進んでいます。
より多くのユーザーをオンボーディングするため、パスキー、生体認証署名、パスワードレス認証によって摩擦を減らし、さらに多くの人々をオンチェーンへ導けます。
ParaのSDKを使えば、Solanaアプリにパスキーのサポートを5分で追加できます。
関連リソース
関連記事
Heliusを購読
Solana開発の最新情報や新しい記事の公開通知を受け取れます


