# Radix Engine Radix Engine is the underlying execution engine designed to run DeFi-based Scrypto applications. The architecture is heavily influenced by traditional Kernel design (though much simplified) and Rust's Ownership and Type-Checking paradigms (also much simplified). The novel idea here is in combining ideas from the two worlds, Operating System and Language, or simply "Implement Rust Semantics at the System Layer". ## Architecture Radix Engine execution is organized into 5 layers, each layer providing an API to the layer above. Execution layers may also optionally provide a Callback API which the layer above must implement. | Execution Layer | Layer ID | Description | Responsibilities | API | Callback API | Implementation | |-----------------|----------|-------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------|------------------------------------------------------------------------------------------------------------| | Application | 5 | "User Space" | Application Logic (e.g. Blueprints written in Scrypto) | | | [Native Blueprints](src/blueprints)
[Scrypto Blueprints](../radix-engine-tests/tests/blueprints) | | VM | 4 | "Virtual CPU" | Application Execution | WASM + [Scrypto API](../scrypto/src/engine/scrypto_env.rs) | | [VM](src/vm) | | System | 3 | "Operating System" | Type Checking
Package/Blueprint/Object semantics
Application Standardization (e.g. Authorization, Versioning) | [Substate API](../radix-engine-interface/src/api/locked_substate_api)
[Object API](../radix-engine-interface/src/api/object_api.rs)
[Blueprint API](../radix-engine-interface/src/api/blueprint_api.rs)
[Costing API](../radix-engine-interface/src/api/costing_api.rs) | [System Callback API](src/system/system_callback_api.rs) | [System](src/system) | | Kernel | 2 | "I/O Device Management" | Call Frame Message Passing
Ownership/Reference handling
State Virtualization Mechanism
Substate Device Management
Transaction Execution | [Kernel API](src/kernel/kernel_api.rs) | [Kernel Callback API](src/kernel/kernel_callback_api.rs) | [Kernel](src/kernel) | | Database | 1 | "Persistence" | Runtime Read-Only Physical Storage | [Substate Database](../radix-substate-store-interface/src/interface.rs) | | [InMemoryDB](../radix-substate-store-impls/src/memory_db.rs)
[RocksDB](../radix-substate-store-impls/src/rocks_db.rs) | ## Data Abstraction If looked at from a purely state perspective, the layers can be reduced to the following 4 layers: | Data Layer | Layer ID | Abstraction | |-------------|----------|--------------------------------------------------------------------------------------------| | Application | 5 | Application Interface (e.g. Amount of money in my account) | | System | 3 | Package/Blueprint/Object semantics
Blueprint Fields and Collections
Blueprint Typing | | Kernel | 2 | Node/Partition/Substate semantics
Substate Ownership/References
| | Database | 1 | Key/Value Database |