Python区块链 客户端类


The Client 类生成 private and public 使用内置 Python 的键 RSA 算法。有兴趣的读者可以参考 本教程 用于实现 RSA。在对象初始化期间,我们创建私钥和公钥并将它们的值存储在实例变量中。

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

请注意,你永远不应该丢失你的私钥。为了保存记录,生成的私钥可以复制到安全的外部存储中,或者你可以简单地在一张纸上写下它的 ASCII 表示。

生成的 public 密钥将用作客户的身份。为此,我们定义了一个名为 identity 返回公钥的十六进制表示。

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

The 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 class:

Dinesh = Client()
print (Dinesh.identity)

上面的代码创建了一个实例 Client 并将其分配给变量 Dinesh .我们打印公钥 Dinesh 通过调用它 identity 方法。输出如下所示:

30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001

现在,让我们继续在下一章创建一个事务。