Skip to main content

Transfer Security (By Ruleset)

As explained previously, different rulesets and ruleset options range from more permissive to less permissive. Depending upon the ruleset and options chosen, there can be workarounds implemented to attempt to bypass intended rules governing transfers. Defaults have been selected that strike the ideal balance of transfer security and ease of user experience. In case any of the rules are abused at scale, creators can update their ruleset and/or options to move to a higher level of security that thwarts more of these evasion techniques.

In the following tables below, a checkmark denotes that the ruleset is secure from techniques the can be used to bypass transfer rules.

Ruleset Vanilla

Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Ruleset Blacklist

Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Ruleset Whitelist

Configuration 1

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
None
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
Limited

Configuration 2

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO1
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
Limited

Configuration 3

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO2
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Configuration 4

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO1 / WLO2
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Configuration 5

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO0
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
LimitedLimited

Configuration 6

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO3
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
Limited

Configuration 7

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO1 / WLO3
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
Limited

Configuration 8

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO2 / WLO3
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Configuration 9

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WL01 / WLO2 / WLO3
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Configuration 10

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO0 / WLO3
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
LimitedLimited

Configuration 11

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO4
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
Limited

Configuration 12

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WL01 / WLO4
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
Limited

Configuration 13

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO2 / WLO4
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Configuration 14

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO1 / WL02 / WLO4
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Configuration 15

Option Bits SetAllows EOA OTCAllows 7702 Delegate OTCAllows Smart Wallet OTCBlocks Receivers With CodeBlocks Unverified EOA ReceiversBlocks Unwhitelist Operators
WLO0 / WLO4
Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing
LimitedLimited

Ruleset Soulbound

Blocked ExchangePop-Up ExchangeOffline OTCEscrow ContractWrapper ContractsTrading Multi-Sig WalletsCentralized Exchange w/EOAEIP-7702Batch Tx Stuffing

Freezing Accounts

As a method of last resort, creators can freeze an account to prevent all transfers to or from the address. This is intended to prevent malicious actors from circumventing any transfer rules the validators have set via unintended routes or exploits. Use of this feature is solely at the discretion of the token creator, and is disabled by default, requiring the token creator to opt in. This operation can be performed on the developer tools user interface, or using the following validator contract interfaces directly.

    /**
* @notice Adds accounts to the frozen accounts list of a collection.
*
* @dev Throws when the caller is neither collection contract, nor the owner or admin of the specified collection.
*
* @dev <h4>Postconditions:</h4>
* 1. The accounts are added to the list of frozen accounts for a collection.
* 2. A `AccountFrozenForCollection` event is emitted for each account added to the list.
*
* @param collection The address of the collection.
* @param accountsToFreeze The list of accounts to added to frozen accounts.
*/
function freezeAccountsForCollection(address collection, address[] calldata accountsToFreeze) external;

/**
* @notice Removes accounts to the frozen accounts list of a collection.
*
* @dev Throws when the caller is neither collection contract, nor the owner or admin of the specified collection.
*
* @dev <h4>Postconditions:</h4>
* 1. The accounts are removed from the list of frozen accounts for a collection.
* 2. A `AccountUnfrozenForCollection` event is emitted for each account removed from the list.
*
* @param collection The address of the collection.
* @param accountsToUnfreeze The list of accounts to remove from frozen accounts.
*/
function unfreezeAccountsForCollection(address collection, address[] calldata accountsToUnfreeze) external;

/**
* @notice Get frozen accounts by collection.
* @param collection The address of the collection.
* @return An array of frozen accounts.
*/
function getFrozenAccountsByCollection(address collection) external view returns (address[] memory);

/**
* @notice Check if an account is frozen for a specified collection.
* @param collection The address of the collection.
* @param account The address of the account to check.
* @return True if the account is frozen by the specified collection, false otherwise.
*/
function isAccountFrozenForCollection(address collection, address account) external view returns (bool) {
return validatorStorage().frozenAccounts[collection].nonEnumerableAccounts[account];
}

Limit Break

TwitterLimitBreak.comMedium

© 2026 Limit Break International, Inc. All rights reserved.

Privacy PolicyTerms of ServiceCookie PolicyDo Not Sell My Info