¿Qué pasa si un nodo deshonesto ejecuta un programa diferente en EVM?

Quiero crear un programa (en la máquina virtual Ethereum), que pueda acceder a algunos datos bajo ciertas condiciones (solo si está autorizado). Entonces, el programa verifica la autorización y luego (eventualmente) accede a los datos.

¿Qué sucede si un nodo deshonesto ejecuta un programa diferente que accede a los datos sin verificar las autorizaciones? ¿Ethereum ofrece alguna protección contra el nodo que quiere ejecutar un programa "solo"? ¿O debería implementar algo que permita acceder a esos datos solo si una gran parte de los nodos logran el consenso?

Espero haberlo explicado claro. Gracias

¿A qué te refieres con acceder a los datos? leyendo datos en su contrato?

Respuestas (2)

Para que quede claro: no tienes privacidad en la cadena de bloques.

Puede almacenar algunos datos en un contrato inteligente y luego proporcionar algunas condiciones de acceso. Pero eso solo limita los datos que se pueden ver llamando al código del contrato inteligente.

La forma en que funciona blockchain, al menos por ahora, es que todos los que extraen tienen toda la información de blockchain almacenada en su disco. Por lo tanto, nadie les impide simplemente ingresar al disco y buscar cualquier cosa almacenada en la cadena de bloques sin usar ninguna llamada de función o interactuar con contratos inteligentes.

Existen algunas técnicas que podrían usarse para ocultar información en blockchain, pero en realidad no están relacionadas con blockchain. Por defecto, blockchain no proporciona privacidad.

Para responder a la otra pregunta: si un nodo ejecuta un código diferente, el que está almacenado en el contrato inteligente será detectado por la red y no validará la ejecución.

Si sus datos residen en el contrato, todos los nodos pueden leerlos sin pedir permiso. Lo que Ethereum garantiza es que solo el cambio de estado que describe su contrato es correcto. Correcto significa que fue iniciado por una transacción con suficiente gas y que el resultado de la ejecución está correctamente publicado en la cadena de bloques. Esto está garantizado porque cada nodo ejecuta el contrato para extraer un bloque correctamente. Entonces, otros nodos verían que el árbol de estado que genera el atacante no es correcto y rechazarían el bloque como inválido.