Хорошо еще одна загадка декодирования
Пример ТХ:
http://webbtc.com/tx/14015bd586c0c7a28979ca294b114441f23bfc97be17cd6077b9e12e2709fec3E: \ Repos \ UxtoParser \ UxtoParser.Demo \ Bin \ Debug>UxtoParser.Demo.exe ТХ 14015bd586c0c7a28979ca294b114441f23bfc97be17cd6077b9e12e2709fec3
Ключ:
63C3FE09272EE1B97760CD17BE97FC3BF24144114B29CA7989A2C7C086D55B0114
Стоимость:
010C013600946CB2E08075BCBAF157E47BCB67EB2B2339D24268800F514104E6DA9C60084B43D28266243C636BCDAF4D8F17B5954E078D2DECE7D4659E0DEE34
19A40B939C24AC813C692A323CA5207A6FB387FFE28E48F706C95DBF46648F210226CB0561011D9045F6371CB09086BA7148D9942328BCF1DD78CB6EDB35CCDD
A921022EAC137AB02D826DF0AF54E92A352945C9892DF6CD77F1A7C390FC82C8B0EDEA53AE8F9D01
Так что я начать декодирование, как это.
010C013600946CB2E08075BCBAF157E47BCB67EB2B2339D24268800F514104E6DA9C60084B43D28266243C636BCDAF4D8F17B5954E078D2DECE7D4659E0DEE341 9A40B939C24AC813C692A323CA5207A6FB387FFE28E48F706C95DBF46648F210226CB0561011D90 45F6371CB09086BA7148D9942328BCF1DD78CB6EDB35CCDDA921022EAC137AB02D826DF0AF54E92 A352945C9892DF6CD77F1A7C390FC82C8B0EDEA53AE8F9D01
Версия: 0x01 = Ver 1
Код: 0x0C01 = Первый байт (бит 1 = 0 = не coinbase, бит 2 = 0 = Vout [0] уже израсходованы, бит 3 = 1 = Vout [1] израсходованными, бит 4-8 = 0x0001 = один байт следующим образом .. Второй байт = 0x000000001 Это растровое изображение из остальной части неизрасходованных выходов (от Vout [2] +) Бит 1 устанавливается 1 + 1 = 2, так Vout [2] неизрасходованного Резюме:... 2 неизрасходованные выходы ( Vout [1] & Vout [2], ни является выходом coinbase).
Vout [1] | 36 | 00 | 946CB2E08075BCBAF157E47BCB67EB2B2339D242 |
Значение: MSB-128: 0x36 -> VarInt: 54 -> 6000
Код: 0x00 = P2PH
PkHash: 946cb2e08075bcbaf157e47bcb67eb2b2339d242
Vout [2] | 68 | 800F | 514104E6DA9C60084B43D28266243C636BCDAF4D8F17B5954E078D2DECE7D4659E0DEE3419A40B939C24AC813C692A323CA5207A6FB387FFE28E48F706C95DBF46648F210226CB0561011D9045F6371CB09086BA7148D9942328BCF1DD78CB6EDB35CCDDA921022EAC137AB02D826DF0AF54E92A352945C9892DF6CD77F1A7C390FC82C8B0EDEA53AE |
Значение: MSB-128: 0x68 -> VarInt: 104 -> 12000
Код: 0x800f. Первый байт не 0x01 до 0x05 поэтому код представляет длину произвольного скрипта. Как декодировать длину? Сценарий: 514104e6da9c60084b43d28266243c636bcdaf4d8f17b5954e078d2dece7d4659e0dee3419a40b9
39c24ac813c692a323ca5207a6fb387ffe28e48f706c95dbf46648f2102
26cb0561011d9045f6371cb09086ba7148d9942328bcf1dd78cb6edb35ccdda921022eac137ab02
d826df0af54e92a352945c9892df6cd77f1a7c390fc82c8b0edea53ae
Блок: MSB-128: 0x8f9d01 -> 265985
Из Я способен декодировать всю запись UXTO кроме "код" элемент на второй Vout [0]. Все остальное соответствует данным из blockchain. Для стандартных типов ТХ код будет один байт и в диапазоне 0x01-0x05 иначе это как-то? представляет длину сценария и может быть один или два байта. Исходный код не является особенно описательным (script.h).
* Другие сценарии до 121 байт требуется 1 байт длины + сценария. Выше
* Что, сценарии до 16505 байт требуется 2 байта + длина сценария.
Декодирование 0x800f с использованием MSB-128 результатов на 143, но фактический сценарий составляет 137 байт.
Есть идеи?