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