Как проверить изменение стойких типов Motoko перед обновлением

Релиз может сохранить публичные методы Candid и одновременно нарушить совместимость хранимых данных. Сигнатура стабильных типов Motoko описывает эту сторону обновления.

Проверьте хранение отдельно от интерфейса

Изначально приложение хранило сумму счёта как Nat, а теперь хочет записывать форматированный текст. В счёте 17 уже есть число 450. До обновления проверьте старую и новую сигнатуры средствами компилятора. Смена объявления типа сама по себе не задаёт преобразование 450 в строку.

v1 stable state: invoices : [(Nat, Nat)]
proposed: invoices : [(Nat, Text)]
fixture: [(17, 450)]

Отрепетируйте преобразование

Опишите миграцию для используемого режима персистентности Motoko, включая правила округления и форматирования. Обновите заполненную тестовую канистру, прочитайте старые счета и внесите новые. Даже совместимая по типам миграция исказит суммы при ошибке пересчёта единиц.

Источники