Визначення
Proof of History (PoH) — це криптографічний годинник, який фіксує порядок подій у мережі Solana без узгодження часу між вузлами. PoH не є механізмом консенсусу: він лише створює перевірену хронологію, на яку консенсусний алгоритм спирається під час підтвердження блоків.
Як працює
Основу PoH становить ланцюг хешів SHA-256, де кожен наступний хеш обчислюється з попереднього та лічильника. Цей лічильник зростає на кожному кроці, тому будь-який вузол може перевірити, скільки кроків відокремлює дві події, не довіряючи жодному сторонньому джерелу часу.
Коли транзакція надходить до валідатора, вона записується в поточний стан ланцюга PoH. Сам запис містить хеш попереднього кроку, що робить неможливим підробку порядку подій заднім числом. Таким чином PoH розділяє дві завдання, які в інших блокчейнах часто змішані: встановлення хронології (PoH) і досягнення згоди (консенсус).
Приклад
Уявіть цифровий касовий апарат, який на кожну операцію друкує чек із номером попереднього чека та порядковим номером. Навіть якщо ви не бачили попередніх покупок, за номерами на чеках можна точно відновити послідовність і виявити пропущені записи. У Solana роль таких номерів виконують хеші PoH: вони дозволяють валідаторам миттєво визначити, яка транзакція відбулася раніше, без додаткового обміну повідомленнями.
Типова помилка
Найпоширеніша хиба — вважати Proof of History механізмом консенсусу чи альтернативою Proof of Stake. PoH не вирішує, які транзакції є правильними і який валідатор має право додати блок. Він лише гарантує, що всі учасники бачать однаковий порядок подій. Консенсус у Solana забезпечується окремим алгоритмом — Tower BFT, який працює поверх PoH.
Пов'язані матеріали
Внутрішні переходи
- Gulf Stream — механізм передавання транзакцій між валідаторами, який використовує порядок подій від PoH
- Tower BFT — консенсусний алгоритм Solana, що спирається на хронологію Proof of History
Додаткові ресурси
- Оригінальна технічна специфікація Solana — розділ про архітектуру PoH (перевіряйте актуальність за офіційним репозиторієм Solana на GitHub)