开发客户端
客户是持有TPCoins并从网络上的其他供应商处交换商品/服务的客户,包括他自己的.我们应该为此目的定义 Client 类.要为客户端创建全局唯一标识,我们使用PKI(公钥基础结构).在本章中,让我们详细讨论一下.
客户应该能够将钱包从另一个已知的人那里汇款.同样,客户应该能够接受来自第三方的钱.对于花钱,客户将创建一个指定发件人姓名和支付金额的交易.为了收款,客户将向第三方提供他的身份 : 本质上是钱的发送者.我们不存储客户持有的钱包余额.在交易过程中,我们将计算实际余额,以确保客户有足够的余额来支付.
开发客户端类,其余在项目中的代码中,我们需要导入许多Python库.这些列在下面 :
#?import?libraries import?hashlib import?random import?string import?json import?binascii import?numpy?as?np import?pandas?as?pd import?pylab?as?pl import?logging import?datetime import?collections
除了上述标准库之外,我们还要签署交易,创建对象的哈希等.为此,您需要导入以下库 :
#?following?imports?are?required?by?PKI import?Crypto import?Crypto.Random from?Crypto.Hash?import?SHA from?Crypto.PublicKey?import?RSA from?Crypto.Signature?import?PKCS1_v1_5
客户端类
客户端类使用内置的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)
以上代码创建客户端的实例并将其分配给var iable Dinesh .我们通过调用身份方法打印 Dinesh 的公钥.
以上就是Python区块链客户端类开发教程的详细内容,更多关于Python区块链客户端类的资料请关注其它相关文章!
查看更多关于Python区块链客户端类开发教程的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did17081