Monero 裁剪节点搭建指南:2026 年节省 60GB 空间
Monero 裁剪节点搭建指南:2026 年节省 60GB 磁盘空间
截至 2026 年 5 月,Monero 区块链在磁盘上的体积已经膨胀到大约 215 GB。这个数字在 2025 年 11 月的硬分叉将 FCMP++(完整链成员证明)推入生产之后陡然上升,并且在随后几周里,链上日交易笔数连续突破了 6 万笔的关口。对于一台只有 256 GB SSD 的笔记本、一台配了入门级 NVMe 扩展板的 Raspberry Pi 5、或者一台按流量计费的 VPS 来说,完整归档同步早已不是可以随手开启的轻量项目。裁剪节点(pruned node)以一种相当优雅的方式解决了这个困境:它丢弃了大约三分之二的历史环签名数据,但保留了每一个区块头、每一笔交易输出、以及你在本地完整且无需信任地验证整条链的能力。最终的结果是一个完全主权的 Monero 守护进程,只占用大约 85 至 95 GB 而不是 215 GB,仍然能够通过 RPC 为钱包提供服务,仍然参与 P2P 网络中的区块传播,仍然通过 Dandelion++ 广播你自己的交易,而不会把任何元数据泄漏给某个陌生人运营的远程节点。本文将一步一步地讲解如何在 Linux、Windows、macOS 以及无显示器的 Raspberry Pi 上部署一个裁剪节点,包括能在重启后自动恢复的 systemd 单元文件、保护 RPC 端口的防火墙规则,以及当数据库不可避免地损坏时如何重新同步。无论你是在使用 MoneroSwapper 进行无 KYC 兑换之后才搜到这篇文章,还是正在搭建自己人生中第一个独立的 Monero 节点,目的地都是同一个:更少的磁盘占用,且不损失任何隐私。
为什么要跑裁剪节点,而不是直接连远程节点
尤其是在硬件资源紧张的设备上,跳过运行节点这一步、直接把钱包指向某个社区节点(例如 node.moneroworld.com,或者 Monero 论坛上列出的某个 .onion 端点)的想法非常诱人。从技术上讲,这种方案确实能跑起来。但它同时也把一份精确的访问日志交给了那个节点的运营者:你的钱包扫描了哪些区块、你什么时候上线、以及——结合流量关联分析——哪些输出大致归属于你。远程节点确实看不到你的查看私钥(view key)或花费私钥(spend key),但它们完全有能力为你构建一个行为指纹。2024 和 2025 年发表的好几篇学术论文都演示了针对仅依赖第三方基础设施的钱包的实用去匿名化攻击。
裁剪节点恰好填补了这个隐私缺口,而你又不必去额外腾出一块 TB 级硬盘。从钱包的角度看,裁剪节点提供的隐私保障与完整归档节点完全一致,因为裁剪逻辑只丢弃冗余的环签名数据——绝不丢弃任何一笔交易输出、任何一个 key image、任何一个区块头。你的钱包在本地保存的数据上扫描整条链,你的交易通过你自己的对等连接进入内存池,而你的 RPC 流量从未离开过 localhost。
- 没有任何远程运营者能看到你的钱包活动:每一次刷新、每一次输出扫描、每一次手续费估算都发生在你自己的机器上。
- 你仍然在为网络作贡献:一个裁剪节点会向其他对等节点提供大约 1/8 的历史区块数据。这意味着整个网络并不需要每个节点都是归档节点,大家分担即可。
- 硬件门槛相当友好:4 GB 内存、一颗现代的四核 ARM 或 x86 处理器、再加上 120 GB 的 SSD 可用空间——以保守的链增长速度估算,这套配置至少能跑到 2027 年。
- 恢复流程简单:万一数据库损坏,在家用千兆光纤上从零重新同步大约需要 6 到 12 小时;而完整归档节点需要 18 到 30 小时。
裁剪节点 vs 完整节点:实际差异在哪里
Monero 的裁剪算法最早在 v0.15 引入,到 2025 年的 v0.18.4 系列又经过了反复打磨。它把整条链切成 8 个"裁剪条带"(pruning stripes),每个条带覆盖 4096 个区块。一个裁剪节点会保留其中正好一个条带的完整数据(在节点首次初始化时按对等节点伪随机选择),再加上链尾最近的 5500 个区块的完整数据;对于其他所有区块,它只保留区块头、key image、输出金额以及矿工数据。环签名数据——也就是占用磁盘空间最多的那一部分——会从节点不负责的那七个条带中被丢弃。
因为每个节点托管的是不同的条带,所以整个网络作为一个整体仍然保留着完整的历史区块链,即便每一个节点都启用了裁剪也是如此。当一个新钱包做初始同步、需要某个老区块的环签名数据时,它会从恰好托管那个条带的某个裁剪对等节点上下载,这一切对用户透明,无需手动干预。从验证的角度来看,裁剪并没有牺牲任何东西:每个裁剪节点在首次同步时都会完整验证整条链,并且在之后每一个新区块到达时持续做完整验证。
| 能力 | 完整节点 | 裁剪节点 | 远程节点 |
|---|---|---|---|
| 磁盘占用(2026 年 5 月) | 约 215 GB | 约 90 GB | 本地 0 GB |
| 钱包扫描隐私 | 完整 | 完整 | 运营者可见 |
| 提供历史区块 | 所有条带 | 8 条带中的 1 条 | 不适用 |
| 初次同步时间(千兆带宽) | 18–30 小时 | 6–12 小时 | 瞬时(无需同步) |
| 最低内存 | 4 GB | 4 GB | — |
| 是否验证链 | 是 | 是 | 信任运营者 |
裁剪节点唯一真正有意义的妥协,是它不能作为区块浏览器或学术链上分析工具的数据源——这类用途需要完整的历史环签名。但如果你的规划里没有这两件事——而对于绝大多数自建用户来说确实没有——那么在资源受限的机器上,裁剪节点是严格优于归档节点的选择。
2026 年的硬件和系统要求
自从 FCMP++ 在主网激活以来,跑一个稳定的 Monero 裁剪节点所需的硬件底线略微抬高了一些,主要是因为新区块中的成员证明验证比分叉前的 CLSAG 验证大约多消耗 18% 的 CPU 时间。好消息是:任何大约 2021 年之后出厂的设备都能轻松扛过;坏消息是:更老的单板机——例如 2 GB 内存的初代 Raspberry Pi 4、基于低功耗 Atom 的迷你 PC——在交易高峰期会很难跟上链尾。
推荐基础配置
- CPU: 四核 ARM Cortex-A76(Raspberry Pi 5)、或任意带 AES-NI 指令集的现代 x86-64。请彻底避开 32 位主机;LMDB 在 32 位下性能严重劣化,而且若干钱包 RPC 调用也会出问题。
- 内存: 最低 4 GB,8 GB 较为宽裕。LMDB 的内存映射喜欢更多余量;若内存吃紧,monerod 仍然能跑,但区块验证速度会明显变慢。
- 存储: SSD 或 NVMe 上至少 120 GB 可用空间。机械硬盘理论上可行,但会让一次 6 小时的同步变成 36 小时的折磨——LMDB 的随机访问模式对盘片极不友好。
- 网络: 25 Mbps 对称带宽足够稳态运行。初次同步会把你拥有的带宽吃满;为裁剪引导同步预留 90–110 GB 的下行流量。
- 操作系统: Ubuntu 24.04 LTS、Debian 12、Fedora 41、macOS 14+、或 Windows 11。NixOS 用户有现成维护中的服务模块,Arch 用户可以通过 AUR 中的 monero-bin 包安装。
如果你打算把节点部署在 Raspberry Pi 5 上,建议搭配 Pimoroni 出品的官方 NVMe Base 或同等的 M.2 扩展板;SD 卡槽用来装操作系统勉强可以,但绝对不能用来存放区块链数据。SD 卡在这种写入模式下几个月内就会损坏,而且其 I/O 延迟会让守护进程看起来永远落后于链尾,哪怕实际上它已经同步完成。
Linux 上的分步搭建
本文以 Linux 作为参考路径,理由有三:它最易复现、它是最常见的生产环境、它最容易长期无人值守地保持运行。文末会附上 macOS 和 Windows 的相应调整。
- 新建一个专用用户和目录。以 root 身份执行
useradd -r -s /bin/false monero,然后mkdir -p /var/lib/monero/blockchain /var/log/monero,再chown -R monero:monero /var/lib/monero /var/log/monero。让 monerod 在一个独立的服务账号下运行(而不是你的登录账号)是最划算的一条加固措施——零成本,但收益巨大。 - 下载官方二进制包。访问 getmonero.org/downloads,下载 Linux 64 位的 tarball——撰文时的最新版本是 v0.18.4.2。关键一步:同时下载配套的 hashes.txt 文件,先用
shasum -a 256 monero-linux-x64-v0.18.4.2.tar.bz2验证 SHA256,再用gpg --verify hashes.txt配合 binaryFate 的 PGP 公钥确认签名。跳过校验是恶意软件进入你机器最常见的入口。 - 解压并安装。用
tar xjf monero-linux-x64-v0.18.4.2.tar.bz2解压,然后用install -m 755 monero-x86_64-linux-gnu-v0.18.4.2/monero* /usr/local/bin/把二进制文件放到 PATH 上。这样 monerod、monero-wallet-cli、以及 monero-wallet-rpc 就都可以直接调用了。 - 写配置文件。创建
/etc/monero/monerod.conf,至少包含以下内容:data-dir=/var/lib/monero/blockchain、log-file=/var/log/monero/monerod.log、log-level=0、prune-blockchain=1、sync-pruned-blocks=1、rpc-bind-ip=127.0.0.1、rpc-bind-port=18081、p2p-bind-port=18080、out-peers=32、in-peers=64、limit-rate-up=1048576、no-igd=1、enable-dns-blocklist=1。其中sync-pruned-blocks=1这一项至关重要:如果没有这一行,monerod 会先下载完整链再本地裁剪,同时浪费带宽和时间。 - 创建 systemd 服务单元。把以下内容写入
/etc/systemd/system/monerod.service:一个[Unit]段,内含Description=Monero Full Node (pruned)和After=network-online.target;一个[Service]段,内含User=monero、Group=monero、Type=simple、ExecStart=/usr/local/bin/monerod --config-file=/etc/monero/monerod.conf --non-interactive、Restart=on-failure、RestartSec=30、MemoryHigh=3G、MemoryMax=5G;以及一个[Install]段,内含WantedBy=multi-user.target。 - 启用并启动服务。执行
systemctl daemon-reload,然后systemctl enable --now monerod。可以用journalctl -u monerod -f跟踪进度,也可以直接 tail 日志文件。在家用千兆光纤上,从零开始的裁剪节点首次同步通常在 6–10 小时内完成;若是 Raspberry Pi 5 配 NVMe,则预计需要 14–20 小时,因为瓶颈是验证而不是下载。 - 开 P2P 端口,不要开 RPC 端口。如果你希望接受入站对等连接(这对网络有帮助,也能改善自己节点的对等多样性),请在路由器或防火墙上开放 TCP 18080 端口。永远不要把 18081 暴露到公网——那是你钱包的 RPC 端点,必须保持监听在 localhost 上。如果确实需要远程访问钱包,请通过 SSH 隧道或 Tor 转发,绝不要用裸的端口映射。
- 把钱包指向本地守护进程。在官方 GUI 钱包中选择"连接到本地节点",填写 127.0.0.1:18081。如果用 CLI 钱包,给 monero-wallet-cli 加上
--daemon-address=127.0.0.1:18081参数。Feather Wallet 在"设置 → 节点"中提供了本地节点开关;桌面版 Cake Wallet 在"设置 → 隐私 → 自定义节点"中也支持。
永远不要在公网接口上以 --restricted-rpc=0 启动 monerod。一个不受限的 RPC 端点一旦被 Shodan 这类引擎索引,48 小时之内就会被矿池抓取器、钱包扫描机器人以及更糟糕的东西轮番敲打。把 RPC 默认绑定在 localhost,是有充分理由的。
其他平台的适配
Raspberry Pi 5 配 NVMe
上面的配置在 Pi 5 上几乎无需改动。值得做的两个小调整:在 monerod.conf 里加上 db-sync-mode=fast:async:250000000,以降低 NVMe 的写放大(默认值更安全但更慢);如果你的家用宽带在持续上行时会触发限速,可以把 out-peers 降到 16、in-peers 降到 32。Pi 5 上的四核 Cortex-A76 验证区块的速度大约是现代桌面机的 0.6 倍,因此初次同步会慢一些,但稳态下跟踪链尾完全没有问题。
macOS
用 Homebrew 安装:brew install monero。在 Apple Silicon 机器上,monerod 会被放到 /opt/homebrew/bin/monerod。不再使用 systemd,而是通过 ~/Library/LaunchAgents/io.getmonero.monerod.plist 中的 launchd plist 来托管。同一份配置文件内容依然适用——只需把 data-dir 改到你主目录下的某个位置,例如 ~/Library/Application Support/monero。首次启动时 macOS 防火墙会弹出提示;如果你想对外提供 P2P 服务,就允许 P2P 端口的入站连接。
Windows 11
从 getmonero.org 下载 Windows 64 位安装包,运行它,让它把数据目录建在 C:\ProgramData\bitmonero 下。如果你想把 monerod 作为后台服务运行而不是前台进程,可以使用 NSSM(Non-Sucking Service Manager),并指向 monerod.exe,附加同样的 --config-file 参数。Windows Defender 偶尔会把 monerod 误报为"挖矿程序"——它并不挖矿,但 Defender 的启发式判断有时就是这么笨;为二进制目录添加排除项即可。
维护、监控与故障恢复
一个配置得当的裁剪节点几乎可以做到设了就忘,但有三个运维习惯能避免 90% 的麻烦。
第一,每月检查一次磁盘空间。按目前的交易量,裁剪后的链每月增长大约 4–6 GB;一次出乎意料的磁盘写满,可能以非常难看的方式损坏 LMDB。配一个简单的 monit 或 systemd 定时器,当 /var/lib/monero 剩余空间低于 15 GB 时报警即可。
第二,保持 monerod 处于最新版本。网络升级(硬分叉)大约每 6–9 个月发生一次。运行旧协议版本的节点,会在分叉激活的那一刻起停止接受新区块。Monero 的发布计划会在 GitHub releases 页面公布,并在 r/Monero 和官方邮件列表上提前 4–6 周公告。建议至少在分叉高度前两周完成升级,留出余量。
第三,熟悉如何重新同步。如果某天 LMDB 抛出 "MDB_CORRUPTED",或者断电后守护进程死活拒绝启动,恢复流程虽然粗暴但十分可靠:停止服务,删除 /var/lib/monero/blockchain 目录下的所有内容,然后重新启动。节点会在 6–12 小时内从零重新同步。LMDB 没有增量修复工具,因此干净地重新同步就是标准答案——这个方案从 2017 年起就一直管用。
举一个真实的例子:MoneroSwapper 后端的一位贡献者在三个国家的机房里运行着 7 个裁剪节点的小型集群,用来为我们的匿名兑换服务提供多元化的守护进程入口。每个节点的部署都完全相同——Debian 12、上面那个 systemd 单元、NVMe 存储、P2P 端口通过 Tor 隐藏服务暴露。在集群累计 38 个月的在线时间里,只发生过三次需要人工介入的情况:三次因机房计划外断电导致的重新同步,以及标准的分叉日二进制升级。这就是一个被认真加固过的部署,应当表现出的稳态。
常见问题
能不能把已有的完整节点直接转换成裁剪节点,而不重新同步?
可以。停止 monerod,以一次性命令(不要作为服务)的方式运行 monerod --prune-blockchain,然后耐心等待。这个裁剪操作根据磁盘速度需要 30–90 分钟,会在原地重写数据库。完成之后,用裁剪配置重启服务即可。整个过程没有数据丢失,也无需重新同步。但出于谨慎,操作前请先备份钱包密钥——区块链本身不必备份,它可以从任何对等节点重新获取。
裁剪节点能用来挖矿、或者跑商家收款网关吗?
对于独立挖矿和矿池挖矿,可以——矿工只需要链尾的数据,不需要历史环签名。P2Pool 也能在裁剪节点上运行,实际上自 2023 年起,P2Pool 配裁剪节点已经成为自主主权风格的独立挖矿的推荐组合。对于通过 monero-wallet-rpc 处理入账的商家网关而言,裁剪节点同样完全够用。真正需要归档节点的角色只有两类:区块浏览器,以及学术链上分析工具。
裁剪节点会损害我自己钱包的隐私吗?
不会。钱包扫描使用的是输出索引和 key image 数据库——这两者在裁剪节点上都是完整保留的。被丢弃的数据(历史环签名)并不参与你钱包基于 view key 的扫描,也不参与钱包在构造新交易时所做的诱饵选择。从钱包的视角看,本地的裁剪守护进程与归档守护进程毫无差别;而无论那个远程节点的运营者自称多么值得信任,本地节点都比任何远程节点的隐私性高得多。
FCMP++ 已经上线,裁剪是如何与它配合的?
2025 年 11 月的硬分叉在原有的环签名方案之外,引入了完整链成员证明(Full-Chain Membership Proofs)。裁剪逻辑对二者一视同仁:它保留所有用于验证链所需的证明和 key image,只丢弃那些较老的交易中仍然携带的、冗余的环签名字节负载。FCMP++ 之后的交易比旧的 CLSAG 交易略小一些,所以在较新的区块上,裁剪压缩比反而比历史区块上更有利一些。
能不能让整个裁剪节点完全通过 Tor 运行?
可以,而且这是希望同时获得磁盘效率与网络层隐私的用户们常见的部署方式。在 monerod.conf 中加上 tx-proxy=tor,127.0.0.1:9050,32 和 anonymous-inbound=YOURONIONADDRESS.onion,127.0.0.1:18083,16,同时在 /etc/tor/torrc 中配置好对应的隐藏服务。通过 Tor 进行初次同步会慢一些——大约需要 24–48 小时,而不是 6–12 小时——但稳态运行不受影响,而且你额外获得了一项重要属性:你的交易和钱包扫描流量永远不会经过明网。
在境内网络环境下,有什么额外需要注意的吗?
如果你身处对外连接受限的网络环境中,直接连接公网上的 Monero 对等节点可能不稳定。建议以 Tor 出站为基础(即上面的 tx-proxy=tor 配置),再加上若干个稳定的入门节点 add-priority-node。同步过程中流量特征以加密的对等协议为主,体积比 BTC 同步小得多。需要特别强调的是:运行节点不等于参与交易,把节点视为本地隐私基础设施,与是否在境内合规使用相关服务是两回事——使用任何服务前请自行评估当地法律法规。
需要备份哪些东西?备份频率应该是多久一次?
规则非常简单:只备份钱包密钥,绝不备份区块链数据。区块链可以从任何对等节点重新获取——它本质上是公共数据。真正不可替代的是你的钱包种子词、view key、以及如果有的话 .keys 文件。建议把 25 字的助记词以离线方式抄写两份,分别保存在两个物理上分离的地方,例如一份放在防火盒里、一份放在异地。对于价值较高的余额,可以再用 Polyseed 兼容的金属板做一份冷备份。monerod 自身没有"钱包密钥"——它只持有公共的区块数据——所以节点机器损坏,只需要换台机器、跟着本指南重新搭一遍即可,几小时之内即可恢复服务,完全无需任何"节点备份"。
能否监控节点的健康状态,例如延迟、对等数、链尾高度?
可以,而且强烈建议这样做。最轻量的做法是定期调用本地 RPC 端点:curl -s http://127.0.0.1:18081/get_info | jq 会返回当前高度、目标高度、连入和连出对等数、以及守护进程版本等关键字段。把这条命令塞进一个 5 分钟一次的 cron 任务,再把结果推送给 Prometheus 的 node_exporter 或者一个简单的 Telegram 机器人,就能在节点落后链尾、或者对等数掉到 0 的时候第一时间收到提醒。对于更追求可视化的运维人员,Grafana 上有现成的 Monero 节点面板模板,只需要把 RPC 端点指过去即可。
结语
把节点跑起来这件事,看上去技术,实际上是一种姿态:你不再把"我有没有真正完成一笔 Monero 交易"这个问题的答案,交给某个陌生人运营的 RPC 端点。一个裁剪后的 Monero 节点能够以归档节点大约 40% 的磁盘体积,提供完全等同的隐私和验证保证。这正好是"我笔记本根本装不下"与"它能舒舒服服地和其他东西共存"之间的差距。整个搭建过程在任何一台现代机器上都是一晚的小项目,日常维护的成本大约每六个月一个小时;最终得到的是一座属于你自己的、可以承载你未来每一笔 Monero 收付的、自主主权式的基础设施。把本地裁剪节点和像 MoneroSwapper 这样的无 KYC 兑换服务组合起来,你就拥有了一个完整的栈:协议层通过 RingCT 与 FCMP++ 提供隐私,网络层通过你自己的守护进程提供隐私,入金层通过永远不索取身份信息的定额原子兑换提供隐私。节省下来的磁盘空间不过是顺带的收获;真正的胜利是运行上的独立。每一次你从本地节点广播一笔交易,都是在不依赖任何中介的前提下,亲自完成了从签名到打包到 P2P 扩散的整个流程——这种掌控感,正是 Monero 设计哲学最早想要交付给用户的东西。从今天起,你就是这张网络的一份子,而不仅仅是它的消费者。
🌍 阅读其他语言