# Exploring Aleo snarkOS: a comprehensive tutorial

By [Colliseum](https://paragraph.com/@colliseum) · 2024-02-14

---

I am Heorhii, and I welcome you to explore the innovative world of Aleo snarkOS. As technology evolves, so do our needs for privacy, security, and decentralization. Aleo snarkOS addresses these needs by providing a robust operating system for zero-knowledge applications, revolutionizing the way we interact with the digital world. Let's dive into the intricacies of snarkOS and discover its potential to shape the future of decentralized computing.

**Advantages of Aleo snarkOS:**

1.  **Decentralization:** snarkOS promotes decentralization by providing a robust operating system for zero-knowledge applications, ensuring that no single entity has control over the network.
    
2.  **Privacy:** with snarkOS, transactions and state storage are encrypted, ensuring user privacy and confidentiality of sensitive data.
    
3.  **Security:** the decentralized nature of snarkOS enhances security, making it resistant to single points of failure and malicious attacks.
    
4.  **Scalability:** snarkOS is designed to handle a large number of transactions efficiently, allowing the network to scale seamlessly as demand increases.
    
5.  **Flexibility:** developers have the flexibility to build a wide range of zero-knowledge applications on snarkOS, thanks to its versatile architecture and robust development tools.
    
6.  **Interoperability:** snarkOS is compatible with various platforms and programming languages, enabling interoperability with existing systems and infrastructure.
    
7.  **Ease of use:** despite its advanced capabilities, snarkOS is user-friendly and easy to set up, making it accessible to developers of all skill levels.
    
8.  **Community support:** the Aleo community is active and supportive, providing resources, documentation, and assistance to developers building on snarkOS.
    

With these advantages, snarkOS stands as a powerful platform for building privacy-focused and decentralized applications, ushering in a new era of digital privacy and security.

[https://github.com/AleoHQ/snarkOS](https://github.com/AleoHQ/snarkOS)

1.  **Build guide**
    

_Requirements:_ to run an Aleo node effectively, you'll need:

*   OS: Latest 64-bit architecture
    
*   CPU: 16-32 cores
    
*   RAM: 16-64GB
    
*   Storage: 64GB - 2TB
    
*   Network: Symmetric, high-speed
    
*   GPU: Optional for Provers
    

**2\. Installation**

Before beginning, please ensure your machine has `Rust v1.66+` installed. Instructions to install Rust can be found here.

[https://www.rust-lang.org/tools/install](https://www.rust-lang.org/tools/install)

*   **Clone the repository:** begin by cloning the snarkOS GitHub repository to your local machine.
    

    git clone https://github.com/AleoHQ/snarkOS.git --depth 1
    

*   **Install Dependencies:** run the Ubuntu build script to install necessary dependencies.
    

    cd snarkOS ./build_ubuntu.sh
    

*   **Install snarkOS:** use Cargo to install snarkOS.
    

    cargo install --locked --path .
    

Ensure ports 4130/tcp and 3030/tcp are open on your router and OS firewall.

**3\. Run an Aleo Node: run an Aleo client**

Start by following the instructions in the Build Guide.

[https://github.com/AleoHQ/snarkOS#2-build-guide](https://github.com/AleoHQ/snarkOS#2-build-guide)

Next, to start a client node, from the `snarkOS` directory, run:

    ./run-client.sh
    

**3\. Run an Aleo Node: run an Aleo Prover**

Start by following the instructions in the Build Guide.

[https://github.com/AleoHQ/snarkOS#2-build-guide](https://github.com/AleoHQ/snarkOS#2-build-guide)

Next, generate an Aleo account address:

    snarkos account new
    

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 And Use In The Next Step
         View Key  AViewKey1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  <-- Save Me
          Address  aleo1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx  <-- Save Me
    

Next, to start a proving node, from the `snarkOS` directory, run:

    ./run-prover.sh
    

When prompted, enter your Aleo private key:

    Enter the Aleo Prover account private key:
    APrivateKey1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    

**4\. Command Line Interface**

To run a node with custom settings, refer to the 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 <hello@aleo.org>
    
    USAGE:
        snarkos [OPTIONS] <SUBCOMMAND>
    
    OPTIONS:
        -h, --help                     Print help information
        -v, --verbosity <VERBOSITY>    Specify the verbosity [options: 0, 1, 2, 3] [default: 2]
    
    SUBCOMMANDS:
        account    Commands to manage Aleo accounts
        clean      Cleans the snarkOS node storage
        help       Print this message or the help of the given subcommand(s)
        start      Starts the snarkOS node
        update     Update snarkOS
    

The following are the options for the `snarkos start` command:

    USAGE:
        snarkos start [OPTIONS]
    
    OPTIONS:
       --network <NETWORK_ID>  Specify the network ID of this node [default: 3]
            
       --validator                             Specify this node as a validator
       --prover                                Specify this node as a prover
       --client                                Specify this node as a client
            
       --private-key <PRIVATE_KEY>       Specify the node's account private key
       --private-key-file <PRIVATE_KEY_FILE>   Specify the path to a file containing the node's account private key
            
       --node <IP:PORT>   Specify the IP address and port for the node server [default: 0.0.0.0:4130]
       --connect <IP:PORT>  Specify the IP address and port of a peer to connect to
     
       --rest <REST>   Specify the IP address and port for the REST server [default: 0.0.0.0:3030]
       --norest   If the flag is set, the node will not initialize the REST server
            
      --nodisplay   If the flag is set, the node will not render the display
      --verbosity <VERBOSITY_LEVEL>  Specify the verbosity of the node [options: 0, 1, 2, 3] [default: 2]
      --logfile <PATH>   Specify the path to the file where logs will be stored [default: /tmp/snarkos.log]
            
      --dev <NODE_ID>   Enables development mode, specify a unique ID for this node
    

**5\. Development guide**

_Quick start:_

*   Initialize validators, provers, and clients to kickstart development.
    
*   Utilize tmux for local devnet setup.
    
*   Toggle between nodes and manage node selection effortlessly.
    

**Operations.** It's essential to initialize nodes starting from 0 and incrementing by 1 for each new node. Use the following options to initialize a node:

*   `cargo run --release -- start --nodisplay --dev <NODE_ID> --validator`
    
*   `cargo run --release -- start --nodisplay --dev <NODE_ID> --prover`
    
*   `cargo run --release -- start --nodisplay --dev <NODE_ID> --client`
    

**Local Devnet:**

1.  **Install tmux:** Start by installing tmux on your system.
    
2.  **Start a Local Devnet:** Run the devnet script to begin a local development network.
    

    ./devnet.sh
    

Follow the instructions in the terminal to start the devnet.

1.  **View a Local Devnet:**
    
    *   _Switch Nodes:_ Toggle between nodes using `Ctrl+b n` and `Ctrl+b p`.
        
    *   _Select a Node:_ Choose a node manually or using shortcuts.
        

**Clean up.** To stop a local devnet and clean up node storage, use the following command:

    Ctrl+b :kill-session cargo run --release -- clean --dev <NODE_ID>
    

With these steps, you're all set to explore the vast possibilities of building zero-knowledge applications on Aleo with snarkOS. Happy coding!

[https://developer.aleo.org/getting\_started](https://developer.aleo.org/getting_started)

**In conclusion**, Aleo snarkOS represents a significant step forward in the realm of decentralized computing. By offering a secure, private, and efficient operating system for zero-knowledge applications, snarkOS empowers developers to build groundbreaking solutions while preserving user privacy and data integrity. As we continue to explore the possibilities of blockchain technology, snarkOS stands as a testament to innovation and progress in the quest for a more decentralized future. Embrace the power of snarkOS and join us in shaping the next generation of digital infrastructure.

_To know more, join now!_

> *   _Aleo_ [_Twitter_](https://twitter.com/aleohq)
>     
> *   _Aleo_ [_Discord_](https://discord.gg/aleo)
>     
> *   _Aleo_ [_Website_](https://www.aleo.org/)
>     
> *   _List of_ [_Aleo and Leo code and resourses_](https://github.com/howardwu/awesome-aleo#%EF%B8%8F-a-curated-list-of-aleo--leo-code-and-resources-%EF%B8%8F)
>     

Prepared by Colliseum

---

*Originally published on [Colliseum](https://paragraph.com/@colliseum/exploring-aleo-snarkos-a-comprehensive-tutorial)*
