chainstate leveldb 是否僅包含 P2PKH 和 P2SH 的“地址”?
我正在編寫一個小腳本,它將 utxo 數據庫轉儲到文本文件中。據我所知,這些是
type
每個內部欄位指示的最常見的腳本模式value
:e.g. value: b98276a2ec7700cbc2986ff9aed6825920aece14aa6f5382ca5580 <----><----><><--------------------------------------> / / \ \ height/coinbase value type script data 0x00 = P2PKH (hash160 public key) 0x01 = P2SH (hash160 script) 0x02 = P2PK 0x03 = P2PK 0x04 = P2PK (uncompressed) 0x05 = P2PK (uncompressed)
似乎腳本類型就在那裡,因此您只需要在數據庫中儲存最少量的腳本數據(例如,P2PK、P2PKH 和 P2SH 中的唯一公鑰和腳本雜湊)。
無論如何,假設您只能從腳本類型
0
和1
(通過對腳本數據進行 base58 編碼)中獲取地址,我是否正確?換句話說,chainstate leveldb 不包含任何見證數據以允許您使用 P2WPKH 和 P2WSH 腳本獲取 utxos 的地址?
**編輯:**這是完成的工具:https ://github.com/in3rsha/bitcoin-utxo-dump
是的,Bitcoin Core 確實對標準輸出腳本進行了一些壓縮,以儲存所需的最少量數據。
無論如何,假設您只能從腳本類型
0
和1
(通過對腳本數據進行 base58 編碼)中獲取地址,我是否正確?是的
換句話說,chainstate leveldb 不包含任何見證數據以允許您使用 P2WPKH 和 P2WSH 腳本獲取 utxos 的地址?
如果通過見證數據,您的意思是隔離見證輸出,則不。所有輸出的 scriptPubKeys 都儲存在數據庫中,否則將無法驗證使用任意腳本和 segwit 腳本的交易。這些腳本在沒有特殊壓縮的情況下儲存(即這裡的類型內容)並且只是按原樣序列化。Segwit 輸出已經是最小形式,所以這裡不需要類型。
由於所有 scriptPubKey 都儲存在數據庫中,因此您可以計算每個 UTXO(如果有的話)的地址,包括 segwit UTXO。
此外,見證數據一詞指的是花費隔離見證輸出的交易的簽名和輸入數據。它不涉及任何與 segwit 相關的內容。在您的問題中使用“見證數據”一詞令人困惑。