Python Blockchain - Clase de cliente

los Client clase genera el private y public claves usando el Python incorporado RSAalgoritmo. El lector interesado puede consultarthis tutorialpara la implementación de RSA. Durante la inicialización del objeto, creamos claves públicas y privadas y almacenamos sus valores en la variable de instancia.

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

Tenga en cuenta que nunca debe perder su clave privada. Para el mantenimiento de registros, la clave privada generada se puede copiar en un almacenamiento externo seguro o simplemente puede escribir la representación ASCII de la misma en una hoja de papel.

El generado publicLa clave se utilizará como la identidad del cliente. Para esto, definimos una propiedad llamadaidentity que devuelve la representación HEX de la clave pública.

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

los identityes único para cada cliente y puede estar disponible públicamente. Cualquiera podría enviarte moneda virtual usando esteidentity y se agregará a su billetera.

El código completo para el Client la clase se muestra aquí -

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

Cliente de prueba

Ahora, escribiremos código que ilustrará cómo usar el Client clase -

Dinesh = Client()
print (Dinesh.identity)

El código anterior crea una instancia de Client y lo asigna a la variable Dinesh. Imprimimos la clave pública deDinesh llamando a su identitymétodo. La salida se muestra aquí:

30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001

Ahora, pasemos a crear una transacción en el siguiente capítulo.