#虚拟机 #risc-v #安全 #用户级

无需 std polkavm

一个基于 RISC-V 的快速安全虚拟机

13 个版本 (重大更新)

0.11.0 2024 年 8 月 23 日
0.9.3 2024 年 3 月 5 日
0.3.0 2023 年 12 月 1 日
0.2.0 2023 年 11 月 24 日
0.1.0 2023 年 7 月 6 日

#1 in 模拟器

Download history 20299/week @ 2024-05-03 24941/week @ 2024-05-10 21323/week @ 2024-05-17 33109/week @ 2024-05-24 26798/week @ 2024-05-31 22033/week @ 2024-06-07 22835/week @ 2024-06-14 29295/week @ 2024-06-21 21578/week @ 2024-06-28 24003/week @ 2024-07-05 30418/week @ 2024-07-12 33269/week @ 2024-07-19 31409/week @ 2024-07-26 29518/week @ 2024-08-02 43860/week @ 2024-08-09 25488/week @ 2024-08-16

每月 135,142 次下载
129 软件包中使用 (直接使用 4 个)

MIT/Apache

1MB
24K SLoC

包含 (ELF 可执行文件/库, 34KB) src/sandbox/polkavm-zygote

PolkaVM

PolkaVM 是一个基于 RISC-V 的一般用途用户级虚拟机。

此项目尚未完成,并且是一个非常重的进行中项目!请不要在生产环境中使用它!

查看当前的基准测试结果.

设计目标

(注意:以下并非全部都是当前的真实情况!)

  • 默认安全且沙箱化。在 VM 中运行的代码应在单独的进程中运行,并且不应能够访问宿主系统,即使在 VM 内存在具有完全远程代码执行权限的攻击者的情况下。
  • 执行速度快。在 VM 中运行的代码的运行时性能应与最先进的 WebAssembly VM 具有竞争力,至少在数量级上。
  • 编译速度快,具有保证的单遍 O(n) 编译。将新代码加载到 VM 中应该几乎是瞬时的。
  • 内存占用低。每个 VM 的并发实例的基准内存开销不应超过 128KB。
  • 二进制文件小。为此 VM 编译的程序应占用尽可能少的空间。
  • 没有浪费的虚拟地址空间。VM 不应预分配数 GB 的虚拟地址空间用于沙箱化目的。
  • 完全确定性的。给定相同的输入和相同的代码,执行应始终返回完全相同的结果。
  • 支持高性能异步 gas 计费。Gas 计费应便宜、确定且合理准确。
  • 简单。应可能让一个程序员在一周内编写一个完全兼容此 VM 的解释器。
  • 版本化操作语义。任何对语义的未来更改,如果对客户程序是可观察的,都将进行版本化,并且将明确选择加入。
  • 标准化。应有一个完全描述此 VM 客户端可观察操作语义的规范。
  • 跨平台。在不支持的操作系统和平台上,虚拟机将以解释模式运行。
  • 最小外部依赖。虚拟机应基本自包含,编译速度快,并具有抵抗供应链攻击的能力。
  • 内置调试和性能分析工具。

非目标

  • 系统级仿真。此虚拟机永远无法运行正常的操作系统。
  • 完全支持amd64(也称为x86_64)和aarch64(也称为arm64)以外的架构。其他任何架构都将以解释模式运行。
  • 完全支持Linux、macOS和Windows以外的操作系统。在其他任何操作系统上,虚拟机将以解释模式运行。
  • 支持浮点数、SIMD和其他更专业的RISC-V扩展。如果需要,这些可以作为可选功能在未来添加,但目前没有计划。
  • 支持完整的32寄存器RISC-V指令集架构。此虚拟机目前仅针对RV32EM。

许可证

以下任一许可证下

根据您的选择。

贡献

除非您明确声明,否则您提交的任何贡献,按照Apache-2.0许可证定义的,将根据上述许可证双重授权,不附加任何额外的条款或条件。

依赖项