Skip to main content
@tevm/voltaire
@tevm/voltaire / primitives/Permit

primitives/Permit

Namespaces

Interfaces

PermitDomainType

Defined in: src/primitives/Permit/PermitType.ts:19 EIP-712 Domain for Permit signatures

Properties

chainId
readonly chainId: ChainIdType
Defined in: src/primitives/Permit/PermitType.ts:22
name
readonly name: string
Defined in: src/primitives/Permit/PermitType.ts:20
verifyingContract
readonly verifyingContract: AddressType
Defined in: src/primitives/Permit/PermitType.ts:23
version
readonly version: string
Defined in: src/primitives/Permit/PermitType.ts:21

PermitType

Defined in: src/primitives/Permit/PermitType.ts:8 EIP-2612 Permit message structure

Properties

deadline
readonly deadline: Type
Defined in: src/primitives/Permit/PermitType.ts:13
nonce
readonly nonce: Type
Defined in: src/primitives/Permit/PermitType.ts:12
owner
readonly owner: AddressType
Defined in: src/primitives/Permit/PermitType.ts:9
spender
readonly spender: AddressType
Defined in: src/primitives/Permit/PermitType.ts:10
value
readonly value: Type
Defined in: src/primitives/Permit/PermitType.ts:11

Variables

PERMIT_TYPES

const PERMIT_TYPES: object
Defined in: src/primitives/Permit/constants.js:4 EIP-2612 Permit type definition for EIP-712

Type Declaration

Permit
Permit: object[]

Functions

createPermitSignature()

createPermitSignature(permit, domain, privateKey): Uint8Array<ArrayBufferLike>
Defined in: src/primitives/Permit/createPermitSignature.js:37 Creates an EIP-2612 permit signature

Parameters

permit
PermitType Permit message
domain
PermitDomainType EIP-712 domain
privateKey
Uint8Array<ArrayBufferLike> Private key (32 bytes)

Returns

Uint8Array<ArrayBufferLike> Compact signature (64 bytes + recovery id)

Example

import * as Permit from './primitives/Permit/index.js';
import * as Address from './primitives/Address/index.js';
import * as Uint256 from './primitives/Uint256/index.js';

const permit = {
  owner: Address.fromHex('0x...'),
  spender: Address.fromHex('0x...'),
  value: Uint256.fromBigInt(1000000n),
  nonce: Uint256.fromBigInt(0n),
  deadline: Uint256.fromBigInt(1234567890n),
};

const domain = {
  name: 'USD Coin',
  version: '2',
  chainId: 1,
  verifyingContract: Address.fromHex('0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48'),
};

const signature = Permit.createPermitSignature(permit, domain, privateKey);

verifyPermit()

verifyPermit(permit, signature, domain): boolean
Defined in: src/primitives/Permit/verifyPermit.js:21 Verifies an EIP-2612 permit signature

Parameters

permit
PermitType Permit message
signature
Uint8Array<ArrayBufferLike> Compact signature (64 bytes + recovery id)
domain
PermitDomainType EIP-712 domain

Returns

boolean True if signature is valid

Example

import * as Permit from './primitives/Permit/index.js';

const isValid = Permit.verifyPermit(permit, signature, domain);