Blockchain Python - Classe client
le Client classe génère le private et public clés en utilisant le Python intégré RSAalgorithme. Le lecteur intéressé peut se référer àthis tutorialpour la mise en œuvre de RSA. Lors de l'initialisation de l'objet, nous créons des clés privées et publiques et stockons leurs valeurs dans la variable d'instance.
self._private_key = RSA.generate(1024, random)
self._public_key = self._private_key.publickey()
Notez que vous ne devez jamais perdre votre clé privée. Pour la tenue de registres, la clé privée générée peut être copiée sur un stockage externe sécurisé ou vous pouvez simplement écrire la représentation ASCII de celle-ci sur un morceau de papier.
Le généré publicLa clé sera utilisée comme identité du client. Pour cela, nous définissons une propriété appeléeidentity qui renvoie la représentation HEX de la clé publique.
@property
def identity(self):
return
binascii.hexlify(self._public_key.exportKey(format='DER'))
.decode('ascii')
le identityest unique à chaque client et peut être rendu public. N'importe qui pourrait vous envoyer de la monnaie virtuelle en utilisant ceidentity et il sera ajouté à votre portefeuille.
Le code complet du Client la classe est affichée ici -
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 de test
Maintenant, nous allons écrire du code qui illustrera comment utiliser le Client classe -
Dinesh = Client()
print (Dinesh.identity)
Le code ci-dessus crée une instance de Client et l'affecte à la variable Dinesh. Nous imprimons la clé publique deDinesh en appelant son identityméthode. La sortie est affichée ici -
30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001
Maintenant, nous allons passer à la création d'une transaction dans le chapitre suivant.