#操作系统 #零知识 #aleo #区块链 #zk #去中心化

app snarkos

一个去中心化的操作系统

36个稳定版本

2.2.7 2023年12月20日
2.2.5 2023年11月26日
2.1.6 2023年7月26日
2.0.2 2022年2月13日
0.1.0 2020年1月24日

#1431魔法豆

Download history 31/week @ 2024-03-07 465/week @ 2024-03-14 14/week @ 2024-03-28 2/week @ 2024-04-04

249 每月下载量

Apache-2.0GPL-3.0 许可证

1MB
15K SLoC

snarkOS

目录

1. 简介

snarkOS 是一个用于零知识应用的去中心化操作系统。这段代码构成了 Aleo 网络的基础,该网络以公开可验证的方式验证交易并存储加密状态应用程序。

2. 编译指南

2.1 要求

以下是在运行Aleo节点时所需的 最低要求

  • 操作系统:仅64位架构,最新版以确保安全
    • 客户端:Ubuntu 22.04 (LTS)、macOS Ventura或更高版本、Windows 11或更高版本
    • 验证者:Ubuntu 22.04 (LTS)、macOS Ventura或更高版本
    • 验证器:Ubuntu 22.04 (LTS)
  • 处理器:仅64位架构
    • 客户端:16核心
    • 验证者:32核心(推荐64核心)
    • 验证器:32核心(推荐64核心)
  • 内存:DDR4或更好
    • 客户端:16GB内存
    • 验证者:32GB内存(推荐64GB或更大)
    • 验证器:64GB内存(推荐128GB或更大)
  • 存储:PCIe Gen 3 x4、PCIe Gen 4 x2 NVME SSD或更好
    • 客户端:64GB磁盘空间
    • 验证者:128GB磁盘空间
    • 验证器:2TB 磁盘空间(建议4TB或更大)
  • 网络:对称、商业、始终在线
    • 客户端:100Mbps 的上传和下载带宽
    • 证明者:250Mbps 的上传和下载带宽
    • 验证器:500Mbps 的上传和下载带宽
  • GPU:
    • 客户端:目前不需要
    • 证明者:支持CUDA的GPU(可选)
    • 验证器:目前不需要

请注意,为了运行一个具有竞争力的Aleo证明器,机器的配置将需要超出这些要求。

2.2 安装

在开始之前,请确保您的机器已安装 Rust v1.66+。安装Rust的说明可在此处找到。[a href="https://www.rust-lang.net.cn/tools/install" rel="ugc noopener">安装Rust。

首先,克隆此GitHub仓库

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

接下来,进入 snarkOS 目录

cd snarkOS

(针对Ubuntu用户) 提供了一个安装依赖项的辅助脚本。从 snarkOS 目录运行:

./build_ubuntu.sh

最后,安装 snarkOS

cargo install --path .

请确保您的路由器和操作系统防火墙上的端口 4133/tcp3033/tcp 已开启。

3. 运行Aleo节点

3a. 运行Aleo客户端

首先,按照构建指南中的说明进行。

接下来,从 snarkOS 目录开始运行客户端节点:

./run-client.sh

3b. 运行Aleo验证者

首先,按照构建指南中的说明进行。

接下来,生成一个Aleo账户地址

snarkos account new

这将在终端中输出一个新的Aleo账户。

请务必保存账户私钥和查看密钥。以下是一个示例输出

 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

接下来,从 snarkOS 目录开始运行证明节点:

./run-prover.sh

当提示时,输入您的Aleo私钥

Enter the Aleo Prover account private key:
APrivateKey1xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

4. 常见问题解答

1. 我的节点无法编译。

  • 请确保您的机器已安装 Rust v1.66+。安装Rust的说明可在此处找到。[a href="https://www.rust-lang.net.cn/tools/install" rel="ugc noopener">安装Rust。
  • 如果在编译过程中出现大错误,请尝试运行 cargo clean
  • 确保使用 ./run-client.sh./run-prover.sh 启动 snarkOS

2. 我的节点无法连接到网络上的对等节点。

  • 请确保您的路由器和操作系统防火墙上的端口 4133/tcp3033/tcp 已开启。
  • 确保使用 ./run-client.sh./run-prover.sh 启动 snarkOS

3. 我无法生成新的地址

  • 在运行上述命令(snarkos account new)之前,请尝试 source ~/.bashrc
  • 另外,请仔细检查 snarkos 的拼写。注意目录是 /snarkOS,命令是 snarkos

5. 命令行界面

要使用自定义设置运行节点,请参考 snarkOS CLI 中可用的完整选项和标志列表。

可以使用 snarkos --help 查看CLI标志和选项的完整列表。

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

snarkos start 命令的选项如下:

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:4133]
        --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:3033]
        --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

6. 开发指南

6.1 快速入门

在第一个终端中,通过运行以下命令启动第一个验证器:

cargo run --release -- start --nodisplay --dev 0 --validator

在第二个终端中,通过运行以下命令启动第二个验证器:

cargo run --release -- start --nodisplay --dev 1 --validator

在第三个终端,通过运行以下命令启动第三个验证器:

cargo run --release -- start --nodisplay --dev 2 --validator

在第四个终端,通过运行以下命令启动第四个验证器:

cargo run --release -- start --nodisplay --dev 3 --validator

从现在开始,可以使用此程序进一步启动证明者和客户端。

6.2 操作

0开始初始化节点,并逐个节点增加1,这是很重要的。

以下是一系列初始化节点的选项(将<NODE_ID>替换为从0开始的数字)

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
cargo run --release -- start --nodisplay --dev <NODE_ID>

如果没有指定节点类型,节点将默认为--client

6.3 本地开发网络

6.3.1 安装tmux

要使用脚本运行本地开发网络,首先安装tmux

macOS

在macOS上安装tmux,可以使用Homebrew包管理器。如果您还没有安装Homebrew,可以在其网站上找到说明。

# Once Homebrew is installed, run:
brew install tmux
Ubuntu

在Ubuntu和其他基于Debian的系统上,您可以使用apt包管理器

sudo apt update
sudo apt install tmux
Windows

在Windows上使用tmux有几个方法

使用Windows Subsystem for Linux (WSL)

  1. 首先,安装Windows Subsystem for Linux
  2. 一旦WSL设置完成并且您安装了Linux发行版(例如,Ubuntu),打开您的WSL终端,就像在本地Linux系统上一样安装tmux
sudo apt update
sudo apt install tmux

6.3.2 启动本地开发网络

要启动本地开发网络,运行:

./devnet.sh

按照终端中的说明启动开发网络。

6.3.3 查看本地开发网络

切换节点(前进)

要切换到本地开发网络中的下一个节点,运行:

Ctrl+b n

切换节点(后退)

要切换到本地开发网络中的上一个节点,运行:

Ctrl+b p

选择节点(树选择)

要选择本地开发网络中的节点,运行:

Ctrl+b w

选择节点(手动)

要手动在本地开发网络中选择节点,运行:

Ctrl+b :select-window -t {NODE_ID}

6.3.4 停止本地开发网络

要停止本地开发网络,运行:

Ctrl+b :kill-session

然后,按Enter

清理

要清理节点存储,运行:

cargo run --release -- clean --dev <NODE_ID>

7. 贡献者

感谢您帮助让snarkOS变得更好!
🧐 表情符号代表什么意思?

Howard Wu
Howard Wu

💻 🚧 🤔 👀
Raymond Chu
Raymond Chu

💻 🚧 🤔 👀
ljedrz
ljedrz

💻 🚧 🤔 👀
Niklas Long
Niklas Long

💻 🚧 🤔 👀
Collin Chin
Collin Chin

💻 📖 👀
Mike Turner
Mike Turner

💻 📖 👀
Georgios Konstantopoulos
Georgios Konstantopoulos

💻
Kobi Gurkan
Kobi Gurkan

💻
Vesa-Ville
Vesa-Ville

💻
jules
jules

💻
Daniil
Daniil

💻
akattis
akattis

💻
William Cannon
William Cannon

💻
wcannon-aleo
wcannon-aleo

💻
Sam De Roeck
Sam De Roeck

💻
soft2dev
soft2dev

💻
Ali Mousa
Ali Mousa

💻
pyk
pyk

💻
Belsy
Belsy

💻
apruden2008
apruden2008

💻
Fabiano Prestes
Fabiano Prestes

💻
Haruka
Haruka

💻
e4m7he6g
e4m7he6g

💻
Gregório Granado Magalhães
Gregório Granado Magalhães

💻
Evgeny Garanin
Evgeny Garanin

💻
Macro Hoober
Macro Hoober

💻
code-pangolin
code-pangolin

💻
kaola526
kaola526

💻
clarenous
clarenous

💻
Kostyan
Kostyan

💻
Austin Abell
Austin Abell

💻
Youssef El Housni
Youssef El Housni

💻
ghostant-1017
ghostant-1017

💻
Miguel Gargallo
Miguel Gargallo

💻
Chines Wang
Chines Wang

💻
Ayush Goswami
Ayush Goswami

💻
Tim - o2Stake
Tim - o2Stake

💻
liu-sen
liu-sen

💻
Palamar
Palamar

💻
swift-mx
swift-mx

💻
Caesar Wang
Caesar Wang

💻
Paul IP
Paul IP

💻
Philip Glazman
Philip Glazman

💻
Ruslan Nigmatulin
Ruslan Nigmatulin

💻
François Garillot
François Garillot

💻
aolcr
aolcr

💻
Maciej Zwoliński
Maciej Zwoliński

💻
Nacho Avecilla
Nacho Avecilla

💻
Max Bruce
Max Bruce

💻
whalelephant
Belsy

💻
tranhoaison
Santala

💻
web3deadline
deadline

💻
CedricYanYuhui
CedricYanYuhui

💻
craigjson
Craig Johnson

💻
vbar
Vaclav Barta

💻
Dependabot
Dependabot

💻
添加您的贡献

本项目遵循all-contributors规范。欢迎所有类型的贡献!

8. 许可证

我们欢迎对snarkOS的所有贡献。请参阅许可协议了解贡献条款。

License: GPL v3

依赖项

~97MB
~1.5M SLoC