OSXBasedAnon/alphanumeric

GitHub: OSXBasedAnon/alphanumeric

一个跨平台的 Rust 区块链节点 runtime,集成了 P2P 网络、挖矿、钱包管理和链状态同步等完整功能。

Stars: 15 | Forks: 3

# 字母数字 适用于 macOS/OSX、Linux 和 Windows 的 Rust 区块链节点和命令行钱包客户端。 https://www.alphanumeric.blue/ ![Screenshot_2025-01-04_213726](https://github.com/user-attachments/assets/0b5c747c-53f7-4e09-82c8-0e9bfbd8cd89) [![Rust](https://img.shields.io/badge/Rust-stable-orange)](#构建与运行) [![Platform](https://img.shields.io/badge/Platform-macOS%2FOSX%20%7C%20Linux%20%7C%20Windows-blue)](#支持的平台) [![License](https://img.shields.io/badge/License-MIT-green.svg)](#许可证) `alphanumeric` 是一个 Rust 区块链节点 runtime,集成了节点发现、钱包管理、挖矿、本地链存储、bootstrap 同步和诊断工具。当前的发布版本线为 `7.3.8`。 ## 快速导航 - [系统目标](#system-goals) - [技术架构](#technical-architecture) - [代币经济学](#tokenomics) - [支持的平台](#supported-platforms) - [构建与运行](#build-and-run) - [Bootstrap 与存储](#bootstrap-and-storage) - [通过环境变量进行配置](#configuration-via-environment-variables) - [CLI 界面](#cli-surface) - [安全态势](#security-posture) ## 系统目标 `alphanumeric` 被设计为一个单节点可执行文件,打包了参与实时网络所需的全套操作栈: - 确定性的本地链状态持久化 (`sled`) - 受限的、带帧的 P2P 消息传递与 peer 生命周期管理 - 区块/交易传播与同步工作流 - 集成的挖矿路径 - 钱包/密钥工作流以及操作员 CLI - 本地操作遥测和诊断 ## 非目标 (当前) - 跨所有 commit 的协议稳定性保证 - 经过审计的生产级安全声明 - 严格的长期 API/CLI 兼容性保证 ## 当前状态 - 正在积极开发中。 - 接口和内部实现可能会在不同 commit 之间发生变化。 - 并非经过正式审计的生产系统。 - macOS/OSX 的发布打包支持用于命令行客户端。 ## 支持的平台 该客户端旨在运行于: - macOS/OSX,包括 Apple Silicon 的 release 构建 - Linux - Windows 该仓库可以使用 Rust stable 工具链从源码构建。Release 的 zip 压缩包可能包含一个更面向用户的 `README.md`(来自 `release/README.md`);本仓库的 README 是项目的技术概述。 ## 功能矩阵 | 功能 | 范围 | | --- | --- | | 节点 runtime | 监听器、peer 连接/断开连接、维护循环 | | P2P 传输 | 长度前缀帧消息传递、受限的 payload | | 同步 | Peer 区块范围请求与摄取 | | 持久化 | 内置 `sled` 存储与本地 bootstrap | | 挖矿 | 本地挖矿管理器与挖矿工作流 | | 钱包操作 | 创建/重命名/列出/历史记录/账户 + 交易创建 | | 运维可见性 | 状态/同步/连接/发现命令 + stats 服务器钩子 | ## 技术架构 高层模块映射: - `src/main.rs`:进程入口点、bootstrap、CLI 循环、网络命令处理 - `src/a9/node.rs`:P2P runtime、帧处理、peer 管理、同步、事件处理 - `src/a9/blockchain.rs`:区块/交易验证与持久化 - `src/a9/mgmt.rs`:钱包管理与密钥工作流 - `src/a9/progpow.rs`:挖矿管理器与挖矿流程 - `src/a9/velocity.rs`:velocity/shred 传播支持 - `src/a9/bpos.rs`:sentinel/validator 相关逻辑 - `src/a9/whisper.rs`:whisper 消息传递支持 Runtime 形态: 1. bootstrap/加载数据库 (`blockchain.db`) 2. 初始化区块链状态 3. 初始化节点 runtime + 监听器 4. 启动后台任务: - peer 维护 - 发现/公告 - 同步 - 可选的 stats 5. 处理交互式命令和网络事件 ``` flowchart LR CLI[CLI / main.rs] --> NODE[Node Runtime / node.rs] NODE --> P2P[P2P Transport] NODE --> SYNC[Sync + Discovery] NODE --> CHAIN[Blockchain / blockchain.rs] CHAIN --> DB[(sled)] CLI --> MGMT[Wallet Mgmt / mgmt.rs] CLI --> MINER[Mining / progpow.rs] ``` ## 网络与协议说明 - 默认节点 TCP 端口:`7177` (`src/a9/node.rs` 中的 `DEFAULT_PORT`) - 出站消息传递使用帧传输(长度前缀 payload) - 强制执行消息大小限制 (`MAX_MESSAGE_SIZE`) - 出站连接池已启用,包含: - 空闲清理 - LRU 风格的驱逐机制 - 针对重复失败的每个 peer 的断路器 - 入站连接处理受并发限制 - DNS/发现 endpoint 可通过环境变量配置 - 主要 peer bootstrap:`ALPHANUMERIC_DISCOVERY_BASE`(默认为 `https://alphanumeric.blue`) - 可选的 DNS 备用 seed:`ALPHANUMERIC_DNS_SEEDS`(逗号分隔的 `host:port`) ## 共识与验证 代码库包含多个与共识/验证相关的组件(PoW/挖矿路径、sentinel/validator 逻辑以及传播优化)。其行为由 `src/a9/*` 中的当前代码路径定义。 交易见证使用紧凑最终性模型: - 实时的 mempool 和新区块准入需要完整的 ML-DSA 签名和发送方公钥 - 已确认的区块存储保留紧凑签名凭证以及 `sig_hash = SHA256(full_signature)` - 历史 P2P 同步验证区块哈希、merkle root、PoW、余额、奖励规则、公钥/地址绑定以及凭证承诺,而无需归档完整的见证 如果您正基于此仓库进行集成,请固定一个 commit 哈希,并在该确切修订版验证其行为。 ## 代币经济学 ### 供应量摘要 (简单) - 没有编码为单一数值的**固定硬上限**。 - 新增发行量**随时间衰减**: - 最大区块奖励每 6 个月下降 **17%**(每个周期 `* 0.83`) - 实际上这创造了**渐近线式的供应行为**: - 总供应量可以继续增加 - 但新增发行量随时间推移逐渐变小 - **从现在起 5 年内(网络已运行约 6 个月)的最大供应量估计:约 6.258 亿 token** ### Runtime 参数 (当前代码) - 费率:`FEE_PERCENTAGE = 0.000563063063` (0.0563063063%) - 奖励范围:`MIN_BLOCK_REWARD = 1.0`, `MAX_BLOCK_REWARD = 50.0` - 奖励网络费用:`NETWORK_FEE = 0.0005` - 费用截断因子:`MINT_CLIP = 0.35` - 目标区块时间:`TARGET_BLOCK_TIME = 5` 秒 - 空区块从当前最大奖励的 20% 开始 - 非空区块奖励随有效费用缩放,并被限制在 `[MIN_BLOCK_REWARD, current_max]` 范围内 实际实现的发行量仍取决于真实的网络活动(区块生产 + 交易费用)。 ## 构建与运行 前置条件: - Rust stable 工具链 - Cargo - macOS/OSX:如果缺少本地编译器工具链,则需要 Xcode Command Line Tools (`xcode-select --install`) 构建: ``` cargo build --release ``` 运行: ``` cargo run --release ``` 直接运行构建好的二进制文件: ``` ./target/release/alphanumeric ``` 为了获得更干净的本地安装,请将二进制文件保留在一个专用文件夹中,并始终从该文件夹运行它,或者显式设置 `ALPHANUMERIC_DB_PATH`。 ## Bootstrap 与存储 启动 bootstrap 源 (默认): - `https://alphanumeric.blue/bootstrap/blockchain.db.zip` Bootstrap 信任模式: - 节点优先从 `https://alphanumeric.blue/api/bootstrap/manifest` 获取 manifest 进行 bootstrap。 - manifest 在使用前会进行签名验证。 - 如果 manifest 的获取/解析/验证失败,默认情况下启动将直接失败。 - 只有在显式设置 `ALPHANUMERIC_ALLOW_UNVERIFIED_BOOTSTRAP=true` 时,才允许使用静态的、未经验证的备用方案。 Launch-network 守卫: - 只有当区块 `0` 与冻结的创世区块/网络 ID 匹配时,才会重用 `blockchain.db`。 - 如果本地数据库属于不同的网络、创世区块错误或无法读取,启动时会从已签名的 bootstrap 替换它。 - 钱包密钥独立于链状态;保留 `private.key` 可保持钱包身份,但余额始终根据经过验证的 launch-chain 数据库计算。 - 即使本地数据库已经有效,`ALPHANUMERIC_FORCE_BOOTSTRAP=true` 也会强制从已签名的 bootstrap 进行替换。 默认存储行为: - `ALPHANUMERIC_DB_PATH` 控制链数据库路径。 - 如果没有设置 `ALPHANUMERIC_DB_PATH`,则默认相对路径为 `blockchain.db`。 - 相对路径在当前工作目录下解析,除非在可执行文件旁边找到了现有的 launch-network 数据库或过期的数据库并且需要重用/替换它们。 - 对于普通用户,建议使用专用文件夹,例如 `~/Alphanumeric`。 主要的本地产物: - `blockchain.db` - `private.key` - `node_identity.key` - 可选的锁文件 (`*.lock`) ## 通过环境变量进行配置 Runtime 使用的常见变量包括: - `ALPHANUMERIC_BIND_IP` - `ALPHANUMERIC_DB_PATH` - `ALPHANUMERIC_HEADLESS` (`true` 表示在没有交互式命令循环的情况下运行节点服务) - `ALPHANUMERIC_FORCE_BOOTSTRAP` - `ALPHANUMERIC_ALLOW_UNVERIFIED_BOOTSTRAP` - `ALPHANUMERIC_MAX_BOOTSTRAP_ZIP_BYTES` (未验证的备用下载限制;默认 `1073741824`;限制在 1 MiB - 10 GiB 之间) - `ALPHANUMERIC_MAX_UNVERIFIED_BOOTSTRAP_EXTRACT_BYTES` (未验证的备用解压限制;默认 10 GiB) - `ALPHANUMERIC_IGNORE_DB_LOCK` - `ALPHANUMERIC_STATS_ENABLED` - `ALPHANUMERIC_STATS_BIND` (默认为 `127.0.0.1`;仅当 stats API 需要公开时才设置 `0.0.0.0`) - `ALPHANUMERIC_STATS_PORT` - `ALPHANUMERIC_SEED_NODES` 或 `ALPHANUMERIC_BOOTSTRAP_PEERS` (逗号分隔的 `host:port`,在依赖网关回退之前会先尝试这些 peer) - `ALPHANUMERIC_DNS_SEEDS` - `ALPHANUMERIC_DISCOVERY_BASE` - `ALPHANUMERIC_DISCOVERY_BASES` - `ALPHANUMERIC_ALLOW_PRIVATE_PEERS` (默认关闭;仅用于本地/私有测试网络) - `ALPHANUMERIC_DISCOVERY_URL` - `ALPHANUMERIC_ANNOUNCE_URL` - `ALPHANUMERIC_HEADERS_URL` - `ALPHANUMERIC_ANNOUNCE_INTERVAL_SECS` (默认 `300`,最小值 `60`) - `ALPHANUMERIC_ENABLE_HEADER_SNAPSHOTS` (默认关闭;仅在受信任的发布者/validator 节点上启用) - `ALPHANUMERIC_HEADER_SNAPSHOT_INTERVAL_SECS` (默认 `300`,最小值 `60`) - `ALPHANUMERIC_ENABLE_STATS_SNAPSHOTS` (默认关闭;仅在受信任的发布者/validator 节点上启用) - `ALPHANUMERIC_STATS_SNAPSHOT_INTERVAL_SECS` (默认 `300`,最小值 `60`) - `ALPHANUMERIC_ENABLE_BLOCK_RELAY` (默认关闭;HTTP 区块中继发布是备用遥测方案,而非正常的区块同步) - `ALPHANUMERIC_ENABLE_BLOCK_RELAY_SYNC` (默认关闭;选择开启 HTTP 区块中继同步回退) - `ALPHANUMERIC_DISABLE_BLOCK_RELAY_SYNC` (强制完全禁用 HTTP 中继回退) - `ALPHANUMERIC_ENABLE_PERIODIC_BLOCK_RELAY_SYNC` (选择开启后台 HTTP 中继同步;默认关闭) - `ALPHANUMERIC_RELAY_SYNC_INTERVAL_SECS` (可选的定期中继同步间隔;`0` 表示禁用,最小值 `60`) - `ALPHANUMERIC_RELAY_SYNC_BACKFILL_DEPTH` (默认 `0`;可选的中继回填深度,最大值 `256`) - `ALPHANUMERIC_RELAY_SYNC_MAX_ROUNDS` (默认 `4`,最大值 `24`) - `ALPHANUMERIC_PUBLIC_IP` - `ALPHANUMERIC_ENABLE_UPNP` - `ALPHANUMERIC_PEER_CACHE_PATH` - `ALPHANUMERIC_TX_WITNESS_CACHE_SIZE` 只有当 blue 网关返回具有有效签名和 SHA256 的固定发布者 manifest 时,官方 bootstrap 快照才会被接受。新的 manifest 还带有已签名的压缩大小、解压大小和文件计数元数据,以便节点可以预检磁盘空间并验证解压过程,而不会施加固定的链大小上限。 Bootstrap 发布属于维护者基础设施,不属于正常的 macOS 节点设置的一部分。操作员级别的详细信息保留在 [docs/BOOTSTRAP_PUBLISHER.md](docs/BOOTSTRAP_PUBLISHER.md) 中。 ## CLI 界面 交互式命令循环示例: - `create ` - `whisper
` (根据流程可以提供金额) - `balance` - `new [wallet_name]` - `account
` - `history` - `rename ` - `mine ` - `info` - `diagnostics` 进程标志/网络命令: - `--status` 或 `-s` - `--sync` - `--sync --force` - `--connect ` - `--getpeers` - `--discover` ## 安全态势 本项目处理密钥材料和 peer 输入。请谨慎对待。 - `private.key` 属于敏感信息。请确保主机和文件系统权限的安全。 - 不要将密钥材料提交到源代码版本控制中。 - 将所有网络输入视为不受信任的。 - 在类似主网的使用之前,请验证操作假设。 ## 操作清单 可访问节点的最低推荐设置: 1. 在主机防火墙/路由器上开放 TCP 端口 `7177` 2. 在具有持久磁盘的稳定主机上运行节点 3. 监控日志和 peer 数量 4. 安全备份敏感的密钥材料 Windows 防火墙示例: ``` New-NetFirewallRule -Name "Alphanumeric Network" -DisplayName "Alphanumeric Network (Port 7177)" -Protocol TCP -LocalPort 7177 -Direction Inbound,Outbound -Action Allow ``` macOS/OSX 防火墙说明: - 如果 macOS 防火墙提示要求传入连接,如果此机器应接受 peer,请允许 `alphanumeric`。 - 如果 Gatekeeper 阻止了下载的 release 二进制文件,请在 Finder 中右键单击该二进制文件并选择“打开”,或者使用 `xattr -dr com.apple.quarantine ./alphanumeric` 移除隔离属性。 ## 开发工作流 快速本地检查: ``` cargo check ``` 更改协议/runtime 代码时,首选: - 显式的消息帧处理 - 受限的缓冲区和超时机制 - 清晰的锁作用域 - 确定性的错误处理 威胁模型与控制映射: - `docs/THREAT_MODEL.md` ## 前端 - 官方前端:https://www.alphanumeric.blue/ ## 社区 - Discord:https://discord.gg/D3r7TRcj9t ## 许可证 MIT
标签:P2P网络, Rust, 加密货币, 区块链, 可视化界面, 命令行钱包, 挖矿, 网络流量审计, 节点, 通知系统