Python区块链客户端类开发教程

作者:菜鸟教程 时间:2023-06-18 03:05:51 

开发客户端

客户是持有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 的公钥.

30819f300d06092a864886f70d010101050003818d0030818902818100b547fafceeb131e07

0166a6b23fec473cce22c3f55c35ce535b31d4c74754fecd820aa94c1166643a49ea5f49f72

3181ff943eb3fdc5b2cb2db12d21c06c880ccf493e14dd3e93f3a9e175325790004954c34d3

c7bc2ccc9f0eb5332014937f9e49bca9b7856d351a553d9812367dc8f2ac734992a4e6a6ff6

6f347bd411d07f0203010001

来源:https://www.it1352.com/OnLineTutorial/python_blockchain/python_blockchain_client_class.html

标签:Python,区块链,客户端,类
0
投稿

猜你喜欢

  • PHP+jQuery翻板抽奖功能实现

    2024-05-05 09:17:43
  • Python中文件的写入读取以及附加文字方法

    2021-03-03 12:05:15
  • mysql压缩包版zip安装配置方法

    2024-01-17 08:06:01
  • mysql 8.0.21 安装配置方法图文教程

    2024-01-18 20:34:44
  • keras回调函数的使用

    2022-08-22 11:42:41
  • 使用 PHP Masked Package 屏蔽敏感数据的实现方法

    2023-09-03 23:49:13
  • django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】

    2022-02-27 23:20:03
  • python保存字典和读取字典的实例代码

    2023-05-12 14:17:54
  • Python实现字典的key和values的交换

    2021-08-18 03:45:49
  • Python实现类似比特币的加密货币区块链的创建与交易实例

    2022-03-19 15:49:49
  • mysql和oracle默认排序的方法 - 不指定order by

    2024-01-27 17:44:28
  • Python基础之hashlib模块subprocess模块logging模块

    2022-08-12 02:45:52
  • Oracle平台应用数据库系统的设计与开发

    2010-07-21 13:03:00
  • jQuery实现的简单分页示例

    2024-04-09 19:45:29
  • Go 切片导致内存泄露的几种原因

    2024-02-03 18:45:33
  • python如何查找图片按钮的坐标位置

    2023-01-07 21:57:53
  • 分析SQL语句性能3种方法分享

    2012-06-06 20:09:30
  • Tensorflow读取并输出已保存模型的权重数值方式

    2023-09-15 10:07:49
  • 解决oracle用户连接失败的解决方法

    2011-01-04 19:35:00
  • MySQL连接查询实例详解

    2024-01-28 11:39:13
  • asp之家 网络编程 m.aspxhome.com