2 个版本 (1 个稳定版)

1.2.0 2024 年 5 月 17 日
1.2.0-dev2024 年 3 月 20 日

#31 in #execution-engine

Download history 88/week @ 2024-05-11 100/week @ 2024-05-18 71/week @ 2024-05-25 69/week @ 2024-06-01 34/week @ 2024-06-08 31/week @ 2024-06-15 39/week @ 2024-06-22 48/week @ 2024-06-29 69/week @ 2024-07-06 59/week @ 2024-07-13 108/week @ 2024-07-20 59/week @ 2024-07-27 122/week @ 2024-08-03 201/week @ 2024-08-10 237/week @ 2024-08-17

每月 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