wasm-filters), estás escribiendo la lógica exacta que un Agente inyectará en los Nodos de Datos remotos.
Debido a que esta lógica debe ser completamente agnóstica al SO y estar estrictamente aislada (sandboxed), no puedes compilarla apuntando a arquitecturas estándar como x86_64 o arm64. Debe ser compilada a WebAssembly, apuntando explícitamente al estándar WASI (WebAssembly System Interface).
Configurando el Target del Compilador
Asegúrate de que tu toolchain de Rust tenga instalada la librería estándar de WASI.NMP actualmente apunta a WASI Preview 1 (
wasm32-wasi). Estamos monitoreando activamente wasm32-wasip2 (El Model de Componentes) y migraremos el motor Wasmtime para soportar objetos complejos fuertemente tipados cruzando el límite del motor en nuestro próximo lanzamiento.Escribiendo un Filtro (Filter)
Un Filtro NMP típico es código estándar de Rust, con la salvedad de que las operaciones de red y de hilos (threading) fallarán (panic) si son invocadas, debido a las restricciones de Sandboxing en el servidor de destino.src/main.rs
Compilación
Para compilar tu lógica en el payload de inyección.wasm, ejecuta Cargo apuntando a la arquitectura WASI:
target/wasm32-wasi/release/filter.wasm) es lo que el nmp-client carga en memoria y transmite al par (peer) a través de la red.