SputnikVM es una de las grandes innovaciones que nacen del arduo trabajo del equipo de desarrollo de Ethereum Classic y su ETC Labs Core.
La finalidad del desarrollo de SputnikVM es crear una nueva EVM (Ethereum Virtual Machine) para Ethereum Classic.
Para lograr esto, SputnikVM implementa las funcionalidades de la EVM original de Ethereum manteniendo la compatibilidad. Sin embargo, su diseño y codificación ha cambiado para adaptarse a los objetivos de sus desarrolladores: eficiencia, portabilidad y un bajo consumo de recursos computacionales. Gracias a esto, los desarrolladores apuntan a crear una VM capaz de adaptarse y desarrollar nuevos dispositivos IoT habilitados con la tecnología blockchain.
Otro punto adicional entre las funcionalidades de SputnikVM, es su compatibilidad con otras blockchains. Ciertamente, el proyecto está bajo la tutela de Ethereum Classic, pero sus desarrolladores han tomado la decisión de hacerla compatible también con Ethereum y otros proyectos basados en su código. Con ello se abre la posibilidad de usar a SputnikVM en otras blockchains, como por ejemplo, PoA Network.
Sin duda, un grandioso desarrollo con enormes posibilidades, especialmente en casos industriales, empresariales y del hogar.
Características de SputnikVM
Entre las características más relevantes de este proyecto, se puede destacar:
- Arquitectura de ejecución independiente. Esto significa que se puede iniciar como un proceso independiente o integrarse en otras aplicaciones, a diferencia de EVM que es monolítica. Esto permite la capacidad de ejecutar a SputnikVM de forma más modular.
- Un desarrollo universal. SputnikVM tiene la capacidad de funcionar en diferentes blockchain compatibles con las especificación de la EVM de Ethereum. Esto brinda la posibilidad de usar SputnikVM en otras blockchains compatibles. También significa que su portabilidad a otros proyectos compatibles con Ethereum es muy sencilla, como ocurre en el caso de PoA Network.
- Pensada para ser veloz y eficiente. SputnikVM está pensada en ser un implementación eficiente de EVM. Con esto se busca minimizar el impacto en el uso desmesurado de recursos computacionales y garantizar una apropiada ejecución y respuesta a los smart contracts en todo momento.
- Compatible con IoT. Esto significa que SputnikVM puede ser integrada en dispositivos de muy baja potencia computacional. Con ello se busca diversificar y expandir el alcance de Ethereum Classic en distintos dispositivos, especialmente aquellos dirigidos al IoT.
- Escrita en Rust. Rust es un lenguaje de programación centrado en la seguridad y el rendimiento. Debido a ello, SputnikVM puede gozar de ambas características de forma nativa.
¿Cómo funciona SputnikVM?
SputnikVM como toda maquina virtual, busca crear un nivel de abstracción entre el código escrito y la ejecución de dicho código. Asegurándose que bajo cualquier concepto, el código escrito siempre realice las mismas acciones bajo cualquier escenario de ejecución. Es decir, las máquinas virtuales buscan estandarizar y asegurar el procesamiento y ejecución del código que se les provee. Todo ello, de forma independiente a otros elementos que forman parte de la plataforma sobre la que se ejecuta.
Esto es muy importante en la tecnología blockchain. Pues con ello se garantiza una alta modularidad y resiliencia de todas las partes involucradas en la ejecución de smart contracts y DApps.
En este punto, el funcionamiento de SputnikVM no se diferencia en absoluto al de Ethereum Virtual Machine (EVM). Ambas máquinas virtuales, tienen el mismo objetivo: ejecutar el código de los smart contracts de forma segura. Pero para lograr esto, ambas usan aproximaciones distintas a la solución. En este punto, no queda duda que EVM es un desarrollo excelente pero su estructura le hacen poco apropiado para su uso en IoT. Para solventar esas fallas, se han creado distintas implementaciones, siendo SputnikVM una de la más prometedoras.
Pero para entender un poco más el funcionamiento de SputnikVM lo mejor es revisar algunas de las partes más importantes de la misma.
Lenguaje de programación
En primer lugar, SputnikVM puede hacer uso del lenguaje de programación Solidity o Rust para su smart contracts. Con ello buscan mantener la compatibilidad con los smart contracts ya creados. Por otro lado, la nueva interfaz en Rust mejora en gran medida la eficiencia y seguridad de los mismos.
Soporte de Opcodes
Los opcodes o códigos de operación, son un conjunto de instrucciones que sirven para ejecutar tareas específicas. EVM cuenta con una amplia variedad de opcodes. Estos le permiten computar casi cualquier cosa, contando con suficientes recursos. En este punto, la aproximación de SputnikVM es distinta. Para ello ofrece un soporte más reducido con 75 opcodes de momento. La finalidad tras esto es, ofrecer un soporte más reducido pero suficiente para ejecutar smart contracts en dispositivos IoT.
Esta aproximación tiene dos puntos positivos:
- Hace más sencilla y pequeña la base de código de SputnikVM frente a EVM. Esto permite que las revisiones de seguridad y portabilidad de la misma sean más sencillas de realizar.
- Minimiza el uso de recursos por parte de la máquina virtual, haciendo posible usarla en dispositivos con muy poca potencia.
Capacidad para ejecución en sistemas embebidos
Esta es una de las mayores características de funcionamiento de SputnikVM. La capacidad de ejecutarse como parte de un sistema embebido es algo único de este desarrollo. Esto por ejemplo, le permitiría a SputnikVM ser parte integral de un conjunto sensor en una línea de producción. Desde allí, la máquina virtual puede estar en constante ejecución de su smart contract. Revisando que se respete su programación en todo momento. Además de generar las acciones correspondientes que luego son almacenadas en la blockchain de la empresa para su revisión y auditoría.
Ciertamente EVM tiene capacidades parecidas, pero su coste computacional es mucho mayor debido a la complejidad del mismo.
Un claro ejemplo de esta utilidad, es el proyecto SputnikVM sobre Rux. Rux es un microkernel pensado para sistemas IoT y que tiene la cualidad de ser altamente modular y de código abierto.
Ejecución paralela
Otra gran diferencia en la forma de trabajo de SputnikVM es su capacidad de ejecutar tareas de forma paralela. Esto brinda un salto cualitativo a la hora de ejecutar el código de los smart contracts acelerando el proceso. Esto teniendo en cuenta que EVM realiza este proceso de forma secuencial, lo que obviamente tiene un impacto negativo en el rendimiento.
A pesar de esto, la paralelización en SputnikVM evita crear riesgos de seguridad en el tratamiento de los estados de las transacciones. Asegurándose en todo momento que las mismas serán tratadas de forma efectiva y sin contratiempos.
Ejemplo de uso para SputnikVM
Los principales casos de uso de SputnikVM están sobre todos centrados en dispositivos embebidos. Un buen ejemplo de la utilidad de este desarrollo puede ser el siguiente:
Una empresa de producción de yogurt, ha decidido montar una nueva línea de producción. Entre sus requerimientos ha decido usar tecnología blockchain para hacer un seguimiento minucioso del control de calidad. Para ello, creará una red de sensores que alimentarán a la blockchain de la empresa, con mediciones sobre la calidad del agua y la leche, temperatura de los tanques de fermentación, concentración de azúcares, y estado de la fermentación en todo momento. Esto con el fin de tener un control de calidad de primer nivel, junto a un historial completo y auditable de las acciones en dicha línea de producción.
En este punto, dada la simplicidad y las pocas necesidades de potencia de SputnikVM, esta se puede integrar a cada sensor dentro de la línea de producción. Con ello se abarata en costes evitando sensores y hardware más elaborado y potente. Además, una vez programados los sensores con un smart contract, pueden vigilar en todo momento, la tarea a la que fue asignado. Si algo va mal o bien en la línea, quedará registrado de forma inmutable en la blockchain. De esta forma, el control de calidad de la empresa mejora de forma considerable. Como resultado de esto, el producto final mantendrá la calidad que la empresa desea para sus consumidores.
¿Cuánto sabes, criptonauta?
¿SputnikVM tiene la capacidad de cambiar radicalmente el uso de blockchain en la IoT?¡CIERTO!
La capacidad de SputnikVM de integrarse a dispositivos IoT de bajo costo y poca potencia, es su principal atractivo para su adopción masiva. Esto gracias a que permite tokenizar distintos aspectos empresariales, industriales o del hogar, al tiempo que las empresas ahorran en dichas implementaciones. Todo ello debido al bajo coste en el diseño de hardware y software para tal fin.
Limitaciones de SputnikVM
Pese a los grandes avances que SputnikVM representa a la hora de llevar la tecnología blockchain al IoT, este desarrollo en la actualidad presenta varias limitaciones, entre ellas:
- Se encuentra en un estado temprano de desarrollo. Muchas de sus capacidades aún no están del todo probadas y pulidas.
- De momento ofrece un soporte incompleto de los opcodes de EVM. Esta situación puede llevar a muchos desarrolladores a pensar que SputnikVM no es adecuado para sus proyectos. Sin embargo, el estado de desarrollo de SputnikVM puede cambiar esto a medida que el proyecto madure, tan solo para ofrecer 100% de compatibilidad y soporte.
- Su capacidad de paralelización está solo disponible bajo programación en Rust. Una situación que limita el desarrollo de smart contracts con capacidad de paralelización a este lenguaje. Solidity y EVM de momento, no ofrecen soporte para esta característica.