THIS IS AN EXPERIMENTAL PROJECT. IT IS INSECURE AT THIS STAGE Please don't start depending on it, and do not use it in production. Large parts of this project are subject to change. |
---|
Vanadium is a Risc-V Virtual Machine that runs in an embedded Secure Element.
By outsourcing encrypted, authenticated pages to an untrusted client, it allows to run applications (V-Apps) in the secure element without worrying about the limitations of the embedded platform.
You can write V-Apps without worrying about binary size and memory usage: only the code actually used at runtime will be sent to the device for execution, and page swapping with the client happens transparently between the VM and the VM client.
During development, you will write and test code natively, without relying on an external emulator. This simplifies writing, testing and deploying your code while keeping the majority of it generic, and not tied to a specific platform.
This repository is organized in a monorepo structure.
- docs - Architecture and technical documentation
- VM [arm], no-std - The Vanadium Ledger app. It contains the actual Virtual Machine.
- app-sdk [riscv], no_std - Vanadium V-App SDK. It is used by V-Apps to access all the system services.
- client-sdk [native] - Vanadium V-App client SDK. V-App Clients use it as a base for their own client crates.
- common [arm|riscv|native], no_std - Any code that is shared among two or more of the above crates.
- apps - Complete V-Apps, and their clients
In VSCode, opening the vanadium.code-workspace is the most convenient way to work with this repository.
This project is licensed under the Apache Licence v2.0.