The Open Mina Node is a Mina node written completely in Rust and capable of verifying blocks of transactions, producing blocks and generating SNARKs.
In the design of the Open Mina node, we are utilizing much of the same logic as in the Mina Web Node. The key difference is that unlike the Web Node, which is an in-browser node with limited resources, the Open Mina node is able to perform resource-intensive tasks such as SNARK proof generation.
Currently, with the Open Mina node, you can:
- Connect to the network and sync up to the best tip block
- Validate and apply new blocks and transactions to update consensus and ledger state.
- Produce SNARKs to complete SNARK work.
- Broadcast messages: blocks, SNARK pool
We are working on the following:
- Produce SNARKs in Rust (currently we use OCaml subprocess for that)
In the future, we plan to implement:
- Direct transfer of MINA funds
- Block production
- SNARK proof generation for transactions
- SnarkyJS support for Rust node, thanks to which you will be able to directly inject simple transactions, such as transferring Mina funds from one account to another.
- The ability to record/replay all blocks
Run:
docker compose up
Then visit http://localhost:8070 in your browser.
This installation guide has been tested on Debian and Ubuntu and should work on most distributions of Linux.
Pre-requisites:
Ubuntu or Debian-based Linux distribution.
Steps (for Debian-based Linux distros):
Open up the command line and enter the following:
apt install curl git
curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly-2023-10-07
source "$HOME/.cargo/env"
git clone https://github.com/openmina/openmina.git
cd openmina/
cargo run --release -p cli node
The following tools are required to launch the UI:
- Node.js
- npm
- Angular CLI
Here are the steps to install these tools:
Download and install Node.js for your OS, which includes Node Package Manager (npm).
-
After installing Node.js, verify your installation:
node -v
This command should print the version number of your Node.js installation.
-
Verify that you are running a version of npm that is at least 6.x.x or higher:
npm -v
This command should print the version number of your npm installation.
-
Install the Angular CLI globally:
npm install -g @angular/cli
This command installs the Angular CLI globally on your system.
-
Verify your Angular CLI installation:
ng version
This command should print the version number of your Angular CLI installation.
Open the command line, navigate to the openmina directory and then run
cd frontend
npm install
npm start
Open your browser and navigate to http://localhost:4200.
- core/ - Provides basic types needed to be shared across different components of the node.
- ledger/ - Mina ledger implementation in Rust.
- snark/ - Snark/Proof verification.
- p2p/ - P2p implementation for OpenMina node.
- node/ - Combines all the business logic of the node.
- cli/ - OpenMina cli.
- frontend/ - OpenMina frontend.
Details regarding architecture
- Why we are developing Open Mina
- What is Open Mina?
- Core components
- Developer tools
- Testing
- How to run
- External links