本文将向大家介绍如何使用Python 3.9.4建立属于自己的区块链和加密货币。在构建自己的加密货币或区块链之前,您需要了解Python和区块链的基础知识。区块链或许看起来很复杂,但可以肯定的是其核心概念确实非常简单。
要求
确保您已安装最新版本的Python。
入门
创建一个新的Python文件,文件名app.py。首先,我们应该创建一个Block类。
我将参考dzone.com的代码:
我们还需要创建Blockchain类蓝图:
积木类
现在,让我们看一下我们刚刚创建的这些类。块类将如下所示:
Block类采用几个参数:index,proof_number,previous_hash,data和timestamp。
索引用于查看块在链中的哪个位置。
我认为,前者是不言而喻的。
数据是一个对象,它收集有关该区块的所有信息(id,金额,发送者,接收者等)。
时间戳是指生成块的时刻。
在def compute_hash()方法中,我们的哈希将使用hash方法创建。
链条类
单独的块没有任何价值,并且使用链来加密数据,因此很重要。让我们为Chain类创建构造函数:
让我们看一下这些参数的作用。
该self.chain是一个变量,它存储所有的块。
该self.current_data是一个变量,它存储所有关于该块的信息。
这self.nodes是用于设置节点的示例方法。
所述self.build_genesis方法变量是创建第一块中的方法。
建立创世方法
此方法将用于创建初始块。因此,我们需要调用该build_block()方法。
在此方法中,创建一个新Block对象并输入所需的参数:索引,证明,previous_hash和数据。然后,我们设置当前数据并将该块附加到链中。
确认有效性方法
创建加密货币/区块链的重要部分是检查区块是否有效。我们用一种新方法来做到这一点。
让我们解释一下:此方法使用几个if语句来检查Block是否是它应该的块。它compute_hash()再次使用该方法。
获取数据方法
当然,您希望能够读取您的块和区块链的数据,这是通过以下get_data()方法完成的:
该方法非常简单,它采用三个参数并将它们添加到对象中。
工作证明
在这个项目中,我们将添加一个工作量证明算法以使挖掘成为可能。
让我们创建def block_mining方法:
定稿
为了结束我们的项目,我们将以下代码行添加到def latest_block方法中,
现在,我们将测试我们的项目:
当您看到类似的结果时,您的区块链蓝图已成功构建。如果您想添加额外的功能,则可以这样做,请告诉我您所构建的内容!
完整代码示例:
终于我们使用Python创建了自己的区块链。