Convierta la dirección de Bitcoin bech32 a heredada

Sé que existen herramientas similares para BCH (por ejemplo, https://cashaddr.bitcoincash.org/ ). ¿Hay alguna manera de convertir una dirección de Bitcoin segwit bech32 nativa a un formato heredado?

Respuestas (3)

Como dice Anónimo, simplemente no puedes.

Intentaré resaltar la parte importante de la respuesta de MCCCS:

  • En Bitcoin Cash, cashaddr ("bitcoincash:...", similar a bech32, pero no del todo) y las direcciones heredadas ("1..." y "3...", base58) son dos formas diferentes de representar lo mismo salida en cadena de una manera legible por humanos. Uno se puede convertir en el otro porque la transacción resultante será idéntica y el destinatario no puede saber qué dirección usó.

  • En Bitcoin, las direcciones de segwit nativas ("bc1...", bech32) y las direcciones heredadas ("1..." y "3...", base58) son direcciones para distintas salidas en cadena . Los primeros se utilizan para salidas segwit BIP141, mientras que los segundos no. El hecho de que uno pueda convertirse técnicamente en el otro es irrelevante. Si el destinatario le dio una dirección de segwit nativa, significa que espera una transacción que pague por tal salida y es posible que no reconozca una transacción que haga otra cosa. En ciertos casos, es posible que literalmente no pueda acceder a las monedas enviadas a otro lugar (por ejemplo, porque usa un HSM que solo puede firmar ciertas transacciones).

Respuesta corta: si recibe una dirección de segwit nativa y no puede enviarla, solo hay un curso de acción: solicite al destinatario la dirección heredada.

No hay conversión de formatos de dirección en Bitcoin e intentar hacerlo resultará en la pérdida de fondos.

Esta respuesta trata sobre las diferencias entre los formatos de dirección y las causas de las incompatibilidades. Si no codifica su billetera, ¡no confíe en su billetera para reconocer diferentes direcciones creadas a partir de la misma clave pública! ¡No experimentes con nada de lo que he dicho con dinero real!

En Bitcoin Cash, las direcciones CashAddr y 1 son formas diferentes de codificar el hash de clave pública para Pay-2-Public-Key-Hash. Para gastar las salidas de P2PKH, se revela la clave pública, para lo cual se firma una firma. La forma en que se serializa el hash de clave pública no cambia la forma en que se gasta o crea la salida . Por lo tanto, esas direcciones son convertibles.

Aquí está la información Bech32 (P2WPKH), SegWit en P2SH (P2SH-P2WPKH) y 1 direcciones guardadas:

  • P2PKH contiene el<20-byte-key-hash>
  • P2WPKH contiene el<20-byte-key-hash>
  • P2SH-P2WPKH contiene el hash del script0 <20-byte-key-hash>

¿Eso significa que P2PKH y P2WPKH son lo mismo? No, enviar dinero a P2PKH y Bech32 de la misma clave pública generará transacciones diferentes. Y cómo la billetera del beneficiario lo gastará con la clave privada correspondiente también será diferente. Pero es la misma clave privada, ¡la billetera debería poder gastar ambas! Cuando una billetera generó una dirección Bech32, por ejemplo, no hay nada que requiera que la billetera busque las transacciones que gastan en esa clave pública como P2PKH o P2SH-P2WPKH . Esto dependerá de la implementación. (Por cierto, en P2PKH se puede usar una clave pública comprimida o sin comprimir. P2WPKH o P2SH-P2WPKH no se pueden usar con una clave pública sin comprimir)

Para P2WPKH y P2SH-P2WPKH, similar al caso anterior, desde P2WPKH puede crear un P2SH-P2WPKH y usarlo si la billetera del beneficiario es compatible (no sé sobre Bitcoin Core, pero no hay razón para usar una billetera liviana). compatible con este). Por otro lado, si ve el P2SH-P2WPKH de uno, no puede derivar el P2WPKH o el P2PKH a menos que esa dirección se haya gastado. Esto está relacionado con el hash una vez, agregando un cero, hash nuevamente. Cuando se gasta, la clave pública (y su hash) quedan expuestos.

Resumen: es teóricamente posible, pero ninguna implementación será compatible.

Este es un mal consejo para incluso sugerir que las billeteras pueden gastar fondos en direcciones que no generaron. La gente ha hecho esto y ha perdido dinero.
Estoy de acuerdo, los desarrolladores experimentados a quienes pensé que mi respuesta podría ser útil no necesitan mi respuesta y los usuarios pueden ser mal dirigidos. Agregaré advertencias.
¿Has probado esto en la red de prueba?
La respuesta sigue siendo útil para los desarrolladores que desean una comprensión rápida de las direcciones P2WPKH