DEV · OWNER-SIGNED · NO KEY CUSTODY · DO NOT DISABLE VALIDATOR UNLESS LAST RESORT

DEV · Whitelist stake as operator

Crypto Brokers NFT uses Limit Break / OpenSea Creator Token Transfer Validator at security level 3 (operator whitelist). V1 stake pulls fail with 0x1de5204e. Prefer push-stake v2; this page documents the whitelist path for v1 (or any operator).

← Docs · Deploy V2 · FreeNFT UI

NFT
0x9F7A3ADbF611cBeeC95Ce40e0259bbF96b8Df041

Transfer validator
0xa000027a9b2802e1ddf7000061001e5c005a0000

Security level (live)
3 · whitelist · OTC allowed · contract receivers allowed · list id 0 (empty)

Stake v1 (blocked pull)
0xd97fd168e71a89b39448861602facf3f5ae631bb

Owner must sign
0xdfF1a5dc565a2D8d0C2818f8B190ca8399B869b3

Exact MetaMask steps (call validator)

  1. createList on validator 0xa000…0000
    Selector 0xb8dcc68f · createList(string name)
    Arg: e.g. "CryptoBrokersStake"
    Returns uint120 listId (read from receipt / next lastListId()). Or use FreeNFT UI / createListCopy from an existing OpenSea list.
  2. addAccountsToWhitelist on validator
    Selector 0xa1cc5cc1 · addAccountsToWhitelist(uint120 id, address[] accounts)
    Args: listId, array containing stake address (v1 0xd97f…31bb or your new stakeV2 if you also want contract-operator paths).
  3. applyListToCollection on validator
    Selector 0xbf7bfd7e · applyListToCollection(address collection, uint120 id)
    Args: collection 0x9F7A…Df041, your listId.
  4. Test: holder approve(stake, tokenId) then v1 stake(tokenId, tier) — must not revert 0x1de5204e.

Do not call setTransferValidator(address(0)) or drop to level 1 unless as a documented last resort — that weakens royalty / operator enforcement for the whole collection. Optional last-resort only: setTransferSecurityLevelOfCollection(collection, 1, false, false, false) selector 0x317e3e8d (level 1 = no list). Prefer whitelist or push-stake v2 instead.

Owner-signed only. Buttons send calldata to the transfer validator — review every MetaMask prompt.