# snarkOS
**Repository Path**: AeneasHe/snarkOS
## Basic Information
- **Project Name**: snarkOS
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: GPL-3.0
- **Default Branch**: bug/value_balance
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2021-12-01
- **Last Updated**: 2024-05-17
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
## 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. Testnet2 FAQs](#4-testnet2-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 mining node that is **competitive**, the machine will require more than these requirements.
### 2.2 Installation
Before beginning, please ensure your machine has `Rust v1.56+` 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:
```
./testnet2_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 Mining Node
Start by following the instructions in the [Build Guide](#2-build-guide).
Next, to generate an Aleo miner 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 mining node, from the snarkOS directory, run:
```
./run-miner.sh
```
When prompted, enter your Aleo miner address:
```
Enter your Aleo miner address:
aleo1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
## 4. Testnet2 FAQs
### 1. My node is unable to compile.
- Ensure your machine has `Rust v1.56+` 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-miner.sh`.
### 2. My node is unable to connect to peers on the network.
- Ensure ports `4132/tcp` and `3032/tcp` are open on your router and OS firewall.
- Ensure snarkOS is started using `./run-client.sh` or `./run-miner.sh`.
## 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
--miner Specify this as a mining node, with the given miner address
-n, --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]
--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:
experimental Experimental features
help Prints this message or the help of the given subcommand(s)
update Updates snarkOS to the latest version
```
## 6. Development Guide
In one terminal, start the first node by running:
```
cargo run --release -- --node 0.0.0.0:4135 --rpc 0.0.0.0:3035 --miner aleo1d5hg2z3ma00382pngntdp68e74zv54jdxy249qhaujhks9c72yrs33ddah
```
After the first node starts, in a second terminal, run:
```
cargo run --release
```
We welcome all contributions to snarkOS. Please refer to the [license](#7-license) for the terms of contributions.
## 7. License
[](./LICENSE.md)