> ## Documentation Index
> Fetch the complete documentation index at: https://docs.base.org/llms.txt
> Use this file to discover all available pages before exploring further.

# IB20Asset.updateMultiplier

> Deprecated instant multiplier override that sets the multiplier immediately and clears any pending scheduled update.

<Warning>
  `updateMultiplier` is deprecated. Use `updateUIMultiplier` for routine multiplier updates. Reserve this function for emergency overrides only.
</Warning>

## Signature

```solidity IB20Asset.sol theme={null}
function updateMultiplier(uint256 newMultiplier) external;
```

| Field               | Value                       |
| ------------------- | --------------------------- |
| Selector            | `0x5ffe6146`                |
| Canonical signature | `updateMultiplier(uint256)` |

## Description

Applies `newMultiplier` immediately at `block.timestamp` and clears any live pending update without waiting for a scheduling window. Use this only when a live pending update is wrong and waiting for `effectiveAt` is not acceptable. Prefer `cancelUIMultiplierUpdate` followed by `updateUIMultiplier` when the fix can use a future timestamp.

The multiplier is an 18-decimal WAD: `1e18` is `1.0` (`WAD_PRECISION`). A 2-for-1 split is `2e18`. A reverse split is a value below `1e18`.

## Parameters

| Name            | Type      | Description                                                                    |
| --------------- | --------- | ------------------------------------------------------------------------------ |
| `newMultiplier` | `uint256` | New multiplier scaled to `WAD_PRECISION`. Must be in `(0, MAX_UI_MULTIPLIER]`. |

## Reverts

| Error                                                     | Condition                                             |
| --------------------------------------------------------- | ----------------------------------------------------- |
| `AccessControlUnauthorizedAccount(caller, OPERATOR_ROLE)` | Caller does not hold `OPERATOR_ROLE`.                 |
| `InvalidMultiplier()`                                     | `newMultiplier` is zero or above `MAX_UI_MULTIPLIER`. |

## Events

The interface guarantees that the call emits both `MultiplierUpdated` and `UIMultiplierUpdated`. The base-std stock-split guide documents the sequence as:

| Situation                                      | Events (in order)                                                                                                        |
| ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Live pending (`effectiveAt > block.timestamp`) | `UIMultiplierUpdateCancelled`, then `MultiplierUpdated(new)`, then `UIMultiplierUpdated(old, new, effectiveAtTimestamp)` |
| Matured or no pending                          | `MultiplierUpdated(new)`, then `UIMultiplierUpdated(old, new, effectiveAtTimestamp)`                                     |

`MultiplierUpdated` is itself deprecated. Integrators should process only `UIMultiplierUpdated` to avoid handling the same update twice.

## Access Control

Caller must hold `OPERATOR_ROLE`. Any other caller reverts `AccessControlUnauthorizedAccount(caller, OPERATOR_ROLE)`.

## Policy Interaction

No direct policy interaction.

## Example

```solidity Usage Example theme={null}
// Emergency override: apply the correct multiplier immediately,
// clearing any live pending update.
IB20Asset(asset).updateMultiplier(correctMultiplier);
```
