¿Qué puede hacer (o intentar hacer) un nodo deshonesto?

Excepto este tipo de ataques: https://en.bitcoin.it/wiki/Double-spending

Por ejemplo, ¿puede simplemente crear un nuevo bloque que incluya algunas transacciones inventadas que roban dinero de una dirección real? ¿Sin poseer las claves privadas de esas direcciones?

¿Estamos hablando de un nodo deshonesto (solo un espejo de la cadena de bloques y el punto de retransmisión) o un minero deshonesto (que trabaja en la actualización de la cadena de bloques) aquí?

Respuestas (2)

Solo en la parte superior de mi cabeza, aquí hay algunas cosas que un minero deshonesto puede hacer:

  • no incluye una o más transacciones en el bloque. esto no es técnicamente 'deshonesto', ya que el protocolo no requiere que todas las transacciones transmitidas se incluyan en el bloque actual. por ejemplo, se consideraría perfectamente correcto que un minero nunca incluya una transacción que no incluya una tarifa de minería en el bloque actual. sin embargo, si la transacción tiene una tarifa (el comportamiento estándar), un minero aún puede optar por no incluir ninguna transacción que desee en un bloque. hacerlo sería renunciar deliberadamente a una ganancia, por lo que es poco probable, pero ciertamente es posible. sin embargo, es poco probable que otros mineros hagan lo mismo, por lo que incluirán la transacción la próxima vez que extraigan un bloque.
  • fondos no firmados apropiados para sí mismo. Los scripts de bitcoin son simplemente acertijos que deben resolverse para gastar fondos. por lo general, los acertijos están firmados por la clave privada del remitente, pero esto no es un requisito (aunque todo el software de billetera lo hace de manera predeterminada). si alguien es lo suficientemente tonto como para crear manualmente un script de salida que no contiene ni un OP_CHECKSIGcódigo de OP_CHECKMULTISIGoperación, entonces el minero puede cambiar cualquier cosa en la transacción. por ejemplo, supongamos que alguien crea una transacción con un script de salida OP_1 OP_EQUALy luego la transmite a un minero para incluirla en la cadena de bloques. el minero puede completar fácilmente el rompecabezas y apropiarse de estos fondos creando otra transacción con un script de entrada OP_1. (para verificar estos scripts, simplemente ponga txin y txout en secuencia OP_1 OP_1 OP_EQUAL-1==1). y lo más importante aquí es que, dado que no hay firma, cualquiera puede modificar el script de salida en la transacción de gasto, por lo que el minero puede dirigir los fondos a la dirección de una clave privada que posee.
  • apropiarse de los fondos SIGHASH_NONE. al firmar una transacción, el software de la billetera del usuario colocará un byte al final de la firma en el script txin en la transacción de gasto. un 0x02byte aquí corresponde a SIGHASH_NONElo que significa que todos los scripts de salida se ignoran con fines de validación. Entonces, si alguien envía una transacción como esta, un minero puede simplemente poner su propia dirección en todos los txouts e incluir esa transacción modificada en un bloque, enviándose fondos a sí mismo. sin embargo, el software de billetera no establece firmas de esta manera, por lo que alguien tendría que ser deliberadamente tonto para perder fondos para un minero de esta manera.
  • alterar ciertos hashes de transacción a través de la maleabilidad de la transacción. ciertas transacciones de bitcoin son maleables. Si bien un minero no puede modificar la cantidad de bitcoins que envía, o el destinatario de estos fondos, puede modificar ciertas secuencias de comandos de transacciones (la secuencia de comandos txin) y, por lo tanto, alterar el hash de la transacción. esto ocurre porque scriptsig no está firmado por la clave privada. por lo que el minero puede modificar este scriptsig siempre que no altere la funcionalidad. tenga en cuenta que bip 62 (programado para su lanzamiento en bitcoin 0.11) eliminará la maleabilidad de las transacciones para los scripts estándar; sin embargo, para ciertos scripts no estándar, la maleabilidad siempre será un problema. por ejemplo, si el script txout que se gasta comienza conOP_DROPluego, cualquier valor de pila anterior (establecido al final de scriptsig) se ignora y, por lo tanto, un minero puede modificarlo sin alterar la funcionalidad de la transacción. dado que los hash de transacción incluyen scriptsig, esto alterará el hash de transacción. cualquier otra transacción que esperaba gastar de ese hash se frustrará temporalmente y tendrá que averiguar el nuevo valor de hash para gastar (siguiendo el rastro de la transacción en la cadena de bloques).

No, no puede crear ninguna "transacción inventada" en nombre de otra persona sin poseer la clave privada de ese otro nodo para esa transacción. Esta es quizás una pregunta similar.