Трансакции
Структура на трансакция биткойн: полетата на суровата трансакция по ред, добавките на SegWit и една истинска трансакция, разчетена байт по байт.
От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.
Трансакцията в биткойн е низ от байтове в определен ред. Тя назовава по-ранни изходи, които харчи (входовете си), създава нови изходи със собствени заключвания и може да зададе locktime. Нодовете препращат трансакцията като сурови данни, а майнърите я включват в същия вид. Затова структурата е една и съща, независимо кой експлорър или портфейл ви я показва.
Тази страница описва всяко поле по ред, показва legacy и segwit вида и разчита една истинска трансакция байт по байт.
Какво прави трансакцията?
Трансакцията върши две неща. Отключва съществуващи изходи, като сочи към тях и доказва правото си да ги харчи. Също така заключва нови изходи за хората, които трябва да получат стойността.
Изходът е пакет от сатоши със заключващ скрипт върху него. Входът няма стойност. Той назовава един по-ранен изход, а стойността седи в трансакцията, която е създала този изход. Изходите на една трансакция не могат да дадат общо повече от входовете ѝ. Каквото остане, става такса, която майнърът, включил трансакцията, прибира.
За обяснение с прости думи първо прочетете страницата за трансакция. Останалата част от раздела е по-подробен поглед върху полетата.
Кои са полетата на суровата трансакция?
Всяка трансакция е изградена от едни и същи полета. Някои присъстват само в segwit трансакциите, както е отбелязано по-долу.
| Поле | Размер | Формат | Какво съдържа |
|---|---|---|---|
| Version | 4 байта | Little-endian | Версията на трансакцията, например 01 или 02. Версия 2 включва относителното заключване. |
| Marker | 1 байт | Фиксирано 00 |
Само за segwit. Показва, че следват witness данни. |
| Flag | 1 байт | Фиксирано 01 засега |
Само за segwit. Запазено за бъдещи формати. |
| Input count | Променлив | Compact size | Колко входа следват. |
| Inputs | Променлив | Повтаря се | Всеки вход съдържа TXID, VOUT, ScriptSig и sequence. |
| Output count | Променлив | Compact size | Колко изхода следват. |
| Outputs | Променлив | Повтаря се | Всеки изход съдържа стойност и ScriptPubKey. |
| Witness | Променлив | Едно поле за вход | Само за segwit. Данните за отключване на segwit входовете. |
| Locktime | 4 байта | Little-endian | Най-ранната височина на блок или време, на която трансакцията може да бъде изкопана. |
Входовете и изходите се повтарят, така че трансакция с три входа има три комплекта полета за входове. Witness също е едно поле за всеки вход и стои след всички изходи.
Как се кодират полетата?
Три вида кодиране покриват почти всяко поле.
- Целите числа са little-endian. Най-малко значещият байт е първи, така че стойността 100,000,000 се записва като
00e1f50500000000. Вижте little-endian. - Броевете и размерите използват compact size. Стойност от 0 до 252 заема един байт. По-големите стойности започват с
FD,FEилиFFи после заемат 2, 4 или 8 байта, пак в little-endian. Скрипт P2PKH от 25 байта затова се записва като19преди байтовете си. Вижте compact size. - Хешовете се пазят в естествен ред на байтовете. TXID е 32-байтов хеш, а суровите данни го пазят обърнат спрямо формата, който показват експлорърите. Страницата за TXID обяснява обръщането.
Как изглежда legacy структурата?
Legacy трансакцията няма marker, flag или witness. Полетата ѝ вървят в този ред: version, брой входове, входове, брой изходи, изходи, locktime. Всяка трансакция, създадена преди ъпгрейда SegWit, има този вид, както и всяка трансакция, която харчи само legacy изходи.
Нейният TXID е двойният SHA-256 на всичките ѝ байтове, така че TXID-ът и wTXID на legacy трансакция са едни и същи.
Как SegWit променя структурата?
SegWit, дефиниран в BIP 141, е преместил данните за отключване на segwit входовете от ScriptSig в поле witness в края на трансакцията. BIP 144 описва как тези данни се сериализират. SegWit е влязъл в сила при блок 481,824 през август 2017 г. Ъпгрейдът добавя три неща:
- Байт за marker
00и байт за flag01веднага след версията. - Поле witness за всеки вход, след изходите и преди locktime. Вход, който не се нуждае от witness, пак получава празно поле, една
00. - Нищо друго не се променя във входовете и изходите.
SegWit променя и начина на измерване на размера. Witness се брои за по-малко, така че segwit трансакцията плаща по-малко за байт данни за подпис. Биткойн измерва това в единици тегло (weight units): всеки байт извън witness се брои четири пъти, а всеки witness байт се брои веднъж. Разделете теглото на четири и получавате размера във виртуални байтове, на който се базират таксите.
Разгледайте segwit трансакцията f8c24461e0a08ede06539433affaba93e303ca9929c300cfc00a8929e8025a80 като пример. Тя е 222 байта общо. От тях 113 са извън witness, а останалите 109 са marker, flag и witness. Теглото ѝ е 113 × 4 + 109 = 561, а виртуалният ѝ размер е 141 vB, закръглен нагоре от 140.25.
Как изглежда една истинска трансакция?
Трансакцията 251490baffd0d3d5175b77bf334ba866c4fd416fcc686a1001e188fba83b4ccb е legacy трансакция. Има един вход, два изхода и 258 байта. Можете да я отворите в нашия експлорър: /tx/251490baffd0d3d5175b77bf334ba866c4fd416fcc686a1001e188fba83b4ccb. Ето суровите ѝ данни:
010000000110ddd830599b17cc690535f7df28a84466eaca3c22f0d55b79023b6570f4fbc5010000008b483045022100e6186d6f344ce4df46b2e15d87093d34edbf5b50462b6b45f9bd499a6a62fbc4022055f56a1c4a24ea6be61564593c4196b47478a25cf596c1baf59f5a9a229b637c014104a41e997b6656bc4f5dd1f9b9df3b4884cbec254d3b71d928587695b0df0a80417432f4ca6276bc620b1f04308e82e70015a40f597d8260912f801e4b62ab089effffffff0200e9c829010000001976a9146f34d3811aded1df870359f311c2a11a015e945388ac00e40b54020000001976a91470d6734de69c1ac8913892f2df9be0e738d26c2d88ac00000000
Прочетете я от началото, по едно поле наведнъж. Отместванията започват от нула.
| Отместване | Байта | Поле | Сурови данни (hex) | Значение |
|---|---|---|---|---|
| 0 до 3 | 4 | Version | 01000000 |
Версия 1 |
| 4 | 1 | Input count | 01 |
Един вход |
| 5 до 36 | 32 | Input TXID | 10ddd830…70f4fbc5 |
По-ранната трансакция, в естествен ред на байтовете |
| 37 до 40 | 4 | VOUT | 01000000 |
Изход 1 на тази трансакция |
| 41 | 1 | ScriptSig size | 8b |
139 байта |
| 42 до 180 | 139 | ScriptSig | 483045…637c01 4104…89e |
72-байтов подпис с байта за sighash, после 65-байтов публичен ключ |
| 181 до 184 | 4 | Sequence | ffffffff |
Окончателен, без locktime и без RBF |
| 185 | 1 | Output count | 02 |
Два изхода |
| 186 до 193 | 8 | Amount 0 | 00e9c82901000000 |
4,996,000,000 сатоши (49.96 BTC) |
| 194 | 1 | ScriptPubKey size | 19 |
25 байта |
| 195 до 219 | 25 | ScriptPubKey 0 | 76a914…88ac |
P2PKH заключване |
| 220 до 227 | 8 | Amount 1 | 00e40b5402000000 |
10,000,000,000 сатоши (100 BTC) |
| 228 | 1 | ScriptPubKey size | 19 |
25 байта |
| 229 до 253 | 25 | ScriptPubKey 1 | 76a914…88ac |
P2PKH заключване |
| 254 до 257 | 4 | Locktime | 00000000 |
Без locktime |
Таблицата обхваща всичките 258 байта: 4 + 1 + 32 + 4 + 1 + 139 + 4 + 1 + 8 + 1 + 25 + 8 + 1 + 25 + 4. Всеки байт принадлежи на едно поле.
Две неща изпъкват. Подписът и публичният ключ заемат 139 от 258-те байта, затова legacy трансакциите са големи. А стойността на входа изобщо не е в трансакцията. За да разберете какво е държал входът, отваряте трансакцията, която е създала изхода, който той харчи. Нейният TXID, пресметнат от същите байтове, е обяснен на страницата за TXID.
Кои страници описват всяко поле?
Четете страниците в този ред. Всяка описва дадено поле по-подробно от този преглед.
- Вход: какво е вход и кои полета съдържа.
- TXID: хешът, който назовава по-ранна трансакция.
- VOUT: индексът на харчения изход.
- ScriptSig: кодът за отключване при legacy входовете.
- Sequence: окончателност, RBF и относително заключване.
- Изход: стойността и заключването на всеки нов изход.
- ScriptPubKey: самият заключващ код.
- Witness: данните за отключване на segwit входовете.
- Locktime: височината или времето, преди които трансакцията не може да бъде изкопана.
- wTXID: хешът, който включва witness.
- UTXO: изходите, които никой още не е похарчил.
- Такса: това, което остава след изходите.
- Размер: байтове, тегло и виртуални байтове.
- PSBT: форматът за предаване на трансакция между подписващите.
Източници
В този раздел
- 1ВходВходовете на трансакция в биткойн (bitcoin) сочат по-стар изход чрез TXID и VOUT и го отключват. Вижте петте полета на вход, размерите и примери.
- 2TXIDTxid в биткойн (bitcoin) е двойният SHA-256 хеш на трансакция, който експлорърите показват в обратен ред. Вижте как се строи и как SegWit го промени.
- 3VOUTVOUT в биткойн (bitcoin) е индексът на изхода, който входът харчи, броен от 0 и записан като 4 байта в little-endian. Вижте как работи заедно с TXID.
- 4ScriptSigScriptSig в биткойн (bitcoin) е кодът за отключване на вход от стара трансакция. Вижте какво съдържа при P2PKH, P2SH и coinbase.
- 5SequenceSequence в биткойн (bitcoin) е 4-байтовото поле на всеки вход, което задава locktime, RBF и относително заключване. Вижте стойностите и битовете.
- 6ИзходИзходът на трансакция в биткойн (bitcoin) държи стойност в сатоши и заключване. Вижте трите полета, 8-байтовия формат, лимита от 21 милиона BTC и ресто.
- 7ScriptPubKeyScriptPubKey в биткойн (bitcoin) е заключващият код на изход от трансакция. Вижте често срещаните шаблони, техните размери и как всеки от тях се отключва.
- 8WitnessWitness данни в биткойн са подписите и публичните ключове, които отключват SegWit входовете. Вижте структурата, реален пример и защо тежат по-малко.
- 9LocktimeLocktime в биткойн е 4-байтово поле, което не позволява трансакцията да бъде изкопана преди дадена височина или момент. Вижте как се пази и как се налага.
- 10wTXIDwTXID в биткойн е хешът на трансакцията заедно с нейния witness. Вижте как се различава от TXID и къде блоковете се ангажират с него.
- 11Неизразходван изход (UTXO)UTXO в биткойн е неизразходван изход на трансакция. Вижте как UTXO множеството помага на нодовете да проверяват трансакции и да броят баланса на адрес.
- 12ТаксатаТакса за трансакция в биткойн (bitcoin), или биткойн такси, е разликата между входовете и изходите. Вижте как се смята и защо таксата на байт решава реда.
- 13РазмерРазмер на трансакция в биткойн се мери в байтове, единици тегло и виртуални байтове (vB). Вижте формулата за тегло и лимита от 4,000,000 единици тегло.
- 14PSBTPSBT, или частично подписана трансакция в биткойн, носи неподписана трансакция и данните за подписване между портфейлите. Вижте формата по BIP 174 и версия 2.
Нещо не изглежда наред? Кажете ни