🕵️VRF
Проверяемый рандом на KLYNTAR
Кратко
Верифицируемая случайная функция (VRF) — это криптографический примитив который использует пару ключей и на основе некоторых входных данных может генерировать псевдослучайные значения при этом создавая и доказательство того, что оно было вычислено верно.
Такая "проверяемая случайность" может быть крайне важна для особых случаев использования в рамках сервисов или же рабочих процессов.
Только владелец закрытого ключа может вычислить хэш и доказательство, но любой, у кого есть открытый ключ, может проверить правильность хэша и валидность доказательства.
Немного кода
Вы можете заметить небольшой пример прямо в репозитории ядра. И хотя VRF пока что не входит в наши разработки, она тем не менее доступна для использования и применения в ваших разработках.
Вы можете увидеть этот пример здесь
Давайте для ясности рассмотрим код здесь
Рассмотрим что тут происходит
Изначально вы генерируете пару ключей
VRF может быть построена на любых кривых, но здесь используется кривая secp256k1 и ECDSA для генерации пар ключей. Мы вообще взяли те же ключи которые используем для генерации пар ключей для кольцевых подписей(то бишь, тут опять будет ETH совместимость).
Шаг 2 - вычисление
Дальше происходит вычисление хэша и доказательство. Здесь данные представлены в виде байт. Хэш становится публичным и используется как то самое "рандомное значение", а доказательство - как доказательство достоверности вычисления.
Шаг 3 - Проверка
Любой у кого есть публичный ключ, исходные входные данные и доказательство может проверить достоверность вычислений путём получения хэша и сравнения его с исходным.
Так а в чём тут прикол?
Для тех кто ещё не понял, суть тут в том, что даже владелец приватного ключа не может специально подобрать нужное значение хэша. Никто не может манипулировать или специально подбирать рандомное значение.
Так же интерес ещё в том, что до публикации хэша и доказательства никто не может угадать это рандомное значение которое сгенерировал какой-то адрес.
Юзкейс
Давайте представим себе что группа людей(2 человека) играет в игру в рамках которой все получают входную строку THIS IS A GAME и генерируют 32 байтные хэши с использованием VRF. Это продолжается 3 раза и каждый раз входными данными будет полученный на прошлом шаге хэш. После этого они суммируют значения хэшей. У кого сумма больше - тот и победил. Каждый из них имеет пару ключей и каждому известен публичный ключ другого. Можно визуализировать это так
При этом и Алиса и Боб будут уверены в невозможности получения других данных и честности данной игры
Где это может быть полезно и где применяется?
Здесь мы объяснили механизм VRF упрощённо, но похожим образом работает консенсус в Algorand
Мы предполагаем использование VRF в смарт-контрактах и сервисах на KLYNTAR
Ссылки
Last updated