为什么没有「洋葱服务钱包」:一次真实的隐藏服务实测(2026)
钱包是出站客户端,隐藏服务是入站端点。我们真的起了一个洋葱服务:首访 27.8 秒,之后 20 次 1.08–2.78 秒;并回到门罗源码里查清洋葱在自托管里该站在哪一层。
问「为什么没有洋葱服务钱包」,答案在连接的方向上。 隐藏服务存在的意义,是让别人能拨打一个你控制的地址。钱包从不接听:它扫链上数据、在本地签名、把交易广播给节点,然后等。这些动作全是出站。所以给钱包套一个洋葱地址,等于发布了一个没人需要的端点,而真正要紧的流量——钱包与节点之间那条会话——原封不动地留在原地。今天我们真的起了一个洋葱服务,就为了给这层「包装」标上价格。
这 56 个字符是公钥,不是域名。 一个 v3 洋葱地址解出来是 35 字节:32 字节 Ed25519 公钥、2 字节校验和、1 字节版本号 0x03。校验和是 SHA3-256(".onion checksum" || 公钥 || 0x03) 取前两字节。我们在 127.0.0.1:8099 起了一个服务,读回 2b6ff4u2...24qd.onion,再拿公钥把整串重算了一遍:35 字节、校验和 c39e、版本 3,逐位吻合。整个信任模型就这么多:没有 CA、没有 DNS、没有注册商、没有出口节点。你输入的地址如果确实是从那把公钥推出来的,你连上的就是持钥人;路径上任何人想换掉端点,都得改掉你看到的字符串。
这层包装的实测成本。 服务后面挂一个 26 字节的文件。全新客户端第一次取用时耗时 27.81 秒——描述符查找、引荐点、会合点建链全算在里面。之后 20 次:首字节最快 1.075 秒、中位 1.694 秒、均值 1.675 秒、最慢 2.776 秒。同一个文件走本机回环:中位 0.61 毫秒,慢了约 2,800 倍。708,251 字节的载荷端到端 6.88 秒,合 102,940 B/s。Tor 的 circuit-status 显示客户端侧 3 跳、服务侧 4 跳:一次请求穿过 7 个中继,而明网经出口只要 3 个。 (Tor 换币安全吗)
钱包恰恰是被包错了的那一半。 钱包对网络的需求很窄:读链上数据、拿到费率、广播一笔已签名的交易。三件事都是它主动发起的请求。把洋葱挂在 wallet-rpc 前面,等于发布一个能签名、能花钱的 RPC;默认唯一的门槛是启动时生成并打印的 128 位随机密码(除非你加 --disable-rpc-login)。而洋葱地址是「持有即可用」的能力凭证,不是访问控制:它出现在配置文件、截图或聊天记录里就够了。钱包这边则毫无收益,因为它本来就不需要接受连接。如果你曾在联网的机器上用种子恢复过钱包,你已经跑过这个设计的客户端那一半——里面并没有洋葱。
按门罗源码,洋葱该站在哪里。 monerod 有 --anonymous-inbound,示例写的是 "x.onion,127.0.0.1:18083,100";而且如果不同时给出 --tx-proxy(例如 tor,127.0.0.1:9050,100,disable_noise),它直接拒绝启动——因为节点必须能把自己的交易经由匿名网络转发出去。这才是合理的形状:节点是服务器,所以它拿一个入站洋葱地址;钱包仍是客户端,通过 SOCKS 代理去连节点。钱包 RPC 的代码从另一侧说了同一件事:一旦设置了 daemon 代理,.onion 或 .i2p 主机就算「强验证」,报错原文是「SSL or proxy is enabled but no strong verification was configured... or use a .onion or .i2p address」。
它挡住什么、挡不住什么。 它让「你的 IP」与「那个端点」彼此看不见,并把出口中继从路径上删掉——出口被封或有敌意时,这正是对的修法。它不隐藏金额、兑出地址、时间,也不隐藏「发生过一笔兑换」这件事;这些躺在订单里和链上,洋葱服务没法让池子的日志行变短。延迟是真的,而且有方向性:这里每次请求 1.1–2.8 秒,站点镜像整页 9.9–11.5 秒,首次接触几十秒。对 30 分钟入金窗口、120 秒报价有效期的兑换来说付得起;对每隔几秒轮询一次的东西就付不起。还要算上描述符卫生:一个出现在截图里的洋葱地址,就是该轮换的地址。
换到兑换站这一侧看是什么样。 本站的 .onion 镜像返回 69,252 字节,明网 69,402 字节,是同一个构建;冷电路上首字节 9.94 秒、总计 11.51 秒,而同一个 Tor 客户端访问明网页面是 1.98 秒。页面里带着同一段内联统计加载器,但它的第一行就是判断:主机名以 ".onion" 结尾就直接 return,脚本根本不创建,所以洋葱上那个标记从不初始化。其余部分是刻意一致的:同一张订单表、同一个 30 分钟入金窗口、同样一条「没有账号可登录,所以订单链接等于能力令牌」的链接。洋葱把出口节点从路上拿掉,但没有把站点从画面里拿掉。 (Tor 换币安全吗)
一句话版本。 没有洋葱服务钱包,因为钱包是这套栈里的客户端那一半,而隐藏服务是「服务器回答服务器的问题」。你真正要的是三件分开的事:一个从不监听的钱包、一个有需要时能以洋葱地址被连到的自建节点、一个把出口节点从路上拿掉的站点镜像。今天 18:16 UTC,站内 100 USDT-TRC20 报 0.14812497 XMR(675.11 USDT/XMR)、1,000 USDT 报 1.63675239 XMR(611.00)、0.05 BTC 报 6.42427381 XMR(128.48548 XMR/BTC)、1 XMR 报 578.713946 USDT;目录 431 个资产、63 条网络,其中 53 个稳定币。汇率几秒就动,页面上的实时报价才算数。 (XMR 换 USDT 退出路线)