На мою думку, канонікалізація — це крок, на якому Ньютон перетворює неоднозначний Intent на вхідні дані, достатньо точні, щоб Політика могла послідовно їх оцінювати.
Сирий Intent може надходити в багатьох формах. Для тієї самої заявки на обмін один користувач може ввести 1 ETH, інший — використати 10¹⁸ wei, а хтось інший може послатися на актив за його токенним символом замість адреси його контракту. Дедлайн може бути наданий або пропущений, бо користувач припускає, що система його виведе.
Для людини ці вирази можуть здаватися еквівалентними.
Для рушія Політики — ні.
Перед оцінюванням Ньютон має розібрати Intent на визначені компоненти: хто запитує дію, яку дію запитано, який актив і ціль задіяні та які обмеження керують виконанням.
Лише тоді може початися нормалізація.
Ідентифікатори активів, суми, ланцюги, одержувачі, дедлайни, проскальзування та інші обмеження мають мати стандартизовані посилання, одиниці, типи й формати, щоб порядок полів не міг змінити зміст Intent.
Також потрібне спільне правило для значень за замовчуванням. Коли обов’язкове поле відсутнє або параметр допускає кілька тлумачень, система не повинна залишати кожному оператору право робити власні припущення. Перед тим, як Політика запуститься, Intent слід вважати недійсним або недостатньо специфікованим.
Після валідації та нормалізації полів Ньютон може сформувати канонічне представлення: єдиний семантичний об’єкт, що описує вихідний Intent. Потім його можна серіалізувати за тими самими правилами, щоб кожен оператор отримував однакові структуру, значення та сенс.
Ось це я вважаю критично важливим.
Політика не повинна оцінювати слова, які ввів користувач. Вона має оцінювати нормалізований Intent — після того, як відмінності у форматі, одиницях і способі вираження усунуто.
Якщо цей крок не вдається, навіть детермінована Політика не зможе врятувати систему.
Ньютон може зберегти узгодженість авторизації лише тоді, коли кожен оператор отримує один і той самий канонічний Intent до оцінювання Політикою.
@NewtonProtocol $NEWT #Newt $LAB $BTW
Сирий Intent може надходити в багатьох формах. Для тієї самої заявки на обмін один користувач може ввести 1 ETH, інший — використати 10¹⁸ wei, а хтось інший може послатися на актив за його токенним символом замість адреси його контракту. Дедлайн може бути наданий або пропущений, бо користувач припускає, що система його виведе.
Для людини ці вирази можуть здаватися еквівалентними.
Для рушія Політики — ні.
Перед оцінюванням Ньютон має розібрати Intent на визначені компоненти: хто запитує дію, яку дію запитано, який актив і ціль задіяні та які обмеження керують виконанням.
Лише тоді може початися нормалізація.
Ідентифікатори активів, суми, ланцюги, одержувачі, дедлайни, проскальзування та інші обмеження мають мати стандартизовані посилання, одиниці, типи й формати, щоб порядок полів не міг змінити зміст Intent.
Також потрібне спільне правило для значень за замовчуванням. Коли обов’язкове поле відсутнє або параметр допускає кілька тлумачень, система не повинна залишати кожному оператору право робити власні припущення. Перед тим, як Політика запуститься, Intent слід вважати недійсним або недостатньо специфікованим.
Після валідації та нормалізації полів Ньютон може сформувати канонічне представлення: єдиний семантичний об’єкт, що описує вихідний Intent. Потім його можна серіалізувати за тими самими правилами, щоб кожен оператор отримував однакові структуру, значення та сенс.
Ось це я вважаю критично важливим.
Політика не повинна оцінювати слова, які ввів користувач. Вона має оцінювати нормалізований Intent — після того, як відмінності у форматі, одиницях і способі вираження усунуто.
Якщо цей крок не вдається, навіть детермінована Політика не зможе врятувати систему.
Ньютон може зберегти узгодженість авторизації лише тоді, коли кожен оператор отримує один і той самий канонічний Intent до оцінювання Політикою.
@NewtonProtocol $NEWT #Newt $LAB $BTW
