新消息:Helius 收购 Light Protocol
Solana 通行密钥钱包
博客/开发

Solana 通行密钥:加密钱包 UX 的未来

Para 工程负责人X 上的 Norwood SquareLinkedIn 上的 Norwood Square
面向加密应用的钱包与身份验证套件X 上的 ParaLinkedIn 上的 Para
阅读需 6 分钟

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),它针对快速、确定性签名以及通过 SIMD(单指令多数据)指令进行高吞吐量验证进行了优化。

这种不匹配非常关键:P‑256 与 Ed25519 并不直接兼容。

目前,WebAuthn 通行密钥无法生成 Ed25519 签名,浏览器也没有提供通过安全隔区执行 Ed25519 签名的 API。因此,通行密钥无法直接签署 Solana 交易。

这一缺口使 Solana 支持通行密钥面临技术障碍。SIMD-0075(于 2024 年 5 月获批)再次确认 Ed25519 是 Solana 的首选曲线,并列举了确定性签名(无 nonce 风险)、SIMD 向量化和生态系统互操作性等优势。

2025 年 6 月,Solana 通过新的预编译程序支持了在链上原生验证 secp256r1(P-256)签名,让应用能够在链上验证通行密钥签名(例如确认用户登录或身份证明)。

但是,Solana 交易仍需要 Ed25519 签名,而 WebAuthn 通行密钥无法生成这种签名。这意味着仅靠通行密钥仍不足以完成钱包级签名。

Para 的基础设施正是为此而生:

Para 并不使用通行密钥签署交易,而是将其用作授权原语。通行密钥会解锁一个限定范围的会话,进而授予对 Para 的 MPC(多方计算)基础设施所管理的 Ed25519 兼容签名密钥的访问权限。

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

  • 完整的 Solana 兼容性
  • 使用通行密钥实现快速、原生的用户引导
  • 安全的自托管和基于 MPC 的密钥管理

Para 通行密钥:不只是身份验证,更是授权

Para 于 2023 年推出了基于通行密钥的会话授权,现在它已成为其嵌入式钱包 SDK 的核心功能。

Para 不仅将通行密钥视为一种登录方式,还用它安全控制钱包操作的访问权限。

在 Para 的 SDK 中,用户通过 OAuth、电子邮件/密码等方式登录后,使用通行密钥授权钱包会话。将身份验证与钱包访问分离——身份验证用于确认身份,通行密钥用于访问钱包——为 Para 嵌入式钱包构建了更安全的基础。

向 Para 注册新通行密钥时会发生什么?

客户端(浏览器或操作系统级凭据管理器)会创建一个密钥对:

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

通行密钥凭据元数据包括:

  • 凭据 ID(每个通行密钥都有唯一 ID)
  • 质询 nonce
  • RP ID(你的应用域名)
  • 加密算法(通常为 P-256)

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

当用户通过 Para 创建钱包时,系统会注册通行密钥并将其绑定到用户设备。具体来说,它会:

  • 签署授权质询
  • 确认用户控制该设备和钱包
  • 建立可持久保留、带签名且范围受限的会话

然后,此会话会解锁以下敏感操作:

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

这正是 Para 方案的关键所在:

通行密钥本身不会直接用于签署 Solana 交易(交易必须使用 Ed25519)。

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

此签名密钥位于 Para 安全的基于 MPC 的密钥基础设施中,并且符合 Solana 的签名要求。

实际上,通行密钥负责授权,钱包密钥则执行签名。这可以解锁发送交易、访问加密密钥和批准智能合约交互等敏感操作。

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

Para 通行密钥更进一步,让应用无需浏览器扩展或恢复短语即可直接嵌入钱包。

为什么通行密钥对 Solana 开发者很重要?

对于 Solana 开发者,Para 通行密钥意味着:

  • 钱包直接嵌入你的应用,提高用户引导阶段的转化率
  • 不再面临私钥或助记词丢失的风险
  • 在保持 Solana 原生体验的同时,改善 UX 和安全性

通行密钥已在 Xelio 等应用中上线。这些应用通过短信,以零摩擦方式引导用户使用嵌入式钱包。

SWIG Smart Wallet 等其他项目也开始采用基于通行密钥的流程,实现安全的应用原生用户引导。

随着越来越多应用采用基于通行密钥访问的嵌入式钱包,我们将更接近一个通用钱包 UX 层——用户可以在应用、设备和会话之间无缝携带自己的身份与签名权限。这对于 Solana 这样的生态系统尤其重要,因为可组合性和应用链式交互正逐渐成为常态。

如何为 Solana 应用添加通行密钥

使用 Para 的钱包 SDK 将基于通行密钥的钱包集成到你的 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,你无需暴露私钥或安装浏览器扩展,即可同时获得通行密钥的 UX 和 Solana 原生链上签名能力。

结论

Solana 正在走向主流。

为了吸引更多用户,通行密钥、生物识别签名和无密码身份验证将减少使用阻力,推动更多人进入链上世界。

使用 Para 的 SDK,只需五分钟即可为你的 Solana 应用添加通行密钥支持。

其他资源

订阅 Helius

及时了解 Solana 开发的最新动态,并在我们发布新内容时收到更新

放大图片