区块链研究实验室|使用Python生成比特币地址开发教程

  • 时间:
  • 浏览:43
  • 来源:区块链技术网

比特币是2009年1月创建的一种数字货币。比特币地址是一个唯一的标识符,用作可以发送或保留加密货币的虚拟位置。交易提供在拥有私钥和比特币地址的比特币钱包之间转移资产。私钥确保交易来自钱包的所有者。离线生成比特币地址也是可能的。这段代码解释了如何逐步生成比特币地址。如下图所示,生成比特币地址时有一些操作。

让我们开始研究如何生成比特币地址;步骤1:椭圆曲线数字签名算法用于生成私钥,因为公钥密码术提供了比特币的签名原理。

ecdsaPrivateKey=ecdsa.SigningKey.generate(curve=ecdsa.SECP256k1)print("ECDSAPrivateKey:",ecdsaPrivateKey.to_string().hex())步骤2:由于使用了公钥加密技术,我们需要依赖于私钥的公钥。因此我们也使用椭圆曲线数字签名算法来生成它。

ecdsaPublicKey='04'+ecdsaPrivateKey.get_verifying_key().to_string().hex()print("ECDSAPublicKey:",ecdsaPublicKey)步骤3:我们将SHA256应用于步骤2中创建的ECDSA公钥。
hash256FromECDSAPublicKey=hashlib.sha256(binascii.unhexlify(ecdsaPublicKey)).hexdigest()print("SHA256(ECDSAPublicKey):",hash256FromECDSAPublicKey)步骤4:我们将RIDEMP160应用于步骤3中创建的值,并获得20字节的值。
ridemp160FromHash256=hashlib.new('ripemd160',binascii.unhexlify(hash256FromECDSAPublicKey))print("RIDEMP160(SHA256(ECDSAPublicKey)):",ridemp160FromHash256.hexdigest())步骤5:我们将00作为网络字节添加到在步骤4中创建的值之前。
prependNetworkByte='00'+ridemp160FromHash256.hexdigest()print("PrependNetworkBytetoRIDEMP160(SHA256(ECDSAPublicKey)):",prependNetworkByte)步骤6:我们将双SHA256应用于在步骤5中创建的校验和值。

hash=prependNetworkByteforxinrange(1,3):hash=hashlib.sha256(binascii.unhexlify(hash)).hexdigest()print("\t|___>SHA256#",x,":",hash)步骤7:我们获得在步骤6中创建的4个字节的值作为校验和。

cheksum=hash[:8]print("Checksum(first4bytes):",cheksum)步骤8:我们将步骤7中创建的校验和值附加到步骤5中创建的值。

appendChecksum=prependNetworkByte+cheksumprint("AppendChecksumtoRIDEMP160(SHA256(ECDSAPublicKey)):",appendChecksum)步骤9:我们将Base58编码应用于在步骤8中创建的值。Base58编码之后,我们得到的值是比特币地址。(在Python中,b58encode结果应解码为utf-8以显示)

bitcoinAddress=base58.b58encode(binascii.unhexlify(appendChecksum))print("BitcoinAddress:",bitcoinAddress.decode('utf8'))最后,生成的结果如下:

ECDSAPrivateKey:58d31714300fcf58434422014defce57d53f4cc3b76314

d34dee729dcb7fc07e------------------------------------------------------ECDSAPublicKey:0478e410b429fcc6b9d46d30526fdb6d1fa292f38ce02bd2

c6c569a4d0c06ab7b0bf2c7444f95064b5b4e9ed2ef2eb96425a3e9873315cbeb6a

2e3b22e7978d304------------------------------------------------------SHA256(ECDSAPublicKey):558f16eb2e93084f763b20a0005734ff32f134ef

53990da26273166bb7afc28c------------------------------------------------------RIDEMP160(SHA256(ECDSAPublicKey)):daa4e87dcb30d406d24f76bcc2afe

2ef550c9068------------------------------------------------------PrependNetworkBytetoRIDEMP160(SHA256(ECDSAPublicKey)):00daa

4e87dcb30d406d24f76bcc2afe2ef550c9068------------------------------------------------------|___>SHA256#1:1d7d571d176f378eabd73b1e3ac0fb5a688855d41ae5ee89

56afb9c13b5c7027|___>SHA256#2:b0a511fb05bcf1872be44d98dad592c9641fe47ee7f48f1e

cee18b6805bd4ba4------------------------------------------------------Checksum(first4bytes):b0a511fb------------------------------------------------------AppendChecksumtoRIDEMP160(SHA256(ECDSAPublicKey)):00daa4e87

dcb30d406d24f76bcc2afe2ef550c9068b0a511fb------------------------------------------------------BitcoinAddress:1Lw5rqh94dWzArQ9tDY6Ucswxo3Ums7VWi

猜你喜欢

通胀高企,为何比特币和黄金还双双下跌?

自2022开年以来,比特币已连续7日下跌。从1月1日的最高点47954美元/枚至1月7日的最低点40610美元/枚,跌幅达15.3%。以太坊当前报价3212美元/枚,自开年以来已跌去17.6%。

2022-01-08

这么大的事情,比特币才跌了7个点?

今天凌晨比特币下跌7%,连带其他币种一起下跌,形成了今天的行情。

2022-01-07

回顾一年,比特币的表现值得骄傲

2021年已经接近尾声,跌宕起伏了一年的加密市场动荡依然。这一年,比特币创下一连串新高,又屡屡回调;这一年,监管强势出手,市场被挤压、重塑;同样在这一年,DeFi、NFT、元宇宙等令人眼花缭乱的新概念又打开了一片新天地……

2021-12-31

区块链红利吃饱后,这个巨头又想"征服"元宇宙?

据12月26日消息,百度与英伟达(NVIDIA)已达成协议,双方合作共建AI元宇宙。另外,在今日举行的百度AI开发者大会上,英伟达全球副总裁暨亚太区总裁 Raymond Teh将受邀出席,并发表主题演讲。

2021-12-27

比特币迎圣诞行情重返51000美元,创两周新高

随着亚洲市场对比特币的抛售逐渐减弱,加密货币市场开始反弹。其中比特币重返51000美元关口,达到两周以来的最高水平。以太坊的价格突破4100美元,24小时涨幅近4%。

2021-12-24