Noob: ¿Cómo verifico que una transacción no provino de un hacker?

Estoy a punto de trabajar en mi primer proyecto ethereum.

Cuando un usuario abre MySecretApp, creará una transacción en la cadena de bloques de ethereum.

Mis preguntas son:

1) ¿Estoy compartiendo la cadena de bloques de ethereum (y los mil millones de transacciones existentes) con otras empresas? ¿O puedo crear una nueva cadena que solo contenga transacciones provenientes de MySecretApp?

1) ¿Cómo verifico que un hacker con una aplicación llamada HackersFakeApp no ​​publique una transacción en mi cadena? Solo quiero almacenar transacciones que provienen de mi aplicación.

¿La transacción se crea en la máquina del usuario o en un servidor que usted controla?
Sería desde un dispositivo físico (con wifi) que me compran

Respuestas (1)

Una configuración posible:

  • Almacene una clave privada dentro de los dispositivos físicos. Debe ser el mismo para todos los dispositivos y solo usted debe conocerlo. Debe asegurarse de que las personas no puedan acceder a él utilizando cualquier mecanismo que proporcione su hardware.

  • Escriba la clave pública de esta clave privada como una constante en su contrato inteligente

  • Al crear una transacción, el dispositivo utiliza la clave privada para firmar un mensaje que contiene los detalles de la transacción (por ejemplo, ID de método, argumentos, remitente y un número de secuencia)

  • El dispositivo transmite la transacción, con la firma como argumento

  • El contrato inteligente reconstruye el mensaje y verifica la firma del mensaje.

En este punto, puede estar seguro de que solo las transacciones que se enviaron desde uno de sus dispositivos se ejecutarán con éxito.

Si tiene más preguntas, solo comente, actualizaré esta respuesta.

¡Gracias! ¿Es esta una configuración común para blockchain con dispositivos físicos? ¿Es seguro tener la clave privada almacenada en todos estos dispositivos? ¿Creo que normalmente los dispositivos tendrían claves públicas y el contrato inteligente tendría la clave privada? (Soy un novato total, así que corrígeme si me equivoco)
@Edmund Esta es una configuración común. Nunca debe almacenar información secreta en un contrato inteligente, porque todo el código del contrato inteligente es visible públicamente en la cadena de bloques. Muchos chips utilizados en el mundo integrado tienen un mecanismo de bloqueo permanente incorporado como característica de hardware. Después de flashearlo, puede habilitar el bloqueo y ya nadie podrá leer la memoria del programa. Solo debe regalar la clave privada en la memoria bloqueada. El dispositivo que se verifica como fuente de cierta información debe tener la clave privada. El código que realiza la verificación siempre tiene la clave pública.
¡Wow, esta es una gran información! Tuve una idea equivocada. Entonces, usando esta configuración, ¿eso significaría que el consenso no es necesario? Honestamente, no estoy seguro de cómo funciona el consenso... que yo sepa, Ethereum maneja eso automáticamente, así que no tengo que preocuparme por eso, así que puedo crear transacciones y codificar con la suposición de que todo está seguro. ¿Es esto correcto?
@Edmund Consensus ocurre automáticamente dentro de la plataforma Ethereum. Todo lo que tiene que hacer es transmitir una transacción con una tarifa suficiente y esperar hasta que se confirme al minarla en un bloque (generalmente dentro de 5 a 40 segundos) y se ejecute con éxito.
¡¡Usted es el mejor!! Todo es mucho más claro ahora. ¡Muchas gracias!