119 / 736PROP

Block Propagation

Як мережею поширюються нові блоки

Коли майнер знаходить блок, решта мережі має про це дізнатися. Як мандрує ця звістка, чому знайомі дані не потрібно надсилати знову і чому швидке доставлення не замінює перевірку.

Block Propagation — це поширення нового блоку між комп’ютерами мережі Bitcoin. Доставлення дає дані; вузол-одержувач сам має перевірити, чи блок дійсний і чи може увійти до прийнятої ним історії.

Уявімо, що Анна займається майнінгом і щойно знайшла блок із транзакціями. Блок об’єднує транзакції в пакет, який додають до спільної історії. У Bitcoin немає центру, який розсилає його всім одночасно. Вузол Анни повідомляє сусідам — комп’ютерам, з якими має з’єднання. Звістка поширюється далі й доходить до різних учасників у різний час. Цей шлях називається Block Propagation. Від його швидкості залежить, як довго інші ще працюватимуть на основі попередньої історії. [1] [6]

Петро запускає вдома Full Node — програму, яка перевіряє блоки та транзакції Bitcoin за правилами. Самого повідомлення про новий блок недостатньо. Для перевірки потрібен увесь його вміст. Петро може завантажити його цілком або відновити з отриманого повідомлення та вже відомих транзакцій. Це як отримати перелік сторінок і знайти їх у власній бібліотеці: передається менше, але готова книжка має бути та сама. [1] [7]

Блок має короткий заголовок, Block Header. Він, зокрема, посилається на попередній блок і дозволяє перевірити Proof of Work — доказ обчислювальної роботи, необхідної для майнінгу. Майнери шукають цей доказ повторними обчисленнями; інші можуть швидко перевірити знайдений результат. Це корисна початкова перевірка, а не підтвердження кожного платежу. Із самого заголовка Петро не дізнається, чи дійсні підписи та чи транзакції справді витрачають доступні, ще не витрачені кошти. Цифровий підпис підтверджує дозвіл на платіж за допомогою приватного ключа — секретного числового значення, яке при цьому не розкривається. UTXO — це невитрачений вихід транзакції: запис суми та умов, за яких її можна витратити. [6] [8]

Багато транзакцій Петро отримав ще до появи блоку. Вони зберігаються в його Mempool — місцевому наборі непідтверджених транзакцій. Compact Blocks за BIP 152 використовують це: повідомлення передає переважно короткі ідентифікатори й деякі повні транзакції замість повторного надсилання всіх. Петро складає знайомі частини в правильному порядку. Меншає мережеве повідомлення, а не блок, який перевіряють; правила його дійсності не змінюються. [2] [7]

Єдиного Mempool для всього світу немає. Кожен вузол може знати дещо інші транзакції, тож Петру може чогось бракувати. Він запитує відсутні дані або переходить до завантаження повного блоку. Додатковий запит і відповідь забирають час. Це не привід вгадувати вміст чи пропускати перевірку. Тому реальна економія залежить також від того, скільки транзакцій одержувач уже знає. [2] [7]

Швидший режим BIP 152 дозволяє переслати блок до завершення всіх перевірок транзакцій. Це не сліпе надсилання будь-чого: відправник має перевірити, зокрема, зв’язок із перевіреним ланцюжком, Proof of Work та криптографічну відповідність заголовка переданим транзакціям. Передавання й решта перевірок тоді можуть тривати паралельно. Проте Full Node приймає блок до своєї активної історії лише після повної перевірки. [2] [4] [7]

Поки блок Анни доходить до інших, ще один майнер може знайти блок із тим самим попередником. Частина мережі на мить бачить одну дійсну гілку, частина — іншу. Подальша накопичена робота визначає вибір між дійсними гілками, а не голосування комп’ютерів. Дійсний блок, що лишився поза прийнятим ланцюжком, називається Stale Block. Швидше поширення звужує часовий проміжок для такої конкуренції, але не усуває її. [6] [8]

Якщо блок Анни поширюється повільно, зростає ризик, що інші продовжать блок конкурента, а її блок залишиться поза прийнятим ланцюжком. У цій історії вона не отримає за нього винагороду. Отже, добре з’єднання — це не лише зручність. Його перевага може сприяти зосередженню майнінгу в краще підключених операторів. Але повільна лінія сама собою не вимірює централізацію й не доводить напад. [7] [8]

FIBRE — приклад спеціалізованої системи швидкого передавання блоків. Вона прагне зменшити мережеві затримки, зокрема наслідки втрати пакетів — невеликих частин повідомлення. Такий шлях може доставити блок раніше, але його оператор не отримує права вирішувати за Петра, чи блок дійсний. Full Node Петра має перевірити ті самі правила незалежно від маршруту даних. [3] [9]

Мережа має враховувати також обсяг даних, приватність і стійкість з’єднань. Залежність від одного шляху залишається слабкістю, навіть якщо він швидкий. Різні вдосконалення теж мають різні завдання: BIP 330, складова Erlay, допомагає сусіднім вузлам виявляти відмінності між наборами оголошень про транзакції. Він не замінює передавання блоків за BIP 152. Спільна мета — ефективніший зв’язок зі збереженням власних перевірок кожного вузла. [1] [5]

Для повної картини прочитайте також Compact Blocks, Selfish Mining, Eclipse Attack, Initial Block Download, Bitcoin, Full Node. На цю статтю також посилаються Sybil Attack, Eclipse Attack, Selfish Mining, Compact Blocks.

DOC · 001Bitcoin Developer Guide — P2P NetworkДокументація DOC · 002BIP 152 — Compact Block RelayСпецифікація DOC · 003Bitcoin FIBREДокументація DOC · 004Bitcoin Core v29.0 — net processingДокументація DOC · 005BIP 330 — ErlayСпецифікація DOC · 006Satoshi Nakamoto — Bitcoin whitepaperПервинне джерело DOC · 007Bitcoin Core — Compact Blocks FAQДокументація DOC · 008Bitcoin Developer Guide — Block ChainДокументація DOC · 009FIBRE — project overviewПервинне джерело
Переглянуто: Спочатку джерела · Не інвестиційна порада