Encontré el comando de compilación real que Newton utiliza para compilar un oráculo de datos, y responde a una pregunta que yo había estado asumiendo en lugar de comprobar.

jco componentize -w newton-provider.wit -o policy.wasm policy.js -d stdio random clocks http fetch-event

Ese indicador -d está haciendo un trabajo real. Está enumerando explícitamente a qué se le permite acceder a la componente WASM resultante: entrada/salida estándar, aleatoriedad, relojes, http, eventos de fetch. Nada más. Esto no es un cortafuegos en tiempo de ejecución añadido a posteriori: las capacidades se declaran en el momento de la compilación, se incorporan a la propia componente.

Yo había estado describiendo el sandboxing de oráculos de Newton como "bloqueado para acceder a IP privadas", lo cual es cierto, pero le resta importancia a lo que realmente está ocurriendo. El filtrado de red en tiempo de ejecución impide que una componente llegue a algún lugar al que no debería. La declaración de capacidades en el momento de la compilación es un paso anterior: la componente nunca tiene la capacidad general de hacer cualquier cosa más allá de esta lista con nombre, independientemente de lo que exista arriba como filtrado en tiempo de ejecución.

Dos capas, no una. Vale la pena conocer la diferencia cuando alguien te dice que el sandbox del oráculo es "seguro": es más importante frente a qué es seguro, dónde se aplica, que la afirmación de una sola palabra.

@NewtonProtocol $NEWT #Newt