> ## Documentation Index
> Fetch the complete documentation index at: https://base-a060aa97-roethke-b20-upgrade-pages.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# IB20.permit

> Generated B20 reference for permit(address,address,uint256,uint256,uint8,bytes32,bytes32).

## Signature

```solidity IB20.sol theme={null}
function permit(address owner, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
```

| Field | Value |
| - | - |
| Selector | `0xd505accf` |
| Canonical signature | `permit(address,address,uint256,uint256,uint8,bytes32,bytes32)` |

## Description

EIP-2612 permit. Recovers `owner` via ECDSA from `(v, r, s)`. EOA signatures only; ERC-1271 contract signatures are NOT supported. Emits `Approval`.

## Parameters

| Parameter | Description |
| - | - |
| `owner` | Token holder granting the allowance. |
| `spender` | Account being granted the allowance. |
| `value` | Allowance amount. |
| `deadline` | Unix timestamp after which the signature is invalid. |
| `v` | ECDSA recovery byte. |
| `r` | ECDSA signature r component. |
| `s` | ECDSA signature s component. |

## Reverts

* `ExpiredSignature` when `block.timestamp &gt; deadline`.
* `InvalidSigner` when ECDSA recovery does not yield `owner`.
* `InvalidSpender` when `spender == address(0)`.

## Access Control

Read-only or ERC-20-standard access rules unless the NatSpec states otherwise.

## Policy Interaction

No direct policy interaction.

## Example

```solidity Usage Example theme={null}
IB20(target).permit(owner, spender, value, deadline, v, r, s);
```
