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

Биткойн от нулата

Трансакции

Структура на трансакция биткойн: полетата на суровата трансакция по ред, добавките на 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 Най-ранната височина на блок или време, на която трансакцията може да бъде изкопана.
Legacy трансакция е version, входове, изходи и locktime; segwit добавя marker, flag и witness. Version 4 байта Marker 1 байт, само segwit Flag 1 байт, само segwit Input count compact size Inputs: по един набор за вход TXID 32 байта, VOUT 4 байта ScriptSig size и ScriptSig Sequence 4 байта Output count compact size Outputs: по един набор за изход Amount 8 байта, после заключващият скрипт Witness: по едно поле за вход Само segwit: данните за отключване Locktime 4 байта
Полетата в синьо се появяват само в segwit трансакциите. Witness стои след изходите, но принадлежи на всеки вход.

Входовете и изходите се повтарят, така че трансакция с три входа има три комплекта полета за входове. 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 г. Ъпгрейдът добавя три неща:

  1. Байт за marker 00 и байт за flag 01 веднага след версията.
  2. Поле witness за всеки вход, след изходите и преди locktime. Вход, който не се нуждае от witness, пак получава празно поле, една 00.
  3. Нищо друго не се променя във входовете и изходите.

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. Всеки байт принадлежи на едно поле.

258-те байта на една legacy трансакция, по едно квадратче за байт, оцветени по поле: подписът във входа е най-големият блок. байт 0 байт 1 байт 2 байт 3 байт 4 байт 5 байт 6 байт 7 байт 8 байт 9 байт 10 байт 11 байт 12 байт 13 байт 14 байт 15 байт 16 байт 17 байт 18 байт 19 байт 20 байт 21 байт 22 байт 23 байт 24 байт 25 байт 26 байт 27 байт 28 байт 29 байт 30 байт 31 байт 32 байт 33 байт 34 байт 35 байт 36 байт 37 байт 38 байт 39 байт 40 байт 41 байт 42 байт 43 байт 44 байт 45 байт 46 байт 47 байт 48 байт 49 байт 50 байт 51 байт 52 байт 53 байт 54 байт 55 байт 56 байт 57 байт 58 байт 59 байт 60 байт 61 байт 62 байт 63 байт 64 байт 65 байт 66 байт 67 байт 68 байт 69 байт 70 байт 71 байт 72 байт 73 байт 74 байт 75 байт 76 байт 77 байт 78 байт 79 байт 80 байт 81 байт 82 байт 83 байт 84 байт 85 байт 86 байт 87 байт 88 байт 89 байт 90 байт 91 байт 92 байт 93 байт 94 байт 95 байт 96 байт 97 байт 98 байт 99 байт 100 байт 101 байт 102 байт 103 байт 104 байт 105 байт 106 байт 107 байт 108 байт 109 байт 110 байт 111 байт 112 байт 113 байт 114 байт 115 байт 116 байт 117 байт 118 байт 119 байт 120 байт 121 байт 122 байт 123 байт 124 байт 125 байт 126 байт 127 байт 128 байт 129 байт 130 байт 131 байт 132 байт 133 байт 134 байт 135 байт 136 байт 137 байт 138 байт 139 байт 140 байт 141 байт 142 байт 143 байт 144 байт 145 байт 146 байт 147 байт 148 байт 149 байт 150 байт 151 байт 152 байт 153 байт 154 байт 155 байт 156 байт 157 байт 158 байт 159 байт 160 байт 161 байт 162 байт 163 байт 164 байт 165 байт 166 байт 167 байт 168 байт 169 байт 170 байт 171 байт 172 байт 173 байт 174 байт 175 байт 176 байт 177 байт 178 байт 179 байт 180 байт 181 байт 182 байт 183 байт 184 байт 185 байт 186 байт 187 байт 188 байт 189 байт 190 байт 191 байт 192 байт 193 байт 194 байт 195 байт 196 байт 197 байт 198 байт 199 байт 200 байт 201 байт 202 байт 203 байт 204 байт 205 байт 206 байт 207 байт 208 байт 209 байт 210 байт 211 байт 212 байт 213 байт 214 байт 215 байт 216 байт 217 байт 218 байт 219 байт 220 байт 221 байт 222 байт 223 байт 224 байт 225 байт 226 байт 227 байт 228 байт 229 байт 230 байт 231 байт 232 байт 233 байт 234 байт 235 байт 236 байт 237 байт 238 байт 239 байт 240 байт 241 байт 242 байт 243 байт 244 байт 245 байт 246 байт 247 байт 248 байт 249 байт 250 байт 251 байт 252 байт 253 байт 254 байт 255 байт 256 байт 257 Фиксирани: version, броеве, размери, locktime Препратки: TXID, VOUT, sequence ScriptSig: подпис и публичен ключ, 139 байта Изходи: стойности и заключващи скриптове
По едно квадратче за всеки байт. Оранжевото е кодът за отключване, който сам по себе си е 139 байта.

Две неща изпъкват. Подписът и публичният ключ заемат 139 от 258-те байта, затова legacy трансакциите са големи. А стойността на входа изобщо не е в трансакцията. За да разберете какво е държал входът, отваряте трансакцията, която е създала изхода, който той харчи. Нейният TXID, пресметнат от същите байтове, е обяснен на страницата за TXID.

Кои страници описват всяко поле?

Четете страниците в този ред. Всяка описва дадено поле по-подробно от този преглед.

  1. Вход: какво е вход и кои полета съдържа.
  2. TXID: хешът, който назовава по-ранна трансакция.
  3. VOUT: индексът на харчения изход.
  4. ScriptSig: кодът за отключване при legacy входовете.
  5. Sequence: окончателност, RBF и относително заключване.
  6. Изход: стойността и заключването на всеки нов изход.
  7. ScriptPubKey: самият заключващ код.
  8. Witness: данните за отключване на segwit входовете.
  9. Locktime: височината или времето, преди които трансакцията не може да бъде изкопана.
  10. wTXID: хешът, който включва witness.
  11. UTXO: изходите, които никой още не е похарчил.
  12. Такса: това, което остава след изходите.
  13. Размер: байтове, тегло и виртуални байтове.
  14. PSBT: форматът за предаване на трансакция между подписващите.

Източници

В този раздел

  1. 1ВходВходовете на трансакция в биткойн (bitcoin) сочат по-стар изход чрез TXID и VOUT и го отключват. Вижте петте полета на вход, размерите и примери.
  2. 2TXIDTxid в биткойн (bitcoin) е двойният SHA-256 хеш на трансакция, който експлорърите показват в обратен ред. Вижте как се строи и как SegWit го промени.
  3. 3VOUTVOUT в биткойн (bitcoin) е индексът на изхода, който входът харчи, броен от 0 и записан като 4 байта в little-endian. Вижте как работи заедно с TXID.
  4. 4ScriptSigScriptSig в биткойн (bitcoin) е кодът за отключване на вход от стара трансакция. Вижте какво съдържа при P2PKH, P2SH и coinbase.
  5. 5SequenceSequence в биткойн (bitcoin) е 4-байтовото поле на всеки вход, което задава locktime, RBF и относително заключване. Вижте стойностите и битовете.
  6. 6ИзходИзходът на трансакция в биткойн (bitcoin) държи стойност в сатоши и заключване. Вижте трите полета, 8-байтовия формат, лимита от 21 милиона BTC и ресто.
  7. 7ScriptPubKeyScriptPubKey в биткойн (bitcoin) е заключващият код на изход от трансакция. Вижте често срещаните шаблони, техните размери и как всеки от тях се отключва.
  8. 8WitnessWitness данни в биткойн са подписите и публичните ключове, които отключват SegWit входовете. Вижте структурата, реален пример и защо тежат по-малко.
  9. 9LocktimeLocktime в биткойн е 4-байтово поле, което не позволява трансакцията да бъде изкопана преди дадена височина или момент. Вижте как се пази и как се налага.
  10. 10wTXIDwTXID в биткойн е хешът на трансакцията заедно с нейния witness. Вижте как се различава от TXID и къде блоковете се ангажират с него.
  11. 11Неизразходван изход (UTXO)UTXO в биткойн е неизразходван изход на трансакция. Вижте как UTXO множеството помага на нодовете да проверяват трансакции и да броят баланса на адрес.
  12. 12ТаксатаТакса за трансакция в биткойн (bitcoin), или биткойн такси, е разликата между входовете и изходите. Вижте как се смята и защо таксата на байт решава реда.
  13. 13РазмерРазмер на трансакция в биткойн се мери в байтове, единици тегло и виртуални байтове (vB). Вижте формулата за тегло и лимита от 4,000,000 единици тегло.
  14. 14PSBTPSBT, или частично подписана трансакция в биткойн, носи неподписана трансакция и данните за подписване между портфейлите. Вижте формата по BIP 174 и версия 2.

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