Nach dem Update von Bitcoin Core auf Version 0.15 hat die Chainstate-Datenbank das Datenformat geändert.
Das alte Präfix des Schlüssels war 0x63 , jetzt 0x43 , und Schlüssel/Wert sind unterschiedlich
Wo ist das neue Format beschrieben, oder kann jemand daran arbeiten?
AKTUALISIERT
Probe
Taste:
43000000dcf3713a29f3da53dbde07ea93ace52a4393ba9a009d8ac17c853c18e500
Wert:
d42ade0dfd6a93b6ecbc6098336feedaa21b79128e29d5b7ee2d42
Präfix-BYTE:
0x43
Transaktions-ID:
e5183c857cc18a9d009aba93432ae5ac93ea07dedb53daf3293a71f3dc000000
Index VARINT:
0x00 -> 0x00(0)
Code VARINT:
0xD42A -> 0x2AAA(10922)
Blockhöhe:
Code >> 1 = 0x1555(5461)
Ist Coinbase:
Code & 1 = 0x00(0)
Wert VARINT:
0xDE0D -> 0x2F8D(12173) -> decompressMSB128 -> 0x21084(135300)
Geben Sie VARINT ein:
0xFD6A -> 0x3F6A(16234)
Jeder Eintrag im neuen 0.15-Format ist als definiert outpoint:coin
und hat die folgende Struktur:
Outpoint wird gebildet durch: key | tx_hash | index
.
Wo das key
entspricht b'C'
, oder 43
in hex. Das transaction hash
in ist in Little Endian kodiert und das index
ist ein base128 varint
. Den entsprechenden Quellcode von Bitcoin Core finden Sie hier .
Andererseits wird eine Münze gebildet durch: code | value | out_type | script
.
Wo code
kodiert die Blockhöhe und ob die Transaktion Coinbase ist oder nicht, als 2*height + coinbase
, das value
ist ein txout compressed base128 varint
, das out_type
ist auch ein base128 varint
, und das script
sind die verbleibenden Daten. Den entsprechenden Quellcode von Bitcoin Core finden Sie hier .
Version 0.15 verwendete immer noch einen Verschleierungsschlüssel, um das Auslösen von Antivirensoftware zu vermeiden. Sie können diese Antwort überprüfen, um zu erfahren, wie sie in der Datenbank gespeichert ist und wie Sie sie verwenden können, um Ihre Daten zu entschlüsseln.
Wenn Sie schließlich einen Decoder für beide Versionen 0.14 (0.8-0.14) und das neue 0.15-Format benötigen, können Sie dieses GitHub-Repo überprüfen (insbesondere Funktionen decode_utxo
und decode_utxo_v08_v014
von utils.py ).
Haftungsausschluss: Ich bin der Autor des Repos.
TxID: e5183c857cc18a9d009aba93432ae5ac93ea07dedb53daf3293a71f3dc000000 DecodedValue: bafe78849575007bba135794915ad83d8f25cbd406b9c92b52963a Code: 983032 Height: 491516 Amount: 942800 (84853) OutType: 0 (P2PKH) Script: 7bba135794915ad83d8f25cbd406b9c92b52963a
Der eigentliche Hash160 muss 7b8268c6115b707d17cccfdf9be636467a80f9e4 sein. Ist das Skript irgendwie kodiert?7bba135794915ad83d8f25cbd406b9c92b52963a
? Das ist die Antwort, die ich bekomme:{'coinbase': 0, 'tx_id': '000000dcf3713a29f3da53dbde07ea93ace52a4393ba9a009d8ac17c853c18e5', 'height': 491516, 'outs': [{'amount': 942800, 'out_type': 0, 'data': '7b8268c6115b707d17cccfdf9be636467a80f9e4'}], 'index': 0}
Jus12