欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python區(qū)塊鏈客戶端類開(kāi)發(fā)教程

 更新時(shí)間:2022年05月23日 11:44:27   作者:菜鳥(niǎo)教程  
這篇文章主要為大家介紹了Python區(qū)塊鏈客戶端類開(kāi)發(fā)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

開(kāi)發(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(qián)包從另一個(gè)已知的人那里匯款.同樣,客戶應(yīng)該能夠接受來(lái)自第三方的錢(qián).對(duì)于花錢(qián),客戶將創(chuàng)建一個(gè)指定發(fā)件人姓名和支付金額的交易.為了收款,客戶將向第三方提供他的身份 : 本質(zhì)上是錢(qián)的發(fā)送者.我們不存儲(chǔ)客戶持有的錢(qián)包余額.在交易過(guò)程中,我們將計(jì)算實(shí)際余額,以確??蛻粲凶銐虻挠囝~來(lái)支付.

開(kāi)發(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 算法生成私有和公開(kāi)鍵.感興趣的讀者可以參考本教程來(lái)實(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)單地在一張紙上寫(xiě)下它的ASCII表示.

生成的公共密鑰將用作客戶端的身份.為此,我們定義了一個(gè)名為 identity 的屬性,它返回公鑰的HEX表示.

@property
???def?identity(self):
??????return
binascii.hexlify(self._public_key.exportKey(format='DER'))
.decode('ascii')

標(biāo)識(shí)對(duì)每個(gè)客戶都是唯一的,可以公開(kāi)提供.任何人都可以使用此身份向您發(fā)送虛擬貨幣,它將被添加到您的錢(qián)包中.

客戶端

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)在,我們將編寫(xiě)代碼來(lái)說(shuō)明如何使用客戶端類 :

Dinesh?=?Client()
print?(Dinesh.identity)

以上代碼創(chuàng)建客戶端的實(shí)例并將其分配給var iable Dinesh .我們通過(guò)調(diào)用身份方法打印 Dinesh 的公鑰.

30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07

0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72

3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3

c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6

6f347bd411d07f0203010001

以上就是Python區(qū)塊鏈客戶端類開(kāi)發(fā)教程的詳細(xì)內(nèi)容,更多關(guān)于Python區(qū)塊鏈客戶端類的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論