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 在 魔法豆
249 每月下载量
1MB
15K SLoC
目录
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/tcp
和 3033/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/tcp
和3033/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)
- 首先,安装Windows Subsystem for Linux。
- 一旦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变得更好!
🧐 表情符号代表什么意思?
本项目遵循all-contributors规范。欢迎所有类型的贡献!
8. 许可证
我们欢迎对snarkOS
的所有贡献。请参阅许可协议了解贡献条款。
依赖项
~97MB
~1.5M SLoC