Cómo OP_CHECKSIG conoce la fuente de firma en el pago de la transacción de hash de clave pública

https://en.bitcoin.it/wiki/Script#Standard_Transaction_to_Bitcoin_address_.28pay-to-pubkey-hash.29

El último paso de pago a la transacción de hash de clave pública es comprobar la firma de la transacción anterior hash de tx y clave pública.

Pero, ¿cómo sabe el intérprete del script que la firma es la firma del hash de transición anterior? ¿Qué pasa si la firma es la firma de algún otro contenido?

Respuestas (1)

Pero, ¿cómo conoce el intérprete del script la firma del hash de transición anterior? ¿Qué pasa si la firma es la firma de algún otro contenido?

También compara los datos firmados con el propio hash de la transacción. En general, así es como funcionan las firmas digitales. Si los datos no están firmados por la clave correcta y el hash de datos no coincide , entonces la firma no es válida. Consulte src/script/interpreter.cpp L#1264 .

Este proceso de verificación asegura dos cosas:
1. La persona tiene la clave privada que se corresponde con la clave pública proporcionada.
2. Los datos no han sido manipulados.

El código en SignatureHash() busca reconstruir (l1217~1235) parte de la transacción y el hash nuevamente. Luego use pubKey para verificar el hash y la firma. ¿Los "datos" que mencionó anteriormente son la lista de bytes reconstruida?
En realidad, no es simple, pero hay una buena explicación de lo que se codifica y firma aquí: bitcoin.stackexchange.com/a/5241/60443
Una pregunta más, en el paso 9, por qué el remitente decidirá la tarifa (0.001) en el proceso de generación de entrada. Si es cierto, ¿cómo podría saber el verificador cuál es la tarifa del código hash? En realidad, a partir del código en GitHub, parece que usa la cantidad original directamente, y en gitbub, genera la cantidad y luego la secuencia (FFFFFFFF), pero en esa publicación, el pedido como cantidad primero, luego genera el script en el paso 9 y paso 10.