엔드투엔드 SOP: 하드웨어 지갑 + Tor + 무KYC 스왑
6단계 전 과정 실측: Tor 출구 4개 모두 200·챌린지 없음, 입금 창 601초, 100 USDT는 현물보다 13.9% 비싸고 1,000은 2.7%입니다.
이 SOP가 다루는 범위
프라이버시 스왑에서 어려운 것은 '교환'이 아닙니다. 당신이 누구이고 무엇을 옮기는지를 동시에 알 수 있는 네 지점 — 입력하는 브라우저, 요청을 나르는 회선, 서명하는 지갑, 붙여넣는 주소 — 입니다. 아래는 2026년 10월 29일 18:00 UTC에 veilswap.io에서 실측한 순서와 비용입니다. 전 지구적 공격자에 맞선 익명화도, 자금 세탁도 아닙니다.
1단계: 받을 주소를 먼저 오프라인에서 만든다
기기 화면에서 주소를 확인하기 전에는 웹에 아무것도 입력하지 않습니다. BTC는 42자 bech32, XMR은 기본·하위 주소 95자, 통합 주소 106자이며 사이트는 세 가지를 모두 받습니다. 받는 쪽이 모네로 하드웨어 지갑이라면 노드 동기화에 한 시간을 더 잡으십시오. Ledger의 Monero 앱은 공용 노드가 아니라 로컬 monerod에 붙고, 10월 27일 실측한 전체 DB는 295,279,001,600바이트(275.0 GiB)였습니다. (모네로 확인 대기)
환불 주소는 별도 필드이고 지불하는 쪽과 같은 자산 계열이어야 합니다. 일부러 망가뜨린 TRON 문자열로 100 USDT-TRC20 주문을 Tor로 보내자 API가 400 "invalid_refund_address: not a TRON address (expect T followed by 33 base58 characters)"를 돌려주고 주문은 생성되지 않았습니다. 10월 25일부터 이 필드는 필수이며 빠지면 "missing_refund_address"입니다. (Tor 스왑은 안전한가?)
2단계: Tor에 5~10배 지연을 지불할 가치가 있는가 (Tor 스왑은 안전한가?)
18:02~18:03 UTC에 서로 다른 네 출구(23.128.248.168, 5.255.102.26, 171.25.193.234, 204.8.96.166)로 측정했습니다. /exchange는 모두 HTTP 200, 43,014바이트, 챌린지 흔적(Just a moment / challenge-platform / cf-chl) 0건이었고 /api/quote도 네 출구 모두 정상 응답했습니다. 대가는 시간입니다. 페이지 TTFB가 1.77~3.43초(직결 0.26~0.58초), 견적 API가 1.79~2.09초(직결 0.21~0.65초)였습니다.
두 가지 주의가 있습니다. 첫째, 이건 스냅숏입니다. Cloudflare 판정은 사이트와 출구마다 달라 오늘 통하는 출구가 내일 챌린지를 받을 수 있습니다. CAPTCHA가 뜨면 풀지 말고 회선을 바꾸십시오. 둘째, DNS가 전형적 누출 지점입니다. 호스트명을 로컬 DNS에 넘기는 클라이언트는 어느 거래소를 쓰는지 리졸버에 먼저 알려 줍니다. SOCKS에서 원격 해석을 시켜야 합니다(curl --socks5-hostname, 브라우저 프록시의 원격 DNS).
3단계: 누르기 전에 금액을 정한다
견적은 선형이 아닙니다. 주문마다 고정 차감이 있습니다. 18:05 UTC 기준 100 USDT-TRC20은 0.14516454 XMR, 500은 0.79722513, 1,000은 1.61121828, 5,000은 8.12867363이었습니다. XMR당 688.9 / 627.2 / 620.6 / 615.1달러로, 현물 604.55달러와의 격차가 100에서 13.9%, 1,000에서 2.7%, 5,000에서 1.75%입니다. 이 코리도어의 하한은 19.83547 USDT, 상한은 176,589.173232였습니다. 500 미만은 시장이 아니라 카운터에 돈을 내는 셈입니다. (XMR→USDT 출구 루트)
4단계: 주문 생성 — 다섯 필드, 601초 창
주문 POST는 fromAsset, toAsset, fromAmount, toAddress, refundAddress만 보냅니다. 계정도 이메일도 서명도 없습니다. 18:04:50 UTC에 Tor로 만든 주문은 id 2670192f-4119-4c46-8588-eb54d7b7f38b, 입금 주소 TB8Ev6gKFGkPCsAS1Rcavo5DcFZseSkMbH, validUntil 18:14:51 — 창은 601초였습니다. 견적 자체의 유효 시간은 120초이므로 금액은 주문 페이지에서 읽어야 합니다. (Tor 스왑은 안전한가?)
놓치기 쉬운 점: 주문 URL 자체가 자격 증명입니다. /api/order/<id>는 id를 가진 누구에게나 depositAddress, status, toAmount, validUntil을 돌려주며 쿠키도 로그인도 요구하지 않습니다. 틀린 id는 {"error":"not found"}지만 페이지 URL은 여전히 HTTP 200 빈 껍데기입니다. 이 링크는 비밀번호처럼 다루십시오. 프라이빗 창으로 열고, 북마크도 채팅 스크린숏도 남기지 마십시오.
5단계: 하드웨어 지갑에서 입금한다
입금은 평범한 전송이므로 체인 수수료를 냅니다. 18:05 UTC 실측: 멤풀 56,866건 / 21.40 MvB, 권장 네 단계 모두 1 sat/vB. 입력 1·출력 2 P2WPKH는 140.25 vB(올림 141 vB)로 141사토시, BTC 80,741달러에서 약 0.11달러입니다. TRC20 전송은 64,285 에너지(100 sun에서 6.4285 TRX)에 대역폭을 더해 약 6.7735 TRX = 2.24달러(TRX 0.331054). 모네로는 1,534바이트 × 20,000 piconero/바이트 = 0.00003068 XMR로 약 0.019달러입니다.
금액은 청구액과 정확히 같아야 합니다. 적게 보내면 입금 창에서 만료될 때까지 기다리게 되고, 거래소 입금에는 RBF/CPFP 구제가 없습니다. 의미 있는 출력이 내가 키를 가진 주소가 아니어서 자식 거래에 서명할 수 없습니다.
6단계: 새지 않게 추적한다
주문 페이지는 클라이언트 렌더링입니다. Tor로 받은 32,808바이트 HTML에는 입금 주소도 상태도 없고, 둘 다 /api/order/<id>에서 나중에 옵니다. 스크립트를 끄면 입력 세 개만 보이고 견적과 상태가 비는 이유입니다. 분석 태그 쪽에서는 /order/<id>가 집계 카운터만 싣고 Clarity는 0건이며 /exchange는 둘 다 싣습니다. (Tor 스왑은 안전한가?)
마지막 누출면은 내 브라우저입니다. 스왑 위젯은 vs_active_order를 localStorage에 쓰면서 주문 id, 입금 주소, extra id를 남깁니다. 공용 PC에서는 탭을 닫아도 어제의 입금 주소가 남습니다. 프라이빗 창이나 사이트 데이터 삭제를 쓰고, 남의 컴퓨터에 주문 탭을 남기지 마십시오.
물리는 순서대로 일곱 함정
1) 기기 화면이 아니라 방문 기록에서 주소를 복사. 2) 환불 주소에 다른 체인 주소를 기입. 3) 코리도어 하한(이 페어 19.83547 USDT) 미만 전송 — API가 거절하고 수동 전송은 지원 티켓이 됩니다. 4) 오래된 견적을 쓰고 주문의 validUntil을 보지 않음. 5) 창(여기서 601초)을 넘겨 보내고 입금되기를 기대. 6) 공용 브라우저에서 주문 링크 열기. 7) 서명 중에 브라우저가 열린 PC에 하드웨어 지갑을 꽂아 둠 — 확인은 기기 화면이 기준이므로 그 화면에서 대조하십시오. (XMR→USDT 출구 루트)
한 번 돌리면 드는 시간과 비용
현실적 시계는 주소 준비 5분, Tor에서 페이지와 견적 1~3분, 입금 창 601초, 그다음 제공자 처리와 확인 한 주기입니다. 비용은 체인 수수료 0.02~2.24달러(지불 체인에 따라)에 견적에 이미 반영된 코리도어 스프레드(5,000 USDT에서 1.75%, 1,000에서 2.7%)가 더해집니다. 이 글의 모든 가격은 2026년 10월 29일 18:0x UTC 실측이며 최신 값은 페이지에서 확인하십시오. (Tor 스왑은 안전한가?)