教你使用Python从头开始构建一个区块链项目

教你使用Python从头开始构建一个区块链项目

作者|丹尼尔范弗莱明

来源| Python学习与开发

你会不会和我一样,对加密数字货币底层区块链技术非常感兴趣,特别想知道它们的运行机制

但是学习区块链技术并不是一帆风顺的。看了很多视频教程和各种课程,最后的感觉就是实战课程太少了。

喜欢通过实践来学习,尤其是理解基于代码的整个工作机制。如果你和我一样喜欢这种学习方式,当你读完这篇教程,你就会知道区块链技术是如何工作的。

写之前。

请记住,区块链是一个不可变的有序记录链,称为块。它们可以包含交易、文件或任何你喜欢数据。但重要的是它们是用一个hash链接在一起的。

如果你不熟悉哈希,这里有一个解释。

指南目的是什么?你可以很舒服的读写基本的Python,因为我们会通过HTTP和区块链讨论,所以你也应该知道HTTP是怎么工作的。

我需要准备什么?安装Python 3.6(和pip)后,还需要安装Flask和Requests库:

` pip安装烧瓶==0.12.2请求==2.18.4 \'

对了,你还需要一个支持HTTP的客户端,比如Postman或者cURL,其他都可以。

00-1010打开您最喜欢文本编辑器或IDE。个人比较喜欢PyCharm。创建一个名为blockchain.py的新文件,我们将只使用这一个文件。但如果还是不确定,也可以参考源代码。

描述区块链

我们想创建一个区块链类,它的构造函数创建一个初始化的空列表(存储我们的区块链),另一个存储事务。下面是我们3360班的一个例子。

区块链. py

类区块链(对象):

def __init__(self):

self.chain=[]

self.current_transactions=[]

def new_block(自身):

#创建一个新块并将其添加到链中

及格

def new_transaction(自身):

#将新事务添加到事务列表中

及格

@静态方法

定义哈希(块):

#散列一个块

及格

@属性

def last_block(自身):

#返回链中的最后一个块

及格

我们的区块链类负责管理链式数据。它存储事务,并有一个向链式数据添加新块的方法。让我们开始扩展更多的方法。

街区什么样?

每个块都有一个索引、一个时间戳(Unix时间戳)、一个事务列表、一个检查(稍后详述)和前一个块的散列。

以下是块的示例:

区块链. py

block={

索引\' : 1,

时间戳\' : 1506057125.900785,

交易\' : [

{

发件人\' : \' 8527147 fe1f 5426 f9dd 545 de 4b 27 ee 00 \',

收件人\' : \' a 77 F5 cdfa 2934 df 3954 a5 C7 c 7 da 5d f1f \':

金额\' : 5,

}

],

证明\' : 324984774000,

previous _ hash \' : \' 2 cf 24 DBA 5 FB 0 a 30 e 26 e 83 B2 AC 5b 9 e 29 E1 e 1b 161 E5 C1 fa 7425 e 73043362938 b 9824 \'

}

此时,区块链的概念应该是显而易见的——每个新块都包含前一个块的散列。这是至关重要的,因为这是区块链不变的原因:如果攻击者损坏了区块链的一个早期块,所有后续块将包含不正确的哈希值。

这有道理吗?如果你还没想通,花点时间仔细想想——这是区块链背后的核心思想

将事务添加到块

我们需要一种方法来添加事务到块中。我们new_transaction()方法的职责就是这个,而且很简单3360

区块链. py

类区块链(对象):

.

版权声明:区块链的发展前景 发表于 2022-05-05 8:48:08。
转载请注明:教你使用Python从头开始构建一个区块链项目 | 零零洞洞

暂无评论

暂无评论...