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 andpublicAccess
flagSystemRegistry
- reverse maps a system's address to its selectorSystemHooks
- maps a system's selector to an array of table hooksResourceType
- maps selector to aResource
enum 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
- hasemitEphemeralRecord
for 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