126 / 736WU

Block Weight

Вага блока

Чому всі платежі з черги не вміщаються в один блок і чому заповнені блоки можуть мати різну кількість байтів. Вага обмежує обсяг даних, який мережа приймає як один блок.

Block Weight — спосіб, у який Bitcoin вимірює використану місткість блока, тобто групи транзакцій, доданої до спільної історії. Різні частини даних враховуються по-різному. Вага має фіксовану верхню межу, але не визначає кількості платежів чи вартості переказаних біткоїнів.

Transaction Fees: розмір і комісіяОцініть віртуальний розмір транзакції, комісію за власною ставкою та її орієнтовну вартість у вибраній валюті.

Анна надсилає Bitcoin, але наступний блок не містить її платежу. Саме по собі це не означає, що гроші зникли. Непідтверджена транзакція може чекати в Mempool — локальній черзі окремого вузла. Вузол — програма, що перевіряє транзакції та блоки й обмінюється даними з іншими учасниками мережі. Майнер добирає транзакції до блока обмеженої місткості й може створити менший блок. Комісії заохочують його, але не наказують включити конкретний платіж. Block Weight пояснює одне обмеження цього вибору, а не всі причини затримки. [1] [7]

Верхня межа становить 4 000 000 WU включно. WU — одиниця ваги. Full Node, вузол, що самостійно перевіряє правила Bitcoin, відхилить блок, який перевищує цю межу. Його не врятують високі комісії чи правильний Proof of Work — обчислювальний доказ, потрібний для видобутку блока. Потрібно виконати обидві умови: знайти цей доказ і сформувати коректний блок. Отже, бажання майнера саме по собі не визначає місткості. [1] [3] [4]

Байт — звичайна одиниця обсягу даних. SegWit відокремив частину даних, що доводять право витрачати монети, зокрема підписи. Ці дані називаються witness. Байт основних даних додає 4 WU, а додатковий байт повного запису з witness — 1 WU. До другої групи також належать допоміжні поля marker і flag. Це зберігає основну структуру транзакцій і дає простір для перевірочних даних, не прирівнюючи вагу всіх байтів. [1] [2]

Підпис підтверджує право відправника витратити певні монети. Умови витрачання описує невелика програма — скрипт. Менший внесок witness у вагу не дозволяє вузлу ігнорувати відповідні підписи чи умови скрипту. Дані також залишаються в повному записі. Це правило обліку місткості, а не твердження, що робота процесора, передавання даних або потреба в сховищі зменшуються в такій самій пропорції. [1] [4]

Серіалізація — це запис блока як точної послідовності байтів, якою обмінюються комп’ютери. Позначимо розмір без witness літерою B, а повний розмір — T. BIP 141 використовує W = 3 × B + T. Основні дані вже входять до T, тож загалом враховуються чотири рази. Додані witness дані — один раз. Формула стосується всього блока, а не лише звичайних платежів у ньому. [1] [8]

Уявімо розміри B = 500000 і T = 2500000 байтів. Отримаємо W = 4000000 WU. Інший склад даних може мати B = 750000 і T = 1750000 байтів та знову W = 4000000 WU. Це приклади обчислення, а не виміряні блоки. Вага однакова, проте другий передає менше байтів. Тому твердження «повний блок завжди має 4 MB» неправильне. Кількість транзакцій у повному блоці також не фіксована. [1]

Блок — не просто набір платежів. Він має заголовок на 80 байтів, який, серед іншого, містить посилання на попередній блок і зведення транзакцій. Далі йде їхня кількість, записана через CompactSize — кодування цілого числа змінної довжини. Першою є Coinbase Transaction, спеціальна транзакція винагороди майнеру; тут назва не позначає біржу. Усі ці частини враховуються. Сума ваг решти транзакцій ще не дорівнює вазі всього блока. [5] [7] [8]

Гаманець — це застосунок або пристрій для отримання й надсилання біткоїнів. Зазвичай він використовує віртуальний розмір транзакції в одиницях vByte. Для цього вагу всієї транзакції ділять на 4 й округлюють угору. Так зручно порівнювати комісії за зайняте місце в блоці. Сума таких округлених розмірів не дає точної ваги блока: одиниця інша, округлення окремі, а оболонка блока відсутня. Велика грошова сума сама по собі не означає великої транзакції за обсягом даних. [1] [8]

Вага не описує всієї роботи вузла. За відповідними правилами існує також межа 80 000 зважених одиниць вартості операцій перевірки підписів. Це не простий підрахунок усіх підписів у блоці. Tapscript, мова скриптів, запроваджена з Taproot, має окремий бюджет для кожного входу — частини транзакції, що витрачає раніше отримані монети; її операції підпису не враховуються в цьому старішому загальноблоковому ліміті. BIP 342 описує інше обмеження. Дотримання ваги тому не дозволяє довільно складної перевірки. [1] [3] [9]

Оглядач блоків — це застосунок для пошуку транзакцій і блоків певної мережі. У Bitcoin Core v29.0 команда getblock повертає, зокрема, size, strippedsize і weight: повний розмір у байтах, розмір без witness і вагу. Поруч можна побачити chainwork — накопичену обчислювальну роботу ланцюга, а не його вагу даних. Для звичайного користувача важливо розрізняти місткість і ціну: Block Weight обмежує простір блока, а комісія платежу залежить від розміру транзакції та обраної ставки. Жодне з цих чисел саме по собі не обіцяє часу підтвердження. [6]

Для повної картини прочитайте також vByte, Witness Data, SegWit, Війна за розмір блока, Bitcoin, Full Node. На цю статтю також посилаються Signet, vByte, Witness Data, Ordinals Inscriptions.

DOC · 001BIP 141 — Segregated WitnessСпецифікація DOC · 002BIP 144 — SegWit peer servicesСпецифікація DOC · 003Bitcoin Core v29.0 — consensus limitsДокументація DOC · 004Bitcoin Core v29.0 — validationДокументація DOC · 005Bitcoin Developer Reference — Block chainДокументація DOC · 006Bitcoin Core — getblock RPCДокументація DOC · 007Bitcoin Core v29.0 — Block assemblyДокументація DOC · 008Bitcoin Core v29.0 — Block and transaction weightДокументація DOC · 009BIP 342 — Validation of Taproot ScriptsСпецифікація
Переглянуто: Спочатку джерела · Не інвестиційна порада