Presentación de WASM en el mainnet 4.0 de INT

INT Spanish Community
INT Chain Spanish Community
4 min readOct 14, 2020

El mainnet 4.0 de INT es compatible con las máquinas virtuales EVM y WASM. Este artículo presenta los beneficios de WASM, los problemas encontrados durante el desarrollo y cómo se resolvieron.

¿WASM?

WASM (WebAssembly) es un nuevo método de codificación que se puede ejecutar en navegadores modernos. Como lenguaje ensamblador de bajo nivel, WASM tiene un formato binario compacto que puede ejecutarse cerca del rendimiento nativo y proporciona la compilación de lenguajes como C / C ++ para que puedan ejecutarse en la Web. WASM también es un estándar para navegadores web desarrollado por W3C WebAssembly Community Group (incluyendo Google y Mozilla), y es compatible con los navegadores principales.

Para las plataformas web, WASM proporciona una forma para que el código escrito en una variedad de lenguajes se ejecute en la web a una velocidad casi nativa. Los tres grandes gigantes tecnológicos, Google, Apple y Microsoft, también respaldan WASM. Los programas escritos en otros lenguajes (como C, C ++ y Java) se pueden compilar en código de bytes WASM. Asi, el cliente software que no podía ejecutarse en la Web puede hacerlo.

¿Por qué INT eligió WASM?

WASM utiliza codificación binaria, que tiene un rendimiento superior durante la ejecución del programa. El texto codificado en binario ocupa menos espacio de almacenamiento en comparación con los idiomas con mucho texto, lo que reduce efectivamente nuestros costos de almacenamiento. Además, WASM admite varios idiomas, por lo que podemos usar C / C ++ / RUST / Go y otros lenguajes para escribir contratos inteligentes y compilarlos en el código de bytes del formato WASM. Esto significa que INT puede ser compatible con todos los programas escritos con lenguajes de alto nivel. La capa de aplicación de INT será más fértil y la barrera de entrada será baja, lo que hará que el desarrollo sea accesible para más desarrolladores. Asimismo, el código de bytes WASM se puede compilar en código de máquina antes de ser ejecutado, además de ser ejecutado directamente por el intérprete WASM. Al integrar WASM, podemos ampliar las posibilidades para INT.

¿Qué innovaciones ha realizado INT con WASM?

  • Cobro de tarifas de gas

INT cobra por cada instrucción ejecutada por WASM, según sea necesario. Cuando la tarifa de GAS por la ejecución del contrato alcanza el límite solicitado por la persona que lo usa, la máquina virtual WASM cesa automáticamente la continuación del contrato.

  • Interfaz de llamada al sistema

INT proporciona varios tipos de interfaces de llamadas al sistema:

Algunas interfaces de la Libc standard library: principalmente funciones relacionadas con operaciones de memoria, como malloc y free. Como la máquina virtual WASM sirve como entorno de host para la ejecución de los contratos WASM, es necesario asignar y administrar la memoria virtual que ejecuta el contrato.

Interfaces relacionadas con blockchain: para facilitar que los contratos WASM accedan a información relacionada con la blockchain, INT proporciona interfaces para almacenamiento y lectura, transferencia entre cuentas, activación de eventos e información sobre transacciones.

Library: proporciona funciones de datos BigInt y JSON para ayudar a los desarrolladores de contratos.

  • Gestión de la memoria

Web Assembly proporciona administración de memoria para manejar cadenas de caracteres y otros tipos de datos complejos, y la memoria es un array (lista) de bytes que crece con el tiempo, según lo define WASM.

Por lo tanto, la máquina virtual WASM de INT crea una instancia de memoria de la memoria importada del contrato e inicializa el contenido del segmento de datos correspondiente antes de ejecutar el contrato.

INT utiliza el algoritmo Buddy para administrar la memoria del contrato WASM. El tamaño de memoria inicial predeterminado es 64 KB y el tamaño máximo es 256 KB.

  • Simplificando el desarrollo de contratos

Los contratos inteligentes juegan el papel de portadores de negocios del sistema blockchain y agregarán valor a la red de INT. Uno de los objetivos de INT es reducir el umbral de desarrollo y simplificar el proceso de desarrollo para que más empresas puedan migrar sus aplicaciones comerciales hacia el sistema de INT.

Resolver problemas después de introducir WASM

Durante las pruebas internas del desarrollo del contrato, descubrimos que se produjo una pérdida de memoria después de la introducción de la máquina virtual WASM. Dado que la arquitectura subyacente de INT se implementa utilizando el lenguaje “go”, cuando el contrato accede al método nativo subyacente a través de la interfaz de llamada al sistema, los datos devueltos por el método subyacente se almacenan en la memoria lineal de WASM. Dado que esta memoria no es asignada por el desarrollador a través de malloc (asignación dinámica de memoria), esto resultó en la pérdida de memoria. Además, la capa inferior restringe el límite superior de memoria a 256 KB, lo que provoca el fallo de funciones complejas de un contrato en tiempo de ejecución porque se excede el límite superior de memoria. El equipo técnico de INT ha adoptado RAII y SharedPtr en su SDK, que ya no expone la dirección de memoria original, pero devuelve objetos temporales en la pila, lo que resuelve el problema de pérdida de memoria.

Con esto concluye nuestro resumen del desarrollo con WASM. Trabajaremos en artículos más técnicos para dar una idea general de nuevos desarrollos con el mainnet 4.0 en un futuro cercano.

--

--

INT Spanish Community
INT Chain Spanish Community

Detallamos la información publicada por INTchain y lo traducimos al destino de los hispanohablantes, así como los artículos relacionados con el proyecto.