Note: not implemented, todo

This document covers all the facets for the ERC20 handler, its rules, and the inherited contracts it uses.

ERC721HandlerMainFacet Invariants

  • Only the connected ERC721 can access checkAllRules
  • Can only be initialized once
  • All transfers are allowed to a registered treasury account
  • When a rule is set, its status is active.
  • 10 AccountAllowDenyOracle may be applied per action.
  • All rules - id’s may only be set by a ruleAdmin
  • All rules - id’s may only be set to an existing rule id in the RuleProcessorDiamond
  • All rules - When setting a rule, only valid actions(0-4) are allowed
  • All rules - When activating a rule, only valid actions(0-4) are allowed
  • All rules - When deactivating a rule, only valid actions(0-4) are allowed
  • All rules - When a rule id is set, then the rule is activated, retrieving the id still returns the rule id
  • All rules - When a rule is NOT active, call to activate the rule always emits ApplicationHandlerActionActivated event
  • All rules - When a rule is active, subsequent calls to activate the rule do not emit ApplicationHandlerActionActivated event
  • Application rules - When any application rule is active, it is checked for all accounts except the Treasury Account
  • When upgrading the facet, all data remains pristine

HandlerBase Invariants

  • Only an App Admin or the owning token can propose a new owner
  • Proposed address can not be set to zero address
  • When an address is proposed, AppManagerAddressProposed is always emitted
  • Any type of address may confirm the proposed AppManager as long as it is the proposed AppManager.
  • Only the proposed AppManager may confirm the AppManagerAddress
  • When AppManagerAddress is confirmed, AppManagerAddressSet event is always emitted

ERC721NonTaggedRuleFacet Invariants

  • When AccountAllowDenyOracle is active, violation of the rule is reverted.
  • When TokenMaxDailyTrades is active, violation of the rule is reverted.
  • When TokenMaxTradingVolume is active, violation of the rule is reverted.
  • When TokenMaxSupplyVolatility is active, violation of the rule is reverted.
  • When TokenMinHoldTimeS is active, violation of the rule is reverted.
  • When upgrading the facet, all data remains pristine

ERC721TaggedRuleFacet Invariants

  • When AccountMinMaxTokenBalance is active, violation of the rule is reverted.
  • When AccountMaxBuySize is active, violation of the rule is reverted.
  • When TokenMaxBuyVolume is active, violation of the rule is reverted.
  • When AccountMaxSellSize is active, violation of the rule is reverted.
  • When TokenMaxSellVolumeS is active, violation of the rule is reverted.
  • When upgrading the facet, all data remains pristine