Skip to content

Commit

Permalink
just some text rearrangement
Browse files Browse the repository at this point in the history
  • Loading branch information
diegonehab committed Dec 17, 2024
1 parent 248e448 commit 8ca5b96
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,25 @@
[![Build Status](https://img.shields.io/github/actions/workflow/status/cartesi/machine-emulator/build.yml?branch=main)](https://github.com/cartesi/machine-emulator/actions)
[![License](https://img.shields.io/github/license/cartesi/machine-emulator)](LICENSE)

The Cartesi Machine Emulator is the core component of Cartesi's verifiable computation stack, providing a deterministic and high-performance RISC-V virtual machine that can be used to run complex computations off-chain, with the results being verifiable on-chain.
The Cartesi Machine Emulator is the basis of Cartesi's verifiable computation framework.
It is a portable, deterministic, high-performance RISC-V emulator (a.k.a. a virtual machine) that can run complex computations off-chain but supports on-chain verification via fraud proofs.

At its core, the emulator allows developers to perform intensive and complex computations outside of the blockchain using traditional Linux software stack while maintaining cryptographic guarantees that these computations were performed correctly.
This enables complex applications that would be impractical to run directly on-chain due to gas costs or computational limitations.
Under the hood, the emulator implements the RISC-V RV64GC ISA (including the unprivileged and privileged specifications).
This allows it to boot Linux which, in turn, gives creators access to traditional software development stacks when developing and running their applications.

The emulator implements the RISC-V RV64GC ISA, including both the unprivileged and privileged specifications, making it capable of running full Linux operating systems.
It is written in C++, is scriptable in Lua, and provides a C API.
It is available both as a CLI application and as a library that is easy to integrate into other applications.
Written in C++, the Cartesi Machine Emulator is available as a stand-alone CLI application or as a library for embedding into other applications.
It can be controlled via a well-defined C API that can be easily accessed from multiple programming languages.
In particular, it can be scripted in Lua, for fast prototyping and testing.

*TLDR.*
> I can use the Cartesi Machine to generate cryptographic proofs demonstrating `sha(F(S, I)) = H`, where `F` is a deterministic state transition function executing a full Linux operating system, `S` represents the rolling machine state, `I` denotes input data, and `H` is the resultant output Merkle root hash verifiable on-chain.
> I can use the Cartesi Machine to disprove a dishonest result of a computation `M' = F(M)`, where `F` is a deterministic state transition function that corresponds to running an application on top of the Linux operating system to process some input, `M = (S, I)` is the initial state `S` of the machine and the input `I`, and `M' = (S', O')` is the final state `S'` of the machine and its output `O'`.
## Features

- **Complete RISC-V RV64GC ISA support** (both privileged and unprivileged)
- **High-performance and deterministic** RISC-V interpreter
- **Lua scripting interface** for rapid prototyping
- **High-performance and deterministic** RISC-V emulator
- **Complete RISC-V RV64GC ISA support** (privileged _and_ unprivileged)
- **Simple C API**, facilitating integration with various languages (e.g., C++, Rust, Go, Python, and JavaScript)
- **Lua scripting interface** for rapid prototyping
- **JSON-RPC API endpoint** for remote machine control
- **Linux kernel execution**, enabling the running of standard Linux distributions (e.g., Ubuntu)
- **Full-featured Linux environment** for user-space applications using traditional software stacks
Expand Down Expand Up @@ -159,7 +160,7 @@ Note that we also download guest Linux kernel and guest rootfs images to be used

### Usage

Once you have the emulator, guest Linux kernel and guest rootfs images installed, you can boot a Ubuntu distribution by running:
Once you have the emulator, guest Linux kernel, and guest rootfs images installed, you can boot a Ubuntu distribution by running:

```sh
cartesi-machine
Expand Down

0 comments on commit 8ca5b96

Please sign in to comment.