p2pkh vs. p2pk manteniendo privada la clave pública

Empecé a aprender programación Bitcoin a través de Programación Bitcoin de Jimmy Song . Jimmy dice que algunas de las ventajas de p2pkh sobre p2pk incluyen:

  1. una ScriptPubKey más pequeña

  2. mantener privada la clave pública

Estoy completamente de acuerdo con la primera ventaja, pero tengo un pequeño problema con la segunda ventaja.

Jimmy explica que, si ECDSA estuviera roto, uno podría robar bitcoins de otra entidad porque podría encontrar su clave pública en ScriptPubKey (si estuviera usando p2pk) y crear una firma válida.

Mi pregunta es: si todo lo que estamos haciendo es mover la clave pública de ScriptPubKey a ScriptSig, ¿qué seguridad nos otorga eso si ScriptSig también es accesible? Si tuviera que gastar un UTXO que se hizo con mi hash de clave pública, mi clave pública sería pública. ¿No podría un usuario malintencionado que había roto ECDSA seguir buscando una UTXO ScriptPubKey con mi hash, copiar mi clave pública de la transacción anterior, generar una firma y robar mi bitcoin? Me parece que mi clave pública es privada mientras no gasto nada.

Por supuesto, sé que me estoy perdiendo algo :) Cualquier ayuda es apreciada.

Tiene razón, la clave pública solo se revela después de gastar desde la dirección, antes de que solo sea visible el hash de la clave pública. Esta es una de las razones por las que no debe reutilizar la misma dirección, solo genere una nueva dirección cada vez que desee recibir monedas y envíe su cambio a una nueva dirección cada vez.

Respuestas (1)

Las direcciones de Bitcoin, y la clave pública por extensión, idealmente solo deberían usarse una vez. Entonces, su tiempo de exposición de la clave pública en P2PKH es el tiempo entre el momento en que se realiza el gasto y el momento en que se confirma. Para P2PK, la clave pública siempre es conocida por todos. Hay una diferencia considerable entre los dos.

Lo tengo, ¿entonces el destinatario de cualquier transacción tiene que transmitir su clave pública al pagador antes de cada transacción? Parece una molestia si hay muchas transacciones pequeñas entre ellos...
Su dirección, sí, no la clave pública.
Creo que esta ventaja de mantener el secreto del pubkey es muy marginal en el mejor de los casos, y más comúnmente una ilusión. Casi cualquier cosa interesante más allá de los pagos simples (multisig, Lightning, ...) implica compartir sus claves públicas con partes que no son del todo confiables. La seguridad de Bitcoin se basa en que ECDSA es irrompible incluso cuando se revelan las claves públicas; en lo que a mí respecta, "los pubkeys solo se exponen brevemente es una ventaja" es un culto de carga.
no estoy en desacuerdo Es una buena propiedad incidental de que las direcciones no se reutilicen en el mejor de los casos, en lugar de algo que desear específicamente.
Bien; por supuesto, mantener la clave pública oculta por más tiempo nunca es una pérdida, y potencialmente hay algunos casos en los que puede proporcionar algún pequeño beneficio. Sin embargo, la medida en que se habla de esto en algunos lugares hace que parezca mucho más importante de lo que es.