Address
在數據庫中儲存隔離見證地址的最有效方法
這不是在數據庫中儲存比特幣地址的最有效方法是什麼的副本?但這是同一個問題,除了我需要一個隔離見證的答案。
假設我想將每個標準 BTC 地址儲存在 SQL 數據庫中。最節省空間的方法是通過轉換為 base58 來提取 HASH160 地址,然後切掉校驗和。這將允許您以 20 個字節儲存 BTC 地址。
直到隔離見證區塊出現。
有沒有辦法從以下位置獲取 hash160 地址:bc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c
如果沒有,有人能告訴我將這個地址儲存在數據庫中的最節省空間的方法嗎?
我無需將其轉換回原始字元串,只需確保其身份即可。
謝謝
有沒有辦法從 bc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c 獲取 hash160 地址
是的,您可以使用各種語言的參考實現來編碼和解碼 bech32 地址。例如,我已經
bc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c
使用下面的 python 解碼了您在問題中提到的範例地址。decode 函式為我們提供了見證版本(在本例中為 0)和一個字節數組。import bech32 address = "bc1q34aq5drpuwy3wgl9lhup9892qp6svr8ldzyy7c" address_decoded = bech32.decode("bc", address) address_decoded # a tuple containing witness version and bytearray of the address >>> (0, [141, 122, 10, 52, 97, 227, 137, 23, 35, 229, 253, 248, 18, 156, 170, 0, 117, 6, 12, 255]) bytes(address_decoded[1]) >>> b'\x8dz\n4a\xe3\x89\x17#\xe5\xfd\xf8\x12\x9c\xaa\x00u\x06\x0c\xff'
需要注意的幾點:
- 您在這裡提到的地址是 P2WPKH,長度為 20 個字節。但是,P2WSH 地址是 32 個字節(它們也以“bc1…”開頭),因為我們使用見證腳本的 SHA256 而不是 HASH160。
- 儘管版本 0 地址(P2PKH、P2WSH)將具有 1+20 或 1+32 字節的數據有效負載,但 BIP173在見證程序中最多允許 40 字節,總共 1+40 字節。