The Abstract native contracts form the basis for OS and module deployments. They also provide developers with the tools to launch their own modules. We'll go over these contracts and how you can interact with them.
The OS factory contract is used to create an OS. It queries the Version Control (VC) contract to get the latest code-ids. It then creates the manager and proxy contracts and configures the permissions to allow message execution and migrations to take place.
The version control contract is used to map module information (name and version) to a code-id or contract address. This information is used when instantiating or migrating a contract.
The contract also stores a map of OS-ID's (a unique identifier for each OS) to the core contracts of the OS. This information can be used by other contracts to verify the validity of a sender, i.e. the sender is valid if it's an Abstract OS instance.
API's allow users to easily perform actions on their OS. An action is performed by calling the API through the manager contract. A naïve verification implementation would store a local mapping between the manager (caller) and proxy (destination) contract in each API to ensure that only the manager corresponding to the same OS's proxy can execute the API call.
Instead, a raw-query is performed on the calling address (assumed to be a manager contract) to get the OS's ID. Another raw-query performs a lookup on the VC contract to get the core OS details. These details are then matched against the sender information to verify the sender and automatically set the destination address to the associated proxy.
The module factory is callable by any OS manager contract and has permissions to add modules to the OS. It uses the version control module store to query module code-id's and addresses.
The abstract name service contract is a basic and free-to-use address store for all the addresses present on-chain.
The manager contract is the endpoint for interacting with an OS.
The proxy contract stores the OS's funds and whitelists contracts to perform actions on it.