> ## Documentation Index
> Fetch the complete documentation index at: https://base-a060aa97-docs-sync-code-change-6bb10a4.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# IB20 reference

> Generated B20 reference for IB20 functions, events, and errors.

## Functions

| Function                                                                                               | Selector     | Summary                                                                                          |
| ------------------------------------------------------------------------------------------------------ | ------------ | ------------------------------------------------------------------------------------------------ |
| [`DEFAULT_ADMIN_ROLE`](/base-chain/specs/reference/b20/interfaces/IB20/DEFAULT_ADMIN_ROLE)             | `0xa217fddf` | The default top-level admin role (`bytes32(0)`). Required to call `grantRole`, `revokeRole`,     |
| [`MINT_ROLE`](/base-chain/specs/reference/b20/interfaces/IB20/MINT_ROLE)                               | `0xe9a9c850` | Required to call `mint` and `mintWithMemo`.                                                      |
| [`BURN_ROLE`](/base-chain/specs/reference/b20/interfaces/IB20/BURN_ROLE)                               | `0xb930908f` | Required to call `burn` and `burnWithMemo`.                                                      |
| [`BURN_BLOCKED_ROLE`](/base-chain/specs/reference/b20/interfaces/IB20/BURN_BLOCKED_ROLE)               | `0x32ad9be8` | Required to call the deprecated `burnBlocked` (retained for                                      |
| [`SEIZE_ROLE`](/base-chain/specs/reference/b20/interfaces/IB20/SEIZE_ROLE)                             | `0x3c7e9ba5` | Required to call `seizeWithMemo`.                                                                |
| [`PAUSE_ROLE`](/base-chain/specs/reference/b20/interfaces/IB20/PAUSE_ROLE)                             | `0x389ed267` | Required to call `pause`.                                                                        |
| [`UNPAUSE_ROLE`](/base-chain/specs/reference/b20/interfaces/IB20/UNPAUSE_ROLE)                         | `0x309756fb` | Required to call `unpause`.                                                                      |
| [`METADATA_ROLE`](/base-chain/specs/reference/b20/interfaces/IB20/METADATA_ROLE)                       | `0x38841782` | Required to call `updateName`, `updateSymbol`, and `updateContractURI`.                          |
| [`TRANSFER_SENDER_POLICY`](/base-chain/specs/reference/b20/interfaces/IB20/TRANSFER_SENDER_POLICY)     | `0xd116fc21` | Policy slot consulted against `from` on every transfer (including `transferFrom`).               |
| [`TRANSFER_RECEIVER_POLICY`](/base-chain/specs/reference/b20/interfaces/IB20/TRANSFER_RECEIVER_POLICY) | `0x210f521b` | Policy slot consulted against `to` on every transfer.                                            |
| [`TRANSFER_EXECUTOR_POLICY`](/base-chain/specs/reference/b20/interfaces/IB20/TRANSFER_EXECUTOR_POLICY) | `0x724e9c53` | Policy slot consulted against `msg.sender` on `transferFrom` when distinct from `from`.          |
| [`MINT_RECEIVER_POLICY`](/base-chain/specs/reference/b20/interfaces/IB20/MINT_RECEIVER_POLICY)         | `0x6e5b013d` | Policy slot consulted against `to` on every mint.                                                |
| [`SEIZE_HOLDER_POLICY`](/base-chain/specs/reference/b20/interfaces/IB20/SEIZE_HOLDER_POLICY)           | `0xb279d311` | Policy slot consulted against `from` by `seizeWithMemo`.                                         |
| [`SEIZE_RECEIVER_POLICY`](/base-chain/specs/reference/b20/interfaces/IB20/SEIZE_RECEIVER_POLICY)       | `0xb31da27f` | Policy slot consulted against `to` by `seizeWithMemo`.                                           |
| [`name`](/base-chain/specs/reference/b20/interfaces/IB20/name)                                         | `0x06fdde03` | Token name. Set at creation, mutable via `updateName`.                                           |
| [`symbol`](/base-chain/specs/reference/b20/interfaces/IB20/symbol)                                     | `0x95d89b41` | Token symbol. Set at creation, mutable via `updateSymbol`.                                       |
| [`decimals`](/base-chain/specs/reference/b20/interfaces/IB20/decimals)                                 | `0x313ce567` | Number of decimal places. Immutable per token variant.                                           |
| [`totalSupply`](/base-chain/specs/reference/b20/interfaces/IB20/totalSupply)                           | `0x18160ddd` | Total token supply currently in circulation.                                                     |
| [`balanceOf`](/base-chain/specs/reference/b20/interfaces/IB20/balanceOf)                               | `0x70a08231` | Balance of `account`.                                                                            |
| [`allowance`](/base-chain/specs/reference/b20/interfaces/IB20/allowance)                               | `0xdd62ed3e` | Allowance granted by `owner` to `spender`.                                                       |
| [`transfer`](/base-chain/specs/reference/b20/interfaces/IB20/transfer)                                 | `0xa9059cbb` | Transfers `amount` from `msg.sender` to `to`. Emits `Transfer`.                                  |
| [`transferFrom`](/base-chain/specs/reference/b20/interfaces/IB20/transferFrom)                         | `0x23b872dd` | Transfers `amount` from `from` to `to` using `msg.sender`'s allowance. Emits `Transfer`.         |
| [`approve`](/base-chain/specs/reference/b20/interfaces/IB20/approve)                                   | `0x095ea7b3` | Sets `spender`'s allowance to `amount`. Not gated by any policy or by pause. Emits `Approval`.   |
| [`updateName`](/base-chain/specs/reference/b20/interfaces/IB20/updateName)                             | `0x84da92a7` | Updates the token's `name`. Emits `NameUpdated` followed by `EIP712DomainChanged`.               |
| [`updateSymbol`](/base-chain/specs/reference/b20/interfaces/IB20/updateSymbol)                         | `0x537f5312` | Updates the token's `symbol`. Emits `SymbolUpdated`.                                             |
| [`transferWithMemo`](/base-chain/specs/reference/b20/interfaces/IB20/transferWithMemo)                 | `0x95777d59` | Same as `transfer`, plus emits `Memo` immediately after the standard `Transfer` event.           |
| [`transferFromWithMemo`](/base-chain/specs/reference/b20/interfaces/IB20/transferFromWithMemo)         | `0x929c2539` | Same as `transferFrom`, plus emits `Memo` immediately after the standard `Transfer` event.       |
| [`mint`](/base-chain/specs/reference/b20/interfaces/IB20/mint)                                         | `0x40c10f19` | Mints `amount` to `to`. Emits `Transfer(address(0), to, amount)`.                                |
| [`mintWithMemo`](/base-chain/specs/reference/b20/interfaces/IB20/mintWithMemo)                         | `0xe44f0b12` | Same as `mint`, plus emits `Memo` immediately after the standard `Transfer` event.               |
| [`burn`](/base-chain/specs/reference/b20/interfaces/IB20/burn)                                         | `0x42966c68` | Burns `amount` from the caller's own balance. Not subject to any policy.                         |
| [`burnWithMemo`](/base-chain/specs/reference/b20/interfaces/IB20/burnWithMemo)                         | `0x38f23b0b` | Same as `burn`, plus emits `Memo` immediately after the standard `Transfer` event.               |
| [`burnBlocked`](/base-chain/specs/reference/b20/interfaces/IB20/burnBlocked)                           | `0xec0cf3dc` | DEPRECATED. Burns `amount` from a `from` account that is blocked under `TRANSFER_SENDER_POLICY`. |
| [`seizeWithMemo`](/base-chain/specs/reference/b20/interfaces/IB20/seizeWithMemo)                       | `0xf916d81b` | Seizes `amount` of `from`'s balance and reassigns it to `to` in a single admin operation.        |
| [`hasRole`](/base-chain/specs/reference/b20/interfaces/IB20/hasRole)                                   | `0x91d14854` | Whether `account` is a member of `role`. User-defined roles are supported and have no            |
| [`getRoleAdmin`](/base-chain/specs/reference/b20/interfaces/IB20/getRoleAdmin)                         | `0x248a9ca3` | The role required to grant or revoke `role`. Defaults to `DEFAULT_ADMIN_ROLE` if not             |
| [`grantRole`](/base-chain/specs/reference/b20/interfaces/IB20/grantRole)                               | `0x2f2ff15d` | Grants `role` to `account`. Emits `RoleGranted`.                                                 |
| [`revokeRole`](/base-chain/specs/reference/b20/interfaces/IB20/revokeRole)                             | `0xd547741f` | Revokes `role` from `account`. Emits `RoleRevoked`.                                              |
| [`renounceRole`](/base-chain/specs/reference/b20/interfaces/IB20/renounceRole)                         | `0x36568abe` | Caller renounces `role` for themselves. Emits `RoleRevoked`.                                     |
| [`renounceLastAdmin`](/base-chain/specs/reference/b20/interfaces/IB20/renounceLastAdmin)               | `0x6f79e3d7` | Permanently transitions the token to a zero-admin state. Revokes `DEFAULT_ADMIN_ROLE`            |
| [`setRoleAdmin`](/base-chain/specs/reference/b20/interfaces/IB20/setRoleAdmin)                         | `0x1e4e0091` | Sets the admin role for `role`. Emits `RoleAdminChanged`.                                        |
| [`pausedFeatures`](/base-chain/specs/reference/b20/interfaces/IB20/pausedFeatures)                     | `0xde9997e3` | The `PausableFeature`s currently paused on this token. Order is implementation-defined;          |
| [`isPaused`](/base-chain/specs/reference/b20/interfaces/IB20/isPaused)                                 | `0x165c44bc` | Whether `feature` is currently paused. O(1).                                                     |
| [`pause`](/base-chain/specs/reference/b20/interfaces/IB20/pause)                                       | `0x9f98bd2d` | Pauses each of `features`. Additive: features already paused remain paused; duplicates           |
| [`unpause`](/base-chain/specs/reference/b20/interfaces/IB20/unpause)                                   | `0xb61b2ebc` | Unpauses each of `features`. Features not listed are unaffected; duplicates are idempotent.      |
| [`policyId`](/base-chain/specs/reference/b20/interfaces/IB20/policyId)                                 | `0xdb3de624` | The current policy ID configured for `policyScope`. Returns `0` (always-allow built-in)          |
| [`updatePolicy`](/base-chain/specs/reference/b20/interfaces/IB20/updatePolicy)                         | `0xadf9c4ea` | Updates the policy ID assigned to `policyScope`. Takes effect immediately for the next           |
| [`supplyCap`](/base-chain/specs/reference/b20/interfaces/IB20/supplyCap)                               | `0x8f770ad0` | The maximum total supply enforced on `mint`. Capped at `type(uint128).max`, which                |
| [`updateSupplyCap`](/base-chain/specs/reference/b20/interfaces/IB20/updateSupplyCap)                   | `0xe5a97f07` | Sets a new supply cap. May be raised or lowered freely, but never below current                  |
| [`DOMAIN_SEPARATOR`](/base-chain/specs/reference/b20/interfaces/IB20/DOMAIN_SEPARATOR)                 | `0x3644e515` | The current EIP-712 domain separator for this token. Recomputed on each call so it               |
| [`nonces`](/base-chain/specs/reference/b20/interfaces/IB20/nonces)                                     | `0x7ecebe00` | The current EIP-2612 permit nonce for `owner`. Incremented by 1 on each successful `permit`.     |
| [`permit`](/base-chain/specs/reference/b20/interfaces/IB20/permit)                                     | `0xd505accf` | EIP-2612 permit. Recovers `owner` via ECDSA from `(v, r, s)`. EOA signatures only;               |
| [`eip712Domain`](/base-chain/specs/reference/b20/interfaces/IB20/eip712Domain)                         | `0x84b0196e` | ERC-5267 EIP-712 domain introspection.                                                           |
| [`contractURI`](/base-chain/specs/reference/b20/interfaces/IB20/contractURI)                           | `0xe8a3d485` | Off-chain URI pointing at contract-level metadata for this token, per ERC-7572.                  |
| [`updateContractURI`](/base-chain/specs/reference/b20/interfaces/IB20/updateContractURI)               | `0x7e5b1e24` | Updates `contractURI`. Emits the parameterless `ContractURIUpdated` event per ERC-7572;          |

## Events

| Event                | Topic0                                                               | Summary                                                                                      |
| -------------------- | -------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- |
| `Transfer`           | `0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef` | ERC-20 transfer event. Emitted on every successful transfer (including memo'd variants),     |
| `Approval`           | `0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925` | ERC-20 approval event. Emitted by `approve` and `permit`.                                    |
| `Memo`               | `0x6989f5818dcfd11f8cd53b27c94cec33dae1589735f03e639cba54553a1825e8` | Emitted by `transferWithMemo`, `transferFromWithMemo`, `mintWithMemo`, and `burnWithMemo`    |
| `BurnedBlocked`      | `0x0b552e96653fd6842da37c477005d3b5c08a8c7d3631b1f43787b2dc9a1006a3` | Emitted by the deprecated `burnBlocked` in addition to `Transfer(from, address(0), amount)`. |
| `Seized`             | `0xa9aec5d8b86e2fa2fd6ac3af62f2622e3dfdab1967d4cbbb56a5df7d74cb887c` | Emitted by `seizeWithMemo` in addition to `Transfer(from, to, amount)` (and the              |
| `RoleGranted`        | `0x2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d` | Emitted when `account` is granted `role`. `sender` is the originating caller.                |
| `RoleRevoked`        | `0xf6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b` | Emitted when `role` is revoked from `account`. `sender` is the originating caller            |
| `RoleAdminChanged`   | `0xbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff` | Emitted by `setRoleAdmin` when the admin role for `role` changes.                            |
| `LastAdminRenounced` | `0xe8d3a9872e7ca325571ff1e4c51ddd69090a0345240cc605ccde365ec867cc67` | Emitted by `renounceLastAdmin` in addition to the standard                                   |
| `Paused`             | \`0x43e072977b8                                                      |                                                                                              |
