Python Blockchain - คลาสไคลเอนต์

Client คลาสสร้างไฟล์ private และ public คีย์โดยใช้ Python ในตัว RSAอัลกอริทึม ผู้อ่านที่สนใจอาจอ้างถึงthis tutorialสำหรับการใช้งาน RSA ในระหว่างการเริ่มต้นอ็อบเจ็กต์เราจะสร้างคีย์ส่วนตัวและคีย์สาธารณะและเก็บค่าไว้ในตัวแปรอินสแตนซ์

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

โปรดทราบว่าคุณไม่ควรทำคีย์ส่วนตัวหาย สำหรับการเก็บบันทึกคีย์ส่วนตัวที่สร้างขึ้นอาจถูกคัดลอกไปยังที่จัดเก็บข้อมูลภายนอกที่ปลอดภัยหรือคุณอาจจดการแสดง ASCII ลงบนกระดาษ

ที่สร้างขึ้น publicคีย์จะถูกใช้เป็นข้อมูลประจำตัวของลูกค้า สำหรับสิ่งนี้เรากำหนดคุณสมบัติที่เรียกว่าidentity ที่ส่งคืนการแสดง HEX ของคีย์สาธารณะ

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

identityไม่ซ้ำกันสำหรับลูกค้าแต่ละรายและสามารถเผยแพร่สู่สาธารณะได้ ใคร ๆ ก็สามารถส่งสกุลเงินเสมือนจริงให้คุณได้โดยใช้สิ่งนี้identity และจะถูกเพิ่มลงในกระเป๋าเงินของคุณ

รหัสเต็มสำหรับ Client คลาสแสดงที่นี่ -

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 ชั้นเรียน -

Dinesh = Client()
print (Dinesh.identity)

โค้ดด้านบนสร้างอินสแตนซ์ของ Client และกำหนดให้กับตัวแปร Dinesh. เราพิมพ์คีย์สาธารณะของDinesh โดยเรียกมันว่า identityวิธี. ผลลัพธ์จะแสดงที่นี่ -

30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001

ตอนนี้เราให้เราไปสร้างธุรกรรมในบทถัดไป