---
title: "推出 User Operation Overrides"
description: "User Operation Overrides 讓你能精細控制 gas 費。L2 上的 gas 費市場變動很快，一旦發生變動，尚未執行的 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) 讓使用者能用智能合約帳戶取代傳統的外部帳戶（Externally Owned Accounts，EOAs）作為錢包。當交易是從智能合約帳戶發起時，[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 費用估算值，你可以設定絕對值或以倍數為基礎的覆寫值，無論 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，團隊現在可以自行決定哪些 UserOps 最為重要，並設定自訂的覆寫值，以更大的控制力提高其 UO 成功被打包的機率。

## User operation overrides 有哪些功能？
User Operation Overrides 允許為以下項目指定覆寫值：

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

使用 Alchemy 的 AA SDK 開發的開發者，可以搭配任何 [Bundler](/bundler) 或 [Paymaster](/gasless-transactions) 使用 User Operation Overrides！

## User operation overrides 如何運作？
覆寫值可以在 `SmartAccountProvider` 的每個 middleware 中設定。舉例來說，預設的 [`middlewares`](https://www.alchemy.com/docs/wallets/concepts/middleware)（例如 `gasEstimator` 或 `feeDataGetter`）在提供覆寫值時，會將該覆寫值套用到估算值上。

除了 `paymasterAndData` 欄位之外，其他覆寫欄位的值可以是**絕對值**或**倍數值**。在預設的 middleware 中，如果覆寫值是絕對值，就會直接覆寫估算值。

如果覆寫值是倍數值，估算值就會依指定的倍數*向上調整*。舉例來說，如果 `maxPriorityFeePerGas` 欄位的覆寫值為 `\{ multiplier: 1.1 \}`，則會對 user operation 估算出的 `maxPriorityFeePerGas` 套用 1.1 倍（即增加 10%）。

想開始使用，請參閱 [User Operation Override 文件](https://www.alchemy.com/docs/wallets/resources/types#useroperationoverrides)！
