La mayoría de los usuarios reutilizan sus direcciones para depósitos (es decir, reciben dinero más de una vez en una dirección determinada).
¿Se puede diseñar el protocolo de tal manera que una dirección se pueda usar solo una vez como salida en una transacción?
Supongo que tendría que haber una forma de buscar rápidamente si una dirección ya estaba "agotada".
También tendría que haber una forma de obtener de alguna manera la "siguiente dirección". Por ejemplo, si una dirección se usa para dividendos y solo se puede usar una vez, el pagador de dividendos debería poder obtener automáticamente una nueva dirección sin la entrada repetida del propietario (beneficiario). (una configuración única de esto, estaría bien)
El objetivo de esto es mejorar la privacidad.
Estos son solo pensamientos, comentarios bienvenidos.
Mallory piratea la computadora de Alice y le roba la billetera. Afortunadamente, Alice lo había encriptado con una contraseña segura. Alice quiere demandar a Mallory por entrar en su computadora, por lo que busca un abogado, Bob.
Desafortunadamente para Alice, Mallory controla un nodo en la red Bitcoin, no muy lejos de Alice, que rápidamente ve que la transacción es de Alice (ella tiene todas sus direcciones) y, en su lugar, transmite la transacción a cientos de nodos a la vez:
Lo cual es incompatible con la transacción honesta de Alice.
Ahora, suceden tres cosas:
1) Alice intenta enviar los bitcoins a una dirección diferente dada por Bob
2) Los nodos de Alice ven su transacción como un gasto doble y se niegan a transmitir cualquier transacción que gaste esa moneda a una dirección diferente
3) La transacción de Mallory finalmente se extrae. Volvamos a intentar gastarle las monedas a Bob.
Mallory puede hacer otras cosas maliciosas con su puesto, como permitir que Alice gaste su bitcoin en una recaudación de fondos de la iglesia pero no en una clínica de abortos (suponiendo que sepa la dirección de ambos).
La principal forma en que las personas pierden su privacidad en bitcoin hoy en día es a través del análisis heurístico de la cadena de bloques, no de la reutilización de direcciones. La introducción de una nueva regla de red para proteger a los usuarios contra su propia estupidez no mejorará significativamente la privacidad (de todos modos, la mayoría de las billeteras no reutilizan las direcciones de forma predeterminada) y expone a los usuarios a algunos ataques interesantes.
Supongo que tendría que haber una forma de buscar rápidamente si una dirección ya estaba "agotada".
Hay, en Bitcoin. Simplemente pegue la dirección en el cuadro de búsqueda (no en el encabezado) en https://blockchain.info .
Con respecto a la creación de una nueva dirección: no solo es imposible en la forma en que se hacen las cosas actualmente, sino que además es contradictorio con su objetivo de mejorar la privacidad.
En primer lugar, hablemos de la situación actual. Las direcciones son hashes de claves públicas (simplificado). Esas claves públicas se asocian criptográficamente con claves privadas que solo conoce el propietario de las mismas porque conocerlas permite gastar el dinero que se ha enviado a las direcciones asociadas a ellas. Los hashes son unidireccionales, lo que significa que puede determinar el hash de algo, pero no ese algo dado solo el hash. Para pagar a una dirección diferente que pertenece al destinatario, tenía que hacer una función conocida como incrementar en 1 la clave privada, lo cual es imposible no solo porque no puede encontrar la clave pública dado su hash, sino también porque no puede encontrar la clave privada dada la clave pública, o de alguna manera acceder a una lista de direcciones del destinatario que subvertiría el objetivo de una mayor privacidad.
Ahora a todas las situaciones ficticias, por lo que todos los detalles de Bitcoin se eliminan en este párrafo. Si soy el primero en pagar a la dirección del Sr. Smith 1e9Kp22
y usted quiere pagar a esa misma dirección 5 minutos después, debe obtener una nueva dirección. Puede haber una o varias direcciones que pueden aparecer después 1e9Kp22
, pero ciertamente solo hay un pequeño número de ellas para que el Sr. Smith pueda encontrar la correcta. Sea Φ(α)
el conjunto de todas las direcciones que son las posibles direcciones siguientes después de la dirección α. En esta situación ficticia general, no podemos excluir la posibilidad de poder simplemente crear nuevas direcciones pertenecientes al Sr. Smith sin socavar el derecho exclusivo del propietario de las monedas para gastarlas. Ya que puedes encontrar φ ∈ Φ(α)
a quien pagar y no sabes nada más que yo y ∀α∈Addreses : |Φ(α)| small
puedo encontrar tuφ
simplemente encontrando todos los elementos Φ(α)
y examinando a cuáles se les ha pagado dinero. Como ahora ambos sabemos que 1e9Kp22
pertenece al Sr. Smith y acabo de enterarme de que φ
también pertenece al Sr. Smith, ambos sabemos que la dirección que usó la otra persona pertenece al Sr. Smith.
La solución simple de este problema en la práctica es dar una dirección diferente para cada pago esperado, por ejemplo, para cada compra en una tienda web. ¿Por qué el dueño de la tienda nos daría a ambos la misma dirección en primer lugar? Las direcciones son completamente gratis.
Alberto