2 个版本 (1 个稳定版)
1.2.0 | 2024 年 5 月 17 日 |
---|---|
1.2.0-dev | 2024 年 3 月 20 日 |
#31 in #execution-engine
每月 665 次下载
用于 5 crates
5.5MB
119K SLoC
Radix Engine
Radix Engine 是一个底层执行引擎,旨在运行基于 DeFi 的 Scrypto 应用程序。
其架构深受传统内核设计(尽管简化了许多)和 Rust 的所有权和类型检查范式(同样简化了许多)的影响。这里的创新在于结合来自两个世界(操作系统和语言)的想法,或者说简单地说,“在系统层实现 Rust 语义”。
架构
Radix Engine 的执行组织成 5 层,每层都为上一层提供 API。
执行层还可以选择提供回调 API,上一层必须实现。
执行层 | 层 ID | 描述 | 责任 | API | 回调 API | 实现 |
---|---|---|---|---|---|---|
应用 | 5 | "用户空间" | 应用程序逻辑(例如用 Scrypto 编写的蓝图) | 本地蓝图 Scrypto 蓝图 |
||
虚拟机 | 4 | "虚拟 CPU" | 应用程序执行 | WASM + Scrypto API | 虚拟机 | |
系统 | 3 | "操作系统" | 类型检查 包/蓝图/对象语义 应用程序标准化(例如授权、版本控制) |
子状态 API 对象 API 蓝图 API 计费 API |
系统回调 API | 系统 |
内核 | 2 | "I/O 设备管理" | 调用帧消息传递 所有权/引用处理 状态虚拟化机制 子状态设备管理 事务执行 |
内核API | 内核回调API | 内核 |
数据库 | 1 | “持久化” | 运行时只读物理存储 | 子状态数据库 | 内存数据库 RocksDB |
数据抽象
如果从纯粹的状态角度来看,层可以简化为以下4层
数据层 | 层 ID | 抽象层 |
---|---|---|
应用 | 5 | 应用程序接口(例如,我的账户中的金额) |
系统 | 3 | 包/蓝图/对象语义 蓝图字段和集合 蓝图类型 |
内核 | 2 | 节点/分区/子状态语义 子状态所有权/引用 |
数据库 | 1 | 键/值数据库 |
依赖关系
~26–56MB
~1M SLoC