A mi se me ocurre pillar el código fuente de SharedCoin y hacer que todas las salidas de una transacción sean por el mismo importe
La pega de esto es que si tienes una coin de 1.48463925 BTC, ¿cómo haces para que todas las salidas tengan el mismo importe? ¿De cuánto debe ser ese importe? ¿Qué pasa con el resto? ¿Los usuarios tendrán que hacerse un envío a sí mismos, antes del mix, para obtener una coin del importe necesario o un múltiplo exacto?
Una posible solución sería que las salidas fueran de varios importes para no obligar al usuario a hacer una transacción adicional antes. Por ejemplo un mix de estas coins:
- 0.37474355
- 2.47262636
- 0.04743845
- 0.63874734
Podría llevarse a cabo de la siguiente manera:
- Separar algo para la comisión, por ejemplo, dejando los 4 últimos dígitos de cada coin a cero. Con esto tendríamos inputs por importe de 0.3747, 2.4726, 0.0474 y 0.6387 BTC, y una comisión de 0.00015570.
- Generar outputs de, por ejemplo, 0.0001, 0.001, 0.01 y 0.1 BTC. Son unas cuantas, pero queda bastante anónimo (no del todo). Para reducir el número de outputs, se pueden añadir más importes: 0.0001, 0.0002, 0.0005, 0.001, 0.002, 0.005, 0.01, 0.02, 0.05, 0.1, 0.2 y 0.5. En este caso, y si queremos el menor número de posible de salidas, la cosa quedaría así:
0.5
0.5
0.5
0.5
0.5
0.2
0.2
0.2
0.1
0.1
0.05
0.05
0.02
0.02
0.02
0.02
0.02
0.01
0.005
0.005
0.002
0.002
0.002
0.002
0.002
0.001
0.0005
0.0005
0.0005
0.0002
0.0002
0.0002
0.0002
0.0001
Pero en el mundo real las outputs se segregarían más para aumentar la anonimidad.
y obligar al usuario a usar más de una dirección de destino.
Esto apenas soluciona nada en el contexto de esa noticia. Sí que complica un poquitín más el ataque pero al fin y al cabo, el usuario recupera el mismo importe y las entradas/salidas son igual de enlazables.