Events
Creator Token contracts emit several indexible events that should be indexed by off-chain order books.
Off-chain order books SHOULD index the following events for collections they provide listing services for so that the order book can apply the appropriate transfer validation logic to orders such as obtaining an EOA signature from the recipient and registering it with the transfer validator EOA registry or filtering orders that are unfillable based on security settings.
Token Contract Events are emitted by the collection's smart contract. Transfer Validator Events are emitted
by transfer validator contracts. A default transfer validator has been deployed that collections SHOULD use,
however creators MAY deploy alternative transfer validators.
Token Contract Events
event TransferValidatorUpdated(
address oldValidator,
address newValidator);
Monitoring The Validator
Integrators and other users can monitor updates to validator/collection settings through the following event interfaces.
It is especially important for exchange platform to monitor settings of collections, as changes to ruleset or options can block access to unwanted exchanges or invalidate certain marketplace orders, rendering them unfillable.
Ruleset Monitoring
/// @dev Emitted when a delegated ruleset is registered.
event RulesetRegistered(address indexed delegatedRuleset);
/// @dev Emitted when a ruleset binding is set.
event RulesetBindingUpdated(uint8 indexed rulesetId, address indexed oldRuleset, address indexed newRuleset);
List Monitoring
/// @dev Emitted when a new list is created.
event CreatedList(uint256 indexed id, string name);
/// @dev Emitted when the ownership of a list is transferred to a new owner.
event ReassignedListOwnership(uint256 indexed id, address indexed newOwner);
/// @dev Emitted when an address is added to a list.
event AddedAccountToList(uint8 indexed kind, uint48 indexed id, address indexed account);
/// @dev Emitted when a codehash is added to a list.
event AddedCodeHashToList(uint8 indexed kind, uint48 indexed id, bytes32 indexed codehash);
/// @dev Emitted when an address is removed from a list.
event RemovedAccountFromList(uint8 indexed kind, uint48 indexed id, address indexed account);
/// @dev Emitted when a codehash is removed from a list.
event RemovedCodeHashFromList(uint8 indexed kind, uint48 indexed id, bytes32 indexed codehash);
Collection Settings
/// @dev Emitted when a list is applied to a collection.
event AppliedListToCollection(address indexed collection, uint48 indexed id);
/// @dev Emitted when the validation ruleset id and/or custom ruleset for a collection is updated.
event SetCollectionRuleset(address indexed collection, uint8 indexed rulesetId, address indexed customRuleset);
/// @dev Emitted when a collection's token type is updated.
event SetTokenType(address indexed collection, uint16 tokenType);
/// @dev Emitted when a collection's security policy bit options is updated.
event SetCollectionSecurityPolicyOptions(address indexed collection, uint8 globalOptions, uint16 rulesetOptions);
/// @dev Emitted when a collection's security policy expansion words are updated.
event SetCollectionExpansionWords(address indexed collection, bytes32 indexed key, bytes32 value);
/// @dev Emitted when a collection's security policy expansion datums are updated.
event SetCollectionExpansionDatums(address indexed collection, bytes32 indexed key, bytes value);
Frozen Accounts
/// @dev Emitted when an account is added to the list of frozen accounts for a collection.
event AccountFrozenForCollection(address indexed collection, address indexed account);
/// @dev Emitted when an account is removed from the list of frozen accounts for a collection.
event AccountUnfrozenForCollection(address indexed collection, address indexed account);
