Но когда я пытаюсь любой шестнадцатеричный декодер онлайн, я получаю тарабарщину.
Не сырая шестигранная транзакция в шестнадцатеричном формате? Если да, то как вы кодирования / декодирования, кроме blockchain декодера?
Как HCP указал ...
Это НЕ шестнадцатеричный ASCII. Вы не можете просто преобразовать шестнадцатеричные значения в ASCII представление символов и ожидать, чтобы получить что-нибудь полезное из него.
Он шестнадцатеричный двоичные данные.
Если вы знаете, что один байт данных представлен с 2 шестигранными символов, и вы знаете, как конвертировать из шестнадцатеричной в десятичную, то мы можем пройти через эту сделку вы публикуемую вместе, чтобы увидеть то, что происходит. Следуйте по ...
Первые 4 байта (8 символов) ВСЕГДА номер версии транзакции. В этом случае это:
01000000
Обратите внимание, что Bitcoin использует "прямой порядок байтов" порядок байт, поэтому преобразование этих байт в формат, в котором вы можете часто видеть шестнадцатеричное число, записанными мы получаем 0x00000001. Преобразование, что в десятичных мы видим, что это тип транзакции версии 1.
Следующий байт указывает количество входов в транзакции. В этом случае это:
02
Как шестнадцатеричное число, которое будет обычно записывается в виде 0х02. Преобразование, что в десятичных мы видим, что существует ровно 2 входа в этой сделке.
Следующее, что в сделке входы. Каждый вход состоит из:
- Идентификатор транзакции на выходе тратятся
- Смещение выходного сигнала в этой транзакции
- длина сценария
- Txin-скрипт (также известный как: scriptSig)
- sequence_no
Таким образом, мы должны иметь 2 комплекта этой информации.
Биткойн идентификатор транзакции является 256-битный хэш, поэтому он имеет длину 32 байт. Поэтому следующие 32 байт должны быть идентификатором транзакции с первым входом ...
d8c8df6a6fdd2addaf589a83d860f18b44872d13ee6ec3526b2b470d42a96d4d
Помните, что Bitcoin использует прямой порядок байтов порядка байтов. Как правило, когда идентификаторы транзакций показаны для людей, они помещаются в больших обратном порядке байт порядка байт, так что мы должны изменить порядок этих байт, чтобы увидеть идентификатор транзакции в формате, что большинство людей, как правило, знакомы с ...
4d6da9420d472b6b52c36eee132d87448bf160d8839a58afdd2add6f6adfc8d8
Далее идет индекс в эту транзакцию выходного сигнала, который расходуется в качестве входных данных в этой транзакции. Это значение 4 байта.
00000000
Похоже, значение индекса 0
После этого мы имеем значение, указывающее, как долго (в байтах) скрипт:
8б
Преобразование значения 0x8b из шестнадцатеричной в десятичную мы видим, что сценарий будет следующие 139 байт.
Далее мы имеем Txin-скрипт первого ввода:
483045022100b31557e47191936cb14e013fb421b1860b5e4fd5d2bc5ec1938f4ffb1651dc8902202661c2920771fd29dd91cd4100cefb971269836da4914d970d333861819265ba014104c54f8ea9507f31a05ae325616e3024bd9878cb0a5dff780444002d731577be4e2e69c663ff2da922902a4454841aa1754c1b6292ad7d317150308d8cce0ad7ab
Если мы хотим проанализировать этот сценарий, мы можем разбить его на составные части ...
Первые байты мы видим:
48
Глядя на языке сценариев Bitcoin, мы видим, что это является показателем того, чтобы толкать, что количество следующих байтов в стек обработки скриптов. Поскольку 0x48 в десятичной системе 72, следующие 72 байт будет проталкиваться в стек обработки. В случае типичного адреса P2PKH, это будет в конечном итоге цифровой подписи. Таким образом, мы можем видеть, что подпись представлена в сделке, как:
3045022100b31557e47191936cb14e013fb421b1860b5e4fd5d2bc5ec1938f4ffb1651dc8902202661c2920771fd29dd91cd4100cefb971269836da4914d970d333861819265ba01
Следующие байты мы видим:
41
Глядя на языке сценариев Bitcoin, мы видим, что это является показателем того, чтобы толкать, что количество следующих байтов в стек обработки скриптов. Поскольку 0x41 65 в десятичной следующих 65 байт будет проталкиваться в стек обработки. В случае типичного адреса P2PKH, это будет в конечном итоге открытого ключа. Таким образом, мы можем видеть, что открытый ключ представлен в сделке, как:
04c54f8ea9507f31a05ae325616e3024bd9878cb0a5dff780444002d731577be4e2e69c663ff2da922902a4454841aa1754c1b6292ad7d317150308d8cce0ad7ab
Теперь мы достигли конца детали Txin-скрипт. Далее идет sequence_number, который всегда 4 байта:
FFFFFFFF
Это конец первого входа. Поэтому следующий байт начинается следующий вход ...
Входы начинаются с A Bitcoin идентификатора транзакции. ИД транзакции является 256-битный хэш, поэтому он имеет длину 32 байт. Поэтому следующие 32 байт должны быть идентификатором транзакции из второго входа ...
2ab3fa4f68a512266134085d3 260b94d3b6cfd351450cff021c045a69ba120b2
Помните, что Bitcoin использует прямой порядок байтов порядка байтов. Как правило, когда идентификаторы транзакций показаны для людей, они помещаются в больших обратном порядке байт порядка байт, так что мы должны изменить порядок этих байт, чтобы увидеть идентификатор транзакции в формате, что большинство людей, как правило, знакомы с ...
b220a19ba645c021f0cf501435fd6c3b4db960325d0834612612a5684ffab32a
Далее идет индекс в эту транзакцию выходного сигнала, который расходуется в качестве входных данных в этой транзакции. Это значение 4 байта.
00000000
Похоже, значение индекса 0
После этого мы имеем значение, указывающее, как долго (в байтах) скрипт:
8б
Преобразование значения 0x8b из шестнадцатеричной в десятичную мы видим, что сценарий будет следующие 139 байт.
Далее мы имеем Txin-сценарий второго входа:
4830450220230110bc99ef311f1f8bda9d0d968bfe5dfa4af171adbef9ef71678d658823bf022100f956d4fcfa0995a578d84e7e913f9bb1cf5b5be1440bcede07bce9cd5b38115d014104c6ec27cffce0823c3fecb162dbd576c88dd7cda0b7b32b0961188a392b488c94ca174d833ee6a9b71c0996620ae71e799fc7c77901db147fa7d97732e49c8226
Вы можете пройти через этапы с первого Txin-скрипта, если вы хотите разорвать этот друг от друга, я не буду повторять, что здесь.
Далее идет sequence_number, который всегда 4 байта:
FFFFFFFF
Теперь мы достигли конца обоих входов. Следующая часть сделки выходы ...
Следующий байт является показателем числа выходов в сделке:
02
Преобразование этого из шестнадцатеричной в десятичную, мы видим, что будет 2 выхода.
Каждый выход состоит из:
- Ценность
- длина сценария
- Txout-скрипт (также известный как scriptPubKey)
Значение всегда 8 байт. Таким образом, следующие 8 байт является значением первого выхода:
c017530200000000
Преобразование это большой прямой порядок байтов порядка байтов мы получаем:
00000000025317c0
Преобразование 0x025317c0 в десятичных мы видим, что значение первого выхода составляет 39000000 Satoshi (или 0,39 BTC).
Далее идет значение, указывающее, сколько байт долго Txout-скрипт.
Следующие байты:
19
Указав, что сценарий 0x19 (который является десятичная 25) байт длиной.
76a914a3d89c53bb956f08917b44d113c6b2bcbe0c29b788ac
Мы можем разорвать этот скрипт на его компоненту, если нам нравятся. Первые байты мы видим, в скрипте:
76
Глядя на языке сценариев Bitcoin, мы видим, что это код OP_DUP.
Далее мы видим:
a9
Мы можем видеть, что это код OP_HASH160.
Далее мы видим:
14
Мы можем видеть на языке сценариев, что это является показателем того, чтобы нажать, что количество байтов в стек обработки. Преобразование шестигранные 0x14 в десятичное значение, мы видим, что нам нужно нажать на следующие 20 байт в стеке.
Это было бы эти 20 байт:
a3d89c53bb956f08917b44d113c6b2bcbe0c29b7
Обратите внимание на то, что это 160 бит (20 байт) ripemd160 значение хеш-функции, что адрес Bitcoin построен из.
Следующие байты:
88
Мы можем видеть, что это код OP_EQUALVERIFY.
Наконец, в конце сценария мы видим:
переменный ток
Мы можем видеть, что это код OP_CHECKSIG.
Таким образом, выходной сценарий 25 байт этой сделки:
OP_DUP OP_HASH160 OP_Push20Bytes (20 байт хэш) OP_EQUALVERIFY OP_CHECKSIG
Это конец первого выхода. Поэтому следующий байт начинается следующий вывод ...
Как мы видели ранее, первое, что в выходе является значение 8 байт.
c01c3d0900000000
Преобразование это большой прямой порядок байтов порядка байтов мы получаем:
00000000093d1cc0
Преобразование 0x093d1cc0 в десятичных мы видим, что значение первого выхода составляет 155000000 Satoshi (или 1,55 BTC).
Далее идет значение, указывающее, сколько байт долго Txout-скрипт.
Следующие байты:
19
Указав, что сценарий 0x19 (который является десятичная 25) байт длиной.
76a91408338e1d5e26db3fce21b011795b1c3c8a5a5d0788ac
Вы можете пройти через этапы с первого Txout-скрипта, если вы хотите разорвать этот друг от друга, я не буду повторять, что здесь.
После того, как мы заканчиваем все выходы, единственное, что осталось в сделке является 4 байта lock_time. Как мы можем видеть из вашей сделки:
00000000
Время блокировки 0.
Вот и все. Это вся транзакция декодированию. Надеюсь, что это было полезно