1 release (0 unstable)

1.2.0-dev Mar 20, 2024

#1 in #scrypto

Download history 123/week @ 2024-03-18 12/week @ 2024-04-01

135 downloads per month
Used in 5 crates

Custom license

7.5MB
112K SLoC

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
Scrypto Blueprints
VM 4 "Virtual CPU" Application Execution WASM + Scrypto API VM
System 3 "Operating System" Type Checking
Package/Blueprint/Object semantics
Application Standardization (e.g. Authorization, Versioning)
Substate API
Object API
Blueprint API
Costing API
System Callback API System
Kernel 2 "I/O Device Management" Call Frame Message Passing
Ownership/Reference handling
State Virtualization Mechanism
Substate Device Management
Transaction Execution
Kernel API Kernel Callback API Kernel
Database 1 "Persistence" Runtime Read-Only Physical Storage Substate Database InMemoryDB
RocksDB

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

Dependencies

~25–61MB
~1M SLoC