📝 Python区块链教程
15篇技术文档📅  最后修改于: 2020-11-08 08:22:49        🧑  作者: Mango
区块链是当前嗡嗡声,主导着软件开发趋势。区块链的开发和设计涉及三个主要部分:客户端,矿工和区块链。本教程旨在使您对构建自己的区块链的过程有清晰的了解。任何希望与最新的区块链发展趋势保持同步的编程爱好者都可以从本教程中受益。如果您是学习区块链开发基础知识的学习者,那么本教程非常适合您的需求。先决条件编写本教程的前提是,学习者具有Python编程思想和有关Blockchain的基本思想。如果您不熟悉这...
📅  最后修改于: 2020-11-08 08:23:15        🧑  作者: Mango
在关于区块链的教程中,我们详细了解了区块链背后的理论。区块链是世界上最受欢迎的数字货币比特币背后的基本构建块。本教程深入探讨了比特币的复杂性,全面解释了区块链架构。下一步是建立我们自己的区块链。中本聪(Satoshi Nakamoto)创建了世界上第一个虚拟货币,称为比特币。看着比特币的成功,许多其他人创建了自己的虚拟货币。仅举几例-Litecoin,Zcash等。现在,您可能还想启动自己的货币。...
📅  最后修改于: 2020-11-08 08:23:38        🧑  作者: Mango
客户是持有TPCoins并通过网络上其他供应商(包括他自己)进行商品/服务交易的人。为此,我们应该定义一个Client类。为了为客户创建全局唯一的标识,我们使用PKI(公共密钥基础结构)。在本章中,让我们详细讨论一下。客户应该能够从他的钱包中将钱汇给另一个已知的人。同样,客户应能够接受第三方的付款。为了花钱,客户将创建一个交易,指定发件人的姓名和要支付的金额。为了收款,客户将其身份提供给第三方-本...
📅  最后修改于: 2020-11-08 08:24:10        🧑  作者: Mango
Client类使用内置的PythonRSA算法生成私钥和公钥。有兴趣的读者可以参考本教程以了解RSA的实现。在对象初始化期间,我们创建私钥和公钥并将其值存储在实例变量中。请注意,您绝不要丢失私钥。为了保持记录,可以将生成的私钥复制到安全的外部存储中,或者您可以简单地在纸上写下其ASCII表示形式。生成的公共密钥将用作客户端的身份。为此,我们定义了一个名为identity的属性,该属性返回公钥的HE...
📅  最后修改于: 2020-11-08 08:24:57        🧑  作者: Mango
在本章中,让我们创建一个Transaction类,以便客户能够向他人汇款。请注意,客户可以是这笔钱的发送者或接收者。当您想收款时,其他发送者将创建交易并在其中指定您的公共地址。我们定义事务类的初始化如下:init方法有三个参数-发送者的公钥,接收方的公钥和金额发送。这些存储在实例变量中,以供其他方法使用。此外,我们再创建一个变量来存储交易时间。接下来,我们编写一个称为to_dict的实用程序方法,...
📅  最后修改于: 2020-11-08 08:25:51        🧑  作者: Mango
各种客户进行的交易在系统中排队;矿工从该队列中提取交易并将其添加到区块中。然后他们将开采该区块,获胜的矿工将有特权将该区块添加到区块链中,从而为自己赚钱。我们将在稍后讨论区块链的创建时描述此挖掘过程。在为多个事务编写代码之前,让我们添加一个小的实用程序函数来打印给定事务的内容。显示交易display_transaction函数接受事务类型的单个参数。接收到的事务中的字典对象被复制到称为dict的临...
📅  最后修改于: 2020-11-08 08:26:10        🧑  作者: Mango
一个区块由不同数量的交易组成。为简单起见,在我们的例子中,我们假设该块由固定数量的事务组成,在这种情况下为三。由于该块需要存储这三个交易的名单,我们将宣布名为verified_transactions如下实例变量-我们已将此变量命名为verify_transactions,以指示仅将经过验证的有效交易添加到该区块中。每个块还保留前一个块的哈希值,因此块链变得不可变。为了存储先前的哈希,我们声明一个...
📅  最后修改于: 2020-11-08 08:26:29        🧑  作者: Mango
我们假设TPCoins的发起者最初将500 TPCoins分发给已知的客户端Dinesh。为此,他首先创建一个Dinesh实例-然后,我们创建一个创世纪交易,并将500个TPCoins发送到Dinesh的公共地址。现在,我们创建一个Block类的实例,并将其称为block0。我们将previous_block_hash和Nonce实例变量初始化为None,因为这是存储在区块链中的第一个事务。接下来...
📅  最后修改于: 2020-11-08 08:26:56        🧑  作者: Mango
区块链包含彼此链接的区块列表。为了存储整个列表,我们将创建一个名为TPCoins的列表变量-我们还将编写一个称为dump_blockchain的实用程序方法,用于转储整个区块链的内容。我们首先打印区块链的长度,以便我们知道区块链中当前存在多少个区块。请注意,随着时间的流逝,区块链中的块数对于打印来说将是异常高的。因此,当您打印区块链的内容时,您可能必须决定要检查的范围。在下面的代码中,我们已经打印...
📅  最后修改于: 2020-11-08 08:27:11        🧑  作者: Mango
在区块链中添加一个区块需要将创建的区块附加到我们的TPCoins列表中。请注意,与系统中其余的块不同,创世块仅包含一个由TPCoins系统的发起者发起的交易。现在,您将通过调用我们的全局函数dump_blockchain来转储区块链的内容-执行此函数,您将看到以下输出-此时,区块链系统已准备就绪。现在,我们将通过向有兴趣的客户提供挖掘功能来使其成为矿工。...
📅  最后修改于: 2020-11-08 08:27:46        🧑  作者: Mango
为了启用挖掘,我们需要开发挖掘函数。挖掘功能需要在给定的消息字符串上生成摘要,并提供工作量证明。让我们在本章中对此进行讨论。信息摘要功能我们将编写一个名为sha256的实用程序函数,以在给定消息上创建摘要-sha256函数将消息作为参数,将其编码为ASCII,生成十六进制摘要,然后将值返回给调用方。挖矿功能现在,我们开发实现自己的挖掘策略的挖掘函数。在这种情况下,我们的策略是在给定消息上生成以给定...
📅  最后修改于: 2020-11-08 08:28:44        🧑  作者: Mango
每个矿工将从先前创建的交易池中提取交易。要跟踪已挖掘的消息数,我们必须创建一个全局变量-现在,我们将有第一个矿工向区块链添加一个区块。添加第一个块要添加一个新块,我们首先创建一个Block类的实例。我们从队列中挑选出前三笔交易-在将交易添加到区块之前,矿工将验证交易的有效性。通过测试发送者提供的哈希与矿工使用发送者的公钥生成的哈希是否相等,来验证交易的有效性。此外,矿工将验证发件人是否有足够的余额...
📅  最后修改于: 2020-11-08 08:29:06        🧑  作者: Mango
在本教程中,我们学习了如何在Python构造一个区块链项目。您需要在许多领域中为该项目添加更多功能。例如,您将需要编写用于管理事务队列的函数。在交易被挖出并且挖出的区块被系统接受之后,它们不再需要被存储。此外,矿工当然更愿意选择费用最高的交易。同时,您将必须确保收费低或免费的交易不会永远饿死。您将需要开发用于管理队列的算法。另外,当前教程不包含客户端接口代码。您将需要为普通客户和矿工开发此工具。完...
📅  最后修改于: 2020-11-08 08:29:27        🧑  作者: Mango
以下资源包含有关Python区块链的其他信息。请使用它们来获得有关此方面的更深入的知识。Python区块链上的有用链接区块链维基–区块链维基百科参考。关于Python区块链的有用书籍要在此页面上注册您的网站,请发送电子邮件至contact@tutorialspoint.com...
📅  最后修改于: 2020-11-08 08:29:41        🧑  作者: Mango
区块链是当前嗡嗡声,主导着软件开发趋势。区块链的开发和设计涉及三个主要部分:客户端,矿工和区块链。本教程旨在使您对构建自己的区块链的过程有清晰的了解。...