Python Blockchain - Classe client

Il Client class genera il file private e public chiavi utilizzando il Python integrato RSAalgoritmo. Il lettore interessato può fare riferimento athis tutorialper l'implementazione di RSA. Durante l'inizializzazione dell'oggetto, creiamo chiavi private e pubbliche e memorizziamo i loro valori nella variabile di istanza.

self._private_key = RSA.generate(1024, random)
self._public_key = self._private_key.publickey()

Nota che non dovresti mai perdere la tua chiave privata. Per la conservazione dei dati, la chiave privata generata può essere copiata su una memoria esterna protetta o si può semplicemente annotare la sua rappresentazione ASCII su un pezzo di carta.

Il generato publicla chiave verrà utilizzata come identità del cliente. Per questo, definiamo una proprietà chiamataidentity che restituisce la rappresentazione HEX della chiave pubblica.

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

Il identityè unico per ogni cliente e può essere reso disponibile pubblicamente. Chiunque sarebbe in grado di inviarti valuta virtuale usando questoidentity e verrà aggiunto al tuo portafoglio.

Il codice completo per Client la classe è mostrata qui -

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')

Client di prova

Ora scriveremo il codice che illustrerà come usare il Client classe -

Dinesh = Client()
print (Dinesh.identity)

Il codice precedente crea un'istanza di Client e lo assegna alla variabile Dinesh. Stampiamo la chiave pubblica diDinesh chiamando il suo identitymetodo. L'output è mostrato qui -

30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001

Passiamo ora alla creazione di una transazione nel prossimo capitolo.