¿En qué momento se conoce una nueva billetera por la red Bitcoin?

Estaba mostrando una billetera determinista a un amigo que preguntó "¿En qué punto la red conoce la billetera?" y solo podría adivinar diciendo que solo se sabe cuando se transmite y confirma una transacción... Pero no creo que esa sea toda la historia. Todavía tengo algunas preguntas sin respuesta. Creo que esto se debe a que no entiendo completamente el método criptográfico en juego.

  1. Entonces, por el bien de los argumentos, tenemos User A y User B .
  2. El usuario B crea una billetera cerebral usando una computadora fuera de línea que esencialmente proporciona al usuario B una clave pública y una clave privada.
  3. El usuario B le dice al usuario A que envíe Bitcoins a esta dirección y proporciona su clave pública.
  4. El usuario A está en línea, por lo que envía las monedas con una transacción firmada que incluye una tarifa a través de su cliente favorito.

¿Lo que sucede?

¿Cómo sabe la red (con esto me refiero a los nodos de la red que están retransmitiendo la transacción) que esta es una dirección genuina, el Usuario B después de todo está fuera de línea ?

Si nunca se envían monedas a esta dirección, ¿necesita la cadena de bloques saber si se ha creado esta billetera?

Respuestas (3)

TL; DR: La red no tiene conocimiento de la propiedad de la dirección, ni nadie puede verificar si una dirección es propiedad a menos que se haya utilizado previamente (o sea de su propiedad). Cualquiera puede enviar transacciones a cualquier dirección válida (con la forma correcta)¹, el destinatario no tiene que estar en línea para que se realice una transacción.

Permítanme elaborar un poco con el fin de explicar:

Las direcciones son la clave pública de un par de claves asimétricas

Una dirección es la clave pública de un par de claves asimétricas . El propietario del par de claves puede usar la clave privada para firmar transacciones o mensajes (por ejemplo, para demostrar la propiedad). Solo mediante el uso de la clave privada correcta se puede crear una firma válida, que luego cualquiera puede verificar como válida mediante el uso de la dirección asociada (que, de nuevo, es la clave pública).

Las carteras son una abstracción

Una billetera es una construcción abstracta que contiene un conjunto de pares de claves públicas y privadas generadas aleatoriamente para el usuario. En una billetera determinista, las claves se derivan de una frase de contraseña en lugar de una semilla aleatoria.

El software del cliente de Bitcoin extrae la billetera para el usuario de modo que verifica cada una de las direcciones contenidas en la billetera, si hay saldos ( salidas de transacciones ) asociados en la cadena de bloques con ellos. Resume los fondos y los presenta como un solo saldo total. Sin embargo, estos saldos se almacenan públicamente en la cadena de bloques (así es, la billetera no contiene sus monedas, solo le permite gastarlas). Se dividen en numerosas direcciones y salidas de transacciones:

  • La dirección #15521³ tiene
    • 3 BTC en salida de transacción 1
  • La dirección #23414 tiene
    • 1.2 BTC en salida de transacción 1
    • 0.7 BTC en la transacción de salida 2
  • ...

Todos pueden verlos, sin embargo, generalmente no pueden determinar la identidad del propietario.

Las transacciones son notificaciones públicas de cambio de titularidad

Ahora, cuando alguien envía una transacción, básicamente coloca un aviso para que todos en la red vean dónde firma algunos de los resultados de su transacción a las direcciones de los destinatarios. Él firma este aviso con su clave privada, para que todos puedan verificar que él es el propietario legítimo del saldo saliente (como pueden ver desde qué dirección se envía el saldo, saben qué clave pública usar para verificar la validez). Esto puede suceder independientemente de que el destinatario esté en línea: los bitcoins estarán disponibles para gastar para el propietario de la nueva dirección, porque solo él tiene la clave privada, siempre que elija hacerlo.

No se puede determinar si una dirección es propiedad de alguien.

Las claves públicas ( direcciones de Bitcoin ) cumplen un patrón específico con sumas de verificación , de modo que el software de bitcoin puede evaluar fácilmente si una dirección es válida. Sin embargo, a menos que una dirección se haya utilizado antes, no hay forma de que nadie verifique si alguien realmente ha reclamado una dirección válida.

En ningún momento se informa a la red de la creación de nuevas billeteras, ni tiene que ser así. Los saldos simplemente se transfieren a la dirección de un destinatario y, posteriormente, solo se pueden gastar con la clave privada asociada. Si aún no se ha encontrado la clave privada de las nuevas direcciones, es muy poco probable que alguien lo haga alguna vez ; es probable que las monedas se pierdan para siempre.

¹ Al crear transacciones sin procesar, se pueden enviar transacciones a una dirección no válida. Esto se usa, por ejemplo, para dejar mensajes en la cadena de bloques o para validar la autenticidad de los documentos.

³ Por supuesto, las direcciones realmente son cadenas alfanuméricas con hasta 34 caracteres.

Logré descubrir la mayor parte de esto mientras tanto, pero esto sin duda ayudará a alguien.

Respuesta corta: no lo hace. Todo lo que la red sabe es que alguien envió fondos a esta dirección. No sabe y no le importa si alguien tiene una clave privada que coincida con una clave pública que coincida con esta dirección; ese es el problema del usuario que envió los fondos y del usuario que solicitó que se enviaran los fondos a esta dirección.

Por supuesto, si el usuario B alguna vez gasta estas monedas (al proporcionar una clave pública y una firma de la clave privada correspondiente), la red sabe que estas claves existen.

También es posible enviar a direcciones con una complejidad de Kolmogorov tan baja que se sabe que nadie tiene las claves privadas, como 1BitcoinEaterAddressDontSendf59kuE y 1111111111111111111114oLvT2

Y no, si no se envían monedas a una dirección, la red no necesita saber que alguien creó un par de claves para esta dirección.

Si te refieres a "dirección genuina" como en una en la que alguien puede gastar los fondos. La red solo sabe que alguien puede gastar esos fondos cuando lo hace y transmite una transacción desde esa dirección. La red felizmente enviará a una dirección que nadie conoce, por ejemplo, https://blockchain.info/address/1BitcoinEaterAddressDontSendf59kuE

Pero, ¿cómo puede confirmar que la clave privada utilizada para firmar el TX está realmente asociada con la clave pública a la que se enviaron las monedas?
Comprueba eso cuando se envía la nueva transacción. La firma se asocia matemáticamente con la clave privada/pública, de modo que solo alguien que tuviera la clave privada sería capaz de generarla.