diff --git a/FIXTURES.md b/FIXTURES.md index 0c842d0..4abd3b1 100644 --- a/FIXTURES.md +++ b/FIXTURES.md @@ -20,7 +20,7 @@ nodo y corrige la fila). | # | Tipo | txid | Resultado esperado | Verificado | |---|------|------|--------------------|------------| -| 1 | Whirlpool CoinJoin | `323df21f0b0756f98336437aa3d2fb87e02b59f1946b714a7b09df04d429dec2` | CoinJoin detectado, banda ALTA, fingerprint "Samourai/Sparrow" inferido | ☐ | +| 1 | Whirlpool CoinJoin (5×5, 2019) | `323df21f0b0756f98336437aa3d2fb87e02b59f1946b714a7b09df04d429dec2` | CoinJoin detectado (✓ verde), banda ALTA, fingerprint "Samourai/Sparrow (Whirlpool)" | ✅ 2026-06-03 | | 2 | WabiSabi CoinJoin | `fb596c9f675471019c60e984b569f9020dac3b2822b16396042b50c890b45e5e` | CoinJoin grande, banda ALTA, "Wasabi" inferido | ☐ | | 3 | JoinMarket CoinJoin | `4f112abd2eefe3484a7bbf7c1731f784cba19de677468835145e9c448fb18b7d` | CoinJoin con outputs iguales, verificar mínimo ~10k sats | ☐ | | 4 | Batch payment 144 outputs (F2Pool, 2022-02-15) | `ef5d100a70eea9b7349a40fdfd51064fc5cebf5e3b4240f92591569836896949` | 1→144 outputs, **NO** CoinJoin, banda **MEDIA**, check "Pago por lotes" penaliza (−45) | ✅ 2026-06-03 | @@ -113,3 +113,13 @@ título de cada check (CERTEZA/PROBABLE/POSIBLE) puede confundir cuando el check da resultado negativo —por ejemplo "Estructura CoinJoin / mezcla — PROBABLE" cuando en realidad NO hay CoinJoin (el resultado real está en el detalle, no en el badge). Pendiente de mejorar la claridad de la presentación. + +### 2026-06-03 — Fixture #1 (Whirlpool CoinJoin) +Al validar un Whirlpool real (5×5) se confirmó que el motor lo detecta bien +(banda ALTA, fingerprint correcto), pero el check de CoinJoin se mostraba con +icono gris neutro y badge ámbar, como si fuera una advertencia — cuando detectar +un CoinJoin es algo POSITIVO para la privacidad. Corregido: el icono y color de +cada check ahora reflejan si el resultado es bueno o malo para la privacidad +(verde = bueno), no solo el estado interno. Un CoinJoin detectado sale en verde. +El badge de certeza se mantiene aparte, indicando solo el nivel de confianza. +Esto resuelve en parte el punto anterior sobre la claridad del badge. diff --git a/dashboard.html b/dashboard.html index 29a51ff..3f60709 100644 --- a/dashboard.html +++ b/dashboard.html @@ -1154,7 +1154,7 @@ ? `Detectado: ${cjVariant}. ${tx.vin.length} inputs, ${tx.vout.length} outputs, ${maxEqual} outputs de igual valor. Mejora significativa de privacidad.` : "No se detecta estructura CoinJoin. La transacción es trazable directamente.", didactic: "CoinJoin combina inputs de múltiples usuarios en una sola transacción con outputs de igual valor, rompiendo el enlace entre emisor y receptor. Whirlpool usa denominaciones fijas (100k, 1M, 5M, 50M sats). JoinMarket y Wasabi tienen estructuras similares.", - penalty: 0, informational: true, positive: likelyCJ, + penalty: 0, positive: likelyCJ, informational: !likelyCJ, }); // Sin penalización por no usar CoinJoin — es una técnica avanzada, no un error @@ -1846,11 +1846,11 @@