¿Qué script de canje se usa en la billetera central de bitcoin cuando se genera la dirección?

Estoy tratando de generar la dirección 38DGj87axzmQiZeAd1w1y5FEmuu5a7pfBaen mi billetera central de bitcoin con código.

Primero, descargo la clave privada de la dirección, luego calculo la dirección de la clave privada. Como la dirección es el formulario de inicio , que es del tipo de dirección bitcoinm P2SH . Y la dirección P2SH se construye como

base58-encode: [one-byte version][20-byte hash][4-byte checksum]

¿Aquí no sé qué script usó para calcular [20-byte hash]en la billetera central de bitcoin?

Respuestas (2)

Puede usar el getaddressinfocomando RPC en la última versión de bitcoin core para obtener el script codificado en hexadecimal para esa dirección. Pero tenga en cuenta que debido a que pudo obtener una clave privada, asumo que se trata de una dirección segwit envuelta en P2SH, lo que significa que el script es solo un OP_0código de operación seguido del hash160 de la clave pública correspondiente a esa clave privada.

Uso bitcoin core 0.16.0 la última versión. Pero cuando lo uso getaddressinfoobtuve "Método no encontrado"
Oh, disculpas, pensé que había llegado a 0.16, parece que todavía está solo en la rama de desarrollo maestro. En ese caso, es posible que deba crear el script usted mismo utilizando el enfoque OP_0 + hash160 que mencioné, consulte aquí para obtener más información: bitcoincore.org/en/segwit_wallet_dev/…
Úselo validateaddressen su lugar (las partes validateaddressque brindan información de dirección se mueven a un nuevo getaddressinfocomando para la próxima versión principal, 0.17).
@AndrewChow ¿valideaddress genera el script? No estaba seguro de si lo hacía o si era una nueva funcionalidad.
@MeshCollider Lo hace. El RPC se dividió en dos en maestro, pero no se agregó ninguna funcionalidad nueva.

(Para detalles adicionales):

Es un P2SH-P2WPKH(hash de clave pública de pago para presenciar envuelto en un hash de pago para script). Para crear esta dirección para mainnet:

  1. Crear testigo PKH:

PKH = OP_0 0x14 RIPEMD160(SHA256(compressed public key))
0x14es el número de bytes

  1. Crear P2SH:

BASE58CHECK(0x05 PKH)
0x05es el P2SHprefijo de red principal