Python区块链 创建多个交易
各个客户进行的交易在系统中排队;矿工从这个队列中拿起交易,并将其添加到区块中。然后他们将对该区块进行挖矿,获胜的矿工将有特权将该区块添加到区块链上,从而为自己赚取一些钱。
我们将在后面讨论区块链的创建时描述这个挖矿过程。在我们编写多笔交易的代码之前,让我们添加一个小的实用函数来打印给定交易的内容。
显示交易
display_transaction 函数接受一个交易类型的单一参数。收到的交易内的字典对象被复制到一个名为 dict的 临时变量中,并使用字典中的键,将各种值打印在控制台。
接下来,我们定义一个事务队列来存储我们的事务对象。
交易队列
为了创建一个队列,我们声明一个名为 事务的 全局 列表 变量,如下所示
我们将简单地把每个新创建的事务附加到这个队列中。请注意,为了简洁起见,我们将不在本教程中实现队列管理逻辑。
创建多个客户端
现在,我们将开始创建交易。首先,我们将创建四个客户,他们将为从他人那里获得各种服务或商品而相互发送金钱。
在这一点上,我们有四个客户,分别是Dinesh、Ramesh、Seema和Vijay。我们目前假设这些客户的钱包中都持有一些TPCoins用于交易。这些客户的身份将通过使用这些对象的身份属性来指定。
创建第一笔交易
现在,我们启动我们的第一笔交易,如下所示
在这笔交易中,Dinesh向Ramesh发送了5个TPCoins。为了使交易成功,我们必须确保Dinesh的钱包里有足够的钱来支付这笔款项。请注意,我们将需要一个创世交易来启动TPCoin在系统中的流通。在你阅读的过程中,你很快就会为这个创世交易编写交易代码。
我们将使用Dinesh的私钥签署这笔交易,并将其添加到交易队列中,如下所示
在Dinesh进行的第一笔交易之后,我们将在上面创建的不同客户之间再创建几笔交易。
添加更多交易
我们现在将创建更多的交易,每笔交易给另一方提供一些TPCoins。当有人花钱的时候,他没有必要检查这个钱包里是否有足够的余额。无论如何,矿工将验证每笔交易,以确认发送者在发起交易时拥有的余额。
如果余额不足,矿工将把这笔交易标记为无效,不会将其添加到这个区块。
下面的代码创建并增加了九个交易到我们的队列中。
当你运行上述代码时,你将有十个交易在队列中,供矿工创建他们的区块。
Dumping交易
作为一个区块链管理者,你可能会定期查看交易队列的内容。为了这个目的,你可以使用我们之前开发的 display_transaction 函数。要倾倒队列中的所有交易,只需遍历交易列表,对于每个被引用的交易,调用 display_transaction 函数,如图所示。
这些交易用虚线隔开以示区别。如果你运行上述代码,你会看到交易列表如下所示
为了简洁起见,我只打印了列表中的前几个交易。在上面的代码中,我们打印了从第一笔交易开始的所有交易,除了从未被添加到该列表中的创世交易。由于交易被定期添加到区块中,你通常只对查看尚未被开采的交易列表感兴趣。在这种情况下,你将需要创建一个适当的 for 循环来迭代尚未开采的交易。
到目前为止,你已经学会了如何创建客户,允许他们相互之间进行交易,并维护一个待开采的交易队列。现在,本教程最重要的部分来了,那就是创建一个区块链本身。你将在下一课中学习这个。