Tor 히든서비스 지갑이 없는 이유 (2026 실측)
지갑은 밖으로 나가는 클라이언트이고 히든서비스는 안으로 들어오는 엔드포인트입니다. 실제 오니언 서비스를 띄워 첫 요청 27.8초, 이후 20회 1.08~2.78초를 측정하고, 모네로 소스에서 오니언이 있어야 할 자리를 확인했습니다.
'왜 오니언 서비스 지갑이 없는가'의 답은 연결의 방향에 있습니다. 히든서비스는 다른 사람이 당신이 통제하는 주소로 접속할 수 있게 하려고 존재합니다. 지갑은 전화를 받지 않습니다. 체인 데이터를 훑고, 로컬에서 서명하고, 거래를 노드로 브로드캐스트한 뒤 기다립니다. 전부 아웃바운드입니다. 지갑을 오니언 주소로 감싸는 일은 아무도 필요로 하지 않는 엔드포인트를 공개하는 것이고, 정작 중요한 트래픽 — 지갑과 노드의 세션 — 은 그대로 남습니다. 오늘 실제로 오니언 서비스를 세워 그 '포장'의 값을 숫자로 매겼습니다.
이 56자는 도메인이 아니라 공개키입니다. v3 오니언 주소는 35바이트로 풀립니다. 32바이트 Ed25519 공개키, 2바이트 체크섬, 1바이트 버전 0x03입니다. 체크섬은 SHA3-256(".onion checksum" || 공개키 || 0x03)의 앞 2바이트입니다. 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"입니다. 그리고 tor,127.0.0.1:9050,100,disable_noise 같은 --tx-proxy를 함께 주지 않으면 시작을 거부합니다. 노드가 자기 거래를 익명 네트워크로 중계할 수 있어야 하기 때문입니다. 맞는 형태는 이렇습니다. 노드는 서버이므로 인바운드 오니언 주소를 갖고, 지갑은 클라이언트로 남아 SOCKS 프록시를 통해 노드에 닿습니다. 지갑 RPC 코드도 반대편에서 같은 말을 합니다. 데몬 프록시를 설정하면 .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분, 견적 TTL 120초인 스왑에는 감당할 만하지만 몇 초마다 폴링하는 용도에는 아닙니다. 디스크립터 위생도 예산에 넣으십시오. 스크린샷에 찍힌 오니언 주소는 교체해야 할 주소입니다.
스왑 사이트 쪽에서는 어떻게 보이는가. 이 사이트의 .onion 미러는 69,252바이트를 반환했고 클리어넷은 69,402바이트로 같은 빌드입니다. 콜드 회로에서 TTFB 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 출구 루트)