Menemukan perintah build sebenarnya yang digunakan Newton untuk mengompilasi sebuah data oracle, dan ia menjawab pertanyaan yang selama ini saya asumsikan, alih-alih memeriksanya.
jco componentize -w newton-provider.wit -o policy.wasm policy.js -d stdio random clocks http fetch-event
Flag -d itu melakukan pekerjaan nyata. Itu secara eksplisit mencantumkan apa saja yang diizinkan untuk disentuh oleh komponen WASM yang dihasilkan: standar I/O, keacakan (randomness), clock, http, dan event fetch. Tidak yang lain. Ini bukan firewall runtime yang dipasang belakangan setelah semuanya — kapabilitasnya dinyatakan pada waktu build, dimasukkan langsung ke dalam komponen itu sendiri.
Saya selama ini menggambarkan sandboxing oracle Newton sebagai "terblokir dari mencapai IP privat," yang memang benar, tetapi itu meremehkan apa yang sebenarnya terjadi. Penyaringan jaringan saat runtime mencegah komponen menjangkau tempat yang seharusnya tidak bisa. Deklarasi kapabilitas pada waktu build adalah langkah yang lebih awal — komponen tersebut tidak pernah punya kemampuan umum untuk melakukan apa pun selain daftar nama ini, apa pun penyaringan runtime yang ada di atasnya.
Dua lapis, bukan satu. Penting diketahui bedanya ketika seseorang memberi tahu Anda bahwa sandbox oracle itu "aman" — aman terhadap apa, diberlakukan di mana, dan bagaimana, lebih penting daripada klaim satu kata itu.
@NewtonProtocol $NEWT #Newt
jco componentize -w newton-provider.wit -o policy.wasm policy.js -d stdio random clocks http fetch-event
Flag -d itu melakukan pekerjaan nyata. Itu secara eksplisit mencantumkan apa saja yang diizinkan untuk disentuh oleh komponen WASM yang dihasilkan: standar I/O, keacakan (randomness), clock, http, dan event fetch. Tidak yang lain. Ini bukan firewall runtime yang dipasang belakangan setelah semuanya — kapabilitasnya dinyatakan pada waktu build, dimasukkan langsung ke dalam komponen itu sendiri.
Saya selama ini menggambarkan sandboxing oracle Newton sebagai "terblokir dari mencapai IP privat," yang memang benar, tetapi itu meremehkan apa yang sebenarnya terjadi. Penyaringan jaringan saat runtime mencegah komponen menjangkau tempat yang seharusnya tidak bisa. Deklarasi kapabilitas pada waktu build adalah langkah yang lebih awal — komponen tersebut tidak pernah punya kemampuan umum untuk melakukan apa pun selain daftar nama ini, apa pun penyaringan runtime yang ada di atasnya.
Dua lapis, bukan satu. Penting diketahui bedanya ketika seseorang memberi tahu Anda bahwa sandbox oracle itu "aman" — aman terhadap apa, diberlakukan di mana, dan bagaimana, lebih penting daripada klaim satu kata itu.
@NewtonProtocol $NEWT #Newt