Web3钱包终极指南:外部拥有账户与智能合约钱包

  • web3auth
  • 发布于 2024-03-14 12:20
  • 阅读 21

本文介绍了Web3钱包的两种主要类型:外部拥有账户(EOA)和智能合约钱包(SCW)。EOA依赖于私钥管理,存在安全风险,而SCW通过智能合约实现更灵活的账户管理和恢复机制,特别是通过EIP 4337实现了账户抽象,简化了用户操作,降低了Web3的入门门槛。

Web3 钱包终极指南:外部拥有账户和智能合约钱包

Web3 钱包,就像传统的钱包一样,是一种存储资产并与各种区块链生态系统上的 dApp 无缝交互的方式。与以中心化方式存储和管理法币的传统钱包不同,web3 钱包通过向用户提供钱包的完全访问权限,拥抱了去中心化的核心。

为什么我们需要 Web3 钱包?

数字签名是区块链生态系统中的一个主要构建块,用于验证网络上的交易。对于区块链上的每笔交易,用户都必须向网络证明他们有权执行该交易。数字签名通常由公钥和私钥组成,而 Web3 钱包的核心是允许你管理你的私钥和公钥对。它允许你使用你的私钥对交易进行签名,并向网络证明所有权。

自从 2009 年 Bitcoin Core 问世以来,第一个 Web3 钱包已经发展并走了很长的路。它们可以大致分为外部拥有账户和智能合约钱包。

外部拥有账户

在 Web3 钱包的上下文中,“外部拥有账户”(EOA)一词表示它是一个由用户拥有的、网络外部的账户。EOA 由公钥对组成,其中私钥仅为用户所知。这允许用户保持所有权并完全控制账户。公钥用于获取 EOA 地址。该地址对网络上的每个人都可见,例如以太坊上的 0x95…efe5、Solana 上的 G4Aog…pyKA 以及不同网络的相应地址。你可能想知道,为什么不同的区块链生态系统有不同的公共地址。答案隐藏在不同的椭圆曲线中,也称为 ECC - 椭圆曲线密码学。椭圆曲线密码学是一种数学算法,是区块链生态系统中安全密钥生成和加密的核心。

EOA 地址是如何生成的?

步骤 1

首先生成一个 256 位的数字,作为私钥。这个密钥本质上是一个很大的数字,是随机生成的。

步骤 2

使用椭圆曲线密码学,从 256 位私钥派生出相应的公钥。重要的是要注意,不同的区块链生态系统使用不同的椭圆曲线进行此派生。例如,以太坊使用 secp256k1,而 Solana 选择 ed25519。

步骤 3

在此步骤中,派生的公钥使用诸如 Keccak-256(也称为 SHA-3)之类的加密哈希函数进行哈希处理。但是,Solana 通过直接使用公钥来生成地址,而不是对其进行哈希处理,从而与以太坊的方法不同。因此,公钥本身就是 Solana 地址。

步骤 4

对于以太坊,生成的哈希值会被截断,通常取最后 160 位,形成所谓的以太坊外部拥有账户(EOA)地址。这 160 位构成了地址。

EOA 钱包的类型

有很多 EOA 钱包提供商,包括 Metamask、Trust、Ledger 和 Rainbow 等,但它们可以主要分为硬件钱包(又名冷钱包)和软件钱包(热钱包)。

软件钱包

软件钱包是一段代码,可以安全地存储你的私钥。它可以是移动应用程序或浏览器扩展程序。这些钱包已连接到互联网,并且通常更容易受到黑客攻击和网络钓鱼攻击。Metamask、Trust Wallet、Rainbow 就是这样的例子。

硬件钱包

硬件钱包是离线存储你的私钥的物理设备。这些物理设备未连接到互联网,并且每笔交易都需要物理批准,这使得它们比软件钱包更安全。要执行任何交易,你需要使用软件钱包作为中间平台。市场上现有的硬件钱包解决方案包括 Ledger、Trezor 和 Safepal。

安全管理私钥的挑战

虽然 Web3 生态系统发展迅速并且走了很长的路,但由于在区块链生态系统中导航和管理钱包的非直观用户体验,它仍然无法吸引新用户。EOA 钱包,无论类型如何,只能通过私钥访问。你一定听过这样一句话:“不是你的钥匙,就不是你的加密货币”。用户全权负责使用最佳实践来保护私钥,这对于一般的非技术用户来说通常不堪重负。一旦私钥被泄露或丢失,EOA 钱包将无法恢复账户,并可能导致不可逆转的资产损失。

智能合约钱包

智能合约钱包(SCW)是部署在链上的合约,可以管理数字资产。与传统的 EOA 钱包相比,它们不需要用户保管私钥即可签署交易。

智能合约钱包的优势

智能合约钱包通过允许用户使用社交登录或其他 web2 身份验证进行账户管理和恢复来解决 onboarding 问题。此外,SCW 通过允许用户执行批量交易、自动执行某些功能(例如,当 ETH 价格为 2700 美元时将 ETH 兑换为 USDT 代币)、限制其支出以及高级多重签名账户,为用户提供更精细的控制和可编程性。SCW 可以使用 paymaster 以 USDT 而不是 ETH 支付费用。因此,它们通常被视为让下一个十亿用户加入 Web3 的门户。

EIP 4337 简介

智能合约钱包在 EIP 4337 之前就已经存在,但缺乏跨生态系统的标准化,从而降低了互操作性。EIP 4337 有助于标准化所有以太坊兼容链上的账户抽象。你可能想知道为什么它被称为账户抽象?我们也将它称为账户抽象(AA),因为它有助于我们从用户那里抽象出验证、gas 支付和执行等细节。它引入了一种称为 UserOperation 的新型交易,允许用户委托交易 Bundler。Bundler 使用替代 mempool 来跟踪 UserOperation,将其捆绑在一起,并通过入口点合约提交以进行链上执行。

理解 EIP 4337

EIP 4337 由几个主要组件组成,这些组件可帮助我们实现账户抽象。这些组件是 UserOperation、UserOp mempool、Bundler、EntryPoint、ContractAccount 和 Paymaster。让我们深入研究每个组件的角色和定义:

UserOperation

UserOperation 本身这个术语表明它代表用户发起的加粗操作。EIP3447 中的 UserOperation 与通过 EOA 执行的传统交易有些不同,因为它还包含额外的字段 paymasterAndData 和 signature。

UserOp mempool

UserOp mempool 是替代池,用于拥有尚未处理和捆绑的 UserOperation 队列。它充当一个等待室,并帮助 bundler 跟踪待处理的 UserOperation。

Bundler

顾名思义,Bundler 捆绑 UserOperation 并将其提交到链上。链上提交通过为已发布的全局入口点合约创建有效的 handleOps 交易来完成。对于多重签名钱包,它可以为入口点合约创建 handleAggratedOps,因为我们无法通过 handleOps 验证多重签名阈值和签名。

EntryPoint

EntryPoint 合约是 bundler 在链上提交用户操作的全局入口点。它负责处理账户和多个聚合的 userOp,方法是验证每个 userOp、聚合签名并执行 userOp。

Account Contract

Account Contract 是部署在链上的智能合约,用于创建可由签名或其他身份验证方法(例如社交登录)控制的 SCW。每个遵循 EIP 4337 的帐户都必须有一个 validateUserOp 方法,该方法由 EntryPoint 合约使用。

Paymaster

Paymaster 合约负责代表用户支付 userOp 的费用。与 Account 合约类似,Paymaster 合约也有 valdiatePaymasterUserOp,这有助于验证请求。

UserOperation 生命周期

图片来自 EIP-4337 提案

步骤 1

让我们假设我们通过 SCW 提交了一个交易请求。该请求将保存在 userOp mempool 中,直到 bundler 处理并验证该请求,然后将该捆绑包提交给 handleOps。为了验证请求,bundler 使用 simulateValidation。simulateValidation 调用 Account 合约 valdiateUserOp 和 Paymaster 合约 validatePaymasterUserOp。成功验证后,该交易将提交给 EntryPoint。

步骤 2

为了在链上提交 userOp,bundler 使用 handleOps 方法。该方法用于再次验证 userOp。handleOps 在内部调用帐户合约 validateUserOp,如果验证成功,它将继续前进,否则它将返回。

步骤 3 和步骤 4

一旦 userOp 成功验证,handleOps 还会通过调用 paymaster 合约的 validatePaymasterUserOp 来验证是否存在 paymaster 请求。通过 paymaster 合约成功验证后,它将继续前进。

步骤 5

一旦 userOp 再次成功验证,handleOps 将执行 userOp 并通过调用 Account 合约的 excuteOp 在链上提交。如果 userOp 中存在 paymaster 字段,则 paymaster 支付 gas 费用,否则钱包必须支付。

步骤 6

成功执行后,最后一步是对 paymaster 执行 postOp。入口点调用 postOp 以计算 userOp 执行期间使用的费用。例如,如果 paymaster 允许用户以 USDT 支付,则 paymaster 需要知道要收取多少 USDT。

以上步骤简要解释了 userOp 的生命周期。要了解更多信息,请阅读 EIP 4337

结论

虽然 EOA 是有史以来第一个创建的与 Web3 生态系统交互的钱包,但由于管理的复杂性,它们在吸引普通用户方面面临挑战。由于密钥丢失后无法恢复,因此资金损失的风险可能更高。

智能合约钱包通过抽象出验证、支付和执行来解决上述 onboarding 挑战。SCW 为用户提供了选择帐户管理方式的灵活性,它可以是社交登录、EOA 钱包或任何其他身份验证方法。SCW 是生态系统中解决 onboarding 问题的一大进步。

如果你有兴趣开发与 ERC 4337 兼容的钱包,你可以查看 Web3Auth SafeAuth Kit,它可以轻松创建与 ERC-4337 无缝协作的智能钱包。

构建你自己的 ERC-404 代币

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

0 条评论

请先 登录 后评论
web3auth
web3auth
Simplest Web3 Wallet Infrastructure ever. No more seed phrases. Try our MPC/AA-enabled, self-custodial solution here: http://web3auth.io