¿Es posible usar EVM con datos de entrada no almacenados en la cadena de bloques?

Estoy interesado en computar datos médicos de forma descentralizada donde ninguno de los recursos informáticos ni el solicitante pueden acceder completamente a los datos por cuestiones de privacidad.

En este esquema, los servidores electos (computadoras descentralizadas) calculan partes de los datos de entrada sin procesar mediante un algoritmo público. Los datos calculados finalmente se transmiten al solicitante.

Desde mi comprensión de EVM, tanto los datos de entrada como el algoritmo se almacenan en la cadena de bloques, lo que limita en gran medida los recursos computacionales disponibles y amplía el tamaño de la cadena de forma innecesaria.

Poco después descubrí Ethereum Computation Market, que parece más interesante para mi aplicación.

Como todavía estoy confundido acerca de lo que realmente es EVM, me gustaría saber si puedo usarlo para:

  • Calcular datos cifrados emitidos desde una nube de lago de datos
  • Cifre el resultado utilizando un método similar a GPG
  • Envía el resultado en un servidor en la nube.

Respuestas (1)

EVM en sí es una máquina virtual que ejecuta un subconjunto de instrucciones muy restringido. Más oficialmente,

La máquina virtual de Ethereum (EVM) es el entorno de tiempo de ejecución para los contratos inteligentes en Ethereum. No solo está en un espacio aislado, sino que en realidad está completamente aislado, lo que significa que el código que se ejecuta dentro de la EVM no tiene acceso a la red, al sistema de archivos ni a otros procesos. Los contratos inteligentes incluso tienen acceso limitado a otros contratos inteligentes.

Los contratos viven en la cadena de bloques en un formato binario específico de Ethereum (código de bytes EVM). Sin embargo, los contratos generalmente se escriben en un lenguaje de alto nivel de Ethereum, se compilan en un código de bytes usando un compilador EVM y finalmente se cargan en la cadena de bloques usando un cliente de Ethereum.

(Ver aquí la fuente)

Parece que, en teoría, podría ejecutar cualquier cálculo dentro del EVM, pero aún existe el problema de esto: si el código se está ejecutando en la computadora, cualquier dato que esté usando puede ser descifrado por alguien decidido a verlo (por ejemplo, volcado de memoria de cualquier cosa utilizada por las instrucciones de nivel de ensamblador). Querría colocar los datos en un TPM o algo así como un contenedor PlayReady (la forma en que Microsoft oculta el código DRM de los inspectores de memoria convencionales) para asegurarlo de verdad.

Esto parece similar a proyectos como SETI@home, pero sin el requisito de encriptación.

Más teóricamente, está buscando "cifrado homomórfico", que todavía es un tema de investigación actualmente, por lo que es posible que aún no esté listo para su uso a gran escala.