¿Es computacionalmente factible encontrar dos ID de transacción con los mismos primeros 20 bytes?

Los hashes de transacción usan sha256, por lo que tienen una longitud de 32 bytes. Si tengo que almacenar una base de datos muy grande de hashes de transacciones, solo con el fin de verificar la existencia más adelante, ¿es realmente necesario almacenar los 32 bytes? Si almaceno solo los últimos 20 bytes y comparo transacciones usando solo esos últimos 20 bytes, ¿se enfadarían los chicos de las criptomonedas?

Respuestas (2)

¿Es computacionalmente factible encontrar dos ID de transacción con los mismos primeros 20 bytes?

20 bytes siguen siendo 160 bits de seguridad, lo que se considera muy seguro. Si está seguro de que solo necesita los ID para verificar la existencia, 20 bytes de los hash deberían estar bien.

Sin embargo, el espacio en el disco duro es bastante barato y es posible que algún día necesite el TXID completo solo para la interoperabilidad entre otros sistemas. Así que asegúrese de que 20 bytes realmente satisfagan sus casos de uso. Sin embargo, un hash de 20 bytes es suficientemente seguro.

Supongo que depende de lo que quieras hacer con él. Si, por ejemplo, está utilizando esos 20 bytes como claves en una tabla de búsqueda, debería estar bien siempre que recuerde que puede obtener un falso positivo ocasional, por lo que siempre debe verificar si realmente es la transacción que estaba buscando. Para ese propósito, menos de 20 bytes probablemente ya sea suficiente.

Si 20 bytes es todo lo que almacena y desecha todo lo demás, y toma decisiones importantes basándose únicamente en esos 20 bytes, es posible que tenga problemas en algún momento.

Recuerda que no es mera casualidad. Si su aplicación juega un papel importante y un atacante conoce su limitación de 20 bytes, podría intentar falsificar 2 ID de transacciones en conflicto y colapsar su sistema o estafarlo para quitarle algo de dinero.

¿Es realmente posible que haya algún falso positivo ocasional? ¿Podría el atacante realmente falsificar una transacción con un sha256 con 20 bytes personalizados?
No hice los cálculos, pero sí, parece bastante improbable. Confiaría en la respuesta de StephenM347 sobre eso. Escribí mi respuesta antes de que apareciera la suya. Solo decía que podría depender de lo que esté tratando de hacer (puede bajar a menos de 20 bytes) y tener en cuenta que los atacantes activos pueden causar problemas si baja demasiado.