- Python 区块链教程
- Python 区块链——主页
- Python 区块链——简介
- 区块链——开发客户端
- 区块链——客户端类
- 区块链——交易类
- 创建多个交易
- 区块链——区块类
- 区块链——创建创世区块
- 区块链——创建区块链
- 区块链——添加创世区块
- 区块链——创建矿工
- 区块链——添加区块
- 区块链——范围和结论
- Python 区块链资源
- Python 区块链——快速指南
- Python 区块链——资源
- Python 区块链——讨论
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
现在,我们继续在下一章中创建交易。
广告