Bitcoin-Core
UXTO DB 結構
將 Bitcoin Core 更新到 0.15 版後,chainstate 數據庫更改了數據格式。
鍵的舊前綴是0x63 ,現在是 0x43 **,**鍵/值不同
新格式在哪裡描述,或者有人可以解決這個問題嗎?
更新
樣本
鑰匙:
43000000dcf3713a29f3da53dbde07ea93ace52a4393ba9a009d8ac17c853c18e500
價值:
d42ade0dfd6a93b6ecbc6098336feedaa21b79128e29d5b7ee2d42
前綴字節:
0x43
交易編號:
e5183c857cc18a9d009aba93432ae5ac93ea07dedb53daf3293a71f3dc000000
索引 VARINT:
0x00 -> 0x00(0)
程式碼 VARINT:
0xD42A -> 0x2AAA(10922)
塊高度:
Code >> 1 = 0x1555(5461)
是 Coinbase:
Code & 1 = 0x00(0)
值 VARINT:
0xDE0D -> 0x2F8D(12173) -> decompressMSB128 -> 0x21084(135300)
類型 VARINT:
0xFD6A -> 0x3F6A(16234)
新 0.15 格式中的每個條目都定義為
outpoint:coin
,並具有以下結構:Outpoint由以下組成:
key | tx_hash | index
。其中
key
對應於b'C'
,或43
以十六進製表示。transaction hash
in 以小端序編碼,而theindex
是base128 varint
. 可以在此處找到相應的比特幣核心原始碼。另一方面,硬幣由以下組成:
code | value | out_type | script
。where
code
對區塊高度和交易是否為 coinbase 進行編碼,如2*height + coinbase
,value
是 atxout compressed base128 varint
,out_type
也是 abase128 varint
,script
是剩餘數據。可以在此處找到相應的比特幣核心原始碼。0.15 版仍然使用混淆密鑰來避免觸發防毒軟體,您可以查看此答案以了解它是如何儲存在數據庫中的以及如何使用它對您的數據進行去混淆處理。
最後,如果您需要 0.14 (0.8-0.14) 版本和新 0.15 格式的解碼器,您可以查看這個GitHub儲存庫(特別是函式
decode_utxo
和decode_utxo_v08_v014
來自utils.py 的)。免責聲明:我是回購協議的作者。