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')
该 身份 对每个客户来说都是独一无二的,并且可以公开。任何人都可以用这个 身份 向你发送虚拟货币,并且会被添加到你的钱包里。
客户端 类的完整代码显示在这里 –
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')
测试客户端
现在,我们将编写代码,说明如何使用 客户端 类-
Dinesh = Client()
print (Dinesh.identity)
上面的代码创建了一个 客户端 的实例,并将其分配给变量 Dinesh。 我们通过调用 Dinesh 的 身份 方法来打印其公钥。输出结果显示在这里 –
30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001
现在,我们让我们在下一章中继续创建一个交易。