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

 更新时间:2022年05月23日 11:44:27   作者:菜鸟教程  
这篇文章主要为大家介绍了Python区块链客户端类开发教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

开发客户端

客户是持有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

以上就是Python区块链客户端类开发教程的详细内容,更多关于Python区块链客户端类的资料请关注脚本之家其它相关文章!

相关文章

  • python中对信号的处理详解

    python中对信号的处理详解

    这篇文章主要给大家介绍了关于python中对信号处理的相关资料, 计算机借助信号来接收和发送各种命令,操作系统针对其编程要接收或生成的每种命令列出了至少一个信号,需要的朋友可以参考下
    2021-07-07
  • Python数值方法及数据可视化

    Python数值方法及数据可视化

    这篇文章主要介绍了Python数值方法及数据可视化,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09
  • python实现跳表SkipList的示例代码

    python实现跳表SkipList的示例代码

    这篇文章主要介绍了python实现跳表SkipList的示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-07-07
  • 在Pytorch中使用样本权重(sample_weight)的正确方法

    在Pytorch中使用样本权重(sample_weight)的正确方法

    今天小编就为大家分享一篇在Pytorch中使用样本权重(sample_weight)的正确方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • pandas的Series类型与基本操作详解

    pandas的Series类型与基本操作详解

    这篇文章主要介绍了pandas的Series类型与基本操作详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python设计模式之职责链模式原理与用法实例分析

    Python设计模式之职责链模式原理与用法实例分析

    这篇文章主要介绍了Python设计模式之职责链模式,结合具体实例形式分析了Python责任链模式的概念、原理、定义与使用方法,需要的朋友可以参考下
    2019-01-01
  • 在Python中使用SQLite的简单教程

    在Python中使用SQLite的简单教程

    这篇文章主要介绍了在Python中使用SQLite的简单教程,SQLite作为嵌入式数据库被内置于历代Python版本中,需要的朋友可以参考下
    2015-04-04
  • python json.dumps中文乱码问题解决

    python json.dumps中文乱码问题解决

    这篇文章主要介绍了python json.dumps中文乱码问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • python根据时间获取周数代码实例

    python根据时间获取周数代码实例

    这篇文章主要介绍了python根据时间获取周数,通过周数获取时间代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Python print函数:如何将对象打印输出

    Python print函数:如何将对象打印输出

    这篇文章主要介绍了Python print函数:如何将对象打印输出,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-05-05

最新评论