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