文章阅读页通栏

基于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!

关键词: Python  比特币地址  
0/300