Python 區塊鏈——客戶端類



客戶端類使用 Python RSA 演算法內建演算法生成私有公有金鑰。有興趣的讀者可以參考本教程,瞭解 RSA 的實現。在物件初始化期間,我們建立私鑰和公鑰,並將它們的值儲存在例項變數中。

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

請注意,你千萬不能丟失私鑰。為了存檔,可以將生成的私鑰複製到安全的外部儲存,或簡單地將私鑰的 ASCII 表示形式記在紙上。

生成的公有金鑰將用作客戶端的身份。為此,我們定義一個名為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。透過呼叫identity方法,列印Dinesh的公鑰。這裡顯示輸出——

30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001

現在,我們繼續在下一章中建立交易。

廣告