WebAssembly se utiliza en Polkadot y Substrate como objetivo de compilación para el tiempo de ejecución.
¿Qué es WebAssembly? #
WebAssembly, abreviado simplemente Wasm, es un formato de instrucción binaria para una máquina virtual basada en la pila. Wasm está diseñado como un objetivo portátil para la compilación de lenguajes de alto nivel como C/C++/Rust, permitiendo el despliegue en la web de aplicaciones de cliente y servidor.
¿Por qué WebAssembly? #
WebAssembly es un formato binario agnóstico para la plataforma, lo que significa que ejecutará las mismas instrucciones en cualquier máquina en la que esté operando. Las Blockchains necesitan determinación para tener actualizaciones de transición de estado fiables en todos los nodos de la red peer-to-peer sin forzar a cada peer a ejecutar el mismo hardware exacto. Wasm es un buen ajuste para la fiabilidad entre el conjunto de máquinas posiblemente diversas. Wasm es eficiente y rápido. La eficiencia significa que puede ser cargado en la cadena como un blob de código sin causar demasiada sobrecarga de estado mientras mantiene su capacidad de ejecución a velocidades casi nativas.
Actualizaciones sin Forkless #
Al utilizar Wasm en Substrate, el marco de trabajo que alimenta a Polkadot, Kusama y muchas cadenas de conexión, las cadenas tienen la capacidad de actualizar su lógica de tiempo de ejecución sin bifurcarse. La bifurcación dura es un método estándar para actualizar una blockchain que es lento, ineficiente y propenso a errores debido a los niveles de coordinación fuera de línea requeridos, y por lo tanto, la propensión a agrupar muchas actualizaciones en un evento a gran escala. Al desplegar Wasm en la cadena y hacer que los nodos autoactúen la nueva lógica a una determinada altura de bloque, las actualizaciones pueden ser pequeñas, aisladas y muy específicas.
Recursos #
- WebAssembly.org – Página de inicio de WebAssembly que contiene un enlace a la especificación.
- Wasmi – Intérprete de WebAssembly escrito en Rust.
- Parity Wasm – serialización/deserialización de WebAssembly en Rust.
- Wasm utils – Colección de utilidades Wasm utilizadas en el desarrollo de contratos Parity y Wasm.