交換サイトが実際に記録するログ:3層の痕跡と見落とされるクエリ文字列
自分のデータベースとウェブサーバーを開いて数えました。注文は19列で IP はなく、10時間で9千行のログ、数量は URL にあり、IP と注文 ID が出会うパスが1本あります。
どの交換サイトも「ログは取っていません」と言います。言うのは簡単で、確かめるのも簡単なので、自分のところを確かめました。2026年10月28日10:01 UTC、いま読んでいるこのサイトのデータベースとウェブサーバーを開き、行数とログ行数を数え、注文1件が実際に何を残すのかを書き出しました。結論はスローガンより格好悪く、スローガンより役に立ちます。交換の痕跡は3か所に残り得ます。接続を終端するエッジ、アプリケーションのデータベース、そして実際に約定させる相手方です。「ログなし」は同時に一層でしか成り立ちません。
3層、3つの答え。 エッジは接続を終端する層で、当サイトでは Cloudflare、次にオリジンの nginx です。HTTP リクエストごとに1行、URL、ステータス、バイト数、UA、2つの IP を書きます。アプリケーションは SQLite ファイルで、注文1件につき1行です。相手方は実際に交換する流動性提供者で、受け取りアドレス、返金アドレス、数量を受け取り、独自のスクリーニングを回します。「ログは取っていません」とだけ答えて層を言わないサイトは答えていません。有用な問いはもっと狭い。何が、どこに、いつまで書かれ、特定の注文と結び付けられるのか。
第2層:注文行、19列。 orders テーブルはちょうど19列です。id、corridor、from_asset、to_asset、from_amount、to_amount、to_address、refund_address、provider、provider_order_id、deposit_address、deposit_extra_id、markup_bps、status、provider_status、created_at、updated_at、affiliate_status、commission_est_usd。ip、user_agent、email、session という列はありません。文書ではなくスキーマを確認しました。10:01 UTC 時点で115行、2026年9月24日から10月27日まで。期限切れ90、支払済み19、失敗5、返金1、プール別では92/22/1、DB全体で771 KBです。隣の2つも同じくらい重要です。スキャナの注文を残した97行のテーブル(次の波を止めるにはパターンが要るから残します)と、1,173行のルーティング表(回廊・数量・どのプールが勝ったかだけを記録し、60日で消えます)。自由文が残るのはサポートチャットだけです。数えた時点で51件、だからアドレスを貼るなと言っています。
第1層:エッジが1行ずつ書いているもの。 nginx の書式は1行です。リモートアドレス、リテラルの CFIP= と Cloudflare が渡す実クライアント IP、タイムスタンプ、リクエスト行、ステータス、送信バイト数、UA 全体。今日の実例:`GET /api/quote?from=usdt-tron&to=xmr-xmr&amount=1337.4242 HTTP/1.1" 200 157 "curl/8.5.0`。日付が変わってから 10:01 までに9,748行、毎分16.2行、その中に2,410個の異なるクライアント IP。ローテーションは日次で圧縮14世代、アーカイブ14本で合計392,163行でした。ログを切っている location はニュース画像ディレクトリだけです。静的な画像1枚は必要な情報を持ちません。それ以外は全部書きます。注文ページも、すべての API 呼び出しも。
クエリ文字列が、誰も監査しない漏れ口です。 あの行に何が入っているかを見てください。数量がそのまま URL にあります。見積りは GET なので、誰かが見積もるたびに「通貨ペア+数量」が IP と UA の隣に14日間残ります。今日15行、アーカイブ14日で982行。アドレスはこの経路を通りません。注文は POST で、項目は body にあり、nginx は body を記録する設定ではありません。検証しました。受け取りアドレスに文字列 4INVALID を入れて注文し(400)、ログを grep して0件。ログに残るのは `POST /api/order HTTP/1.1" 400 130` だけです。他人のログを読む人への余談:先頭の項目は Cloudflare のエッジ(サンプルでは 172.71.x、104.22.x)で、実クライアントは CFIP= の後ろです。先頭列だけ数えると、訪問者ではなく CDN を数えています。
IP と注文 ID が交わる唯一の場所。 注文ページは /order/<uuid> にあり、このパスも他と同じく記録されます。今日のファイルに2行、同じクライアントが 00:13:43 と 00:13:44 に同じ注文を開いています。これが当サイトのスタックで「ネットワークアドレス」と「特定の注文」が結び付く唯一の点で、期限も同じ14日です。存在しないふりはしません。プライバシーページには「サーバーログは注文と結び付けない」と書いてあり、この1点がその文を不正確にしています。実際の影響は小さく、しかし現実です。注文リンクは Tor で開き、交換より長く生きるチャットやメールに貼らないこと。 (Torでのスワップは安全?)
受け取らないもの、それでも読み込まれるもの。 注文に必要なのは5項目。売る資産、買う資産、数量、受け取りアドレス、返金アドレス。アカウントもメールもウォレット接続も署名もありません。運営が受け取る Telegram 通知は「注文 70455957、100 USDT-TRC20 → 0.14460093 XMR、プール changenow」のような形で、ID8文字、資産、数量、プールだけでアドレスは入りません。解析は意図的に分けています。セッションリプレイは注文ページの HTML に存在しません(トップは2件、注文ページは0件)。集計カウンターは読み込まれますが、訪問を数えるだけで入力欄は読みません。注文ページの取引コンポーネントには明示的なマスク属性も付いています。 (XMR→USDT 出口ルート)
プール側があなたについて書くことは、こちらでは消せません。 注文が生まれた瞬間に、受け取りアドレス、返金アドレス、数量を提供者に渡します。注文とはそういうものだからです。提供者は独自の記録、独自のスクリーニング、独自の規制当局を持ち、こちらが何をしても変わりません。これが KYC なしの正直な境界です。ここでは身元を集めませんが、形式の正しいアドレスと数量は、タイムスタンプ付きで相手方に存在します。規模感として本日 10:02 UTC の見積り:100 USDT-TRC20 が 0.14460093 XMR(1 XMR あたり 691.56 USDT)、1,000 が 1.60620148(622.59)、1,337.4242 が 2.1533691。少額と大口の差 11.1% は注文ごとの固定費で、相場の変動ではありません。1 XMR は 587.75537 USDT。表示は動くのでページが基準です。 (XMR→USDT 出口ルート)
どんな交換サイトでも5分で監査する。 1. 見積りを開いてアドレスバーを見る。数量が URL にあり GET なら、その数量はあなたの IP とともに相手のアクセスログにあります。2. 注文ページのソースを開き clarity、hotjar、fullstory、sentry を検索する。注文ページのリプレイはアドレス欄を見ます。3. プライバシーページで形容詞ではなく日数を探す。「短期間」は方針ではなく、「14日」は方針です。4. サポートチャットが文章を残すか試す。わざと間違ったアドレスを貼り、再読み込みしても残るか見る。5. レスポンスヘッダを見る。`server: cloudflare` は、あなたの IP を持つ会社がもう1社あり、その保持期間は読めないという意味です。よくある4つの誤解:KYC なし=記録なしと考える。すべての注文で同じ受け取りアドレスを使う(プール側で1本の線になる)。アドレスをチャットやメールに貼る。document_start で動く拡張を Tor が隠してくれると思う。 (Torでのスワップは安全?)
これは醜聞ではなく、境界の地図です。当サイトの地図はこうです。身元を集めず、アドレス帳もなく、リクエスト body も記録せず、注文行は照合と返金のために残し、14日のエッジログに結び付き得るパスが1本だけあり、60日のルーティング表はアドレスに触れず、相手方には相手方の記録があります。「ログを取りません」が真であるためには、これだけの内容が必要です。次に使うサイトにも同じ項目を同じ単位で聞いて、答えに数字が入っているか見てください。