Визначення
Fork (від англ. «розвилка») — це розбіжність станів блокчейна, за якої різні ноди мають різне уявлення про те, який слот є останнім. У контексті Solana fork означає ситуацію, коли два або більше валідатори пропонують різні блоки для одного й того ж слота, і мережа тимчасово роздвоюється на конкуруючі гілки.
У гілці MEV та протоколу Solana fork — це не навмисне розгалуження правил (як-от хардфорк у Bitcoin), а природний наслідок високої пропускної здатності: лідер може транслювати блок не всім нодам одночасно, і частина мережі бачить одну версію слота, інша — іншу.
Як працює
Механізм fork у Solana базується на кількох принципах:
- Лідерський слот. Кожен слот має призначеного лідера, який має ексклюзивне право запропонувати блок. Якщо лідер створює кілька різних версій блоку для одного слота (наприклад, через MEV-екстракцію), виникає fork.
- Голосування валідаторів. Інші валідатори отримують обидві версії й голосують за ту, яку побачили першою або яку вважають коректною. Голоси прив'язуються до конкретної гілки.
- Вибір найважчої гілки. Solana використовує принцип «найбільшого накопиченого стейку» — канонічною визнається гілка, за яку проголосувала найбільша сукупна вага стейку.
- Фіналізація. Після досягнення достатньої кількості голосів (supermajority) гілка вважається фіналізованою, а альтернативна — відкидається.
У контексті MEV fork є ключовим інструментом: MEV-боти (наприклад, у екосистемі Jito) можуть створювати кілька версій блоку з різним порядком транзакцій і пропонувати їх різним валідаторам, щоб максимізувати extracted value.
Приклад
Лідер слота 12345 отримує великий обсяг транзакцій, серед яких є арбітражна можливість між двома DEX на Solana. Замість одного блоку лідер формує три версії:
- Версія A: арбітражна транзакція йде першою, комісія за неї — висока.
- Версія B: арбітражна транзакція йде другою, комісія — середня.
- Версія C: арбітражна транзакція відсутня, але блок містить більше звичайних транзакцій.
Лідер надсилає різні версії різним підгрупам валідаторів. Ті, хто отримав версію A, голосують за неї. Якщо версія A набирає найбільшу сукупну вагу стейку, вона стає канонічною, а MEV-бот отримує максимальний прибуток. Версії B і C відкидаються — це й є розв'язання fork.
Типова помилка
Найпоширеніша помилка — плутати fork у Solana з навмисним протокольним хардфорком (як-от розгалуження Ethereum на ETH та ETC). У Solana fork у контексті MEV — це оперативна подія, що триває секунди або мілісекунди, і є частиною нормального роботи консенсусу, а не спробою змінити правила мережі. Інша помилка — вважати, що fork означає «збій мережі». Насправді це передбачуваний механізм вибору канонічної гілки, і мережа проектована так, щоб forks розв'язувалися швидко.
Пов'язані матеріали
Внутрішні переходи
- Client diversity — як різноманітність клієнтів впливає на стійкість мережі під час fork-сценаріїв.
- Turbine — протокол розповсюдження блоків у Solana, який зменшує ймовірність та тривалість fork.