# snarkOS **Repository Path**: codex8080/snarkOS ## Basic Information - **Project Name**: snarkOS - **Description**: No description available - **Primary Language**: Unknown - **License**: GPL-3.0 - **Default Branch**: testnet3 - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-02-14 - **Last Updated**: 2024-05-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

snarkOS

## Table of Contents * [1. Overview](#1-overview) * [2. Build Guide](#2-build-guide) * [2.1 Requirements](#21-requirements) * [2.2 Installation](#22-installation) * [3a. Run an Aleo Client Node](#3a-run-an-aleo-client-node) * [3b. Run an Aleo Mining Node](#3a-run-an-aleo-mining-node) * [4. FAQs](#4-faqs) * [5. Command Line Interface](#5-configuration-file) * [6. Development Guide](#6-development-guide) * [7. License](#7-license) [comment]: <> (* [4. JSON-RPC Interface](#4-json-rpc-interface)) [comment]: <> (* [5. Additional Information](#5-additional-information)) ## 1. Overview __snarkOS__ is a decentralized operating system for private applications. It forms the backbone of [Aleo](https://aleo.org/) and enables applications to verify and store state in a publicly verifiable manner. ## 2. Build Guide ### 2.1 Requirements The following are **minimum** requirements to run an Aleo node: - **CPU**: 16-cores (32-cores preferred) - **RAM**: 16GB of memory (32GB preferred) - **Storage**: 128GB of disk space - **Network**: 50 Mbps of upload **and** download bandwidth Please note to run an Aleo proving node that is **competitive**, the machine will require more than these requirements. ### 2.2 Installation Before beginning, please ensure your machine has `Rust v1.62+` installed. Instructions to [install Rust can be found here.](https://www.rust-lang.org/tools/install) Start by cloning the snarkOS Github repository: ``` git clone https://github.com/AleoHQ/snarkOS.git --depth 1 ``` Next, move into the snarkOS directory: ``` cd snarkOS ``` **[For Ubuntu users]** A helper script to install dependencies is available. From the snarkOS directory, run: ``` ./build_ubuntu.sh ``` ## 3a. Run an Aleo Client Node Start by following the instructions in the [Build Guide](#2-build-guide). Next, to start a client node, from the snarkOS directory, run: ``` ./run-client.sh ``` ## 3b. Run an Aleo Prover Node **Note:** The Aleo prover node will be available in Phase 2. Start by following the instructions in the [Build Guide](#2-build-guide). Next, to generate an Aleo prover address, run: ``` snarkos experimental new_account ``` or from the snarkOS directory, run: ``` cargo run --release -- experimental new_account ``` This will output a new Aleo account in the terminal. **Please remember to save the account private key and view key.** The following is an example output: ``` Attention - Remember to store this account private key and view key. Private Key APrivateKey1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <-- Save Me View Key AViewKey1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <-- Save Me Address aleo1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx <-- Use Me For The Next Step ``` Next, to start a proving node, from the snarkOS directory, run: ``` ./run-prover.sh ``` When prompted, enter your Aleo prover address: ``` Enter your Aleo prover address: aleo1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` ## 4. FAQs ### 1. My node is unable to compile. - Ensure your machine has `Rust v1.62+` installed. Instructions to [install Rust can be found here.](https://www.rust-lang.org/tools/install) - If large errors appear during compilation, try running `cargo clean`. - Ensure snarkOS is started using `./run-client.sh` or `./run-prover.sh`. ### 2. My node is unable to connect to peers on the network. - Ensure ports `4130/tcp` and `4180/tcp` are open on your router and OS firewall. - Ensure snarkOS is started using `./run-client.sh` or `./run-prover.sh`. ### 3. I can't generate a new address ### - Before running the command above (`snarkos experimental new_account`) try `source ~/.bashrc` - Also double check the spelling of `snarkos`. Note the directory is `/snarkOS`, the command is `snarkos` ## 5. Command Line Interface To run a node with custom settings, refer to the full list of options and flags available in the snarkOS CLI. The full list of CLI flags and options can be viewed with `snarkos --help`: ``` snarkos The Aleo Team USAGE: snarkos [FLAGS] [OPTIONS] [SUBCOMMAND] FLAGS: --display If the flag is set, the node will render a read-only display -h, --help Prints help information --norpc If the flag is set, the node will not initialize the RPC server -V, --version Prints version information OPTIONS: --connect Specify the IP address and port of a peer to connect to --dev Enables development mode, specify a unique ID for the local node --network Specify the network of this node [default: 2] --node Specify the IP address and port for the node server [default: 0.0.0.0:4132] --prover Specify this as a prover node, with the given prover address --rpc Specify the IP address and port for the RPC server [default: 0.0.0.0:3032] --password Specify the password for the RPC server [default: pass] --username Specify the username for the RPC server [default: root] --verbosity Specify the verbosity of the node [options: 0, 1, 2, 3] [default: 2] SUBCOMMANDS: clean Removes the ledger files from storage experimental Experimental features help Prints this message or the help of the given subcommand(s) update Updates snarkOS to the latest version ``` ## 6. Development [//]: # (In one terminal, start the first node by running:) [//]: # (```) [//]: # (cargo run --release -- --dev 1 --node 0.0.0.0:4135 --rpc 0.0.0.0:3035 --prover aleo1d5hg2z3ma00382pngntdp68e74zv54jdxy249qhaujhks9c72yrs33ddah) [//]: # (```) [//]: # () [//]: # (After the first node starts, in a second terminal, run:) [//]: # (```) [//]: # (cargo run --release -- --dev 2) [//]: # (```) We welcome all contributions to snarkOS. Please refer to the [license](#7-license) for the terms of contributions. ## 7. License [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](./LICENSE.md)