Python区块链交易类教程

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

创建 Transaction 类

在本章中,让我们创建一个 Transaction 类,以便客户能够向某人汇款.请注意,客户可以是货币的发件人或收件人.当您想要收款时,其他一些发件人将创建一个交易并在其中指定您的公开地址.我们将事务类的初始化定义如下 :

def __init__(self, sender, recipient, value):
   self.sender = sender
   self.recipient = recipient
   self.value = value
   self.time = datetime.datetime.now()

init 方法有三个参数 : 发件人的公开键,收件人的公开键以及要发送的金额.它们存储在实例变量中以供其他方法使用.另外,我们创建了一个用于存储事务时间的变量.

接下来,我们编写一个名为 to_dict 的实用程序方法,它结合了上述四个实例字典对象中的变量.这只是通过一个变量来访问整个交易信息.

正如您在前面的教程中所知,区块链中的第一个区块是 Genesis 块. Genesis块包含区块链创建者发起的第一个事务.这个人的身份可能像比特币一样保密.因此,当创建第一个交易时,创建者可以将其身份发送为 Genesis .因此,在创建字典时,我们检查发件人是否 Genesis ,如果是,我们只需将一些字符串值赋给身份变量;否则,我们将发件人的身份分配给身份变量.

if self.sender == "Genesis":
   identity = "Genesis"
else:
   identity = self.sender.identity

我们使用以下构建字典代码行

return collections.OrderedDict({
   'sender': identity,
   'recipient': self.recipient,
   'value': self.value,
   'time' : self.time})

整个代码 to_dict 方法如下所示 :

def to_dict(self):
   if self.sender == "Genesis":
      identity = "Genesis"
   else:
      identity = self.sender.identity
   return collections.OrderedDict({
      'sender': identity,
      'recipient': self.recipient,
      'value': self.value,
      'time' : self.time})

最后,我们将使用发件人的私钥对此字典对象进行签名.和以前一样,我们使用带有SHA算法的内置PKI.生成的签名被解码以获得用于打印的ASCII表示并将其存储在我们的区块链中. sign_transaction 方法代码显示在这里 :

def sign_transaction(self):
   private_key = self.sender._private_key
   signer = PKCS1_v1_5.new(private_key)
   h = SHA.new(str(self.to_dict()).encode('utf8'))
   return binascii.hexlify(signer.sign(h)).decode('ascii')

我们现在将测试这个 Transaction 类.

测试交易类

为此,我们将创建两个用户,名为 Dinesh 和 Ramesh . Dinesh将向Ramesh发送5个TPCoins.为此,我们首先创建名为Dinesh和Ramesh的客户端.

Dinesh = Client()
Ramesh = Client()

请记住,当您实例化客户端类时,将创建客户端唯一的公共和私钥.当Dinesh向Ramesh发送付款时,他将需要使用客户端的身份属性获得的Ramesh的公钥.

因此,我们将使用以下代码创建事务实例 :

t = Transaction(
   Dinesh,
   Ramesh.identity,
   5.0
)

请注意,第一个参数是发件人,第二个参数是收件人的公钥,第三个参数是要传输的金额. sign_transaction 方法从第一个参数中检索发件人的私钥,用于演唱交易.

创建事务对象后,您将通过调用它来对其进行签名b> sign_transaction 方法.此方法以可打印格式返回生成的签名.我们使用以下两行代码生成并打印签名 :

signature = t.sign_transaction()
print (signature)

当你运行上面的代码时,你会看到类似于这个 : 的输出;

7c7e3c97629b218e9ec6e86b01f9abd8e361fd69e7d373c38420790b655b9abe3b575e343c7

13703ca1aee781acd7157a0624db3d57d7c2f1172730ee3f45af943338157f899965856f6b0

0e34db240b62673ad5a08c8e490f880b568efbc36035cae2e748f1d802d5e8e66298be826f5

c6363dc511222fb2416036ac04eb972

现在作为我们创建客户端的基础设施和如果交易准备就绪,我们现在将有多个客户在现实生活中进行多笔交易.

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

相关文章

  • Python给文件夹加解密的实现

    Python给文件夹加解密的实现

    数据泄露已经成为一个严重的问题,为了保护用户和公司的隐私,给文件夹加密已经成为一个必要的步骤,本文主要介绍了Python给文件夹加解密的实现,感兴趣的可以了解一下
    2023-11-11
  • Python实现的二维码生成小软件

    Python实现的二维码生成小软件

    这篇文章主要介绍了Python实现的二维码生成小软件,使用wxPython、python-qrcode、pyqrcode、pyqrnative等技术和开源类库实现,需要的朋友可以参考下
    2014-07-07
  • 对python中的os.getpid()和os.fork()函数详解

    对python中的os.getpid()和os.fork()函数详解

    今天小编就为大家分享一篇对python中的os.getpid()和os.fork()函数详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python实现简单俄罗斯方块

    python实现简单俄罗斯方块

    这篇文章主要为大家详细介绍了python实现简单俄罗斯方块,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python+opencv 实现图片文字的分割的方法示例

    Python+opencv 实现图片文字的分割的方法示例

    这篇文章主要介绍了Python+opencv 实现图片文字的分割的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • 简单了解python的内存管理机制

    简单了解python的内存管理机制

    这篇文章主要介绍了简单了解python的内存管理机制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 通过数据库对Django进行删除字段和删除模型的操作

    通过数据库对Django进行删除字段和删除模型的操作

    这篇文章主要介绍了通过数据库对Django进行删除字段和删除模型的操作,这里假设我们已经建立了一个名为book的数据模型,需要的朋友可以参考下
    2015-07-07
  • Python随机验证码生成和join 字符串的问题解析

    Python随机验证码生成和join 字符串的问题解析

    Python中有join()和os.path.join()两个函数,join是将字符串、元组、列表中的元素以指定的字符(分隔符)连接生成一个新的字符串而os.path.join(): 将多个路径组合后返回,本文给大家介绍的非常详细,需要的朋友一起看看吧
    2022-04-04
  • python生成每日报表数据(Excel)并邮件发送的实例

    python生成每日报表数据(Excel)并邮件发送的实例

    今天小编就为大家分享一篇python生成每日报表数据(Excel)并邮件发送的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-02-02
  • 使用Python创建一个视频管理器并实现视频截图功能

    使用Python创建一个视频管理器并实现视频截图功能

    在这篇博客中,我将向大家展示如何使用 wxPython 创建一个简单的图形用户界面 (GUI) 应用程序,该应用程序可以管理视频文件列表、播放视频,并生成视频截图,我们将逐步实现这些功能,并确保代码易于理解和扩展,感兴趣的小伙伴跟着小编一起来看看吧
    2024-08-08

最新评论