Как ограничить ключ проверки DynamicProof в Mina

Динамическое доказательство получает ключ проверки во время исполнения. Для подтверждения нужной программы приложение должно ограничить множество принимаемых ключей.

Проверьте доказательство другой программы

Пусть расчётный zkApp ожидает доказательство того, что выплаты не превысили предел. Другая программа с тем же видом публичного входа может принимать произвольную сумму. Храните хеш разрешённого ключа проверки в доверенном состоянии или константе схемы, проверьте совпадение и затем само доказательство.

vk.hash.assertEquals(approvedProgramHash);
proof.verify(vk);

Проверьте публичное утверждение

Даже доказательство по разрешённому ключу может относиться к другому счёту или эпохе. Сопоставьте публичные поля с операцией контракта. При смене программы явно обновите разрешённый хеш через установленную процедуру и проверьте старые доказательства по новой политике.

Источники