El equipo de desarrollo de NEAR Protocol realizó, posiblemente, una de las maniobras más elegantes y técnicamente complejas en la historia de blockchain: en pleno funcionamiento de la red principal, reemplazaron por completo la máquina virtual responsable de ejecutar todos los contratos inteligentes. Los usuarios, como estaba previsto, no notaron nada.
Durante mucho tiempo, NEAR dependió de NearVM, un fork del motor Wasmer. Esta solución era, en esencia, un "impuesto" privado al desarrollo: cada actualización del lenguaje Rust, cada nueva función de seguridad recaía exclusivamente sobre los hombros del equipo del protocolo. Como señaló uno de los antiguos desarrolladores del núcleo, el proyecto tuvo una suerte increíble en una ocasión: evitaron por casualidad una vulnerabilidad crítica en el Wasmer original, simplemente porque no lograron sincronizarse con su actualización a tiempo.
El nuevo fundamento fue Wasmtime, un estándar de la industria respaldado por la alianza Bytecode Alliance. Para demostrar la seguridad de la migración, los nodos de la red ejecutaron en paralelo tráfico real a través de ambas máquinas virtuales, cotejando cada resultado. Los resultados son impresionantes: la discrepancia en las comisiones fue inferior al 0,002%, y la velocidad de ejecución de los contratos aumentó aproximadamente cuatro veces.
La solución prohibida y las "bombas" para el compilador
Sin embargo, la principal dificultad no residía en la ejecución en sí, sino en la compilación de los contratos. En la arquitectura de NEAR, el despliegue de un contrato se compila directamente dentro de un bloque de apenas 600 milisegundos de duración. El compilador optimizador no tiene un límite superior de tiempo de ejecución, lo que abría la puerta a un ataque. Los especialistas crearon un contrato de 128 KB cuya compilación tomaba unos 7 segundos; esto era suficiente para "fallar" el bloque y ralentizar toda la red.
La solución obvia —introducir un límite de tiempo para la compilación— resultó estar prohibida. Como explicaron los ingenieros, diferentes validadores tardan distintos tiempos en compilar, y un contrato límite sería aceptado por unos nodos y rechazado por otros. El resultado sería una división de la red (fork) debido a una única configuración del compilador. El consenso requiere una previsibilidad absoluta, incluso a nivel del tiempo de compilación.
El equipo encontró otra salida. Implementaron Winch, un backend de un solo paso de Wasmtime, y le añadieron las funciones faltantes. Como resultado, el "peor caso de compilación" se redujo de 7,6 segundos a 36 milisegundos. El trabajo fuera de la blockchain proporcionó un lujo inaccesible para el protocolo: la compilación se trasladó a un tipo separado de procesadores, no vinculados a los nodos ejecutores.
El lanzamiento de Nearcore 2.12 trasladó el entorno de ejecución de NEAR de NearVM a Wasmtime. Para desarrolladores y usuarios, nada cambió, y en eso reside todo el sentido: el equipo cerró una deuda técnica crítica sin romper nada.
Opinión del analista: Este caso es un brillante ejemplo de cultura de ingeniería, donde la seguridad y la estabilidad de la red se anteponen al hype. Reemplazar el motor bajo carga es una operación a corazón abierto, y NEAR la llevó a cabo sin un solo fallo. Esto fortalece seriamente la confianza en el protocolo desde un punto de vista técnico.