Menurut saya, kanonalisasi adalah langkah di mana Newton mengubah Intent yang ambigu menjadi input yang cukup presisi agar suatu Policy dapat mengevaluasi secara konsisten.

Sebuah Intent mentah dapat datang dalam banyak bentuk. Untuk permintaan pertukaran yang sama, satu pengguna mungkin memasukkan 1 ETH, sementara pengguna lain menggunakan 10¹⁸ wei, dan yang lain mungkin merujuk aset tersebut dengan simbol tokennya, bukan alamat kontraknya. Tenggat waktu bisa diberikan atau dihilangkan karena pengguna mengasumsikan sistem akan menyimpulkannya.

Bagi manusia, ungkapan-ungkapan ini mungkin tampak setara.

Namun bagi mesin Policy, itu bukan input yang sama.

Sebelum evaluasi, Newton perlu mengurai Intent menjadi komponen yang ditetapkan: siapa yang meminta tindakan, tindakan apa yang diminta, aset dan target apa yang terlibat, serta batasan apa yang mengatur eksekusi.

Barulah normalisasi bisa dimulai.

Pengenal aset, jumlah, rantai, penerima, tenggat waktu, slippage, dan batasan lain perlu rujukan, satuan, tipe, dan format yang distandardisasi supaya urutan field tidak dapat mengubah makna Intent.

Nilai default juga perlu aturan yang sama. Jika sebuah field yang diperlukan hilang atau sebuah parameter memungkinkan banyak interpretasi, sistem tidak boleh membiarkan setiap operator membuat asumsi sendiri. Intent harus dianggap tidak valid atau tidak cukup spesifik sebelum Policy dijalankan.

Setelah field divalidasi dan dinormalisasi, Newton dapat menyusun representasi kanonis: satu objek semantik yang mewakili Intent asli. Lalu objek itu dapat diserialisasi dengan aturan yang sama, memastikan setiap operator menerima struktur, nilai, dan makna yang sama.

Inilah bagian yang saya anggap esensial.

Sebuah Policy tidak seharusnya mengevaluasi kata-kata yang dimasukkan pengguna. Policy harus mengevaluasi Intent yang telah dinormalisasi, setelah perbedaan dalam format, satuan, dan ekspresi dihilangkan.

Jika langkah ini gagal, bahkan Policy yang deterministik pun tidak dapat menyelamatkan sistem.

Newton hanya dapat menjaga konsistensi otorisasi ketika setiap operator menerima Intent kanonis yang sama sebelum evaluasi Policy.
@NewtonProtocol $NEWT #Newt $LAB $BTW