Solana Passkeys:加密钱包用户体验的未来

  • Helius
  • 发布于 2天前
  • 阅读 29

本文介绍了如何利用 Passkeys 技术改进 Solana 钱包的用户体验,尤其是在用户登录和授权方面。Para 通过其嵌入式钱包 SDK,利用 Passkeys 作为授权方式,而非直接用于签名交易,从而绕过了椭圆曲线不兼容的问题,实现了快速、安全的链上交易。开发者可以通过 Para 的 SDK 在五分钟内将 Passkeys 集成到 Solana 应用中,实现更高的用户转化率和更好的安全性。

6 分钟阅读

2025 年 6 月 24 日

Solana 应用需要提供快速、安全且原生的加密钱包 onboarding。Phantom 走在了前列,但它仍然需要用户管理助记词。

Passkeys 改变了这一点。

Passkeys 构建在 WebAuthn 标准和 FIDO2 协议之上,支持基于生物识别或硬件的登录(例如,Face ID、Touch ID、Windows Hello、YubiKeys 等),而无需存储或暴露私钥。

Passkeys 使用加密密钥对替换传统密码,其中私钥保留在用户设备上的安全硬件模块中,并且仅共享公钥。

虽然大多数应用程序使用 passkeys 来用无密码身份验证替换密码,但 Para 以不同的方式使用它们:作为钱包会话的加密授权。

没有密码。没有助记词。设备内置的加密访问即可提供简化的用户体验。

为什么 Passkeys 对于 Solana 钱包 UX 如此重要?

对流畅的加密货币 onboarding 的需求从未如此强烈。

随着 Solana 移动应用、开发者活动和 稳定币交易量 以如此快的速度加速,passkey 支持使新用户可以更轻松、更安全地进行链上交易。

当与 Para 的嵌入式钱包 SDK 结合使用时,passkeys 会解锁:

  • 即时 onboarding:无需安装或助记词
  • 持久会话:用户在访问和设备之间保持连接
  • 安全密钥管理:密钥保持设备绑定并且具有防网络钓鱼能力

Solana Passkey 支持和 SIMD-0075

大多数 WebAuthn 身份验证默认使用 P-256 曲线 (secp256r1),这是一种广泛使用的椭圆曲线,旨在实现跨浏览器和设备的广泛兼容性。P-256 曲线非常适合通用 Web 登录,但不适用于 Solana。这是因为 Solana 使用不同的 椭圆曲线Ed25519(基于 Curve25519),该曲线针对快速、确定性签名和通过 SIMD(单指令、多数据)指令进行的高吞吐量验证进行了优化。

这种不匹配很重要:P-256 和 Ed25519 不直接兼容

如今,WebAuthn passkeys 无法生成 Ed25519 签名,并且浏览器不会通过安全 enclave 公开用于 Ed25519 签名的 API。因此,passkeys 无法直接签署 Solana 交易。

这种差距使 Solana 上的 passkey 支持成为一项技术障碍。SIMD-0075(于 2024 年 5 月批准) 重申 Ed25519 是 Solana 的首选曲线,理由是其具有确定性签名(无 nonce 风险)、SIMD 向量化和生态系统互操作性等优势。

2025 年 6 月,Solana 通过一个新的预编译启用了 secp256r1 (P-256) 签名的原生链上验证,从而允许应用程序在链上验证 passkey 签名(例如,确认用户登录或身份证明)。

但是,Solana 交易仍然需要 Ed25519 签名,而 WebAuthn passkeys 无法生成这些签名。这意味着仅靠 passkeys 仍然不足以进行钱包级别的签名。

这就是 Para 基础设施的用武之地:

Para 不使用 passkeys 来签署交易,而是将它们用作授权原语。Passkey 解锁了一个范围会话,该会话授予对由 Para 的 MPC(多方计算)基础设施 管理的 与 Ed25519 兼容的签名密钥 的访问权限。

这种设计绕过了曲线不匹配,同时提供了:

  • 完整的 Solana 兼容性
  • 使用 passkeys 进行快速、原生的 onboarding
  • 安全的自我托管和基于 MPC 的密钥管理

Para Passkeys:授权,不仅仅是身份验证

Para 在 2023 年推出了基于 passkey 的会话授权,它是其嵌入式钱包 SDK 的核心部分。

Para 不将 passkeys 视为仅是一种登录方法,而是使用它们来安全地控制对钱包操作的访问。

在 Para 的 SDK 中,passkeys 用户通过 OAuth、电子邮件/密码等登录用于授权钱包会话。这种对关注点的分离(身份验证,passkeys 用于钱包访问)为 Para 嵌入式钱包创建了更安全的基础。

当在 Para 中注册新 passkey 时会发生什么?

客户端(浏览器或 OS 级别的凭据管理器)创建一个密钥对

  1. 私钥存储在设备的安全 enclave 中(例如,TPM、Secure Enclave 或 Android Keystore)
  2. 公钥和凭据元数据被发送到服务器

Passkey 凭据元数据包括:

  • 凭据 ID(每个 passkey 唯一)
  • 挑战 nonce
  • RP ID(你的应用程序的域)
  • 加密算法(通常为 P-256)

创建新钱包时会发生什么?

当用户使用 Para 创建钱包时,将注册一个 passkey 并将其绑定到他们的设备。具体来说,它:

  • 签署授权挑战
  • 确认用户控制设备和钱包
  • 建立可以持久化的、范围明确的签名会话

然后,此会话会解锁敏感操作,例如:

  • 发送交易
  • 访问加密的、会话绑定的密钥
  • 批准智能合约交互

solana passkey 钱包如何工作

Para 的方法在这里变得重要:

passkey 本身不直接用于签署 Solana 交易(必须是 Ed25519)。

相反,Para 钱包 SDK 使用 passkey 作为授权原语来解锁会话,然后授予对嵌入式钱包使用的 Solana 兼容的 Ed25519 签名密钥 的范围访问权限。

此签名密钥位于 Para 的安全 基于 MPC 的密钥基础设施 中,该基础设施与 Solana 的签名要求兼容。

实际上,passkey 授权,而钱包密钥执行签名。这解锁了敏感操作,例如发送交易、访问加密密钥和批准智能合约交互。

通过将身份与签名权限分离,Para 确保即使是高风险操作也能受到加密授权的保护,而不仅仅是用户登录。

Para passkeys 更进一步,使将钱包直接嵌入到应用程序中成为可能,而无需浏览器扩展或恢复短语。

为什么 Passkeys 对 Solana 开发者很重要?

对于 Solana 开发者来说,Para passkeys 可以转化为:

  • 在 onboarding 期间更高的转化率,因为钱包嵌入到你的应用程序中
  • 没有丢失私钥或助记词的风险
  • 更好的 UX 和安全性,同时保持 Solana 原生

Passkeys 已经在 Xelio 等应用程序中上线,它们使用 passkeys 通过 SMS 以零摩擦的方式将用户 onboarding 到嵌入式钱包中。

其他项目,例如 SWIG Smart Wallet,也在采用基于 passkey 的流程来实现安全、应用程序原生的 onboarding。

随着越来越多的应用程序采用具有基于 passkey 的访问的嵌入式钱包,我们越来越接近 通用钱包 UX 层 — 用户可以在应用程序、设备和会话之间无缝地携带他们的身份和签名权限。这在 Solana 等生态系统中尤为重要,在这些生态系统中,可组合性和应用程序链接正成为常态。

如何将 Passkeys 添加到 Solana 应用程序

使用 Para 的钱包 SDK 将基于 passkey 的钱包集成到你的 Solana 应用程序中只需不到五分钟。

以下是它的工作原理,一步一步:

先决条件

首先,从 Para 开发者门户 获取你的 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 可以让你获得 passkeys 的 UX 和 Solana 原生的链上签名,而无需暴露私钥或需要浏览器扩展。

结论

Solana 正在走向主流。

为了 onboarding 更多用户,passkeys、生物识别签名和无密码身份验证将减少摩擦,并将更多人带到链上。

使用 Para 的 SDK 在五分钟内将 passkey 支持添加到你的 Solana 应用程序。

额外资源

  • 原文链接: helius.dev/blog/solana-p...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Helius
Helius
https://www.helius.dev/