Към съдържанието
ДаретеEN

Данни

Байтове

Байтове в биткойн: байт е осем бита, записани с два hex знака. Научете размерите на ключовете, ID-тата, сумите и полетата в блоковете.

От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.

Байт е група от осем бита и единицата, с която биткойн мери суровите си данни. Частният ключ е 32 байта, ID-то на трансакцията е 32 байта, а nonce-то в заглавието на блока е 4 байта. Щом можете да прочетете един байт, по-голямата част от суровите данни в трансакция или блок ви стават ясни.

Какво е бит?

Битът е най-малката част от данни в компютъра. Той има една от две стойности: 0 или 1. В хардуера бит е малка схема, която е изключена (0) или включена (1). Всяко число, буква и инструкция в компютъра е изградено от битове.

Колко бита има в байта?

Байтът съдържа осем бита. Осем бита дават 256 различни комбинации, от 00000000 до 11111111, така че един байт може да пази всяко цяло число от 0 до 255.

Стойността на всеки бит е степен на двойката. Ако броим отдясно, стойностите са 1, 2, 4, 8, 16, 32, 64 и 128.

Биткойн мери данните в байтове, а не в битове. Таблицата показва как се свързват мерните единици.

Единица Битове Къде я срещате
Бит 1 Най-малката единица, 0 или 1
Полубайт (nibble) 4 Половин байт, една hex цифра
Байт 8 Две hex цифри, от 00 до ff
32 байта 256 Частен ключ, ID на трансакция или хеш на блок

Програмистите понякога казват „nibble“ за половин байт. За биткойн рядко ви трябва думата.

Един байт: осем бита, четирите по-високи и четирите по-ниски, като hex цифрите 6 и B. Един байт е осем бита 128 0 64 1 32 1 16 0 8 1 4 0 2 1 1 1 0110 = 6 1011 = B 6B 6B са две hex цифри, един байт. Същият байт е 107 в десетична система.
Байтът 01101011 е 107 в десетична и 6B в hex.

Как се записва байт?

Байтът може да се запише в двоичен вид, с осем цифри, или в шестнадесетичен, с две. Байтът от схемата е 01101011 в двоичен вид и 6B в hex. В кода двоичният запис обикновено започва с 0b, а hex с 0x, така че 0b11111111 и 0xFF означават един байт.

Половин байт има 16 възможни комбинации, а hex има точно 16 цифри. Затова две hex цифри винаги покриват един цял байт. Страницата за шестнадесетичния запис обяснява как работят цифрите.

Hex не прави разлика между главни и малки букви, така че 6b и 6B са един и същ байт. Bitcoin Core извежда hex в малки букви, затова суровите данни обикновено изглеждат с малки букви.

Какво може да означава един байт?

Байтът сам по себе си няма значение. Полето, в което стои, решава какво означават осемте му бита. Байтът 01100111 е числото 103, буквата g по ASCII или hex цифрите 67.

Байтът 01100111 като числото 103, буквата g или hex цифрите 67. Същият байт, три прочита 01100111 като число 103 като буква, в ASCII g като hex, две цифри 67 Полето, в което стои байтът, решава значението му.
ASCII е най-известната таблица, която свързва байтовете с букви.

Биткойн използва байтове за пет вида данни:

  • Числа, например сума на изход или време на блок.
  • Текст, например данните в изход OP_RETURN или тага на майнъра в coinbase.
  • Битови полета, при които всеки бит включва или изключва една настройка.
  • Отпечатъци, например хешове, които са важни само защото всяка стойност е уникална.
  • Инструкции и дължини, например опкодове в скрипт и префикси compact size.

В скрипт байтът 76 е опкодът OP_DUP, а байтът ac е OP_CHECKSIG. Същият байт може да означава буква, число или инструкция, в зависимост от мястото, на което стои.

Кои полета се мерят в байтове?

Повечето полета в суровите данни имат фиксиран размер. Ако знаете размера, знаете къде свършва едно поле и къде започва следващото.

Поле Размер Какво съдържа
Private key 32 байта 256-битово число
Compressed public key 33 байта Префиксен байт и 32-байтовата x координата
Public key hash 20 байта Къс отпечатък на публичния ключ, който се използва в адресите
Transaction ID (TXID) 32 байта Хеш, който назовава трансакцията
Block hash 32 байта Хеш, който назовава блока
Output amount 8 байта Стойност в сатоши
Output index (vout) 4 байта Кой изход от по-ранна трансакция се харчи
Sequence 4 байта Битово поле, което задава относително заключване във времето
Locktime 4 байта Най-ранната височина на блок или Unix време, от които трансакцията може да влезе в блок
Block version 4 байта Битово поле, с което майнърите сигнализират за ъпгрейди
Block time 4 байта Unix времево клеймо
Target 32 байта Пълният праг, под който трябва да е хешът на блока, като 256-битово число
Bits 4 байта Целта, записана в компактна форма
Block nonce 4 байта Числото, което майнърите сменят, докато търсят
Magic bytes 4 байта Началният маркер на мрежово съобщение, f9beb4d9 в mainnet
Message command 12 байта Името на съобщението, например version, допълнено с нули
Services 8 байта Битово поле с услугите, които нодът предлага
Signature Около 71 до 73 байта ECDSA подпис в DER формат, с байта за sighash
Schnorr signature 64 байта Taproot подпис, или 65 с необичаен байт за sighash
Compact size От 1 до 9 байта Брой или дължина, определени от първия байт (вижте по-долу)

Колко големи са трансакциите и блоковете?

Трансакцията е редица от полета, едно след друго. Повечето имат фиксиран размер. Броевете и дължините на скриптовете ползват формата compact size, така че техният размер зависи от стойността, която пазят.

Част Размер Какво съдържа
Version 4 байта Версията на трансакцията
Input count От 1 до 9 байта Броят входове, като compact size
Input Поне 41 байта TXID (32), vout (4), дължина и скрипт на scriptSig, sequence (4)
Output count От 1 до 9 байта Броят изходи, като compact size
Output Поне 9 байта Сума (8), дължина и скрипт на scriptPubKey
Witness data Променлив Само в SegWit трансакции: броят и дължините на елементите и самите елементи
Locktime 4 байта Най-ранната височина или време, от които трансакцията може да влезе в блок

Трансакция в SegWit формат има и маркерен байт 00, и флагов байт 01, веднага след версията. Witness данните идват след изходите и преди locktime.

Блокът е по-прост. Първо идва заглавието, което винаги е 80 байта. След него идва броят трансакции като compact size, а после самите трансакции.

Част Размер Какво съдържа
Block header 80 байта Version (4), previous block hash (32), merkle root (32), time (4), bits (4), nonce (4)
Transaction count От 1 до 9 байта Броят трансакции, като compact size
Transactions Останалата част от блока Всяка трансакция, една след друга
Заглавието на блока от 80 байта, по една лента за всяко поле, в мащаб: version 4, previous block hash 32, merkle root 32, time 4, bits 4, nonce 4. Заглавието на блока е 80 байта Дължината на лентата е размерът на полето. Version 4 байта Previous block hash 32 байта Merkle root 32 байта Time 4 байта Bits 4 байта Nonce 4 байта Общо: 4 + 32 + 32 + 4 + 4 + 4 = 80 байта Всяко заглавие е точно 80 байта. Прочетете 80 байта и имате цялото заглавие.
Всяка лента е толкова дълга, колкото е полето. Nonce е полето, което майнърите сменят.

Блок 0, първият блок, който някога е бил добит, показва същото разположение. Заглавието му е 80 байта, а броят трансакции е 01, един байт, защото в блока има една трансакция.

Какво са битовите полета?

Битовото поле събира няколко настройки в едно поле. Всяка настройка има свой бит, който е включен (1) или изключен (0). Три полета в биткойн работят така.

  • Services, в съобщението version. Всеки бит отбелязва услуга, която нодът предлага. Най-малкият бит, със стойност 1, означава, че нодът пази цялата верига.
  • Block version, в заглавието на блока. Съвременните версии започват с битовете 001. Майнърите задават още битове, за да покажат кои ъпгрейди поддържат, както е описано в BIP 9. Страницата за версията на блока обяснява сигнализирането.
  • Sequence, във всеки вход. Ако битът 31 е включен, sequence не задава относително заключване във времето. Битът 22 избира между блокове и време, а най-ниските 16 бита пазят стойността, както определя BIP 68.

За да проверите един бит в кода, използвайте побитово И с маска. services & 1 е различно от нула, когато най-малкият бит е включен.

Записва ли се текст в байтове?

Текстът не е често срещан в данните на биткойн, но се появява на няколко места:

  • OP_RETURN изходи. Изходът OP_RETURN пази произволни данни след опкода. Тези данни често са ASCII текст.
  • Coinbase. Майнърите обикновено слагат текстов таг в scriptSig на coinbase трансакцията, например името на своя пул.
  • Message command. Всяко мрежово съобщение назовава вида си с 12 байта ASCII, допълнени с нули. Примери са version, block и tx.
  • User agent. Текстовото поле в съобщението version назовава софтуера на нода, например Satoshi:24.0.1.

Хешовете са ли просто байтове?

Хеш функцията връща фиксиран низ от байтове. Щом имате байтовете, тяхната единствена работа е да бъдат уникални. TXID, хешът на блока и хешът на публичния ключ работят като отпечатъци.

Хешът на блока има двойна роля. Той идентифицира блока, а майнърите го четат и като число, за да го сверят с целта. Magic bytes са друго нещо: f9beb4d9 маркира началото на всяко мрежово съобщение в mainnet, така че нодът вижда къде свършва едно съобщение и къде започва следващото.

Как се превръщат байтовете в код?

Повечето езици умеят три преобразувания: от байтове към hex текст, от hex текст към байтове и от байтове към цяло число. Редовете на Python по-долу правят и трите. Всеки коментар показва резултата.

# hex текст в байтове
raw = bytes.fromhex("f9beb4d9")
# байтовете обратно в hex текст: f9beb4d9
print(raw.hex())
# байтовете, прочетени като едно число: 4190024921
print(int.from_bytes(raw, "big"))

Аргументът "big" казва, че първият байт е старшият. Биткойн пази повечето си числа в обратния ред, затова прочетете страницата за little-endian, преди да превърнете поле от трансакция или блок.

Всеки TXID е 32-байтова стойност, записана с 64 hex знака. Страницата за реда на байтовете обяснява защо експлорърите често показват тези 64 знака обърнати.

В този раздел: Данни

Целият курс „Биткойн от нулата“

Нещо не изглежда наред? Кажете ни