dirección de Bitcoin – Bitcoin addresses

« Back to Glossary Index

Antecedentes técnicos de las direcciones de Bitcoin

Una dirección de Bitcoin se basa principalmente en la representación hash de 160 bits de la clave pública de un par de claves público-privado ECDSA . Con la criptografía de clave pública , puede «firmar» datos con su clave privada y cualquier persona que conozca su clave pública puede verificar que la firma sea válida.

Para la clave privada del par de claves ECDSA, utilizando las soluciones de criptografía de clave pública aplicables, uno puede «firmar» datos (por ejemplo, detalles de una transacción de Bitcoin SV) con su clave privada . Cualquier parte interesada que conozca la clave pública puede verificar que la firma sea válida (es decir, la clave privada utilizada para generar la firma digital es la clave privada única que corresponde a la clave pública).

Se recomienda encarecidamente que se genere una nueva dirección para cada instancia en la que se recibirán fondos .; cada nueva dirección corresponde a un nuevo par de claves (con billeteras HD esto se hace de manera determinista). Las claves públicas y sus claves privadas asociadas (o la semilla necesaria para generarlas en el caso de las billeteras HD) se almacenan en el archivo de datos de la billetera . Este es el único archivo que los usuarios deberían necesitar para hacer una copia de seguridad.

Una transacción de «envío» a una dirección específica de BitcoinSV requiere que la billetera (receptora) correspondiente conozca la clave privada que implementa esa dirección. Esto tiene la implicación de que, si se usa una billetera que no es HD, si la billetera receptora había creado una dirección y se enviaron monedas a esa dirección, pero se hace necesaria la restauración de la billetera desde una copia de seguridad anterior, pero la dirección receptora de interés tenía aún no se ha generado, entonces las monedas enviadas a esa dirección se pierden permanentemente. Este no es un problema para las billeteras HD donde todas las direcciones se generan a partir de una sola semilla. Las direcciones se agregan a un grupo de claves de dirección antes de usarse para recibir monedas. Sin embargo, tenga en cuenta que si pierde su billetera ‘por completo’, todas sus monedas se perderán y nunca podrán recuperarse.

Bitcoin SV no tiene restricciones en la cantidad de direcciones que uno puede crear o utilizar. No solo se puede usar una nueva dirección para cada transacción, se recomienda encarecidamente que se haga. No hay una «dirección maestra»; El área «Su dirección de Bitcoin» que a veces se ve en las IU de billetera no tiene una importancia especial. Dicha inclusión solo está ahí para su conveniencia, y debería cambiar automáticamente cuando se usa.

La inclusión del valor de suma de verificación en las direcciones de Bitcoin es eliminar, o al menos reducir drásticamente la posibilidad de enviar Bitcoins a una dirección mal escrita. Sin embargo, tenga en cuenta que es completamente posible que una dirección esté bien formada (formato válido, suma de verificación, etc.) pero nadie la posee (o el propietario perdió su billetera.dat, clave privada), lo que resulta en que las monedas se envíen correctamente. La dirección formada se pierde para siempre.

Junto con el prefijo, el hash de 160 bits de la clave pública y los datos de la suma de verificación se convierten, como una cadena concatenada, en una representación alfanumérica mediante un esquema personalizado: el esquema de codificación Base58Check . En Base58Check, las direcciones pueden contener todos los caracteres alfanuméricos, excepto 0, O, I y l. Las direcciones de Bitcoin SV actualmente siempre comienzan con el prefijo 1. Las direcciones de Testnet generalmente comienzan con m o n. Las direcciones de la línea principal pueden tener entre 25 y 34 caracteres de longitud, y las direcciones de Testnet pueden tener entre 26 y 34 caracteres de longitud. La mayoría de las direcciones tienen 33 o 34 caracteres de longitud.

Colisiones (falta de las mismas)

Dado que las direcciones SV de Bitcoin son básicamente números aleatorios, es posible, aunque extremadamente improbable, que dos personas generen independientemente la misma dirección. Aquí es donde los hashes de 160 bits de sus respectivas claves públicas ECDSA dan como resultado la misma salida. Esto se llama colisión . Si esto sucede, tanto el propietario original de la dirección como el propietario colisionador podrían gastar el dinero enviado a esa dirección incluso si los hashes de la dirección se hubieran creado utilizando diferentes claves privadas. A pesar de esto, sin embargo, no sería posible que una de las partes gastara la billetera completa de la otra.

Debido al hecho de que el espacio de posibles direcciones es astronómicamente grande, es más probable que la Tierra se destruya en los próximos 5 segundos que si ocurriera una colisión en el próximo milenio.

Cómo crear una dirección

Si bien es teóricamente posible crear manualmente una dirección de BitcoinSV, la forma correcta o recomendada de crear una dirección es usar un software de billetera bien probado, de código abierto y revisado por pares. El manejo manual de claves ha resultado históricamente en pérdida de fondos. Esto es particularmente problemático dado que, a diferencia de los sistemas centralizados, las pérdidas en Bitcoin generalmente son irrecuperables.

Para fines informativos, se muestran los pasos en la generación de un BitcoinSV a partir de una clave privada ECDSA:

0 – Tener una clave ECDSA privada

  18e14a7b6a307f426a94f8114701e7c8e774e7f9a47e2c2035db29a206321725

1 – Tome la clave pública correspondiente generada con ella (33 bytes, 1 byte 0x02 (y-coord es par) y 32 bytes correspondientes a la coordenada X)

  0250863ad64a87ae8a2fe83c1af1a8403cb53f53e486d8511dad8a04887e5b2352

2 – Realice el hashing SHA-256 en la clave pública

  0b7c28c9b7290c98d7438e70b3d3f7c848fbd7d1dc194ff83f4f7cc9b1378e98

3 – Realice el hashing RIPEMD-160 en el resultado de SHA-256

  f54a5851e9372b87810a8e60cdd2e7cfd80b6e31

4 – Agregue el byte de versión frente al hash RIPEMD-160 (0x00 para la red principal)

  00f54a5851e9372b87810a8e60cdd2e7cfd80b6e31

(tenga en cuenta que los pasos a continuación son la codificación Base58Check , que tiene múltiples opciones de biblioteca disponibles para implementarla)
5 – Realice el hash SHA-256 en el resultado RIPEMD-160 extendido

  ad3c854da227c7e99c4abfad4ea41d71311160df2e415e713318c70d67c6b41c

6 – Realice el hash SHA-256 en el resultado del hash SHA-256 anterior

  c7f18fe8fcbed6396741e58ad259b5cb16b7fd7f041904147ba1dcffabf747fd

7 – Tome los primeros 4 bytes del segundo hash SHA-256. Esta es la suma de verificación de la dirección

  c7f18fe8

8 – Agregue los 4 bytes de suma de verificación de la etapa 7 al final del hash RIPEMD-160 extendido de la etapa 4. Esta es la dirección binaria de Bitcoin de 25 bytes.

  00f54a5851e9372b87810a8e60cdd2e7cfd80b6e31c7f18fe8

9 – Convierta el resultado de una cadena de bytes en una cadena base58 usando la codificación Base58Check . Este es el formato de dirección de Bitcoin más utilizado

  1PMycacnJaSqwwJqjawXBErnLsZ7RkXUAs

Ver también

Atribución

Este contenido se basa en el contenido de https://en.bitcoin.it/wiki/Technical_background_of_version_1_Bitcoin_addresses bajo Creative Commons Attribution 3.0 . Aunque puede haber sido ampliamente revisado y actualizado, reconocemos a los autores originales.

« Back to Glossary Index