VeilSwap
← 全部文章
指南2026-10-279 分钟阅读

远程节点 vs 本地节点:钱包到底泄露了什么(2026 实测)

我们实测了两台公共门罗节点:8 个方法作答、9 个返回 -32601,272 KB 的区块只吐出 1,401 字节。节点能看到什么、看不到什么,以及决定这件事的 Dandelion++ 常量。

两个问题经常被合成一个,错误建议就是这么来的。第一个:钱包连的那台服务器能看到你在做什么吗?第二个:区块链是否记录了你是谁?2026-10-27 18:00 UTC,我们把第一个问题直接量了一遍。两台公共门罗节点 node.monerodevs.org:18089 与 xmr-node.cakewallet.com:18081 报出同一个 tip 哈希 c0268f79、同一个高度 3,793,455,对 8 个只读方法作答,对另外 9 个返回 JSON-RPC -32601 Method not found。这一条结果,比任何隐私口号都更能说明远程节点的性质。

每一次 RPC 调用,都是别人磁盘上的一行日志:你的 IP、方法名、参数、时间戳。实测放行的是 get_info、get_version、get_block_count、get_block、get_last_block_header、get_block_headers_range、get_fee_estimate、get_output_histogram;被拒的是 get_peer_list、get_connections、get_net_stats、get_transaction_pool、get_transaction_pool_hashes、get_transactions、get_outs、get_coinbase_tx_sum、send_raw_transaction。受限模式不只藏方法,还会把字段抹成零,这本身是个好用的破绽:get_info 返回 restricted true、进出连接数都是 0、alt_blocks 0、start_time 0、free_space 18,446,744,073,709,551,615(就是 2^64-1 这个无符号上限)、version 是空串。源码里就是逐字段写 restricted ? 0 : 值。 (门罗费用机制)

钱包从不向节点要「你的余额」。它要区块,下载回来,在你自己机器上用 view key 解密。所以节点选择和密钥保管是两件事。这也解释了为什么只给区块头的公共端点根本不够同步:高度 3,793,455 的块头写着 272,341 字节、38 笔交易,而 get_block 真正吐出的 blob 只有 1,401 字节,0.51%,只剩块头和那笔矿工交易。一次 1,000 个块头的范围请求倒是返回 891,929 字节的 JSON。主网完整数据库 295,279,001,600 字节,275.0 GiB。没有人靠这种被剥过的端点同步完。

诚实的边界是这样的。远程节点能拿到你的 IP、大致在线时间、请求过哪些区块高度;如果它接受广播,还能拿到你交易的 txid 和提交它的那个 IP。它拿不到地址、余额、输出:它没有 view key,链上金额本来就是隐藏的。它真正得到的是关联能力。同一个 IP 反复要新区块,那是一个钱包;同一个 IP 在 18:0x 提交一笔交易,那个人多半就是造出这笔交易的人。

自建节点把第三方从这条路径上拿掉:交易由你自己的守护进程中继,而门罗给中继外面包了一层 Dandelion++。常量是字面的:CRYPTONOTE_DANDELIONPP_STEMS 等于 2,即每个 epoch 2 条 stem 出站连接;epoch 长 10 分钟、上下浮动 30 秒;embargo 平均 39 秒;fluff 概率是 100 分之 20——levin_notify.cpp 里就是取一个小于 100 的随机索引和这个常量比,所以五个 epoch 里有一个直接广播、不走 stem。默认节点保持 12 条出站连接加 2 条 anchor 连接。

这些都不改链上记录。你的输入、兑换站给的入金地址、金额、时间,无论哪个节点中继,都还是连在一起。网络层同样没变:ISP 照样看得到你与门罗 P2P 网络之间那条长连接,对流量做分析和对 RPC 日志做分析是两张不同的桌面。实际效果是,自建节点把「IP 与交易」的关联,从一个你不认识的节点运营商,转给你的 ISP 和最先看到交易的几个对等点——听众变少,但不是没人。如果在意的是网络层,工具是 --proxy socks5://127.0.0.1:9050,而 --proxy-allow-dns-leaks 的默认值就是 false。

值得看一眼更差的版本长什么样。我们用一条未认证的 TLS 连接连到比特币的 electrum.blockstream.info:50002,它自报 electrs-esplora 0.4.1、协议 1.4——没有密钥、没有账户、没有握手。随后我们只问了一个地址对应的 scripthash,服务器返回 67,156 条历史、5,769,022,283 聪的已确认余额(另有 3,672 未确认),还挂上了一条实时推送订阅。比特币轻钱包必须逐个 scripthash 告诉服务器「这些地址是我的」。门罗的远程节点窄得多:区块、高度、费率、广播。同样叫轻客户端,交出去的信息量根本不是一个级别。

把钱包指向别人的节点之前,做六个检查。一,看 get_info 里的 restricted,true 就是人家的公共端点。二,把 Method not found 当信号而不是 bug,公共端点就是靠这个藏掉改状态和按哈希查询的方法。三,永远不要用一个你不信任的公共节点去查自己的交易哈希,那是唯一能把 IP 和 txid 钉在一起的动作。四,如果通过远程节点广播,就按「运营方留了 first-seen 时间戳」来假设。五,守护进程走 Tor 用 --proxy,并让 --proxy-allow-dns-leaks 保持 false。六,自己跑节点时,除非真想服务陌生人,否则别开 --public-node——那个开关的用途就是对外提供受限、只读的 RPC。 (Tor 换币安全吗)

放到真实兑换上,真正相关的是这个:订单从不问你用哪个节点,也不连你的钱包。VeilSwap 只要兑出资产、兑入资产、金额、收款地址和退款地址,入金地址按单生成。所以选哪个节点改变的是你的 IP 对基础设施暴露了什么,不是订单泄露了什么。剩下都是算术,2026-10-27 18:0x UTC 的站内报价:100、500、1,000、5,000 USDT-TRC20 分别换到 0.14632886、0.80265134、1.62303474、8.18504305 XMR,折合每 XMR 683.39、622.94、616.13、610.87 美元,小额单多背约 11% 的固定开销。1 XMR 卖 581.884075 USDT;0.05 BTC 换到 6.60798844 XMR(132.15977 XMR/BTC,隐含 BTC 约 79,699 美元),同期现货 XMR 599.33、BTC 80,546。实时报价会动,以页面为准。同一窗口内,1,534 字节的交易按每字节 20,000 piconero 的底价算 0.00003068 XMR,约两美分。 (转错网络如何找回)

一句话版本:远程节点是带时间戳的观察者,不是钥匙持有者——它能把 IP 与活动、与一次提交关联起来,读不到金额、地址和余额。自建节点把这个观察者从广播路径上换掉,把同样的关联交给 ISP,Dandelion++ 在五个 epoch 里帮你藏四个。两种选择都不碰链上记录。按「它泄露什么」选节点,按「它存什么」选链,动手之前先看 restricted。

常见问题

远程门罗节点能看到我的余额或地址吗?

不能。它能看到你的 IP、你请求的区块高度,以及经它广播的交易的 txid;但输出是用你的 view key 在本地解密的,链上金额本身也是隐藏的。它手里没有任何能读出余额的密钥。

自建节点能让 XMR 兑换变匿名吗?

不能。它只是把第三方节点从广播路径上拿掉,你的输入与入金地址之间的链上关联依然在;而且 Dandelion++ 五个 epoch 里有一个直接广播,约 20% 的交易没有 stem 保护,ISP 也照样看得到那条长连接。

为什么公共节点上的 get_transactions 会失败?

因为公共端点只暴露只读子集。我们测的两台上,get_transactions、get_outs、send_raw_transaction 都返回 JSON-RPC -32601 Method not found;高度 3,793,455 的 get_block 只返回 1,401 字节,而那个块有 272,341 字节。够读区块头,不够同步钱包。

继续阅读

全部文章 →

准备好换币了吗?

无账户 · 无 KYC · 无邮箱

立即兑换
远程节点 vs 本地节点:钱包到底泄露了什么(2026 实测) — VeilSwap