---
title: "推出 User Operation Overrides"
description: "User Operation Overrides 让你能精细控制 gas fee。L2 上的 gas fee 市场变化很快,一旦发生变化,pending 的 UO 可能会失败。"
---

# 推出 User Operation Overrides

<ImageBlock
  src="https://media.alchemy.com/1705444621-user-op-overrides.png"
  alt="User operation overrides 上线：精细控制 gas 费用"
  width={2400}
  height={1350}
  priority
/>

[Account Abstraction](/overviews/what-is-account-abstraction) 让用户可以使用智能合约账户作为钱包，而不是传统的外部拥有账户（EOA）。从智能合约账户发起交易时，[User Operations](/overviews/user-operations)（UserOps 或 UOs）包含与常规交易类似的交易细节：`sender`、`to`、`calldata`、`maxFeePerGas`、`maxPriorityFee`、`signature` 和 `nonce`。

由于智能合约账户依赖 [Bundlers](/overviews/what-is-a-bundler) 代为执行交易，user operation 还包含一组用于估算 gas 和通过 paymaster 赞助 gas 的新字段，包括：`callGasLimit`、`verificationGasLimit`、`preVerificationGas` 和 `paymasterAndData`。

今天，我们推出 [User Operation Overrides](https://www.alchemy.com/docs/wallets/resources/types#useroperationoverrides)，让开发者能够精细控制 gas 费用。L2 上的 gas 费用市场变化很快，一旦发生变化，待处理的 UO 可能会失败。

UO Overrides 让你可以覆盖 gas 估算值，从而在 [gas 估算](/blog/l2-gas-and-signature-aggregators)与实际 gas 成本不符的情况下，更有把握地确保 UserOp 被打包上链。

## user operation overrides 的作用
通过覆盖 gas 费用估算值（其涉及许多复杂输入，因此很难准确估算），你可以设置绝对值或基于乘数的覆盖值，从而在 gas 波动的情况下更有把握地确保你的 UserOp 被成功打包上链。

## user operation overrides 有哪些优势？
UO Overrides 为开发者带来的两个主要好处是：简化 gas 和 paymaster 数值估算的复杂度，以及在费用市场波动期间提高 UO 被打包上链的可能性。

### 1. 简化复杂度
如今，估算合适的 gas 费用需要综合考虑六种不同的 gas 类型，很难做到估算“准确”。有了 Fee Overrides，开发者可以设置参数，在某个阈值上覆盖 gas 估算值，从而使 UserOp 无论估算准确与否都能被打包上链。

### 2. 掌控结果
迄今为止，使用 [aa-sdk](https://www.alchemy.com/docs/wallets) 的一个痛点是，网络繁忙时，团队往往需要请 Alchemy 工程师帮忙处理 gas 估算和 UserOp 成功率的问题。

有了 User Operation Overrides，团队现在可以选择哪些 UserOp 最重要，并设置自定义覆盖值，以更强的控制力提高其 UO 成功打包上链的可能性。

## user operation overrides 有哪些特性？
User Operation Overrides 允许为以下字段指定覆盖值：

1. `maxFeePerGas`
1. `maxPriorityFeePerGas`
1. `callGasLimit`
1. `preVerificationGas`
1. `verificationGasLimit`
1. `paymasterAndData`

使用 Alchemy 的 AA SDK 进行开发的开发者，可以将 User Operation Overrides 与任意 [Bundler](/bundler) 或 [Paymaster](/gasless-transactions) 搭配使用！

## user operation overrides 是如何工作的？
覆盖值可以在 `SmartAccountProvider` 的各个中间件中使用。例如，默认的 [`middlewares`](https://www.alchemy.com/docs/wallets/concepts/middleware)（如 `gasEstimator` 或 `feeDataGetter`）会在提供了覆盖值的情况下，将其应用到估算值上。

除了 `paymasterAndData` 字段外，覆盖字段可以是**绝对值**，也可以是**乘数值**。在默认中间件中，如果覆盖值是绝对值，则直接覆盖估算值。

如果覆盖值是乘数值，则会用指定的乘数对估算值进行*上调*。例如，如果 `maxPriorityFeePerGas` 字段的覆盖值为 `\{ multiplier: 1.1 \}`，那么会对该 user operation 估算的 `maxPriorityFeePerGas` 应用 1.1 倍的乘数，即上调 10%。

要开始使用，请查阅 [User Operation Override 文档](https://www.alchemy.com/docs/wallets/resources/types#useroperationoverrides)！
