区块链研究实验室|基于Python的比特币地址验证开发教程

论坛 期权论坛 期权     
区块链研究实验室   2020-3-28 04:29   1507   0
交易提供在拥有私钥和比特币地址的比特币钱包之间转移资产。私钥确保交易来自钱包的所有者。您还可以在此处检查如何生成比特币地址和私钥。区块链研究实验室|使用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 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:6
帖子:5
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP