Store provides low-level primitives for storage.
World provides the primitives for logic and access control on top of that storage.
Calls are sent to the
World as a central entry point.
World performs access control checks and if the request is authorized, sends it to the appropriate
In most cases access from the
System to the tables that store the data also goes through the
World (except for root systems).
System contracts themselves are stateless, all the data is managed by the
System in the root namespace could bypass the access control.
However, only the owner of the root namespace (by default, the account that deployed the
World) can deploy into the root namespace.
To prevent systems from being registered in the root namespace, the root namespace owner can transfer ownership to
Systems in a
World are comparable to
Facets in the
Diamond pattern (opens in a new tab) in many ways.
The big difference is permissionless extensions.
Anybody can claim an unused namespace, and put into it tables and
System contracts to extend the world.
- An account (either an externally owned account (opens in a new tab) or a contract) sends a request to the
Worldauthorizes the request and sends it to the appropriate
Systemcan read information from all the
World's tables, and modify information in tables it has access to (by default those in its own namespace).
- If the
Systemneeds to modify information inside a different namespace, it can call a
Systemon that namespace to do so.