如何在以太坊上使用Passkeys?

1. 引言

前序博客:

账户抽象的承诺之一是完全摆脱用户的私钥,同时保持强大的安全性和自我托管。然而,许多智能帐户未能实现这一愿景,因为:

  • 用于实现替代身份验证方法的库较少。这导致许多应用程序开发人员依赖不太用户友好的方法或第三方 MPC 和社交登录服务。这些通常比给用户私钥提供更好的用户体验,但仍然达不到完整的愿景。

怎样来完全摆脱这些依赖呢?

  • 答案就是:Passkeys。
    • Passkeys代表了革命性的一步,提供了一种安全、用户友好的身份验证替代方案,利用生物识别技术、PIN 或模式,并消除了对助记词短语的需要。

本文探讨了开发人员如何在以太坊应用程序中实现passkey authentication密钥身份验证,利用 ERC-4337 创建无缝、安全的用户体验,而不影响自我托管。

2. 了解Passkeys及其在区块链可访问性中的作用

帐户抽象的目标是让区块链应用程序更容易被公众访问,而Passkeys是使 web3 身份验证像任何其他应用程序或移动应用程序一样无缝的好办法。通过集成Passkeys,可使身份验证过程像使用任何传统应用程序一样简单,从而向用户隐藏面部 ID 或指纹识别等底层技术的复杂性。

3. 使用 ERC-4337 标准实施Passkeys

要在以太坊上启用Passkeys,用户的帐户需要是可验证 P256 签名的 ERC-4337 智能合约。该标准允许在没有传统私钥的情况下进行交易,这是对以太坊和其他 EVM 兼容区块链(如 BnB Smart Chain、Optimism 和 Aribtrum)的限制。

要在以太坊上启用Passkeys,有2个通用步骤:

4. 使用Passkeys创建交易

新帐户的首个UserOperation始终需要包含 initCode 来部署帐户。 initCode 通常是智能帐户工厂和对该工厂的encoded调用的十六进制串联,以创建由passkey拥有的新帐户。简单实现可参看:

然后,可像平常一样创建UserOperation,但是当从用户那里获取签名时,将需要使用 WebAuthn API 从passkey中获取签名。在 ERC-4337 中,通常会对UserOperation的哈希进行签名。
相关简单示例见:

5. 设置智能帐户以使用Passkeys

目前已有一个创建Passkeys并用它们签署消息的系统,还需要一个可以验证 p256 签名的智能帐户。在 ERC-4337 中,签名验证发生在 validateUserOp 函数中,要在该函数内包含 p256 验签算法。

此逻辑的一种实现可以从P256 签名 Solidity 合约中使用(见https://github.com/daimo-eth/p256-verifier),尽管有一项提案EIP-7212: Precompile for secp256r1 Curve Support. Proposal to add precompiled contract that performs signature verifications in the “secp256r1” elliptic curve 在以太坊区块链上预编译此合约,以减少与此曲线相关的 Gas 费用。

如果不想从头开始编写整个智能合约,也可以使用少数已经存在的智能帐户实现之一。

Stackup的userop.js 库原生支持以上2种方式。

还可在https://github.com/passkeys-4337/smart-wallet这个带有passkey SDK 的优秀开源项目中找到简单帐户的基本实现。该存储库包含带有passkeys的 Web 应用程序的非常基本的实现,是一个很好的起点。

6. 迈向更好的 Web3 用户体验

Passkeys为以太坊区块链上的用户身份验证提供了一种革命性的方法,通过消除传统的私钥来与帐户抽象的目标保持一致。对于希望增强区块链应用程序的安全性和用户体验的开发人员和组织来说,将Passkeys与 ERC-4337 集成可以提供前瞻性的解决方案。

参考资料

[1] Stackup博客 How to Use Passkeys on Ethereum

  • 19
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值