feat: check tipo script legacy (P2PKH/P2SH), peso -15
This commit is contained in:
+22
-2
@@ -1024,7 +1024,7 @@
|
||||
input_reuse: 25, input_type_mixing: 14, output_type_mismatch: 8,
|
||||
round_numbers: 10, rbf: 5, peeling: 8,
|
||||
unnecessary_input: 12, dust: 8, change_detection: 10,
|
||||
wallet_fingerprint: 6, batch_payment: 45, entity_ofac: 20, op_return: 30,
|
||||
wallet_fingerprint: 6, batch_payment: 45, entity_ofac: 20, op_return: 30, legacy_type: 15,
|
||||
};
|
||||
let deductions = 0;
|
||||
|
||||
@@ -1501,7 +1501,27 @@
|
||||
penalty: 0, informational: true,
|
||||
});
|
||||
|
||||
// ── 16. Detección de entidades conocidas ──────────────────────────
|
||||
// ── 16. Tipo legacy (P2PKH / P2SH) ───────────────────────────────
|
||||
// Inputs en formato legacy (P2PKH = 1..., P2SH = 3...) revelan UTXOs antiguos
|
||||
// o wallets que no han migrado a SegWit/Taproot. Mayor huella on-chain y
|
||||
// menor anonimato en el conjunto de usuarios modernos.
|
||||
const legacyTypes = ["p2pkh", "p2sh"];
|
||||
const allInputScriptTypes = [...new Set(tx.vin.map(v=>v.prevout?.scriptpubkey_type).filter(Boolean))];
|
||||
const hasLegacyInputs = allInputScriptTypes.some(t => legacyTypes.includes(t));
|
||||
const legacyInputTypes = allInputScriptTypes.filter(t => legacyTypes.includes(t));
|
||||
checks.push({
|
||||
id:"legacy_type", label:"Tipo de script legacy (P2PKH/P2SH)", certainty:"CERTEZA",
|
||||
pass: !hasLegacyInputs,
|
||||
actionability: "wallet",
|
||||
detail: hasLegacyInputs
|
||||
? `Los inputs usan tipo legacy (${legacyInputTypes.join(", ")}). Las direcciones legacy (1... para P2PKH, 3... para P2SH) tienen mayor huella on-chain que SegWit (bc1q...) o Taproot (bc1p...) y forman un conjunto de usuarios cada vez más pequeño, lo que reduce el anonimato por conjunto.`
|
||||
: "Los inputs usan SegWit o Taproot — no se detecta tipo legacy.",
|
||||
didactic: "P2PKH y P2SH son los formatos originales de Bitcoin. La mayoría de wallets modernos usan SegWit (bc1q) o Taproot (bc1p), que son más eficientes y tienen menor huella. Usar legacy no es un error activo, pero sí una característica del UTXO observable por cualquiera.",
|
||||
penalty: hasLegacyInputs ? weights.legacy_type : 0,
|
||||
});
|
||||
if (hasLegacyInputs) deductions += weights.legacy_type;
|
||||
|
||||
// ── 17. Detección de entidades conocidas ──────────────────────────
|
||||
// Cruza direcciones de inputs y outputs contra el ENTITY_INDEX embebido.
|
||||
const allTxAddrs = [
|
||||
...tx.vin.map(v => ({ addr: v.prevout?.scriptpubkey_address, side: "input" })),
|
||||
|
||||
Reference in New Issue
Block a user