Python區(qū)塊鏈客戶端類開發(fā)教程
開發(fā)客戶端
客戶是持有TPCoins并從網(wǎng)絡(luò)上的其他供應(yīng)商處交換商品/服務(wù)的客戶,包括他自己的.我們應(yīng)該為此目的定義 Client 類.要為客戶端創(chuàng)建全局唯一標(biāo)識,我們使用PKI(公鑰基礎(chǔ)結(jié)構(gòu)).在本章中,讓我們詳細討論一下.
客戶應(yīng)該能夠?qū)㈠X包從另一個已知的人那里匯款.同樣,客戶應(yīng)該能夠接受來自第三方的錢.對于花錢,客戶將創(chuàng)建一個指定發(fā)件人姓名和支付金額的交易.為了收款,客戶將向第三方提供他的身份 : 本質(zhì)上是錢的發(fā)送者.我們不存儲客戶持有的錢包余額.在交易過程中,我們將計算實際余額,以確保客戶有足夠的余額來支付.
開發(fā)客戶端類,其余在項目中的代碼中,我們需要導(dǎo)入許多Python庫.這些列在下面 :
#?import?libraries import?hashlib import?random import?string import?json import?binascii import?numpy?as?np import?pandas?as?pd import?pylab?as?pl import?logging import?datetime import?collections
除了上述標(biāo)準(zhǔn)庫之外,我們還要簽署交易,創(chuàng)建對象的哈希等.為此,您需要導(dǎo)入以下庫 :
#?following?imports?are?required?by?PKI import?Crypto import?Crypto.Random from?Crypto.Hash?import?SHA from?Crypto.PublicKey?import?RSA from?Crypto.Signature?import?PKCS1_v1_5
客戶端類
客戶端類使用內(nèi)置的Python RSA 算法生成私有和公開鍵.感興趣的讀者可以參考本教程來實現(xiàn)RSA.在對象初始化期間,我們創(chuàng)建私鑰和公鑰并將它們的值存儲在實例變量中.
self._private_key?=?RSA.generate(1024,?random) self._public_key?=?self._private_key.publickey()
請注意,永遠不要丟失私鑰.為了保留記錄,生成的私鑰可以復(fù)制到安全的外部存儲器上,或者您可以簡單地在一張紙上寫下它的ASCII表示.
生成的公共密鑰將用作客戶端的身份.為此,我們定義了一個名為 identity 的屬性,它返回公鑰的HEX表示.
@property
???def?identity(self):
??????return
binascii.hexlify(self._public_key.exportKey(format='DER'))
.decode('ascii')標(biāo)識對每個客戶都是唯一的,可以公開提供.任何人都可以使用此身份向您發(fā)送虛擬貨幣,它將被添加到您的錢包中.
客戶端
class?Client:
???def?__init__(self):
??????random?=?Crypto.Random.new().read
??????self._private_key?=?RSA.generate(1024,?random)
??????self._public_key?=?self._private_key.publickey()
??????self._signer?=?PKCS1_v1_5.new(self._private_key)
???@property
???def?identity(self):
??????return
binascii.hexlify(self._public_key.exportKey(format='DER')).decode('ascii')測試客戶端
現(xiàn)在,我們將編寫代碼來說明如何使用客戶端類 :
Dinesh?=?Client() print?(Dinesh.identity)
以上代碼創(chuàng)建客戶端的實例并將其分配給var iable Dinesh .我們通過調(diào)用身份方法打印 Dinesh 的公鑰.
30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001
以上就是Python區(qū)塊鏈客戶端類開發(fā)教程的詳細內(nèi)容,更多關(guān)于Python區(qū)塊鏈客戶端類的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python實現(xiàn)批量壓縮解壓文件(zip、rar)
Python是一種廣泛使用的編程語言,非常適合處理各種任務(wù),包括批量解壓縮文件,本文主要介紹了Python實現(xiàn)批量壓縮解壓文件,具有一定的參考價值,感興趣的可以了解一下2023-09-09
解決pytorch下只打印tensor的數(shù)值不打印出device等信息的問題
這篇文章主要介紹了解決pytorch下只打印tensor的數(shù)值不打印出device等信息的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
Python爬蟲實戰(zhàn)之網(wǎng)易云音樂加密解析附源碼
讀萬卷書不如行萬里路,學(xué)的扎不扎實要通過實戰(zhàn)才能看出來,本篇文章手把手帶你解析網(wǎng)易云音樂數(shù)據(jù),大家可以在實戰(zhàn)過程中更有效的掌握python2021-10-10
python將多個py文件和其他文件打包為exe可執(zhí)行文件
這篇文章主要介紹了python將多個py文件和其他文件打包為exe可執(zhí)行文件,通過準(zhǔn)備要打包的工程文件展開詳情,需要的小伙伴可以參考一下2022-05-05
關(guān)于python與opc ua Expert endpoint連接的問題
這篇文章主要介紹了關(guān)于python與opc ua Expert endpoint連接的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

