Blockchain Python - classe cliente
o Client classe gera o private e public chaves usando o Python integrado RSAalgoritmo. O leitor interessado pode se referir athis tutorialpara a implementação do RSA. Durante a inicialização do objeto, criamos chaves privadas e públicas e armazenamos seus valores na variável de instância.
self._private_key = RSA.generate(1024, random)
self._public_key = self._private_key.publickey()
Observe que você nunca deve perder sua chave privada. Para manutenção de registros, a chave privada gerada pode ser copiada em um armazenamento externo seguro ou você pode simplesmente escrever a representação ASCII dela em um pedaço de papel.
O gerado publica chave será usada como a identidade do cliente. Para isso, definimos uma propriedade chamadaidentity que retorna a representação HEX da chave pública.
@property
def identity(self):
return
binascii.hexlify(self._public_key.exportKey(format='DER'))
.decode('ascii')
o identityé exclusivo para cada cliente e pode ser disponibilizado ao público. Qualquer pessoa seria capaz de enviar moeda virtual para você usando esteidentity e ele será adicionado à sua carteira.
O código completo para o Client classe é mostrada aqui -
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 Teste
Agora, vamos escrever um código que ilustrará como usar o Client classe -
Dinesh = Client()
print (Dinesh.identity)
O código acima cria uma instância de Client e o atribui à variável Dinesh. Imprimimos a chave pública deDinesh chamando seu identitymétodo. A saída é mostrada aqui -
30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001
Agora, vamos prosseguir para criar uma transação no próximo capítulo.