Почему переименование поля Candid может сломать клиенты
Candid кодирует метки полей числовыми идентификаторами. Переименование в исходном коде поэтому может изменить контракт, даже если тип значения сохранился.
Проверьте аргумент из старого клиента
Действующий клиент отправляет запись с обязательным полем amount. Новый метод с обязательным quantity ищет другую числовую метку. Можно переименовать локальную переменную после декодирования, сохранив внешний интерфейс. Для изменения передаваемого формата введите новую версию метода или спланируйте переход.
v1: record { amount : nat }
v2: record { quantity : nat }
client still sends the numeric field ID for "amount"
Проверьте совместимость в обе стороны
Сохраните примеры аргументов и ответов из выпущенного клиента. Декодируйте их новым интерфейсом и проверьте старый клиент на новых ответах. Успешный тест двух заново сгенерированных привязок может скрыть поломку у уже развёрнутых потребителей.