> For the complete documentation index, see [llms.txt](https://ola-2.gitbook.io/ola-developer-documents/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ola-2.gitbook.io/ola-developer-documents/olaos/architecture.md).

# OlaOS Architecture

Olaos implements multiple services such as JONS-RPC server, data fetcher, sequencer, healthcheck, etc.

The entire project is divided into the following crates:

* basic-types
  * Some basic types used in the project are defined here.
  * This crate will not depend on other crates in the project.
* config
  * The configuration parameters used in the project are defined here.
  * /configuration
    * All configuration files are here, with a lower priority than environment variables.
* contracts
  * The system contract definition used in OlaOS and loading logic are here.
* dal
  * Data Access Layer in OlaOS.
  * Encapsulates the curl operations of the underlying database.
* etc
  * The currently used environment variables and compiled system contract code are here.
* health\_check
  * Check whether each module is working properly.
* logs
  * Collect system logs when running.
* mempool
  * Implemented a mempool for incoming user transactions, from which the sequencer will select transactions to execute and generate blocks.
* ola\_core
  * The core module of OlaOS, including the implementation of a JSON-RPC server, the core logic of sequencer and the abstract logic of mempool.
* state
  * Providing an in-memory database through the underlying rocksdb, which is used for OlaVM to read necessary information of current state.
* storage
  * Implemented storage read and write operations for OlaVM.
* types
  * Implemented most of OlaOS's data types, including transactions, blocks, etc.
