У традиційних блокчейнах поширення блоків відбувається через однорангову мережу, в якій нові блоки та транзакції транслюються на всі вузли поширення. Цей процес зазвичай відбувається послідовно або затоплений. Однак цей метод не можна масштабувати, оскільки ним стає важко керувати в міру зростання мережі через величезну кількість комунікацій. Розглянемо мережу з 35 000 валідаторів. Лідеру потрібно передати блок розміром 128 МБ (близько 500 000 транзакцій по 250 байт на транзакцію) усім 35 000 валідаторам. Традиційна реалізація блокового розповсюдження вимагатиме від лідера унікального підключення до кожного валідатора та передачі повних 128 МБ 35 000 разів. Це призведе до загальної передачі даних у 4,69 ТБ, що значно перевищує звичайну пропускну здатність і буде неможливо пристосувати до такої кількості з’єднань. Щоб вирішити проблему повільного розповсюдження блоків, Солана представив Turbine, багаторівневий механізм розповсюдження блоків, який використовується кластерами для трансляції записів у реєстрі на всі вузли. Загалом, Turbine розбиває блоки на більш дрібні блоки та поширює їх через порядок вузлів, зменшуючи навантаження на окремий вузол. Що таке турбіна? Архітектура Turbine була значною мірою натхненна BitTorrent. Обидва покладаються на фрагментацію даних — розбиття великих даних на менші частини — і використовують однорангову мережу для розповсюдження даних. Турбіна оптимізована для потокової передачі. Він передає дані лише за допомогою UDP, що забезпечує переваги затримки. Він реалізує випадковий шлях для кожного пакета через мережу, коли лідери (виробники блоків) передають свої дані. Така висока швидкість розповсюдження блоків дозволяє Solana підтримувати високу пропускну здатність. Крім того, Turbine вирішує питання доступності даних, гарантуючи, що всі вузли можуть отримати доступ до необхідних даних для ефективної перевірки транзакцій. Це робиться без потреби у величезній пропускній здатності, яка є типовим вузьким місцем в інших блокчейн-мережах. Блоковий процес поширення турбіни Перед розповсюдженням блоку лідер створює та впорядковує блок, враховуючи вхідний потік транзакцій. Після того, як блок буде побудовано, він буде готовий до надсилання через Turbine до решти мережі. Цей процес називається . Потім повідомлення передаються між валідаторами, і ці повідомлення інкапсулюються в дані блоку, щоб відповідати статусу зобов’язання «підтверджено» або «завершено». блоковим розповсюдженням У той час як лідери створюють і пропонують цілі блоки, фактичні дані надсилаються як фрагменти (часткові блоки) до інших валідаторів у мережі. Частини — це атомарні одиниці, які надсилаються між валідаторами. Цей процес подрібнення та розповсюдження забезпечує швидкий і ефективний розподіл блокових даних у Solana, підтримуючи високу пропускну здатність і безпеку мережі. Примітка. Підтверджений блок отримав переважну більшість голосів у реєстрі, тоді як остаточний блок був підтверджений і містить 31+ підтверджених блоків, побудованих поверх цільового блоку. Кодування стирання Перед надсиланням до Turbine Tree фрагменти кодуються за допомогою кодування стирання Ріда-Соломона, методу захисту даних, який використовує певні типи коду для виправлення помилок. Цей метод призначений для захисту від втрати даних у разі збоїв або помилок. Він розділяє дані на менші блоки та кодує кожен блок додатковою інформацією. Turbine значною мірою покладається на повторну передачу пакетів між валідаторами, які можуть вирішити повторно транслювати неправильні або неповні дані. Через повторну передачу втрата пакетів у всій мережі збільшується, і ймовірність того, що пакет не досягне місця призначення, зростає з кожним стрибком. Наприклад, якщо лідер передає 20% пакетів блоку як коди стирання, тоді мережа може скинути будь-які 20% пакетів без втрати блоку. Лідери можуть динамічно регулювати це число (швидкість FEC) на основі умов мережі, беручи до уваги такі змінні, як нещодавно спостережена втрата пакетів у всій мережі та глибина дерева. У Solana фрагменти даних — це часткові блоки з вихідного блоку, створеного лідером, а фрагменти відновлення — це блоки, згенеровані Рідом-Соломоном із кодом стирання. Блокування на Solana зазвичай використовують FEC 32:32 (32 із 64 пакетів можна втрачати без необхідності повторної передачі). Турбінне дерево Solana використовує Turbine Tree, структуровану топологію мережі, щоб полегшити ефективне розповсюдження фрагментів між валідаторами. Коли фрагменти належним чином закодовані у відповідні групи фрагментів, вони готові до розповсюдження через Turbine Tree для інформування інших валідаторів у мережі про найновіший стан. Будучи відомим усім, Turbine Tree гарантує, що кожен валідатор точно знає, де він відповідає за передачу цього фрагмента. Дерево Turbine Tree зазвичай складається з 2 або 3 переходів (залежно від кількості активних валідаторів), враховуючи поточне значення DATA_PLANE_FANOUT 200. Крім того, вузли можуть вдаватися до пліток і ремонту, якщо вони не отримують достатньо фрагментів або якщо рівень втрат перевищує рівень FEC. Згідно з поточною реалізацією, вузол, якому не вистачає фрагментів для реконструкції блоку, надсилає запит лідеру для повторної передачі. У детермінованій турбіні будь-який вузол, який отримує повний блок, може надіслати фрагменти відновлення, які потрібні запитуючому вузлу, таким чином просуваючи передачу даних далі до тих областей дерева, які запитують дані. Висновок У цьому звіті ми розглянули механізм розповсюдження блоків Turbine від Solana, який розбиває великі блоки на дрібніші частини для ефективного розподілу даних у мережі. Ми підкреслили, як кодування стирання забезпечує цілісність даних і як Turbine Tree полегшує швидку передачу між валідаторами.