En mi opinión, la canonicalización es el paso en el que Newton transforma un Intent ambiguo en una entrada lo bastante precisa como para que una Policy la evalúe de forma coherente.

Un Intent sin procesar puede llegar en muchas formas. Para la misma solicitud de intercambio, un usuario puede introducir 1 ETH, otro puede usar 10¹⁸ wei, mientras que alguien más puede referirse al activo mediante su símbolo de token en lugar de su dirección de contrato. Se puede proporcionar un plazo o omitirse porque el usuario asume que el sistema lo inferirá.

Para un ser humano, estas expresiones pueden parecer equivalentes.

Para un motor de Policy, no es la misma entrada.

Antes de la evaluación, Newton necesita analizar el Intent en componentes definidos: quién solicita la acción, qué acción se solicita, qué activo y objetivo están involucrados, y qué restricciones rigen la ejecución.

Solo entonces puede comenzar la normalización.

Los identificadores de activos, importes, cadenas, destinatarios, plazos, deslizamiento y otras restricciones necesitan referencias, unidades, tipos y formatos estandarizados para que el orden de los campos no pueda alterar el significado del Intent.

También hacen falta reglas comunes para los valores predeterminados. Cuando falta un campo requerido o un parámetro permite múltiples interpretaciones, el sistema no debería dejar que cada operador haga sus propias suposiciones. El Intent debe tratarse como inválido o insuficientemente especificado antes de que se ejecute la Policy.

Una vez que los campos se validan y normalizan, Newton puede construir una representación canónica: un único objeto semántico que representa el Intent original. Luego puede serializarse bajo las mismas reglas, asegurando que cada operador reciba la misma estructura, valores y significado.

Esta es la parte que considero esencial.

Una Policy no debería evaluar las palabras que ingresó el usuario. Debería evaluar el Intent normalizado, después de haber eliminado las diferencias en formato, unidades y expresión.

Si este paso falla, ni siquiera una Policy determinista puede salvar el sistema.

Newton solo puede preservar la coherencia de la autorización cuando cada operador recibe el mismo Intent canónico antes de la evaluación por la Policy.
@NewtonProtocol $NEWT #Newt $LAB $BTW