Bitcoin-Core

UXTO DB 結構

  • November 4, 2017

將 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 hashin 以小端序編碼,而theindexbase128 varint. 可以在此處找到相應的比特幣核心原始碼。

另一方面,硬幣由以下組成:code | value | out_type | script

wherecode對區塊高度和交易是否為 coinbase 進行編碼,如2*height + coinbasevalue是 a txout compressed base128 varintout_type也是 a base128 varintscript是剩餘數據。可以在此處找到相應的比特幣核心原始碼。

0.15 版仍然使用混淆密鑰來避免觸發防毒軟體,您可以查看此答案以了解它是如何儲存在數據庫中的以及如何使用它對您的數據進行去混淆處理。

最後,如果您需要 0.14 (0.8-0.14) 版本和新 0.15 格式的解碼器,您可以查看這個GitHub儲存庫(特別是函式decode_utxodecode_utxo_v08_v014來自utils.py 的)。

免責聲明:我是回購協議的作者。

引用自:https://bitcoin.stackexchange.com/questions/61907