Как работает алгоритм Proof‑of‑Fortune (PoF)
1. Исходные данные: seed для случайности
Система генерирует vrf_seed — начальное значение для VRF. Обычно это:
- хэш последнего блока блокчейна (например, TON);
- комбинация временных меток и предыдущих результатов.
Цель: сделать seed непредсказуемым и неподменяемым.
2. Выбор валидатора через VRF
Каждый активный валидатор:
- Берёт свой приватный ключ (sk) и vrf_seed.
- Вычисляет candidate = VRF(sk, vrf_seed) — 256‑битное число.
- Отправляет candidate в сеть.
Система выбирает валидатора, чей candidate:
- попадает в заданный диапазон (например, топ‑1 по значению);
- соответствует правилам отбора (зависит от события).
Почему это честно?
- VRF гарантирует, что candidate невозможно предсказать без sk.
- Любой участник может проверить корректность candidate по публичному ключу.
3. Формирование блока
Выбранный валидатор:
- Собирает данные события:room_id — идентификатор события (например, "lottery‑2025«);список участников;правила отбора (количество победителей, формат пар и т. д.).
- room_id — идентификатор события (например, «lottery‑2025»);
- список участников;
- правила отбора (количество победителей, формат пар и т. д.).
- Вычисляет результат жеребьёвкичерез VRF:vrf_output = VRF(sk, vrf_seed_for_result) Это может быть:случайное число;перестановка списка участников;бинарный выбор.
- случайное число;
- перестановка списка участников;
- бинарный выбор.
- Заполняет заголовок блока:vrf_seed (исходный seed);vrf_output (результат жеребьёвки);merkle_root (корень Меркла для списка участников);prev_pof_block_hash (хэш предыдущего блока PoF);signature (подпись валидатора).
- vrf_seed (исходный seed);
- vrf_output (результат жеребьёвки);
- merkle_root (корень Меркла для списка участников);
- prev_pof_block_hash (хэш предыдущего блока PoF);
- signature (подпись валидатора).
- Подписывает блок своим приватным ключом.
4. Верификация блока сетью
Любой узел может проверить:
- Корректность VRF:VRF_verify(pk, vrf_seed, vrf_output, proof) == true Где proof — доказательство, сгенерированное валидатором.
- Соответствие правилам:vrf_output соответствует заявленному selection_type (например, "топ‑5«);список участников не изменён (проверка через merkle_root).
- vrf_output соответствует заявленному selection_type (например, «топ‑5»);
- список участников не изменён (проверка через merkle_root).
- Подпись валидатора:подпись соответствует публичному ключу;блок не модифицирован.
- подпись соответствует публичному ключу;
- блок не модифицирован.
5. Финализация и запись в блокчейн
После проверки:
- Блок транслируется в сеть (например, в TON) как транзакция смарт‑контракта PoF.
- Блок включается в блокчейн — данные становятся неизменяемыми.
- Результат доступен для публичного аудита через:блокчейн‑эксплореры (Tonviewer, Tonscan);терминал GoodLuckCoin.
- блокчейн‑эксплореры (Tonviewer, Tonscan);
- терминал GoodLuckCoin.
6. Обновление параметров
После создания блока:
- LuckLevel валидатора увеличивается на 1 → снижает его шансы на следующий выбор.
- LuckLevel остальных валидаторов уменьшается на 1 (но не ниже 0) → восстанавливает их шансы.
- prev_pof_block_hash обновляется → обеспечивает связь блоков в цепи.
Эффект: предотвращает монополизацию процесса одним узлом.
Ключевые криптографические примитивы
- VRF (Verifiable Random Function)Генерирует случайный вывод с доказательством.Невозможно подделать без приватного ключа.Проверяется публично по pk, seed и proof.
- Генерирует случайный вывод с доказательством.
- Невозможно подделать без приватного ключа.
- Проверяется публично по pk, seed и proof.
- Ed25519Алгоритм подписей → защита авторства блока.
- Алгоритм подписей → защита авторства блока.
- SHA‑256Хэш‑функция для merkle_root и связей блоков.
- Хэш‑функция для merkle_root и связей блоков.
- Дерево МерклаОбеспечивает целостность списка участников.
- Обеспечивает целостность списка участников.
Почему это безопасно?
- Доказуемая случайностьVRF исключает манипуляции с выбором валидатора и результатом.Любой участник может перепровернуть расчёты.
- VRF исключает манипуляции с выбором валидатора и результатом.
- Любой участник может перепровернуть расчёты.
- Криптографическая защитаПодпись валидатора подтверждает авторство.Изменение блока ломает хэш‑связь (prev_pof_block_hash).
- Подпись валидатора подтверждает авторство.
- Изменение блока ломает хэш‑связь (prev_pof_block_hash).
- ПрозрачностьВсе данные (seed, vrf_output, merkle_root) публичны.Правила отбора зафиксированы в смарт‑контракте.
- Все данные (seed, vrf_output, merkle_root) публичны.
- Правила отбора зафиксированы в смарт‑контракте.
- ДецентрализацияНет центрального органа — выбор валидатора математически обоснован.
- Нет центрального органа — выбор валидатора математически обоснован.
Примеры сценариев
- ЛотереяВалидатор генерирует vrf_output → определяет победителей.Блок с результатами записывается в TON.Участники проверяют VRF и список победителей.
- Валидатор генерирует vrf_output → определяет победителей.
- Блок с результатами записывается в TON.
- Участники проверяют VRF и список победителей.
- Отбор спикеровVRF выбирает 5 спикеров из 100 кандидатов.Результат фиксируется в блоке с merkle_root.
- VRF выбирает 5 спикеров из 100 кандидатов.
- Результат фиксируется в блоке с merkle_root.
- Формирование парВалидатор создаёт случайные пары для мероприятия.Блок подписывается и отправляется в сеть.
- Валидатор создаёт случайные пары для мероприятия.
- Блок подписывается и отправляется в сеть.
Преимущества PoF
- Скорость: блок создаётся за секунды (без ожидания кворума).
- Низкие затраты: один валидатор вместо множества узлов.
- Честность: случайность подтверждена математикой.
- Простота: узлы только проверяют, а не согласовывают.
- Масштабируемость: поддержка тысяч событий параллельно.
Ограничения и меры защиты
- Атака злонамеренного валидатораРешение: VRF‑проверка отвергнет некорректный vrf_output.
- Решение: VRF‑проверка отвергнет некорректный vrf_output.
- Задержка VRFРешение: оптимизация алгоритмов и кэширование.
- Решение: оптимизация алгоритмов и кэширование.
- Зависимость от TONРешение: локальное хранение блоков до синхронизации.
- Решение: локальное хранение блоков до синхронизации.
Вывод
Proof‑of‑Fortune заменяет сложный консенсус (PoW/PoS) на математически доказуемую случайность. Ключевые идеи:
- Один валидатор создаёт блок — но его выбор и результат проверены VRF.
- Мгновенная финализация — без ожидания подтверждения сети.
- Полная прозрачность — любой участник может перепроверить данные.
Это делает PoF идеальным для сценариев, где критичны:
- честность жеребьёвки;
- скорость финализации;
- низкие операционные издержки.
Proof-of-Fortune (PoF) спроектирован так, чтобы минимизировать риски компрометации системы одним валидатором, даже если он действует злонамеренно. Это достигается за счёт криптографических механизмов и распределённой верификации, которые не требуют проверки всех узлов сети, но обеспечивают безопасность и прозрачность процесса. Рассмотрим ключевые аспекты.
Механизмы защиты в PoF
- Verifiable Random Function (VRF)Выбор валидатора происходит на основе VRF — криптографической функции, которая генерирует случайное число и доказательство его корректности. Результат VRF невозможно предсказать или подделать без приватного ключа валидатора. Любой участник сети может проверить корректность VRF по открытым данным: vrf_seed, публичному ключу и vrf_output.
- Проверка блока сетьюПосле формирования блока валидатором, сеть проверяет:Корректность VRF через функцию VRF_verify(public_key, vrf_seed, vrf_output).Соответствие vrf_output правилам отбора (например, топ-1 по значению).Целостность данных через merkle_root (корень Меркла для списка участников). Подпись валидатора, подтверждающую авторство и целостность блока.
- Корректность VRF через функцию VRF_verify(public_key, vrf_seed, vrf_output).
- Соответствие vrf_output правилам отбора (например, топ-1 по значению).
- Целостность данных через merkle_root (корень Меркла для списка участников).
- Подпись валидатора, подтверждающую авторство и целостность блока.
- Ограничения и балансировкаСистема использует параметры, которые снижают вероятность повторного выбора одного и того же валидатора:LuckLevel — корректирующий коэффициент, который увеличивает штраф за «удачу» узла, снижая его шансы на следующий выбор. NFT-талисманы — бонусы, которые могут влиять на вероятность выбора, но их эффект ограничен.
- LuckLevel — корректирующий коэффициент, который увеличивает штраф за «удачу» узла, снижая его шансы на следующий выбор.
- NFT-талисманы — бонусы, которые могут влиять на вероятность выбора, но их эффект ограничен.
- Формальная спецификация и доказательства безопасностиВ формальной спецификации PoF доказаны:Непредвзятость выбора: вероятность выбора узла не зависит от его вычислительных ресурсов. Устойчивость к Sybil-атакам: создание фальшивых узлов не увеличивает вероятность выбора из-за требования минимального стейкинга и привязки выхода VRF к публичному ключу. Безопасность и живучесть: при наличии хотя бы одного честного узла система генерирует валидные блоки и избегает форков.
- Непредвзятость выбора: вероятность выбора узла не зависит от его вычислительных ресурсов.
- Устойчивость к Sybil-атакам: создание фальшивых узлов не увеличивает вероятность выбора из-за требования минимального стейкинга и привязки выхода VRF к публичному ключу.
- Безопасность и живучесть: при наличии хотя бы одного честного узла система генерирует валидные блоки и избегает форков.
Возможные угрозы и их нейтрализация
УгрозаМеханизм защитыПодделка блока злонамеренным валидаторомVRF-проверка отвергнет некорректныйvrf_output. Атака 51% (контроль большинства валидаторов)В PoF нет необходимости контролировать большинство узлов, так как выбор валидатора случаен и верифицируем. Sybil-атаки (создание множества фальшивых узлов)Минимальный стейкинг и привязка выхода VRF к публичному ключу исключают подмену. Квантовые атакиТребуется переход на постквантовые VRF.
Сравнение с другими механизмами консенсуса
МеханизмТребование проверки всех узловУстойчивость к одиночной атакеPoFНет (достаточно проверки одного блока)Высокая (благодаря VRF и верификации)PoWНет (майнеры конкурируют, но проверка блоков распределена)Уязвим при концентрации 51% мощностейPoSНет (валидаторы выбираются по стейку, но требуется кворум)Уязвим при контроле 51% стейка
Вывод
Proof-of-Fortune устойчив к компрометации одним валидатором благодаря криптографической верификации, распределённой проверке блоков и механизмам балансировки шансов. Однако система не лишена уязвимостей, например, потенциальной угрозы квантовых атак, что требует дальнейших разработок в области постквантовой криптографии. Решение квантовых атак описано в статье WaveVRF, где предлагается защита функции от квантовых атак квантовыми компьютерами, в статье приводится доказательства устойчивости функции к квантовым атакам.
WaveVRF: постквантовая проверяемая псевдослучайная функция, основанная на кодах, исправляющих ошибки
Решается квантовая атака, квантовых компьютеров на алгоритм VRF ,
https://ntv.ifmo.ru/ru/article/23339/WaveVRF:_postkvantovaya_proveryaemaya_psevdosluchaynaya_funkciya,_osnovannaya_na_kodah,_ispravlyayuschih_oshibki.htm