
Потратил некоторое время на изучение SP1 Tendermint light-клиента Cosmos IBC Eureka на Ethereum. Интересовался, могут ли более новые версии SP1 по-прежнему работать с уже развернутым верификатором без необходимости обновления контракта. Обнаружил несколько интересных вещей. Извлек все 4 официальных производственных ELF-файла и воспроизвел их точные ключи верификации программы с использованием SP1 v6.1 и v6.9. Затем сгенерировал реальный свидетель обновления Tendermint Cosmos Hub и выполнил оригинальный производственный ELF-файл с использованием обеих версий. Оба выполнения прошли успешно и дали идентичные публичные выходные данные объемом 768 байт, одинаковый расход газа и одинаковый SHA-256 хеш. Более интересная часть: SP1 v6.1, v6.9 и v6.10 все еще сообщают о версии схемы v6.1.0. Сравнил фактические двоичные файлы ключей верификации Groth16 из v6.1 и v6.10. Они идентичны байт в байт. Их SHA-256 хеш совпадает с хешем верификатора, уже развернутым на Ethereum: 0x4388a21c687fdd5f218d7e3d13190cac4c5355818d3605fd5fb811df468ee696 Таким образом, по крайней мере на уровне идентичности программы, выполнения и ключа верификации Groth16, совместимость сохраняется между этими версиями. Пока не сгенерировал подлинное доказательство с использованием более новой версии доказателя или не тестировал его против живого верификатора на Ethereum. Это следующий этап. Интересно наблюдать, насколько много в стеке доказательства может измениться, пока интерфейс верификации остается неизменным.

