From 82665b225b3cfcac81ca40d288e45df1a2f495a0 Mon Sep 17 00:00:00 2001 From: Bruno Deferrari Date: Fri, 2 Aug 2024 14:11:03 -0300 Subject: [PATCH 1/2] chore: Update Cargo.lock --- Cargo.lock | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 925cb348ce..c8bc5230da 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1048,7 +1048,7 @@ checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" [[package]] name = "cli" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "bytes", @@ -2498,7 +2498,7 @@ dependencies = [ [[package]] name = "hash-tool" -version = "0.6.0" +version = "0.7.0" dependencies = [ "bs58 0.5.0", "hex", @@ -3115,7 +3115,7 @@ dependencies = [ [[package]] name = "ledger-tool" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "mina-curves", @@ -3441,7 +3441,7 @@ dependencies = [ [[package]] name = "libp2p-rpc-behaviour" -version = "0.6.0" +version = "0.7.0" dependencies = [ "libp2p", "log", @@ -3821,7 +3821,7 @@ dependencies = [ [[package]] name = "mina-transport" -version = "0.6.0" +version = "0.7.0" dependencies = [ "blake2", "hex", @@ -3832,7 +3832,7 @@ dependencies = [ [[package]] name = "mina-tree" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "ark-ec", @@ -4167,7 +4167,7 @@ dependencies = [ [[package]] name = "node" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "derive_more", @@ -4502,7 +4502,7 @@ checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" [[package]] name = "openmina-bootstrap-sandbox" -version = "0.6.0" +version = "0.7.0" dependencies = [ "base64 0.21.7", "binprot", @@ -4528,7 +4528,7 @@ dependencies = [ [[package]] name = "openmina-core" -version = "0.6.0" +version = "0.7.0" dependencies = [ "ark-ff", "binprot", @@ -4554,7 +4554,7 @@ dependencies = [ [[package]] name = "openmina-fuzzer" -version = "0.6.0" +version = "0.7.0" dependencies = [ "lazy_static", "rand 0.8.5", @@ -4565,7 +4565,7 @@ dependencies = [ [[package]] name = "openmina-gossipsub-sandbox" -version = "0.6.0" +version = "0.7.0" dependencies = [ "bs58 0.5.0", "env_logger", @@ -4579,7 +4579,7 @@ dependencies = [ [[package]] name = "openmina-macros" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "openmina-core", @@ -4592,7 +4592,7 @@ dependencies = [ [[package]] name = "openmina-node-account" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "argon2", @@ -4613,7 +4613,7 @@ dependencies = [ [[package]] name = "openmina-node-common" -version = "0.5.0" +version = "0.7.0" dependencies = [ "jsonpath-rust", "mina-p2p-messages", @@ -4635,7 +4635,7 @@ dependencies = [ [[package]] name = "openmina-node-invariants" -version = "0.6.0" +version = "0.7.0" dependencies = [ "documented", "lazy_static", @@ -4649,7 +4649,7 @@ dependencies = [ [[package]] name = "openmina-node-native" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "bytes", @@ -4683,7 +4683,7 @@ dependencies = [ [[package]] name = "openmina-node-testing" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "axum", @@ -4727,7 +4727,7 @@ dependencies = [ [[package]] name = "openmina-producer-dashboard" -version = "0.6.0" +version = "0.7.0" dependencies = [ "bincode", "clap 4.5.2", @@ -4819,7 +4819,7 @@ dependencies = [ [[package]] name = "p2p" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "binprot", @@ -4883,7 +4883,7 @@ dependencies = [ [[package]] name = "p2p-testing" -version = "0.6.0" +version = "0.7.0" dependencies = [ "derive_more", "futures", @@ -5741,7 +5741,7 @@ checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" [[package]] name = "replay_dynamic_effects" -version = "0.6.0" +version = "0.7.0" dependencies = [ "node", "openmina-node-invariants", @@ -6052,7 +6052,7 @@ checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "salsa-simple" -version = "0.6.0" +version = "0.7.0" dependencies = [ "generic-array", "hex", @@ -6445,7 +6445,7 @@ dependencies = [ [[package]] name = "snark" -version = "0.6.0" +version = "0.7.0" dependencies = [ "ark-ec", "ark-ff", @@ -7605,7 +7605,7 @@ checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" [[package]] name = "vrf" -version = "0.6.0" +version = "0.7.0" dependencies = [ "anyhow", "ark-ec", From a02b2e625c8ff4757cd84d5f74fd1f087da755ed Mon Sep 17 00:00:00 2001 From: Bruno Deferrari Date: Fri, 2 Aug 2024 14:17:13 -0300 Subject: [PATCH 2/2] chore: Update README --- README.md | 75 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 56 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index e4f14205fb..611d1e9e93 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,78 @@ # The Open Mina Node +## With the Rust-based Open Mina node, you can produce, validate and apply blocks + [![Openmina Daily](https://github.com/openmina/openmina/actions/workflows/daily.yaml/badge.svg)](https://github.com/openmina/openmina/actions/workflows/daily.yaml) [![Changelog][changelog-badge]][changelog] [![release-badge]][release-link] [![Apache licensed]][Apache link] +## Run the block producer + +Once you have completed the [pre-requisites](https://github.com/openmina/openmina/blob/main/docs/producer-demo.md#prerequisites) for your operating system, follow these steps: + +1. **Clone this repository:** + ```bash + git clone https://github.com/openmina/openmina.git + ``` + +2. **Navigate to the repository:** + + ```bash + cd openmina + ``` + +3. **Run the following command to start the demo:** + ```sh + docker compose -f docker-compose.local.producers.yml up --pull always + ``` + +4. **Open you browser and visit http://localhost:8070** + +![image](https://github.com/user-attachments/assets/c8929509-f68b-4281-bcb9-bad03029fa2f) + +## Description + 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. - ## Overview of the Node’s current functionalities -Currently, with the Open Mina node, you can: +| Current functionalities | In Development | Future Plans | +|---------------------------------------------------------------------------------------------|--------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------| +| ☑ **Produce and prove blocks** (with and without transactions). | ☐ Receiving and broadcasting transactions from/into the transaction pool. | ☐ Direct transfer of MINA funds using Webnode | +| ☑ **Produce SNARK proofs** for transactions. | ☐ A block replayer that uses data from the archive nodes| ☐ O1JS support for Webnode.| +| ☑ **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. | | | +| ☑ **Broadcast messages**: blocks, SNARK pool | | | + +Please note that receiving and broadcasting transactions from/into the transaction pool is already possible, but is still an early alpha version and needs more work. -* 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 +## Updates to the Front End +We've added two new pages to the node's front end: -We are working on the following: +### Mempool +![image](https://github.com/user-attachments/assets/a66b993d-5a9f-42a7-a946-f19f6e18e6ab) -* Produce SNARKs in Rust (currently we use OCaml subprocess for that) +Shows a list of the transactions from the pool and a side panel detail. -In the future, we plan to implement: +### Benchmarks -* 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 +![image](https://github.com/user-attachments/assets/5aa9f0b8-2f53-4c2e-8b60-ed2ccaa7335b) -## Producer demo +The benchmarks page helps us to send transactions. The transactions are signed in the front end by the Mina signer. +Every user can send transactions and they can see in the mempool whether the transactions were sent by their node. -See the detailed [guide](docs/producer-demo.md). +## Launch the block producer demo -## How to launch (with docker compose): +Run the Open Mina block producer node by following this [guide](https://github.com/openmina/openmina/blob/main/docs/producer-demo.md). + + +## How to launch the node (with Docker compose): Run: @@ -48,9 +82,12 @@ docker compose up --pull always Then visit http://localhost:8070 in your browser. +![image](https://github.com/user-attachments/assets/b8e10a12-ec96-44a9-951a-ef0c1b291428) + + By default, `docker compose up` will use the latest node and frontend images available (tagged with `latest`), but specific versions can be selected by using the `OPENMINA_TAG` and `OPENMINA_FRONTEND_TAG` variables. -## How to launch (without docker compose): +## How to launch the node (without Docker compose): This installation guide has been tested on Debian and Ubuntu and should work on most distributions of Linux. @@ -197,4 +234,4 @@ npm start [release-link]: https://github.com/openmina/openmina/releases/latest [Apache licensed]: https://img.shields.io/badge/license-Apache_2.0-blue.svg -[Apache link]: https://github.com/openmina/openmina/blob/master/LICENSE +[Apache link]: https://github.com/openmina/openmina/blob/master/LICENSE \ No newline at end of file