开发客户端
客户是持有TPCoins并从网络上的其他供应商处交换商品/服务的客户,包括他自己的.我们应该为此目的定义 Client 类.要为客户端创建全局唯一标识,我们使用PKI(公钥基础结构).在本章中,让我们详细讨论一下.
客户应该能够将钱包从另一个已知的人那里汇款.同样,客户应该能够接受来自第三方的钱.对于花钱,客户将创建一个指定发件人姓名和支付金额的交易.为了收款,客户将向第三方提供他的身份 : 本质上是钱的发送者.我们不存储客户持有的钱包余额.在交易过程中,我们将计算实际余额,以确保客户有足够的余额来支付.
开发客户端类,其余在项目中的代码中,我们需要导入许多Python库.这些列在下面 :
1
2
3
4
5
6
7
8
9
10
11
12
|
# 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 |
除了上述标准库之外,我们还要签署交易,创建对象的哈希等.为此,您需要导入以下库 :
1
2
3
4
5
6
|
# 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.在对象初始化期间,我们创建私钥和公钥并将它们的值存储在实例变量中.
1
2
|
self ._private_key = RSA.generate( 1024 , random) self ._public_key = self ._private_key.publickey() |
请注意,永远不要丢失私钥.为了保留记录,生成的私钥可以复制到安全的外部存储器上,或者您可以简单地在一张纸上写下它的ASCII表示.
生成的公共密钥将用作客户端的身份.为此,我们定义了一个名为 identity 的属性,它返回公钥的HEX表示.
1
2
3
4
5
|
@property def identity( self ): return binascii.hexlify( self ._public_key.exportKey( format = 'DER' )) .decode( 'ascii' ) |
标识对每个客户都是唯一的,可以公开提供.任何人都可以使用此身份向您发送虚拟货币,它将被添加到您的钱包中.
客户端
1
2
3
4
5
6
7
8
9
10
|
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' ) |
测试客户端
现在,我们将编写代码来说明如何使用客户端类 :
1
2
|
Dinesh = Client() print (Dinesh.identity) |
以上代码创建客户端的实例并将其分配给var iable Dinesh .我们通过调用身份方法打印 Dinesh 的公钥.
30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07
0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72
3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3
c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6
6f347bd411d07f0203010001
以上就是Python区块链客户端类开发教程的详细内容,更多关于Python区块链客户端类的资料请关注服务器之家其它相关文章!
原文链接:https://www.it1352.com/OnLineTutorial/python_blockchain/python_blockchain_client_class.html