Internal tables and systems of World
World uses Store internals, because it calls StoreCore.initialize in its constructor.
World's own internals are initialized via the deploy (opens in a new tab) cli utility (because they would exceed max contract size if called in a constructor).
Except NamespaceOwner is initialized in World's constructor, because it's needed for module access checks.
Tables
NamespaceOwner- maps namespace to its owner's addressResourceAccess- maps selector (tableId / system selector) and caller address to access flagInstalledModules- maps name and arguments hash (so a module can be installed multiple times) to the module's addressSystems- maps a system's selector (namespace+name) to its contract addresses andpublicAccessflagSystemRegistry- reverse maps a system's address to its selectorSystemHooks- maps a system's selector to an array of table hooksResourceType- maps selector to aResourceenum value. Helps differentiate between systems, tables, etc, because they all share the same resource poolFunctionSelectors- maps selector of a function registered on World to its details: function's system namespace, name and selector. The system's function selector can be different from World's function selector.
Systems
Internal systems are in core module's implementations (opens in a new tab) folder, because they're installed by CoreModule.
AccessManagementSystem- grants/revokes access to/from resourcesEphemeralRecordSystem- hasemitEphemeralRecordfor ephemeral tablesModuleInstallationSystem- installation of (non-root) modules in the WorldStoreRegistrationSystem- its methods should not be used with the World framework. Surfaces the APIs necessary to register Tables on-chain, but lacks namespaces used by World for better permission checksWorldRegistrationSystem- surfaces the APIs necessary to register Systems, Tables, and Namespaces on-chain