基於Python的比特幣地址驗證開發教程

買賣虛擬貨幣
交易提供在擁有私鑰和比特幣地址的比特幣錢包之間轉移資產。私鑰確保交易來自錢包的所有者。您還可以在此處檢查如何生成比特幣地址和私鑰。有幾種錢包型別,例如冷錢包和熱錢包。冷藏錢包意味著您將私鑰和比特幣地址保留為離線狀態。由於沒有網路,比特幣地址擁有者有責任對其進行安全保護。紙錢包被視為一種冷錢包。基本上它使比特幣地址和私鑰獨立於任何數字環境或計算機。因此它用於長期持有資產,而不用於即時買賣活動。有許多客戶端比特幣錢包生成器,它們生成比特幣地址和私鑰。通常記住比特幣地址和私鑰並不容易,因為它們來自各種數字和字元。因此它可以作為QR碼記錄在紙上,並可以輕鬆地從移動應用程式或此類應用程式讀取QR碼。

生成區塊鏈地址後,您可以從此處檢查餘額和屬於該地址的交易;儘管客戶端頁面或其他來源會生成比特幣地址,而不會向外部傳送任何資訊,但是我們可以檢查餘額和交易,餘額顯示為0 BTC。此外當我們更改比特幣地址的一個字元時,會收到“Checksum does not exist!”的錯誤提示。該示例說明了如何確保我們的比特幣地址有效。您可以在下圖看到步驟;

讓我們開始研究如何驗證比特幣地址;

步驟1:獲取我們要檢查的值是否有效。

bitcoinAddress = input("Enter a bitcoin address:")
print("--------------------------------------")
print("Bitcoin Address: ", bitcoinAddress)

步驟2:我們將Base58解碼應用於在步驟1獲得的值。

base58Decoder = base58.b58decode(bitcoinAddress).hex()
print("Base58 Decoder: ", base58Decoder)

步驟3:在步驟2中建立的值將儲存network&hash和checksum值。我們嘗試檢查此校驗和值以驗證比特幣地址。

prefixAndHash = base58Decoder[:len(base58Decoder)-8]
checksum = base58Decoder[len(base58Decoder)-8:]
print("\t|___> Prefix & Hash: ", prefixAndHash)
print("\t|___> Checksum: ", checksum)
print("--------------------------------------")

步驟4:根據上圖,我們將SHA256雜湊應用於從步驟3建立的作為Prefix&Hash的值。

hash = prefixAndHash
for x in range(1,3):
    hash = hashlib.sha256(binascii.unhexlify(hash)).hexdigest()
    print("Hash#", x, " : ", hash)
print("--------------------------------------")

步驟5:在步驟4中建立的值的前4個位元組被稱為Checksum。因此在步驟3中建立的校驗和值必須等於該值。

if(checksum == hash[:8]):
    print("[TRUE] checksum is valid!")
else:
    print("[FALSE] checksum is not valid!")

最後,結果如下:

Enter a bitcoin address:1Lw5rqh94dWzArQ9tDY6Ucswxo3Ums7VWi
--------------------------------------
Bitcoin Address:  1Lw5rqh94dWzArQ9tDY6Ucswxo3Ums7VWi
Base58 Decoder:  00daa4e87dcb30d406d24f76bcc2afe2ef550c9068b0a511fb
|___> Prefix & Hash:  00daa4e87dcb30d406d24f76bcc2afe2ef550c9068
|___> Checksum:  b0a511fb
--------------------------------------
Hash 1  :  1d7d571d176f378eabd73b1e3ac0fb5a688855d41ae5ee8956afb9c13b5c7027
Hash 2  :  b0a511fb05bcf1872be44d98dad592c9641fe47ee7f48f1ecee18b6805bd4ba4
--------------------------------------
[TRUE] checksum is valid!

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;