¿Cómo sabe ScriptPubKey la clave pública de una dirección de Bitcoin?

Actualmente estoy teniendo un momento rubio.

ScriptPubKey proporciona una versión codificada de la clave pública del receptor.

scriptPubKey OP_DUP OP_HASH160 OP_EQUALVERIFY OP_CHECKSIG

Sin embargo, si le doy a alguien mi dirección de bitcoin para que me envíe dinero, ¿cómo recupera el remitente mi clave pública y luego la codifica? Como pubKeyHash != mi dirección de bitcoin

Probablemente me estoy olvidando de algo muy obvio, pero me ha dejado perplejo esta mañana.

"pubKeyHash! = mi dirección de bitcoin" Estás equivocado aquí. La dirección contiene el hash de la clave pública, junto con un número de versión y una suma de verificación.

Respuestas (2)

Las direcciones son en realidad solo abreviaturas de scripts particulares. El tipo de dirección estándar (que comienza con un '1' en la red principal) de hecho corresponde al tipo exacto de secuencia de comandos que proporcionó anteriormente.

Si decodifica en base58 dicha dirección, termina con una cadena de bytes de la forma 0x00 + [hash de 20 bytes] + [suma de comprobación de 4 bytes]. El script correspondiente es OP_DUP OP_HASH160 [hash de 20 bytes] OP_EQUALVERIFY OP_CHECKSIG.

Entonces, en cierto modo, su dirección contiene el hash de la clave pública.

Usé esto para una prueba lenschulwitz.com/base58 , en caso de que ayude a alguien

El remitente no necesita conocer su clave pública, solo la dirección de bitcoin que proporciona, que puede ser diferente cada vez. Utiliza la clave pública más tarde para canjear los fondos y enviarlos a otra dirección.

la dirección de bitcoin es la clave pública.
No, estás confundiendo la dirección de bitcoin con la clave pública. Puede crear muchas direcciones de bitcoin diferentes utilizando su clave pública y su clave privada. Necesitará la clave pública para canjear los fondos de la transacción.