使用Python生成比特幣地址開發教程!簡直絕了!

比特幣 是2009年1月創建的一種

數字貨幣 。比特幣地址是一個唯一的標識符,用作可以發送或保留 加密貨幣 的虛擬位置。交易提供在擁有私鑰和比特幣地址的比特幣錢包之間轉移資產。私鑰確保交易來自錢包的所有者。離線生成比特幣地址也是可能的。這段代碼解釋瞭如何逐步生成比特幣地址。如下圖所示,生成比特幣地址時有一些操作。

使用Python生成比特幣地址開發教程!簡直絕了!

讓我們開始研究如何生成比特幣地址;

步驟1:橢圓曲線數字簽名算法用於生成私鑰,因為公鑰密碼術提供了比特幣的簽名原理。

ecdsaPrivateKey = ecdsa.SigningKey.generate(curve=ecdsa.SECP256k1)

print(“ECDSA Private Key: “, ecdsaPrivateKey.to_string().hex())

步驟2:由於使用了公鑰加密技術,我們需要依賴於私鑰的公鑰。因此我們也使用橢圓曲線數字簽名算法來生成它。

ecdsaPublicKey = ’04’ + ecdsaPrivateKey.get_verifying_key().to_string().hex()

print(“ECDSA Public Key: “, ecdsaPublicKey)

步驟3:我們將SHA256應用於步驟2中創建的ECDSA公鑰。

hash256FromECDSAPublicKey = hashlib.sha256(binascii.unhexlify(

ecdsaPublicKey)).hexdigest()

print(“SHA256(ECDSA Public Key): “, hash256FromECDSAPublicKey)

步驟4:我們將RIDEMP160應用於步驟3中創建的值,並獲得20字節的值。

ridemp160FromHash256 = hashlib.new(‘ripemd160’,

binascii.unhexlify(hash256FromECDSAPublicKey))

print(“RIDEMP160(SHA256(ECDSA Public Key)): “,

ridemp160FromHash256.hexdigest())

步驟5:我們將00作為網絡字節添加到在步驟4中創建的值之前。

prependNetworkByte = ’00’ + ridemp160FromHash256.hexdigest()

print(“Prepend Network Byte to RIDEMP160(SHA256(ECDSA Public Key)): “,

prependNetworkByte)

步驟6:我們將雙SHA256應用於在步驟5中創建的校驗和值。

hash = prependNetworkByte

for x in range(1,3):

hash = hashlib.sha256(binascii.unhexlify(hash)).hexdigest()

print(“t|___>SHA256 #”, x, ” : “, hash)

步驟7:我們獲得在步驟6中創建的4個字節的值作為校驗和。

cheksum = hash[:8]

print(“Checksum(first 4 bytes): “, cheksum)

步驟8:我們將步驟7中創建的校驗和值附加到步驟5中創建的值。

appendChecksum = prependNetworkByte + cheksum

print(“Append Checksum to RIDEMP160(SHA256(ECDSA Public Key)): “,

appendChecksum)

步驟9:我們將Base58編碼應用於在步驟8中創建的值。Base58編碼之後,我們得到的值是比特幣地址。(在Python中,b58encode結果應解碼為utf-8以顯示)

print(“Bitcoin Address: “, bitcoinAddress.decode(‘utf8’))

最後,生成的結果如下:

ECDSA Private Key: 58d31714300fcf58434422014defce57d53f4cc3b76314

d34dee729dcb7fc07e

——————————————————

ECDSA Public Key: 0478e410b429fcc6b9d46d30526fdb6d1fa292f38ce02bd2

c6c569a4d0c06ab7b0bf2c7444f95064b5b4e9ed2ef2eb96425a3e9873315cbeb6a

2e3b22e7978d304

——————————————————

SHA256(ECDSA Public Key): 558f16eb2e93084f763b20a0005734ff32f134ef

53990da26273166bb7afc28c

——————————————————

RIDEMP160(SHA256(ECDSA Public Key)): daa4e87dcb30d406d24f76bcc2afe

2ef550c9068

——————————————————

Prepend Network Byte to RIDEMP160(SHA256(ECDSA Public Key)): 00daa

4e87dcb30d406d24f76bcc2afe2ef550c9068

——————————————————

|___>SHA256 #1 : 1d7d571d176f378eabd73b1e3ac0fb5a688855d41ae5ee89

56afb9c13b5c7027

|___>SHA256 #2 : b0a511fb05bcf1872be44d98dad592c9641fe47ee7f48f1e

cee18b6805bd4ba4

——————————————————

Checksum(first 4 bytes):

b0a511fb

——————————————————

Append Checksum to RIDEMP160(SHA256(ECDSA Public Key)): 00daa4e87

dcb30d406d24f76bcc2afe2ef550c9068b0a511fb

——————————————————

Bitcoin Address: 1Lw5rqh94dWzArQ9tDY6Ucswxo3Ums7VWi

根據國家《 關於防範代幣發行融資風險的公告 》,大家應警惕代幣發行融資與交易的風險隱患。



分享到:


相關文章: