Approval Permissions

Approval permissions control when transfer approvals can be updated, allowing you to freeze specific transfer rules.

High-Level Logic

For each approval update request:
    Check if approval criteria match (from, to, initiatedBy, transferTimes, tokenIds, ownershipTimes, approvalId)
        β†’ If no match: ALLOW (neutral state)
        β†’ If match: Check if current time is in permanentlyPermittedTimes
            β†’ If yes: ALLOW
            β†’ If no: Check if current time is in permanentlyForbiddenTimes
                β†’ If yes: DENY
                β†’ If no: ALLOW (neutral state)

English: "For these permission execution times, the approvals matching to these criteria can be updated"

Overview

Approval Update
    ↓
Transfer Match
    ↓
Approval ID Match
    ↓
Time Permission Check
    ↓
Execute/Deny

Interface

Available Actions

Action
Scope
Description

canUpdateCollectionApprovals

Collection

Control collection-level approvals

canUpdateIncomingApprovals

User

Control incoming transfer approvals

canUpdateOutgoingApprovals

User

Control outgoing transfer approvals

Note: For user approvals, fromListId and toListId are automatically set:

  • Incoming: toListId is hardcoded to the user's address

  • Outgoing: fromListId is hardcoded to the user's address

Key Concepts

Approval Tuple

An approval tuple consists of: (from, to, initiatedBy, tokenIds, transferTimes, ownershipTimes, approvalId)

Brute Force Pattern

To lock specific criteria, specify the target and set all other criteria to maximum ranges:

Examples

Lock Specific ID Range

Lock Specific Approval ID

Protection Strategies

1. Specific Approval Lock

Lock a specific approval by its unique ID:

2. Range Lock with Overlap Protection

Lock a token range AND all overlapping approvals:

3. Complete Freeze

Lock all approvals for a collection:

Last updated