Что такое сырая транзакция Bitcoin?
Сырая транзакция Bitcoin — это hex-сериализация версии, входов (предыдущий txid и индекс выхода, scriptSig, sequence), выходов (значение в сатоши и scriptPubKey), необязательных witness-данных SegWit и locktime. Txid — это двойной SHA-256 сериализации без witness-данных, а PSBT (BIP-174) оборачивает неподписанную транзакцию в метаданные, нужные подписантам.
Как читать результат
- Входы перечисляют предыдущий outpoint (txid:индекс), тип траты и выведенный адрес. Sequence показывает, сигнализируется ли RBF.
- Выходы перечисляют значение, тип скрипта и адрес. Выходы OP_RETURN показывают содержимое как текст, если оно печатаемое, иначе как hex.
- Locktime интерпретируется как высота блока при значении ниже 500 000 000 и как Unix-время при значении выше.
- Подписана / не подписана определяется по тому, есть ли у каждого входа scriptSig или witness.
Типы скриптов выходов
| Тип | Шаблон scriptPubKey | Адрес | Данные траты |
|---|---|---|---|
| P2PKH | OP_DUP OP_HASH160 <20 bytes> OP_EQUALVERIFY OP_CHECKSIG | 1… | scriptSig: подпись + публичный ключ |
| P2SH | OP_HASH160 <20 bytes> OP_EQUAL | 3… | scriptSig заканчивается redeem-скриптом |
| P2WPKH | OP_0 <20 bytes> | bc1q… (42 символа) | witness: подпись, публичный ключ |
| P2WSH | OP_0 <32 bytes> | bc1q… (62 символа) | witness заканчивается witness-скриптом |
| P2TR | OP_1 <32 bytes> | bc1p… | witness: 64-байтная подпись (ключевой путь) |
| OP_RETURN | OP_RETURN <data> | нет, нетратимый | н/д |
Наглядный пример: weight и vsize
Транзакция с одним входом P2WPKH и двумя выходами P2WPKH содержит 113 байт не-witness данных (версия, вход, два выхода, locktime) и около 110 байт witness-данных (маркер, флаг, 72-байтная подпись и 33-байтный публичный ключ). Weight = 113 × 4 + 110 = 562 единицы веса, значит vsize = ⌈562 ÷ 4⌉ = 141 vbyte. При 10 sat/vB комиссия составит 1 410 sat. Тот же платёж с legacy-входа P2PKH занимает примерно 226 байт, все с полным весом, то есть 226 vbyte.
Откуда берётся сырой hex
Bitcoin Core: getrawtransaction <txid> или createrawtransaction. Electrum и Sparrow: экспорт транзакции в hex. Обозреватели: mempool.space и blockstream.info предоставляют /api/tx/<txid>/hex. Аппаратные кошельки показывают PSBT, который их просят подписать.
Проверить отдельный адрес можно в валидаторе Bitcoin-адресов, а разобрать строки bech32 — в bech32-декодере.